def self.included( klass )
class << klass
def _incr_refcount( address )
@ptr_mutex ||= Mutex.new
@ptr_mutex.synchronize {
@ptr_refcounts ||= Hash.new(0)
@ptr_refcounts[address] += 1
}
return nil
end
def _release( pointer )
@ptr_mutex ||= Mutex.new
@ptr_mutex.synchronize {
_decr_refcount(pointer.address)
if( @ptr_refcounts[pointer.address] < 1 )
release( pointer )
end
}
end
private
def _decr_refcount( address )
@ptr_refcounts ||= Hash.new(0)
@ptr_refcounts[address] -= 1
if( @ptr_refcounts[address] < 1 )
@ptr_refcounts.delete(address)
end
end
end
end