Module: Erlang::ETF

Defined in:
lib/erlang/etf.rb,
lib/erlang/etf/fun.rb,
lib/erlang/etf/map.rb,
lib/erlang/etf/nil.rb,
lib/erlang/etf/pid.rb,
lib/erlang/etf/atom.rb,
lib/erlang/etf/list.rb,
lib/erlang/etf/port.rb,
lib/erlang/etf/term.rb,
lib/erlang/etf/float.rb,
lib/erlang/etf/binary.rb,
lib/erlang/etf/export.rb,
lib/erlang/etf/string.rb,
lib/erlang/etf/integer.rb,
lib/erlang/etf/new_fun.rb,
lib/erlang/etf/version.rb,
lib/erlang/etf/atom_utf8.rb,
lib/erlang/etf/large_big.rb,
lib/erlang/etf/new_float.rb,
lib/erlang/etf/reference.rb,
lib/erlang/etf/small_big.rb,
lib/erlang/etf/bit_binary.rb,
lib/erlang/etf/compressed.rb,
lib/erlang/etf/small_atom.rb,
lib/erlang/etf/large_tuple.rb,
lib/erlang/etf/small_tuple.rb,
lib/erlang/etf/new_reference.rb,
lib/erlang/etf/small_integer.rb,
lib/erlang/etf/small_atom_utf8.rb

Defined Under Namespace

Modules: Term Classes: Atom, AtomUTF8, Binary, BitBinary, Compressed, Export, Float, Fun, Integer, LargeBig, LargeTuple, List, Map, NewFloat, NewFun, NewReference, Nil, Pid, Port, Reference, SmallAtom, SmallAtomUTF8, SmallBig, SmallInteger, SmallTuple, String

Constant Summary collapse

VERSION =
"2.0.0"

Class Method Summary collapse

Class Method Details

.is_atom(term) ⇒ Object



104
105
106
107
108
# File 'lib/erlang/etf.rb', line 104

def self.is_atom(term)
  return true if term.kind_of?(TYPE[:atom])
  return true if Erlang.is_atom(term) and term.size >= 256 and term.utf8 == false
  return false
end

.is_atom_utf8(term) ⇒ Object



110
111
112
113
114
# File 'lib/erlang/etf.rb', line 110

def self.is_atom_utf8(term)
  return true if term.kind_of?(TYPE[:atom_utf8])
  return true if Erlang.is_atom(term) and term.size >= 256 and term.utf8 == true
  return false
end

.is_binary(term) ⇒ Object



116
117
118
119
120
# File 'lib/erlang/etf.rb', line 116

def self.is_binary(term)
  return true if term.kind_of?(TYPE[:binary])
  return true if Erlang.is_binary(term)
  return false
end

.is_bit_binary(term) ⇒ Object



122
123
124
125
126
# File 'lib/erlang/etf.rb', line 122

def self.is_bit_binary(term)
  return true if term.kind_of?(TYPE[:bit_binary])
  return true if not Erlang.is_binary(term) and Erlang.is_bitstring(term)
  return false
end

.is_export(term) ⇒ Object



128
129
130
131
132
# File 'lib/erlang/etf.rb', line 128

def self.is_export(term)
  return true if term.kind_of?(TYPE[:export])
  return true if Erlang.is_function(term) and term.kind_of?(Erlang::Export)
  return false
end

.is_float(term) ⇒ Object



134
135
136
137
138
# File 'lib/erlang/etf.rb', line 134

def self.is_float(term)
  return true if term.kind_of?(TYPE[:float])
  return true if Erlang.is_float(term) and term.old == true
  return false
end

.is_fun(term) ⇒ Object



140
141
142
143
144
# File 'lib/erlang/etf.rb', line 140

def self.is_fun(term)
  return true if term.kind_of?(TYPE[:fun])
  return true if Erlang.is_function(term) and not is_export(term) and not term.new_function?
  return false
end

.is_integer(term) ⇒ Object



146
147
148
149
150
# File 'lib/erlang/etf.rb', line 146

def self.is_integer(term)
  return true if term.kind_of?(TYPE[:integer])
  return true if Erlang.is_integer(term) and not is_small_integer(term) and term >= (-(1 << 31) + 1) and term <= (+(1 << 31) - 1)
  return false
end

.is_large_big(term) ⇒ Object



152
153
154
155
156
# File 'lib/erlang/etf.rb', line 152

def self.is_large_big(term)
  return true if term.kind_of?(TYPE[:large_big])
  return true if Erlang.is_integer(term) and not is_small_integer(term) and not is_integer(term) and not is_small_big(term)
  return false
end

.is_large_tuple(term) ⇒ Object



158
159
160
161
162
# File 'lib/erlang/etf.rb', line 158

