class Metasm::C::Return
Attributes
value[RW]
Public Class Methods
new(value)
click to toggle source
# File metasm/parse_c.rb, line 905 def initialize(value) @value = value end
Public Instance Methods
dump(scope, r=[CRenderString.new], dep=[])
click to toggle source
# File metasm/parse_c.rb, line 3885 def dump(scope, r=[CRenderString.new], dep=[]) r.last << CRenderString.new(self, 'return ') r, dep = CExpression.dump(@value, scope, r, dep) r.last.chop! if r.last[-1] == ?\ # the space character r.last << ';' [r, dep] end
precompile(compiler, scope)
click to toggle source
# File metasm/compile_c.rb, line 904 def precompile(compiler, scope) if @value @value = CExpression.new(nil, nil, @value, @value.type) if not @value.kind_of? CExpression if @value.type.untypedef.kind_of? Union @value = @value.precompile_inner(compiler, scope) func = scope.function.type CExpression.new(CExpression.new(nil, :*, func.args.first, @value.type), :'=', @value, @value.type).precompile(compiler, scope) @value = func.args.first else # cast to function return type @value = CExpression.new(nil, nil, @value, scope.function.type.type).precompile_inner(compiler, scope) end scope.statements << self end Goto.new(scope.return_label).precompile(compiler, scope) end