This repository was archived by the owner on Jan 5, 2021. It is now read-only.
File tree Expand file tree Collapse file tree 12 files changed +1327
-0
lines changed Expand file tree Collapse file tree 12 files changed +1327
-0
lines changed Original file line number Diff line number Diff line change
1
+ class BasicObject
2
+ NIX = ::Object . new
3
+
4
+ def nix
5
+ return NIX
6
+ end
7
+
8
+ def nix?
9
+ return equal? ( NIX )
10
+ end
11
+
12
+ def checkcast ( s )
13
+ return self
14
+ end
15
+ end
16
+
17
+ class Class
18
+ alias_method :__new__ , :new
19
+
20
+ def nil
21
+ return nil
22
+ end
23
+ end
24
+
25
+ class << self
26
+ def each_manifest_name ( dir )
27
+ path = File . join ( dir , "manifest.txt" )
28
+ lines = File . readlines ( path )
29
+ lines . each do |line |
30
+ name = line . strip
31
+ unless name . empty?
32
+ yield name
33
+ end
34
+ end
35
+ return
36
+ end
37
+
38
+ def load_manifest ( dir )
39
+ each_manifest_name ( dir ) do |name |
40
+ path = File . join ( dir , "ruby" , name )
41
+ if File . exist? ( path )
42
+ load ( path )
43
+ end
44
+ end
45
+ return
46
+ end
47
+
48
+ def load_parent_manifest ( dir )
49
+ load_manifest ( File . dirname ( dir ) )
50
+ return
51
+ end
52
+ end
Original file line number Diff line number Diff line change
1
+ class Bignum
2
+ def size
3
+ return super
4
+ end
5
+ end
6
+
7
+ class Fixnum
8
+ def size
9
+ return super
10
+ end
11
+ end
12
+
13
+ class Integer
14
+ def hash
15
+ return self
16
+ end
17
+
18
+ def size
19
+ raise NoMethodError . new ( "undefined method `size' for #{ self . inspect } :Integer" )
20
+ end
21
+ end
Original file line number Diff line number Diff line change
1
+ dir = File . dirname ( File . expand_path ( __FILE__ ) )
2
+
3
+ require ( File . join ( dir , "base.rb" ) )
4
+
5
+ class Memory
6
+ class Fault < Exception
7
+ end
8
+
9
+ class << self
10
+ def new ( c )
11
+ if c < 0
12
+ raise Fault . new ( "negative capacity: #{ c } " )
13
+ end
14
+ values = Array . new ( c )
15
+ if block_given?
16
+ c . times do |i |
17
+ values [ i ] = yield ( i )
18
+ end
19
+ end
20
+ return Memory . __new__ ( values )
21
+ end
22
+
23
+ def []( *values )
24
+ return Memory . __new__ ( values )
25
+ end
26
+ end
27
+
28
+ def initialize ( values )
29
+ super ( )
30
+ @values = values
31
+ return
32
+ end
33
+
34
+ def __assert_bounds ( i )
35
+ if i < 0 || i >= capacity
36
+ raise Fault . new ( "index out of bounds for capacity #{ capacity } : #{ i } " )
37
+ end
38
+ return
39
+ end
40
+
41
+ def __get ( i )
42
+ return @values [ i ]
43
+ end
44
+
45
+ def eql? ( o )
46
+ if o . is_a? ( Memory )
47
+ if capacity == o . capacity
48
+ capacity . times do |i |
49
+ unless @values [ i ] . eql? ( o . __get ( i ) )
50
+ return false
51
+ end
52
+ end
53
+ return true
54
+ end
55
+ end
56
+ return false
57
+ end
58
+
59
+ def capacity
60
+ return @values . size
61
+ end
62
+
63
+ def []( i )
64
+ __assert_bounds ( i )
65
+ return @values [ i ]
66
+ end
67
+
68
+ def []=( i , e )
69
+ __assert_bounds ( i )
70
+ @values [ i ] = e
71
+ return
72
+ end
73
+ end
You can’t perform that action at this time.
0 commit comments