class Metasm::C::Label

Attributes

name[RW]
statement[RW]

Public Class Methods

new(name, statement=nil) click to toggle source
# File metasm/parse_c.rb, line 898
def initialize(name, statement=nil)
        @name, @statement = name, statement
end

Public Instance Methods

dump(scope, r=[''], dep=[]) click to toggle source
# File metasm/parse_c.rb, line 3870
def dump(scope, r=[''], dep=[])
        r.last << @name << ':'
        dump_inner(scope, r, dep)
end
dump_inner(scope, r=[''], dep=[]) click to toggle source
# File metasm/parse_c.rb, line 3874
def dump_inner(scope, r=[''], dep=[])
        if not @statement; [r, dep]
        elsif @statement.kind_of? Block; Statement.dump(@statement, scope, r, dep)
        else  @statement.dump(scope, r << '', dep)
        end
end
precompile(compiler, scope) click to toggle source
# File metasm/compile_c.rb, line 923
def precompile(compiler, scope)
        if name and (not compiler.auto_label_list[@name])
                @name = scope.nonauto_label[@name] ||= compiler.new_label(@name)
        end
        scope.statements << self
        if statement
                @statement.precompile(compiler, scope)
                @statement = nil
        end
end