mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* lib/delegate.rb: catch up with class local variable (@_v) spec.
* lib/singleton.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11742 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									fdf4aa982f
								
							
						
					
					
						commit
						970df0d138
					
				
					 4 changed files with 29 additions and 23 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,9 @@
 | 
			
		|||
Thu Feb 15 01:43:45 2007  Koichi Sasada  <ko1@atdot.net>
 | 
			
		||||
 | 
			
		||||
	* lib/delegate.rb: catch up with class local variable (@_v) spec.
 | 
			
		||||
 | 
			
		||||
	* lib/singleton.rb: ditto.
 | 
			
		||||
 | 
			
		||||
Wed Feb 14 22:52:43 2007  Masaki Suketa  <masaki.suketa@nifty.ne.jp>
 | 
			
		||||
 | 
			
		||||
	* ext/win32ole/win32ole.c (ole_variant2val): VC++6 does not 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,15 +95,15 @@
 | 
			
		|||
#    class SimpleDelegator < Delegator
 | 
			
		||||
#      def initialize(obj)
 | 
			
		||||
#        super             # pass obj to Delegator constructor, required
 | 
			
		||||
#        @_sd_obj = obj    # store obj for future use
 | 
			
		||||
#        @delegate_sd_obj = obj    # store obj for future use
 | 
			
		||||
#      end
 | 
			
		||||
# 
 | 
			
		||||
#      def __getobj__
 | 
			
		||||
#        @_sd_obj          # return object we are delegating to, required
 | 
			
		||||
#        @delegate_sd_obj          # return object we are delegating to, required
 | 
			
		||||
#      end
 | 
			
		||||
# 
 | 
			
		||||
#      def __setobj__(obj)
 | 
			
		||||
#        @_sd_obj = obj    # change delegation object, a feature we're providing
 | 
			
		||||
#        @delegate_sd_obj = obj    # change delegation object, a feature we're providing
 | 
			
		||||
#      end
 | 
			
		||||
# 
 | 
			
		||||
#      # ...
 | 
			
		||||
| 
						 | 
				
			
			@ -219,7 +219,7 @@ end
 | 
			
		|||
class SimpleDelegator<Delegator
 | 
			
		||||
  # Returns the current object method calls are being delegated to.
 | 
			
		||||
  def __getobj__
 | 
			
		||||
    @_sd_obj
 | 
			
		||||
    @delegate_sd_obj
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  #
 | 
			
		||||
| 
						 | 
				
			
			@ -238,7 +238,7 @@ class SimpleDelegator<Delegator
 | 
			
		|||
  #
 | 
			
		||||
  def __setobj__(obj)
 | 
			
		||||
    raise ArgumentError, "cannot delegate to self" if self.equal?(obj)
 | 
			
		||||
    @_sd_obj = obj
 | 
			
		||||
    @delegate_sd_obj = obj
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -269,11 +269,11 @@ def DelegateClass(superclass)
 | 
			
		|||
  klass.module_eval {
 | 
			
		||||
    include Delegator::MethodDelegation
 | 
			
		||||
    def __getobj__  # :nodoc:
 | 
			
		||||
      @_dc_obj
 | 
			
		||||
      @delegate_dc_obj
 | 
			
		||||
    end
 | 
			
		||||
    def __setobj__(obj)  # :nodoc:
 | 
			
		||||
      raise ArgumentError, "cannot delegate to self" if self.equal?(obj)
 | 
			
		||||
      @_dc_obj = obj
 | 
			
		||||
      @delegate_dc_obj = obj
 | 
			
		||||
    end
 | 
			
		||||
  }
 | 
			
		||||
  for method in methods
 | 
			
		||||
