# File lib/more/facets/multiton.rb, line 230
230: def initialized?(*e, &b)
231: multiton_instance.key?(multiton_id(*e, &b))
232: end
# File lib/more/facets/multiton.rb, line 215
215: def instance(*e, &b)
216: arg = multiton_id(*e, &b)
217: multiton_instance.fetch(arg) do
218: multiton_mutex[arg].synchronize do
219: multiton_instance.fetch(arg) do
220: val = multiton_instance[arg] = new!(*e, &b) #new(*e, &b)
221: val.instance_variable_set(:@multiton_initializer, e, &b)
222: multiton_mutex.initialized(arg)
223: val
224: end
225: end
226: end
227: end
# File lib/more/facets/multiton.rb, line 249
249: def _load(str)
250: instance(*Marshal.load(str))
251: end
# File lib/more/facets/multiton.rb, line 236
236: def multiton_instance
237: @multiton_instance ||= Hash.new
238: end
Default method to to create a key to cache already constructed instances. In the use case MultitonClass.new(e), MultiClass.new(f) must be semantically equal if multiton_id(e).eql?(multiton_id(f)) evaluates to true.
# File lib/more/facets/multiton.rb, line 259
259: def multiton_id(*e, &b)
260: e
261: end
# File lib/more/facets/multiton.rb, line 263
263: def singleton_method_added(sym)
264: super
265: if (sym == :marshal_dump) & singleton_methods.include?('marshal_dump')
266: raise TypeError, "Don't use marshal_dump - rely on _dump and _load instead"
267: end
268: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.