Class: YTLJit::ClassClassWrapper
Overview
Singleton class can’t be marshaled. So this class wrap to marshal singleton class
Constant Summary collapse
- @@instance_tab =
{}
Class Method Summary collapse
Instance Method Summary collapse
- #ancestors ⇒ Object
-
#initialize(clsobj) ⇒ ClassClassWrapper
constructor
A new instance of ClassClassWrapper.
- #marshal_dump ⇒ Object
- #marshal_load(obj) ⇒ Object
- #name ⇒ Object
- #superclass ⇒ Object
- #to_s ⇒ Object
- #value ⇒ Object
Constructor Details
#initialize(clsobj) ⇒ ClassClassWrapper
Returns a new instance of ClassClassWrapper.
70 71 72 73 |
# File 'lib/ytljit/util.rb', line 70 def initialize(clsobj) @klass_object = clsobj @value = nil end |
Class Method Details
.instance(clsobj) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/ytljit/util.rb', line 57 def self.instance(clsobj) if clsobj.is_a?(ClassClassWrapper) clsobj = clsobj.value end ins = @@instance_tab[clsobj] if ins == nil then ins = ClassClassWrapper.new(clsobj) @@instance_tab[clsobj] = ins end ins end |
Instance Method Details
#ancestors ⇒ Object
92 93 94 |
# File 'lib/ytljit/util.rb', line 92 def ancestors value.ancestors end |
#marshal_dump ⇒ Object
96 97 98 |
# File 'lib/ytljit/util.rb', line 96 def marshal_dump [@klass_object] end |
#marshal_load(obj) ⇒ Object
100 101 102 103 |
# File 'lib/ytljit/util.rb', line 100 def marshal_load(obj) @klass_object = obj @value = nil end |
#name ⇒ Object
88 89 90 |
# File 'lib/ytljit/util.rb', line 88 def name value.name end |
#superclass ⇒ Object
105 106 107 108 109 110 111 112 113 |
# File 'lib/ytljit/util.rb', line 105 def superclass sup = value.superclass ins = @@instance_tab[sup] if ins then ins else sup end end |
#to_s ⇒ Object
75 76 77 |
# File 'lib/ytljit/util.rb', line 75 def to_s "#<Ytljit::ClassClassWrapper type=#{value.inspect}" end |
#value ⇒ Object
79 80 81 82 83 84 85 86 |
# File 'lib/ytljit/util.rb', line 79 def value if @value then @value else @value = class << @klass_object; self; end @value end end |