class Metasm::C::Type

Attributes

qualifier[RW]

Public Instance Methods

arithmetic?() click to toggle source
# File metasm/parse_c.rb, line 120
def arithmetic? ; false end
base() click to toggle source
# File metasm/parse_c.rb, line 124
def base ;        self  end
dump_cast(scope, r=[''], dep=[]) click to toggle source
# File metasm/parse_c.rb, line 3515
def dump_cast(scope, r=[''], dep=[])
        r.last << '('
        r.last << dump_attributes_pre if not kind_of? TypeDef
        r, dep = base.dump(scope, r, dep)
        r, dep = dump_declarator([kind_of?(TypeDef) ? '' : dump_attributes], scope, r, dep)
        r.last << ')'
        [r, dep]
end
dump_declarator(decl, scope, r=[''], dep=[]) click to toggle source
# File metasm/parse_c.rb, line 3505
def dump_declarator(decl, scope, r=[''], dep=[])
        r.last << decl.shift
        r.concat decl
        [r, dep]
end
dump_def(*a) click to toggle source
# File metasm/parse_c.rb, line 3511
def dump_def(*a)
        dump(*a)
end
dump_initializer(init, scope, r=[''], dep=[]) click to toggle source
# File metasm/parse_c.rb, line 3493
def dump_initializer(init, scope, r=[''], dep=[])
        case init
        when ::Numeric
                r.last << init.to_s
                [r, dep]
        when ::Array
                r.last << init.inspect
                [r, dep]
        else init.dump_inner(scope, r, dep)
        end
end
float?() click to toggle source
# File metasm/parse_c.rb, line 122
def float? ;      false end
integral?() click to toggle source
# File metasm/parse_c.rb, line 121
def integral? ;   false end
parse_initializer(parser, scope) click to toggle source
# File metasm/parse_c.rb, line 127
def parse_initializer(parser, scope)
        raise parser, 'expr expected' if not ret = CExpression.parse(parser, scope, false)
        p, i = pointer?, integral?
        r = ret.reduce(parser) if p or i
        if (not p and not i) or (i and not r.kind_of? ::Integer) or (p and r != 0)
                parser.check_compatible_type(parser, ret.type, self)
        end
        ret
end
parse_initializer_designator(parser, scope, value, idx, root=true) click to toggle source
# File metasm/parse_c.rb, line 137
def parse_initializer_designator(parser, scope, value, idx, root=true)
        if not root and (not nt = parser.skipspaces or nt.type != :punct or nt.raw != '=')
                raise nt || parser, '"=" expected'
        end
        value[idx] = parse_initializer(parser, scope)
        idx + 1
end
pointer?() click to toggle source
# File metasm/parse_c.rb, line 119
def pointer? ;    false end
to_s() click to toggle source
# File metasm/parse_c.rb, line 3524
def to_s
        dump_cast(Block.new(nil))[0].join(' ')
end
untypedef() click to toggle source
# File metasm/parse_c.rb, line 125
def untypedef ;   self  end
void?() click to toggle source
# File metasm/parse_c.rb, line 123
def void? ;       false end