ruby-changes:5164
From: nobu <ko1@a...>
Date: Wed, 28 May 2008 15:20:07 +0900 (JST)
Subject: [ruby-changes:5164] Ruby:r16659 (ruby_1_8, trunk): * lib/singleton.rb (SingletonClassMethods): _load should be public.
nobu 2008-05-28 15:18:18 +0900 (Wed, 28 May 2008) New Revision: 16659 Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/lib/singleton.rb trunk/ChangeLog trunk/lib/singleton.rb Log: * lib/singleton.rb (SingletonClassMethods): _load should be public. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/singleton.rb?r1=16659&r2=16658&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/singleton.rb?r1=16659&r2=16658&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=16659&r2=16658&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16659&r2=16658&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 16658) +++ ChangeLog (revision 16659) @@ -1,3 +1,7 @@ +Wed May 28 15:18:16 2008 Nobuyoshi Nakada <nobu@r...> + + * lib/singleton.rb (SingletonClassMethods): _load should be public. + Wed May 28 13:30:43 2008 NARUSE, Yui <naruse@r...> * enc/trans/japanese.c: add workarround for Unicode to CP932. Index: lib/singleton.rb =================================================================== --- lib/singleton.rb (revision 16658) +++ lib/singleton.rb (revision 16659) @@ -30,7 +30,7 @@ # * Klass.new and Klass.allocate - as private # # Providing (or modifying) the class methods -# * Klass.inherited(sub_klass) and Klass.clone() - +# * Klass.inherited(sub_klass) and Klass.clone() - # to ensure that the Singleton pattern is properly # inherited and cloned. # @@ -70,32 +70,32 @@ def dup raise TypeError, "can't dup instance of singleton #{self.class}" end - - private + private + # default marshalling strategy - def _dump(depth = -1) + def _dump(depth = -1) '' end - module SingletonClassMethods + module SingletonClassMethods # properly clone the Singleton pattern - did you know - # that duping doesn't copy class methods? + # that duping doesn't copy class methods? def clone Singleton.__init__(super) end + def _load(str) + instance + end + private - - # ensure that the Singleton pattern is properly inherited + + # ensure that the Singleton pattern is properly inherited def inherited(sub_klass) super Singleton.__init__(sub_klass) end - - def _load(str) - instance - end end class << Singleton @@ -114,12 +114,12 @@ end klass end - + private # extending an object with Singleton is a bad idea undef_method :extend_object - + def append_features(mod) # help out people counting on transitive mixins unless mod.instance_of?(Class) @@ -127,7 +127,7 @@ end super end - + def included(klass) super klass.private_class_method :new, :allocate @@ -135,7 +135,7 @@ Singleton.__init__(klass) end end - + end @@ -143,14 +143,14 @@ def num_of_instances(klass) "#{ObjectSpace.each_object(klass){}} #{klass} instance(s)" -end +end # The basic and most important example. class SomeSingletonClass include Singleton end -puts "There are #{num_of_instances(SomeSingletonClass)}" +puts "There are #{num_of_instances(SomeSingletonClass)}" a = SomeSingletonClass.instance b = SomeSingletonClass.instance # a and b are same object @@ -173,23 +173,23 @@ puts "initialize called by thread ##{Thread.current[:i]}" end end - + class << Ups def _instantiate? @enter.push Thread.current[:i] while false.equal?(@singleton__instance__) @singleton__mutex__.unlock - sleep 0.08 + sleep 0.08 @singleton__mutex__.lock end @leave.push Thread.current[:i] @singleton__instance__ end - + def __sleep sleep(rand(0.08)) end - + def new begin __sleep @@ -201,12 +201,12 @@ end end end - + def instantiate_all @enter = [] @leave = [] - 1.upto(9) {|i| - Thread.new { + 1.upto(9) {|i| + Thread.new { begin Thread.current[:i] = i __sleep @@ -296,7 +296,7 @@ class Down < Middle; end puts "and basic \"Down test\" is #{Down.instance == Down.instance}\n -Various exceptions" +Various exceptions" begin module AModule Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 16658) +++ ruby_1_8/ChangeLog (revision 16659) @@ -1,3 +1,7 @@ +Wed May 28 15:18:16 2008 Nobuyoshi Nakada <nobu@r...> + + * lib/singleton.rb (SingletonClassMethods): _load should be public. + Wed May 28 12:52:41 2008 Nobuyoshi Nakada <nobu@r...> * marshal.c (w_object, marshal_dump, r_object0, marshal_load): search Index: ruby_1_8/lib/singleton.rb =================================================================== --- ruby_1_8/lib/singleton.rb (revision 16658) +++ ruby_1_8/lib/singleton.rb (revision 16659) @@ -30,7 +30,7 @@ # * Klass.new and Klass.allocate - as private # # Providing (or modifying) the class methods -# * Klass.inherited(sub_klass) and Klass.clone() - +# * Klass.inherited(sub_klass) and Klass.clone() - # to ensure that the Singleton pattern is properly # inherited and cloned. # @@ -70,10 +70,10 @@ def dup raise TypeError, "can't dup instance of singleton #{self.class}" end - - private + + private # default marshalling strategy - def _dump(depth=-1) + def _dump(depth=-1) '' end end @@ -104,7 +104,7 @@ end end elsif _instantiate?() - Thread.critical = false + Thread.critical = false else @__instance__ = false Thread.critical = false @@ -123,26 +123,26 @@ end @__instance__ end - - module SingletonClassMethods + + module SingletonClassMethods # properly clone the Singleton pattern - did you know - # that duping doesn't copy class methods? + # that duping doesn't copy class methods? def clone Singleton.__init__(super) end - + + def _load(str) + instance + end + private - - # ensure that the Singleton pattern is properly inherited + + # ensure that the Singleton pattern is properly inherited def inherited(sub_klass) super Singleton.__init__(sub_klass) end - - def _load(str) - instance - end - + # waiting-loop hook def _instantiate?() while false.equal?(@__instance__) @@ -153,7 +153,7 @@ @__instance__ end end - + def __init__(klass) klass.instance_eval { @__instance__ = nil } class << klass @@ -161,11 +161,11 @@ end klass end - + private # extending an object with Singleton is a bad idea undef_method :extend_object - + def append_features(mod) # help out people counting on transitive mixins unless mod.instance_of?(Class) @@ -173,7 +173,7 @@ end super end - + def included(klass) super klass.private_class_method :new, :allocate @@ -181,21 +181,21 @@ Singleton.__init__(klass) end end - + if __FILE__ == $0 def num_of_instances(klass) "#{ObjectSpace.each_object(klass){}} #{klass} instance(s)" -end +end # The basic and most important example. class SomeSingletonClass include Singleton end -puts "There are #{num_of_instances(SomeSingletonClass)}" +puts "There are #{num_of_instances(SomeSingletonClass)}" a = SomeSingletonClass.instance b = SomeSingletonClass.instance # a and b are same object @@ -218,23 +218,23 @@ puts "initialize called by thread ##{Thread.current[:i]}" end end - + class << Ups def _instantiate? @enter.push Thread.current[:i] while false.equal?(@__instance__) Thread.critical = false - sleep 0.08 + sleep 0.08 Thread.critical = true end @leave.push Thread.current[:i] @__instance__ end - + def __sleep sleep(rand(0.08)) end - + def new begin __sleep @@ -246,12 +246,12 @@ end end end - + def instantiate_all @enter = [] @leave = [] - 1.upto(9) {|i| - Thread.new { + 1.upto(9) {|i| + Thread.new { begin Thread.current[:i] = i __sleep @@ -341,7 +341,7 @@ class Down < Middle; end puts "and basic \"Down test\" is #{Down.instance == Down.instance}\n -Various exceptions" +Various exceptions" begin module AModule -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/