PHP 8.2.31
Preview: weakref.rb Size: 1.39 KB
//proc/thread-self/root/opt/alt/ruby40/share/ruby/weakref.rb

# frozen_string_literal: true
require "delegate"

# Weak Reference class that allows a referenced object to be
# garbage-collected.
#
# A WeakRef may be used exactly like the object it references.
#
# Usage:
#
#   foo = Object.new            # create a new object instance
#   p foo.to_s                  # original's class
#   foo = WeakRef.new(foo)      # reassign foo with WeakRef instance
#   p foo.to_s                  # should be same class
#   GC.start                    # start the garbage collector
#   p foo.to_s                  # should raise exception (recycled)
#

class WeakRef < Delegator
  # The version string
  VERSION = "0.1.4"

  ##
  # RefError is raised when a referenced object has been recycled by the
  # garbage collector

  class RefError < StandardError
  end

  @@__map = ::ObjectSpace::WeakMap.new

  ##
  # Creates a weak reference to +orig+

  def initialize(orig)
    case orig
    when true, false, nil
      @delegate_sd_obj = orig
    else
      @@__map[self] = orig
    end
    super
  end

  def __getobj__(&_block) # :nodoc:
    @@__map[self] or defined?(@delegate_sd_obj) ? @delegate_sd_obj :
      Kernel::raise(RefError, "Invalid Reference - probably recycled", Kernel::caller(2))
  end

  def __setobj__(obj) # :nodoc:
  end

  ##
  # Returns true if the referenced object is still alive.

  def weakref_alive?
    @@__map.key?(self) or defined?(@delegate_sd_obj)
  end
end

Directory Contents

Dirs: 25 × Files: 45

Name Size Perms Modified Actions
- drwxr-xr-x 2026-06-09 07:03:23
Edit Download
cgi DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
digest DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
erb DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
io DIR
- drwxr-xr-x 2026-05-21 12:15:14
Edit Download
json DIR
- drwxr-xr-x 2026-06-09 07:03:27
Edit Download
net DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
objspace DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
open3 DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
openssl DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
optparse DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
prism DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
psych DIR
- drwxr-xr-x 2026-06-09 07:03:23
Edit Download
random DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
ripper DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
set DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
strscan DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
uri DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
- drwxr-xr-x 2026-05-21 12:15:14
Edit Download
yaml DIR
- drwxr-xr-x 2026-06-09 07:03:21
Edit Download
8.41 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
311 B lrw-r--r-- 2026-05-21 12:15:23
Edit Download
517 B lrw-r--r-- 2026-05-21 12:15:22
Edit Download
1.17 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
11.96 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
4.51 KB lrw-r--r-- 2026-05-21 12:15:22
Edit Download
3.30 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
5.96 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
32.57 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
84 B lrw-r--r-- 2026-05-21 12:15:23
Edit Download
2.19 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
79.18 KB lrw-r--r-- 2026-05-21 12:15:22
Edit Download
2.54 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
8.81 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
22.86 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
21.45 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
93.16 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
6.97 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
4.14 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
28.58 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
47.51 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
1.24 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
59 B lrw-r--r-- 2026-05-21 12:15:22
Edit Download
65.44 KB lrw-r--r-- 2026-05-21 12:15:22
Edit Download
2.00 KB lrw-r--r-- 2026-05-21 12:15:22
Edit Download
19.21 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
15.95 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
3.74 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
26.05 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
88.39 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
2.44 KB lrw-r--r-- 2026-05-21 12:15:22
Edit Download
2.28 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
7.53 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
5.59 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
61.26 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
74 B lrw-r--r-- 2026-05-21 12:15:22
Edit Download
20.70 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
24.01 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
10.48 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
5.62 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
14.36 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
11.17 KB lrw-r--r-- 2026-05-21 12:15:22
Edit Download
3.09 KB lrw-r--r-- 2026-05-21 12:15:22
Edit Download
1.39 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download
2.16 KB lrw-r--r-- 2026-05-21 12:15:23
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).