blob: f8874b1b2fbccdb9a7f0133672be47b9f5fa6a19 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# frozen_string_literal: true
module Gem
module SafeMarshal
module Elements
class Element
end
class Symbol < Element
def initialize(name)
@name = name
end
attr_reader :name
end
class UserDefined < Element
def initialize(name, binary_string)
@name = name
@binary_string = binary_string
end
attr_reader :name, :binary_string
end
class UserMarshal < Element
def initialize(name, data)
@name = name
@data = data
end
attr_reader :name, :data
end
class String < Element
def initialize(str)
@str = str
end
attr_reader :str
end
class Hash < Element
def initialize(pairs)
@pairs = pairs
end
attr_reader :pairs
end
class HashWithDefaultValue < Hash
def initialize(pairs, default)
super(pairs)
@default = default
end
attr_reader :default
end
class Array < Element
def initialize(elements)
@elements = elements
end
attr_reader :elements
end
class Integer < Element
def initialize(int)
@int = int
end
attr_reader :int
end
class True < Element
def initialize
end
TRUE = new.freeze
end
class False < Element
def initialize
end
FALSE = new.freeze
end
class WithIvars < Element
def initialize(object, ivars)
@object = object
@ivars = ivars
end
attr_reader :object, :ivars
end
class Object < Element
def initialize(name)
@name = name
end
attr_reader :name
end
class Nil < Element
NIL = new.freeze
end
class ObjectLink < Element
def initialize(offset)
@offset = offset
end
attr_reader :offset
end
class SymbolLink < Element
def initialize(offset)
@offset = offset
end
attr_reader :offset
end
class Float < Element
def initialize(string)
@string = string
end
attr_reader :string
end
class Bignum < Element # rubocop:disable Lint/UnifiedInteger
def initialize(sign, data)
@sign = sign
@data = data
end
attr_reader :sign, :data
end
class UserClass < Element
def initialize(name, wrapped_object)
@name = name
@wrapped_object = wrapped_object
end
attr_reader :name, :wrapped_object
end
end
end
end
|