def self.is_large_tuple(term)
  return true if term.kind_of?(TYPE[:large_tuple])
  return true if Erlang.is_tuple(term) and not is_small_tuple(term)
  return false
end

.is_list(term) ⇒ Object



164
165
166
167
168
# File 'lib/erlang/etf.rb', line 164

def self.is_list(term)
  return true if term.kind_of?(TYPE[:list])
  return true if Erlang.is_list(term) and not is_nil(term) and not is_string(term)
  return false
end

.is_map(term) ⇒ Object



170
171
172
173
174
# File 'lib/erlang/etf.rb', line 170

def self.is_map(term)
  return true if term.kind_of?(TYPE[:map])
  return true if Erlang.is_map(term)
  return false
end

.is_new_float(term) ⇒ Object



176
177
178
179
180
# File 'lib/erlang/etf.rb', line 176

def self.is_new_float(term)
  return true if term.kind_of?(TYPE[:new_float])
  return true if Erlang.is_float(term) and term.old == false
  return false
end

.is_new_fun(term) ⇒ Object



182
183
184
185
186
# File 'lib/erlang/etf.rb', line 182

def self.is_new_fun(term)
  return true if term.kind_of?(TYPE[:new_fun])
  return true if Erlang.is_function(term) and not is_export(term) and term.new_function?
  return false
end

.is_new_reference(term) ⇒ Object



188
189
190
191
192
# File 'lib/erlang/etf.rb', line 188

def self.is_new_reference(term)
  return true if term.kind_of?(TYPE[:new_reference])
  return true if Erlang.is_reference(term) and term.new_reference?
  return false
end

.is_nil(term) ⇒ Object



194
195
196
197
198
# File 'lib/erlang/etf.rb', line 194

def self.is_nil(term)
  return true if term.kind_of?(TYPE[:nil])
  return true if Erlang.is_list(term) and term.empty?
  return false
end

.is_pid(term) ⇒ Object



200
201
202
203
204
# File 'lib/erlang/etf.rb', line 200

def self.is_pid(term)
  return true if term.kind_of?(TYPE[:pid])
  return true if Erlang.is_pid(term)
  return false
end

.is_port(term) ⇒ Object



206
207
208
209
210
# File 'lib/erlang/etf.rb', line 206

def self.is_port(term)
  return true if term.kind_of?(TYPE[:port])
  return true if Erlang.is_port(term)
  return false
end

.is_reference(term) ⇒ Object



212
213
214
215
216
# File 'lib/erlang/etf.rb', line 212

def self.is_reference(term)
  return true if term.kind_of?(TYPE[:reference])
  return true if Erlang.is_reference(term) and not term.new_reference?
  return false
end

.is_small_atom(term) ⇒ Object



218
219
220
221
222
# File 'lib/erlang/etf.rb', line 218

def self.is_small_atom(term)
  return true if term.kind_of?(TYPE[:small_atom])
  return true if Erlang.is_atom(term) and term.size < 256 and term.utf8 == false
  return false
end

.is_small_atom_utf8(term) ⇒ Object



224
225
226
227
228
# File 'lib/erlang/etf.rb', line 224

def self.is_small_atom_utf8(term)
  return true if term.kind_of?(TYPE[:small_atom_utf8])
  return true if Erlang.is_atom(term) and term.size < 256 and term.utf8 == true
  return false
end

.is_small_big(term) ⇒ Object



230
231
232
233
234
# File 'lib/erlang/etf.rb', line 230

def self.is_small_big(term)
  return true if term.kind_of?(TYPE[:small_big])
  return true if Erlang.is_integer(term) and not is_small_integer(term) and not is_integer(term) and intlog2div8(term) < 256
  return false
end

.is_small_integer(term) ⇒ Object



236
237
238
239
240
# File 'lib/erlang/etf.rb', line 236

def self.is_small_integer(term)
  return true if term.kind_of?(TYPE[:small_integer])
  return true if Erlang.is_integer(term) and term >= 0 and term <= (+(1 << 8) - 1)
  return false
end

.is_small_tuple(term) ⇒ Object



242
243
244
245
246
# File 'lib/erlang/etf.rb', line 242

def self.is_small_tuple(term)
  return true if term.kind_of?(TYPE[:small_tuple])
  return true if Erlang.is_tuple(term) and term.arity < 256
  return false
end

.is_string(term) ⇒ Object



248
249
250
251
252
# File 'lib/erlang/etf.rb', line 248

def self.is_string(term)
  return true if term.kind_of?(TYPE[:string])
  return true if Erlang.is_list(term) and not is_nil(term) and term.kind_of?(Erlang::String) and term.length < (+(1 << 16) - 1)
  return false
end