class Android::Dex::ClassInfo
class information in dex @!attribute [r] name
@return [String] class name
@!attribute [r] super_class
@return [String] super class name
Constants
- NO_INDEX
no index flag
Attributes
access_flags[R]
@return [ClassAccessFlag]
class_data[R]
@return [DexObject::ClassDataItem]
class_def[R]
@return [DexObject::ClassDefItem]
direct_methods[R]
@return [Array<MethodInfo>] direct methods
instance_fields[R]
@return [Array<FieldInfo>] instance fields
static_fields[R]
@return [Array<FieldInfo>] static fields
virtual_methods[R]
@return [Array<MethodInfo>] virtual methods
Public Class Methods
new(class_def, dex)
click to toggle source
@param [Dex::ClassDefItem] class_def
@param [Dex] dex dex class instance
# File lib/android/dex/info.rb, line 44 def initialize(class_def, dex) @class_def = class_def @dex = dex @access_flags = ClassAccessFlag.new(@class_def[:access_flags]) @class_data = @class_def.class_data_item @static_fields = @instance_fields = @direct_methods = @virtual_methods = [] unless @class_data.nil? @static_fields = cls2info(@class_data[:static_fields], FieldInfo, :field_idx_diff) @instance_fields = cls2info(@class_data[:instance_fields], FieldInfo, :field_idx_diff) @direct_methods = cls2info(@class_data[:direct_methods], MethodInfo, :method_idx_diff) @virtual_methods = cls2info(@class_data[:virtual_methods], MethodInfo, :method_idx_diff) end end
Public Instance Methods
definition()
click to toggle source
@return [String] class difinition
# File lib/android/dex/info.rb, line 59 def definition ret = "#{access_flags} class #{name}" super_class.nil? ? ret : ret + " extends #{super_class}" end
name()
click to toggle source
# File lib/android/dex/info.rb, line 32 def name @dex.type_resolve(@class_def[:class_idx]) end
super_class()
click to toggle source
# File lib/android/dex/info.rb, line 35 def super_class if @class_def[:superclass_idx] != NO_INDEX @super_class = @dex.type_resolve(@class_def[:superclass_idx]) else nil end end
Private Instance Methods
cls2info(arr, cls, idx_key)
click to toggle source
# File lib/android/dex/info.rb, line 65 def cls2info(arr, cls, idx_key) idx = 0 ret = [] arr.each do |item| idx += item[idx_key] ret << cls.new(item, idx, @dex) end ret end