class Metasm::C::Type
Attributes
qualifier[RW]
Public Instance Methods
arithmetic?()
click to toggle source
# File metasm/parse_c.rb, line 131 def arithmetic? ; false end
base()
click to toggle source
# File metasm/parse_c.rb, line 135 def base ; self end
dump_cast(scope, r=[CRenderString.new], dep=[])
click to toggle source
# File metasm/parse_c.rb, line 3563 def dump_cast(scope, r=[CRenderString.new], dep=[]) r.last << '(' r.last << dump_attributes_pre if not kind_of? TypeDef r, dep = base.dump(scope, r, dep) r, dep = dump_declarator([CRenderString.new(kind_of?(TypeDef) ? '' : dump_attributes)], scope, r, dep) r.last << ')' [r, dep] end
dump_declarator(decl, scope, r=[CRenderString.new], dep=[])
click to toggle source
# File metasm/parse_c.rb, line 3553 def dump_declarator(decl, scope, r=[CRenderString.new], dep=[]) r.last << decl.shift r.concat decl.map { |d| CRenderString.new << d } [r, dep] end
dump_def(*a)
click to toggle source
# File metasm/parse_c.rb, line 3559 def dump_def(*a) dump(*a) end
dump_initializer(init, scope, r=[CRenderString.new], dep=[])
click to toggle source
# File metasm/parse_c.rb, line 3541 def dump_initializer(init, scope, r=[CRenderString.new], 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 133 def float? ; false end
integral?()
click to toggle source
# File metasm/parse_c.rb, line 132 def integral? ; false end
parse_initializer(parser, scope)
click to toggle source
# File metasm/parse_c.rb, line 138 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 148 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 130 def pointer? ; false end
to_s()
click to toggle source
# File metasm/parse_c.rb, line 3572 def to_s dump_cast(Block.new(nil))[0].join(' ') end
untypedef()
click to toggle source
# File metasm/parse_c.rb, line 136 def untypedef ; self end
void?()
click to toggle source
# File metasm/parse_c.rb, line 134 def void? ; false end