tealrb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,661 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TEALrb
4
+ module Opcodes
5
+ BINARY_OPCODE_METHOD_MAPPING = {
6
+ '+': 'add',
7
+ '-': 'subtract',
8
+ '<': 'less',
9
+ '>': 'greater',
10
+ '<=': 'less_eq',
11
+ '>=': 'greater_eq',
12
+ '/': 'divide',
13
+ '==': 'equal',
14
+ '&': 'bitwise_and',
15
+ '!=': 'not_equal',
16
+ '*': 'multiply',
17
+ '&&': 'boolean_and',
18
+ '||': 'boolean_or',
19
+ '%': 'modulo',
20
+ '|': 'bitwise_or',
21
+ '^': 'bitwise_xor',
22
+ '~': 'bitwise_invert',
23
+ 'b+': 'big_endian_add',
24
+ 'b-': 'big_endian_subtract',
25
+ 'b/': 'big_endian_divide',
26
+ 'b*': 'big_endian_multiply',
27
+ 'b<': 'big_endian_less',
28
+ 'b>': 'big_endian_more',
29
+ 'b<=': 'big_endian_less_eq',
30
+ 'b>=': 'big_endian_more_eq',
31
+ 'b==': 'big_endian_equal',
32
+ 'b!=': 'big_endian_not_equal',
33
+ 'b%': 'big_endian_modulo',
34
+ 'b|': 'padded_bitwise_or',
35
+ 'b&': 'padded_bitwise_and',
36
+ 'b^': 'padded_bitwise_xor',
37
+ 'b~': 'bitwise_byte_invert'
38
+ }.freeze
39
+
40
+ UNARY_OPCODE_METHOD_MAPPING = {
41
+ '!': 'zero?'
42
+ }.freeze
43
+
44
+ def acct_params_get(field, _account = nil)
45
+ TEALrb::TEAL.current[Thread.current] << "acct_params_get #{field}"
46
+ end
47
+
48
+ def add(_a = nil, _b = nil)
49
+ TEALrb::TEAL.current[Thread.current] << '+'
50
+ end
51
+
52
+ def addr(address)
53
+ TEALrb::TEAL.current[Thread.current] << "addr #{address}"
54
+ end
55
+
56
+ def addw(_a = nil, _b = nil)
57
+ TEALrb::TEAL.current[Thread.current] << 'addw'
58
+ end
59
+
60
+ def app_global_del(_key = nil)
61
+ TEALrb::TEAL.current[Thread.current] << 'app_global_del'
62
+ end
63
+
64
+ def app_global_get(_key = nil)
65
+ TEALrb::TEAL.current[Thread.current] << 'app_global_get'
66
+ end
67
+
68
+ def app_global_get_ex(_app = nil, _key = nil)
69
+ TEALrb::TEAL.current[Thread.current] << 'app_global_get_ex'
70
+ end
71
+
72
+ def app_global_put(_key = nil, _value = nil)
73
+ TEALrb::TEAL.current[Thread.current] << 'app_global_put'
74
+ end
75
+
76
+ def app_local_del(_account = nil, _key = nil)
77
+ TEALrb::TEAL.current[Thread.current] << 'app_local_del'
78
+ end
79
+
80
+ def app_local_get(_account = nil, _key = nil)
81
+ TEALrb::TEAL.current[Thread.current] << 'app_local_get'
82
+ end
83
+
84
+ def app_local_get_ex(_account = nil, _application = nil, _key = nil)
85
+ TEALrb::TEAL.current[Thread.current] << 'app_local_get_ex'
86
+ end
87
+
88
+ def app_local_put(_account = nil, _key = nil, _value = nil)
89
+ TEALrb::TEAL.current[Thread.current] << 'app_local_put'
90
+ end
91
+
92
+ def app_opted_in(_account = nil, _app = nil)
93
+ TEALrb::TEAL.current[Thread.current] << 'app_opted_in'
94
+ end
95
+
96
+ def app_params_get(field, _app_id = nil)
97
+ TEALrb::TEAL.current[Thread.current] << "app_params_get #{field}"
98
+ end
99
+
100
+ def approve
101
+ TEALrb::TEAL.current[Thread.current] << 'int 1'
102
+ TEALrb::TEAL.current[Thread.current] << 'return'
103
+ end
104
+
105
+ def arg(index)
106
+ TEALrb::TEAL.current[Thread.current] << "arg #{index}"
107
+ end
108
+
109
+ def arg_0 # rubocop:disable Naming/VariableNumber
110
+ TEALrb::TEAL.current[Thread.current] << 'arg_0'
111
+ end
112
+
113
+ def arg_1 # rubocop:disable Naming/VariableNumber
114
+ TEALrb::TEAL.current[Thread.current] << 'arg_1'
115
+ end
116
+
117
+ def arg_2 # rubocop:disable Naming/VariableNumber
118
+ TEALrb::TEAL.current[Thread.current] << 'arg_2'
119
+ end
120
+
121
+ def arg_3 # rubocop:disable Naming/VariableNumber
122
+ TEALrb::TEAL.current[Thread.current] << 'arg_3'
123
+ end
124
+
125
+ def args(_index = nil)
126
+ TEALrb::TEAL.current[Thread.current] << 'args'
127
+ end
128
+
129
+ def assert(_expr = nil)
130
+ TEALrb::TEAL.current[Thread.current] << 'assert'
131
+ end
132
+
133
+ def asset_holding_get(field, _account = nil, _asset = nil)
134
+ TEALrb::TEAL.current[Thread.current] << "asset_holding_get #{field}"
135
+ end
136
+
137
+ def asset_params_get(field, _asset = nil)
138
+ TEALrb::TEAL.current[Thread.current] << "asset_params_get #{field}"
139
+ end
140
+
141
+ def b(target)
142
+ TEALrb::TEAL.current[Thread.current] << "#{__method__} #{target}"
143
+ end
144
+
145
+ def base32(input)
146
+ TEALrb::TEAL.current[Thread.current] << "byte base32(#{input})"
147
+ end
148
+
149
+ def balance(_account = nil)
150
+ TEALrb::TEAL.current[Thread.current] << 'balance'
151
+ end
152
+
153
+ def big_endian_add(_a = nil, _b = nil)
154
+ TEALrb::TEAL.current[Thread.current] << 'b+'
155
+ end
156
+
157
+ def big_endian_divide(_a = nil, _b = nil)
158
+ TEALrb::TEAL.current[Thread.current] << 'b/'
159
+ end
160
+
161
+ def big_endian_equal(_a = nil, _b = nil)
162
+ TEALrb::TEAL.current[Thread.current] << 'b=='
163
+ end
164
+
165
+ def big_endian_less(_a = nil, _b = nil)
166
+ TEALrb::TEAL.current[Thread.current] << 'b<'
167
+ end
168
+
169
+ def big_endian_less_eq(_a = nil, _b = nil)
170
+ TEALrb::TEAL.current[Thread.current] << 'b<='
171
+ end
172
+
173
+ def big_endian_modulo(_a = nil, _b = nil)
174
+ TEALrb::TEAL.current[Thread.current] << 'b%'
175
+ end
176
+
177
+ def big_endian_more(_a = nil, _b = nil)
178
+ TEALrb::TEAL.current[Thread.current] << 'b>'
179
+ end
180
+
181
+ def big_endian_more_eq(_a = nil, _b = nil)
182
+ TEALrb::TEAL.current[Thread.current] << 'b>='
183
+ end
184
+
185
+ def big_endian_multiply(_a = nil, _b = nil)
186
+ TEALrb::TEAL.current[Thread.current] << 'b*'
187
+ end
188
+
189
+ def big_endian_not_equal(_a = nil, _b = nil)
190
+ TEALrb::TEAL.current[Thread.current] << 'b!='
191
+ end
192
+
193
+ def big_endian_subtract(_a = nil, _b = nil)
194
+ TEALrb::TEAL.current[Thread.current] << 'b-'
195
+ end
196
+
197
+ def bitlen(_input = nil)
198
+ TEALrb::TEAL.current[Thread.current] << 'bitlen'
199
+ end
200
+
201
+ def bitwise_and(_a = nil, _b = nil)
202
+ TEALrb::TEAL.current[Thread.current] << '&'
203
+ end
204
+
205
+ def bitwise_byte_invert(_a = nil, _b = nil)
206
+ TEALrb::TEAL.current[Thread.current] << 'b~'
207
+ end
208
+
209
+ def bitwise_invert(_a = nil, _b = nil)
210
+ TEALrb::TEAL.current[Thread.current] << '~'
211
+ end
212
+
213
+ def bitwise_or(_a = nil, _b = nil)
214
+ TEALrb::TEAL.current[Thread.current] << '|'
215
+ end
216
+
217
+ def bitwise_xor(_a = nil, _b = nil)
218
+ TEALrb::TEAL.current[Thread.current] << '^'
219
+ end
220
+
221
+ def bnz(target)
222
+ TEALrb::TEAL.current[Thread.current] << "#{__method__} #{target}"
223
+ end
224
+
225
+ def bsqrt(_big_endian_uint = nil)
226
+ TEALrb::TEAL.current[Thread.current] << 'bsqrt'
227
+ end
228
+
229
+ def btoi(_bytes = nil)
230
+ TEALrb::TEAL.current[Thread.current] << 'btoi'
231
+ end
232
+
233
+ def byte(string)
234
+ TEALrb::TEAL.current[Thread.current] << "byte \"#{string}\""
235
+ end
236
+
237
+ def bytec(index)
238
+ TEALrb::TEAL.current[Thread.current] << "bytec #{index}"
239
+ end
240
+
241
+ def bytec_0 # rubocop:disable Naming/VariableNumber
242
+ TEALrb::TEAL.current[Thread.current] << 'bytec_0'
243
+ end
244
+
245
+ def bytec_1 # rubocop:disable Naming/VariableNumber
246
+ TEALrb::TEAL.current[Thread.current] << 'bytec_1'
247
+ end
248
+
249
+ def bytec_2 # rubocop:disable Naming/VariableNumber
250
+ TEALrb::TEAL.current[Thread.current] << 'bytec_2'
251
+ end
252
+
253
+ def bytec_3 # rubocop:disable Naming/VariableNumber
254
+ TEALrb::TEAL.current[Thread.current] << 'bytec_3'
255
+ end
256
+
257
+ def bytecblock(*bytes)
258
+ TEALrb::TEAL.current[Thread.current] << "bytecblock #{bytes.join(' ')}"
259
+ end
260
+
261
+ def bz(target)
262
+ TEALrb::TEAL.current[Thread.current] << "#{__method__} #{target}"
263
+ end
264
+
265
+ def bzero(_length = nil)
266
+ TEALrb::TEAL.current[Thread.current] << 'bzero'
267
+ end
268
+
269
+ def callsub(name, *_args)
270
+ TEALrb::TEAL.current[Thread.current] << "callsub #{name}"
271
+ end
272
+
273
+ def concat(_a = nil, _b = nil)
274
+ TEALrb::TEAL.current[Thread.current] << 'concat'
275
+ end
276
+
277
+ def cover(count)
278
+ TEALrb::TEAL.current[Thread.current] << "cover #{count}"
279
+ end
280
+
281
+ def dig(index)
282
+ TEALrb::TEAL.current[Thread.current] << "dig #{index}"
283
+ end
284
+
285
+ def divide(_a = nil, _b = nil)
286
+ TEALrb::TEAL.current[Thread.current] << '/'
287
+ end
288
+
289
+ def divmodw(_a = nil, _b = nil)
290
+ TEALrb::TEAL.current[Thread.current] << 'divmodw'
291
+ end
292
+
293
+ def divw(_a = nil, _b = nil)
294
+ TEALrb::TEAL.current[Thread.current] << 'divw'
295
+ end
296
+
297
+ def dup(_expr = nil)
298
+ TEALrb::TEAL.current[Thread.current] << 'dup'
299
+ end
300
+
301
+ def dup2(_expr_a = nil, _expr_b = nil)
302
+ TEALrb::TEAL.current[Thread.current] << 'dup2'
303
+ end
304
+
305
+ def ecdsa_pk_decompress(index, _input = nil)
306
+ TEALrb::TEAL.current[Thread.current] << "ecdsa_pk_decompress #{index}"
307
+ end
308
+
309
+ def ecdsa_pk_recover(index, _input = nil)
310
+ TEALrb::TEAL.current[Thread.current] << "ecdsa_pk_recover #{index}"
311
+ end
312
+
313
+ def ecdsa_verify(index, _input = nil)
314
+ TEALrb::TEAL.current[Thread.current] << "ecdsa_verify #{index}"
315
+ end
316
+
317
+ def ed25519verify(_input = nil)
318
+ TEALrb::TEAL.current[Thread.current] << 'ed25519verify'
319
+ end
320
+
321
+ def equal(_a = nil, _b = nil)
322
+ TEALrb::TEAL.current[Thread.current] << '=='
323
+ end
324
+
325
+ def err
326
+ TEALrb::TEAL.current[Thread.current] << 'err'
327
+ end
328
+
329
+ def exp(_a = nil, _b = nil)
330
+ TEALrb::TEAL.current[Thread.current] << 'exp'
331
+ end
332
+
333
+ def expw(_a = nil, _b = nil)
334
+ TEALrb::TEAL.current[Thread.current] << 'expw'
335
+ end
336
+
337
+ def extract(start, length, _byte_array = nil)
338
+ TEALrb::TEAL.current[Thread.current] << "extract #{start} #{length}"
339
+ end
340
+
341
+ def extract3(_byte_array = nil, _start = nil, _exclusive_end = nil)
342
+ TEALrb::TEAL.current[Thread.current] << 'extract3'
343
+ end
344
+
345
+ def extract_uint16(_byte_array = nil, _start = nil)
346
+ TEALrb::TEAL.current[Thread.current] << 'extract_uint16'
347
+ end
348
+
349
+ def extract_uint32(_byte_array = nil, _start = nil)
350
+ TEALrb::TEAL.current[Thread.current] << 'extract_uint32'
351
+ end
352
+
353
+ def extract_uint64(_byte_array = nil, _start = nil)
354
+ TEALrb::TEAL.current[Thread.current] << 'extract_uint64'
355
+ end
356
+
357
+ def gaid(transaction_index)
358
+ TEALrb::TEAL.current[Thread.current] << "gaid #{transaction_index}"
359
+ end
360
+
361
+ def gaids(_transaction = nil)
362
+ TEALrb::TEAL.current[Thread.current] << 'gaids'
363
+ end
364
+
365
+ def getbit(_input = nil, _bit_index = nil)
366
+ TEALrb::TEAL.current[Thread.current] << 'getbit'
367
+ end
368
+
369
+ def getbyte(_input = nil, _byte_index = nil)
370
+ TEALrb::TEAL.current[Thread.current] << 'getbyte'
371
+ end
372
+
373
+ def gitxn(transaction_index, field)
374
+ TEALrb::TEAL.current[Thread.current] << "gitxn #{transaction_index} #{field}"
375
+ end
376
+
377
+ def gitxna(transaction_index, field, index)
378
+ TEALrb::TEAL.current[Thread.current] << "gitxna #{transaction_index} #{field} #{index}"
379
+ end
380
+
381
+ def gitxnas(transaction_index, field, _index = nil)
382
+ TEALrb::TEAL.current[Thread.current] << "gitxnas #{transaction_index} #{field}"
383
+ end
384
+
385
+ def gload(transaction_index, index)
386
+ TEALrb::TEAL.current[Thread.current] << "gload #{transaction_index} #{index}"
387
+ end
388
+
389
+ def gloads(index, _transaction_index = nil)
390
+ TEALrb::TEAL.current[Thread.current] << "gloads #{index}"
391
+ end
392
+
393
+ def gloadss(_transaction = nil, _index = nil)
394
+ TEALrb::TEAL.current[Thread.current] << 'gloadss'
395
+ end
396
+
397
+ def global(field)
398
+ TEALrb::TEAL.current[Thread.current] << "global #{field}"
399
+ end
400
+
401
+ def greater(_a = nil, _b = nil)
402
+ TEALrb::TEAL.current[Thread.current] << '>'
403
+ end
404
+
405
+ def greater_eq(_a = nil, _b = nil)
406
+ TEALrb::TEAL.current[Thread.current] << '>='
407
+ end
408
+
409
+ def gtxn(index, field)
410
+ TEALrb::TEAL.current[Thread.current] << "gtxn #{index} #{field}"
411
+ end
412
+
413
+ def gtxna(transaction_index, field, index)
414
+ TEALrb::TEAL.current[Thread.current] << "gtxna #{transaction_index} #{field} #{index}"
415
+ end
416
+
417
+ def gtxns(field, _transaction_index = nil)
418
+ TEALrb::TEAL.current[Thread.current] << "gtxns #{field}"
419
+ end
420
+
421
+ def gtxnsa(field, index, _transaction_index = nil)
422
+ TEALrb::TEAL.current[Thread.current] << "gtxnsa #{field} #{index}"
423
+ end
424
+
425
+ def gtxnas(transaction_index, field, _index = nil)
426
+ TEALrb::TEAL.current[Thread.current] << "gtxnas #{transaction_index} #{field}"
427
+ end
428
+
429
+ def gtxnsas(field, _transaction_index = nil, _index = nil)
430
+ TEALrb::TEAL.current[Thread.current] << "gtxnsas #{field}"
431
+ end
432
+
433
+ def int(integer)
434
+ TEALrb::TEAL.current[Thread.current] << "int #{integer}"
435
+ end
436
+
437
+ def intc(index)
438
+ TEALrb::TEAL.current[Thread.current] << "intc #{index}"
439
+ end
440
+
441
+ def intc_0 # rubocop:disable Naming/VariableNumber
442
+ TEALrb::TEAL.current[Thread.current] << 'intc_0'
443
+ end
444
+
445
+ def intc_1 # rubocop:disable Naming/VariableNumber
446
+ TEALrb::TEAL.current[Thread.current] << 'intc_1'
447
+ end
448
+
449
+ def intc_2 # rubocop:disable Naming/VariableNumber
450
+ TEALrb::TEAL.current[Thread.current] << 'intc_2'
451
+ end
452
+
453
+ def intc_3 # rubocop:disable Naming/VariableNumber
454
+ TEALrb::TEAL.current[Thread.current] << 'intc_3'
455
+ end
456
+
457
+ def intcblock(*ints)
458
+ TEALrb::TEAL.current[Thread.current] << "intcblock #{ints.join(' ')}"
459
+ end
460
+
461
+ def itob(_bytes = nil)
462
+ TEALrb::TEAL.current[Thread.current] << 'itob'
463
+ end
464
+
465
+ def itxn_begin
466
+ TEALrb::TEAL.current[Thread.current] << 'itxn_begin'
467
+ end
468
+
469
+ def itxn_field(field, _value = nil)
470
+ TEALrb::TEAL.current[Thread.current] << "itxn_field #{field}"
471
+ end
472
+
473
+ def itxn_next
474
+ TEALrb::TEAL.current[Thread.current] << 'itxn_next'
475
+ end
476
+
477
+ def itxn_submit
478
+ TEALrb::TEAL.current[Thread.current] << 'itxn_submit'
479
+ end
480
+
481
+ def itxna(field, index)
482
+ TEALrb::TEAL.current[Thread.current] << "itxna #{field} #{index}"
483
+ end
484
+
485
+ def itxnas(field, _index = nil)
486
+ TEALrb::TEAL.current[Thread.current] << "itxnas #{field}"
487
+ end
488
+
489
+ def keccak256(_input = nil)
490
+ TEALrb::TEAL.current[Thread.current] << 'keccak256'
491
+ end
492
+
493
+ def label(label_name)
494
+ TEALrb::TEAL.current[Thread.current] << "#{label_name}:"
495
+ end
496
+
497
+ def len(_input = nil)
498
+ TEALrb::TEAL.current[Thread.current] << 'len'
499
+ end
500
+
501
+ def less(_a = nil, _b = nil)
502
+ TEALrb::TEAL.current[Thread.current] << '<'
503
+ end
504
+
505
+ def less_eq(_a = nil, _b = nil)
506
+ TEALrb::TEAL.current[Thread.current] << '<='
507
+ end
508
+
509
+ def load(index)
510
+ TEALrb::TEAL.current[Thread.current] << "load #{index}"
511
+ end
512
+
513
+ def loads(_index = nil)
514
+ TEALrb::TEAL.current[Thread.current] << 'loads'
515
+ end
516
+
517
+ def log(_byte_array = nil)
518
+ TEALrb::TEAL.current[Thread.current] << 'log'
519
+ end
520
+
521
+ def method_signature(signature)
522
+ TEALrb::TEAL.current[Thread.current] << %(method "#{signature}")
523
+ end
524
+
525
+ def min_balance(_account = nil)
526
+ TEALrb::TEAL.current[Thread.current] << 'min_balance'
527
+ end
528
+
529
+ def modulo(_a = nil, _b = nil)
530
+ TEALrb::TEAL.current[Thread.current] << '%'
531
+ end
532
+
533
+ def multiply(_a = nil, _b = nil)
534
+ TEALrb::TEAL.current[Thread.current] << '*'
535
+ end
536
+
537
+ def mulw(_a = nil, _b = nil)
538
+ TEALrb::TEAL.current[Thread.current] << 'mulw'
539
+ end
540
+
541
+ def zero?(_expr = nil)
542
+ TEALrb::TEAL.current[Thread.current] << '!'
543
+ end
544
+
545
+ def not_equal(_a = nil, _b = nil)
546
+ TEALrb::TEAL.current[Thread.current] << '!='
547
+ end
548
+
549
+ def padded_bitwise_and(_a = nil, _b = nil)
550
+ TEALrb::TEAL.current[Thread.current] << 'b&'
551
+ end
552
+
553
+ def padded_bitwise_or(_a = nil, _b = nil)
554
+ TEALrb::TEAL.current[Thread.current] << 'b|'
555
+ end
556
+
557
+ def padded_bitwise_xor(_a = nil, _b = nil)
558
+ TEALrb::TEAL.current[Thread.current] << 'b^'
559
+ end
560
+
561
+ def pop(_expr = nil)
562
+ TEALrb::TEAL.current[Thread.current] << 'pop'
563
+ end
564
+
565
+ def pushbytes(string)
566
+ TEALrb::TEAL.current[Thread.current] << "pushbytes \"#{string}\""
567
+ end
568
+
569
+ def pushint(integer)
570
+ TEALrb::TEAL.current[Thread.current] << "pushint #{integer}"
571
+ end
572
+
573
+ def retsub
574
+ TEALrb::TEAL.current[Thread.current] << 'retsub'
575
+ end
576
+
577
+ def select(_expr_a = nil, _expr_b = nil, _expr_c = nil)
578
+ TEALrb::TEAL.current[Thread.current] << 'select'
579
+ end
580
+
581
+ def setbit(_input = nil, _bit_index = nil, _value = nil)
582
+ TEALrb::TEAL.current[Thread.current] << 'setbit'
583
+ end
584
+
585
+ def setbyte(_byte_array = nil, _byte_index = nil, _value = nil)
586
+ TEALrb::TEAL.current[Thread.current] << 'setbyte'
587
+ end
588
+
589
+ def sha256(_input = nil)
590
+ TEALrb::TEAL.current[Thread.current] << 'sha256'
591
+ end
592
+
593
+ def sha512_256(_input = nil) # rubocop:disable Naming/VariableNumber
594
+ TEALrb::TEAL.current[Thread.current] << 'sha512_256'
595
+ end
596
+
597
+ def shl(_a = nil, _b = nil)
598
+ TEALrb::TEAL.current[Thread.current] << 'shl'
599
+ end
600
+
601
+ def shr(_a = nil, _b = nil)
602
+ TEALrb::TEAL.current[Thread.current] << 'shr'
603
+ end
604
+
605
+ def sqrt(_integer = nil)
606
+ TEALrb::TEAL.current[Thread.current] << 'sqrt'
607
+ end
608
+
609
+ def store(index, _value = nil)
610
+ TEALrb::TEAL.current[Thread.current] << "store #{index}"
611
+ end
612
+
613
+ def stores(_index = nil, _value = nil)
614
+ TEALrb::TEAL.current[Thread.current] << 'stores'
615
+ end
616
+
617
+ def substring(start, exclusive_end, _byte_array = nil)
618
+ TEALrb::TEAL.current[Thread.current] << "substring #{start} #{exclusive_end}"
619
+ end
620
+
621
+ def substring3(_byte_array = nil, _start = nil, _exclusive_end = nil)
622
+ TEALrb::TEAL.current[Thread.current] << 'substring3'
623
+ end
624
+
625
+ def subtract(_a = nil, _b = nil)
626
+ TEALrb::TEAL.current[Thread.current] << '-'
627
+ end
628
+
629
+ def swap(_expr_a = nil, _expr_b = nil)
630
+ TEALrb::TEAL.current[Thread.current] << 'swap'
631
+ end
632
+
633
+ def teal_return(_expr = nil)
634
+ TEALrb::TEAL.current[Thread.current] << 'return'
635
+ end
636
+
637
+ def txn(field)
638
+ TEALrb::TEAL.current[Thread.current] << "txn #{field}"
639
+ end
640
+
641
+ def txna(field, index)
642
+ TEALrb::TEAL.current[Thread.current] << "txna #{field} #{index}"
643
+ end
644
+
645
+ def txnas(field, _index = nil)
646
+ TEALrb::TEAL.current[Thread.current] << "txnas #{field}"
647
+ end
648
+
649
+ def uncover(count)
650
+ TEALrb::TEAL.current[Thread.current] << "uncover #{count}"
651
+ end
652
+
653
+ def boolean_and(_a = nil, _b = nil)
654
+ TEALrb::TEAL.current[Thread.current] << '&&'
655
+ end
656
+
657
+ def boolean_or(_a = nil, _b = nil)
658
+ TEALrb::TEAL.current[Thread.current] << '||'
659
+ end
660
+ end
661
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'patches/string_patches'
4
+ require_relative 'patches/integer_patches'
5
+ require_relative 'patches/nil_patches'
6
+ require_relative 'patches/symbol_patches'