Class: ObjspaceHelpers::TrackedObject

Inherits:
Object
  • Object
show all
Defined in:
lib/objspace_helpers/tracked_object.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(address, referenced_by = []) ⇒ TrackedObject

Returns a new instance of TrackedObject.



15
16
17
18
# File 'lib/objspace_helpers/tracked_object.rb', line 15

def initialize(address, referenced_by = [])
  @address = address
  @referenced_by = referenced_by
end

Instance Attribute Details

#addressObject (readonly)

Returns the value of attribute address.



12
13
14
# File 'lib/objspace_helpers/tracked_object.rb', line 12

def address
  @address
end

#referenced_byObject (readonly)

Returns the value of attribute referenced_by.



13
14
15
# File 'lib/objspace_helpers/tracked_object.rb', line 13

def referenced_by
  @referenced_by
end

Class Method Details

.for_object(obj) ⇒ Object



8
9
10
# File 'lib/objspace_helpers/tracked_object.rb', line 8

def self.for_object(obj)
  new ObjspaceHelpers._address_of_obj(obj)
end

.wrap(addresses, referenced_by = []) ⇒ Object



2
3
4
5
6
# File 'lib/objspace_helpers/tracked_object.rb', line 2

def self.wrap(addresses, referenced_by = [])
  Array.new(addresses || []).map do |address|
    new(address, wrap(referenced_by[address]))
  end
end

Instance Method Details

#dereferenceObject



28
29
30
# File 'lib/objspace_helpers/tracked_object.rb', line 28

def dereference
  ObjspaceHelpers._id2ref(@address)
end

#infoObject



20
21
22
# File 'lib/objspace_helpers/tracked_object.rb', line 20

def info
  ObjspaceHelpers._addresses_to_info([@address]).values.first
end

#klassObject



24
25
26
# File 'lib/objspace_helpers/tracked_object.rb', line 24

def klass
  self.class.new(info['class'])
end