| 
						 | 
				
			
			@ -281,7 +281,7 @@ def DelegateClass(superclass)
 | 
			
		|||
      klass.module_eval <<-EOS, __FILE__, __LINE__+1
 | 
			
		||||
        def #{method}(*args, &block)
 | 
			
		||||
	  begin
 | 
			
		||||
	    @_dc_obj.__send(:#{method}, *args, &block)
 | 
			
		||||
	    @delegate_dc_obj.__send(:#{method}, *args, &block)
 | 
			
		||||
	  rescue
 | 
			
		||||
	    $@[0,2] = nil
 | 
			
		||||
	    raise
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,7 +39,7 @@
 | 
			
		|||
#    method body is a simple:
 | 
			
		||||
#
 | 
			
		||||
#       def Klass.instance()
 | 
			
		||||
#         return @__instance__
 | 
			
		||||
#         return @singleton__instance__
 | 
			
		||||
#       end
 | 
			
		||||
#
 | 
			
		||||
# *  Klass._load(str)  -  calling Klass.instance()
 | 
			
		||||
| 
						 | 
				
			
			@ -101,16 +101,16 @@ module Singleton
 | 
			
		|||
  class << Singleton
 | 
			
		||||
    def __init__(klass)
 | 
			
		||||
      klass.instance_eval {
 | 
			
		||||
        @__instance__ = nil
 | 
			
		||||
        @__mutex__ = Mutex.new
 | 
			
		||||
        @singleton__instance__ = nil
 | 
			
		||||
        @singleton__mutex__ = Mutex.new
 | 
			
		||||
      }
 | 
			
		||||
      def klass.instance
 | 
			
		||||
        return @__instance__ if @__instance__
 | 
			
		||||
        @__mutex__.synchronize {
 | 
			
		||||
          return @__instance__ if @__instance__
 | 
			
		||||
          @__instance__ = new()
 | 
			
		||||
        return @singleton__instance__ if @singleton__instance__
 | 
			
		||||
        @singleton__mutex__.synchronize {
 | 
			
		||||
          return @singleton__instance__ if @singleton__instance__
 | 
			
		||||
          @singleton__instance__ = new()
 | 
			
		||||
        }
 | 
			
		||||
        @__instance__
 | 
			
		||||
        @singleton__instance__
 | 
			
		||||
      end
 | 
			
		||||
      klass
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			@ -177,13 +177,13 @@ end
 | 
			
		|||
class << Ups
 | 
			
		||||
  def _instantiate?
 | 
			
		||||
    @enter.push Thread.current[:i]
 | 
			
		||||
    while false.equal?(@__instance__)
 | 
			
		||||
      @__mutex__.unlock
 | 
			
		||||
    while false.equal?(@singleton__instance__)
 | 
			
		||||
      @singleton__mutex__.unlock
 | 
			
		||||
      sleep 0.08 
 | 
			
		||||
      @__mutex__.lock
 | 
			
		||||
      @singleton__mutex__.lock
 | 
			
		||||
    end
 | 
			
		||||
    @leave.push Thread.current[:i]
 | 
			
		||||
    @__instance__
 | 
			
		||||
    @singleton__instance__
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  def __sleep
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
#define RUBY_VERSION "1.9.0"
 | 
			
		||||
#define RUBY_RELEASE_DATE "2007-02-14"
 | 
			
		||||
#define RUBY_RELEASE_DATE "2007-02-15"
 | 
			
		||||
#define RUBY_VERSION_CODE 190
 | 
			
		||||
#define RUBY_RELEASE_CODE 20070214
 | 
			
		||||
#define RUBY_RELEASE_CODE 20070215
 | 
			
		||||
#define RUBY_PATCHLEVEL 0
 | 
			
		||||
 | 
			
		||||
#define RUBY_VERSION_MAJOR 1
 | 
			
		||||
| 
						 | 
				
			
			@ -9,7 +9,7 @@
 | 
			
		|||
#define RUBY_VERSION_TEENY 0
 | 
			
		||||
#define RUBY_RELEASE_YEAR 2007
 | 
			
		||||
#define RUBY_RELEASE_MONTH 2
 | 
			
		||||
#define RUBY_RELEASE_DAY 14
 | 
			
		||||
#define RUBY_RELEASE_DAY 15
 | 
			
		||||
 | 
			
		||||
RUBY_EXTERN const char ruby_version[];
 | 
			
		||||
RUBY_EXTERN const char ruby_release_date[];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue