# 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.