class Metasm::JavaClass::ConstantPool

Attributes

constant_pool[RW]

Public Instance Methods

[](idx) click to toggle source
# File metasm/exe_format/javaclass.rb, line 67
def [](idx)
        @constant_pool[idx]
end
[]=(idx, val) click to toggle source
# File metasm/exe_format/javaclass.rb, line 71
def []=(idx, val)
        raise 'cannot be used to add a cp entry' if @constant_pool[idx].nil?
        @constant_pool[idx] = val
end
decode(c) click to toggle source
Calls superclass method Metasm::SerialStruct#decode
# File metasm/exe_format/javaclass.rb, line 36
def decode(c)
        super(c)

        @constant_pool = [nil]

        i = 1
        while i < @constant_pool_count
                entry = ConstantPoolInfo.decode(c)
                entry.idx = i
                @constant_pool << entry
                i += 1

                if entry.tag =~ /Long|Double/
                        # we must insert a phantom cell
                        # for long and double constants
                        @constant_pool << nil
                        i += 1
                end
        end
end
encode(c) click to toggle source
Calls superclass method Metasm::SerialStruct#encode
# File metasm/exe_format/javaclass.rb, line 57
def encode(c)
        cp = super(c)

        @constant_pool.each { |entry|
                next if entry.nil?
                cp << entry.encode(c)
        }
        cp
end