bin_utils 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,9 @@ class String
5
5
  end
6
6
 
7
7
  module BinUtils
8
+ # Pure Ruby implementation of bin utils.
9
+ # It is provided mostly as reference implementation, but JIT enabled ruby implementations
10
+ # (such as jruby and rubinius) could benefit from it.
8
11
  module PureRuby
9
12
  extend self
10
13
  INT32_INT32_LE = 'VV'.freeze
@@ -277,408 +280,576 @@ module BinUtils
277
280
  res
278
281
  end
279
282
 
280
- def append_int8!(str, int)
281
- str << (int & 255)
283
+ def append_int8!(str, *ints)
284
+ i = 0
285
+ sz = ints.size
286
+ while i < sz
287
+ str << (ints[i] & 255)
288
+ i += 1
289
+ end
290
+ str
291
+ end
292
+
293
+ def append_int16_le!(str, *ints)
294
+ i = 0
295
+ sz = ints.size
296
+ while i < sz
297
+ int = ints[i]
298
+ str << (int & 255) << ((int>>8) & 255)
299
+ i += 1
300
+ end
301
+ str
302
+ end
303
+
304
+ def append_int24_le!(str, *ints)
305
+ i = 0
306
+ sz = ints.size
307
+ while i < sz
308
+ int = ints[i]
309
+ str << (int & 255) << ((int>>8) & 255) <<
310
+ ((int>>16) & 255)
311
+ i += 1
312
+ end
313
+ str
314
+ end
315
+
316
+ def append_int32_le!(str, *ints)
317
+ i = 0
318
+ sz = ints.size
319
+ while i < sz
320
+ int = ints[i]
321
+ str << (int & 255) << ((int>>8) & 255) <<
322
+ ((int>>16) & 255) << ((int>>24) & 255)
323
+ i += 1
324
+ end
325
+ str
326
+ end
327
+
328
+ def append_int40_le!(str, *ints)
329
+ i = 0
330
+ sz = ints.size
331
+ while i < sz
332
+ int = ints[i]
333
+ str << (int & 255) << ((int>>8) & 255) <<
334
+ ((int>>16) & 255) << ((int>>24) & 255) <<
335
+ ((int>>32) & 255)
336
+ i += 1
337
+ end
338
+ str
339
+ end
340
+
341
+ def append_int48_le!(str, *ints)
342
+ i = 0
343
+ sz = ints.size
344
+ while i < sz
345
+ int = ints[i]
346
+ str << [int & MAX_INT32, int >> 32].pack(INT32_INT16_LE)
347
+ i += 1
348
+ end
349
+ str
350
+ end
351
+
352
+ def append_int56_le!(str, *ints)
353
+ i = 0
354
+ sz = ints.size
355
+ while i < sz
356
+ int = ints[i]
357
+ str << [int & MAX_INT32, (int >> 32) & MAX_INT16, (int >> 48)].pack(INT32_INT16_INT8_LE)
358
+ i += 1
359
+ end
360
+ str
361
+ end
362
+
363
+ def append_int64_le!(str, *ints)
364
+ i = 0
365
+ sz = ints.size
366
+ while i < sz
367
+ int = ints[i]
368
+ str << [int & MAX_INT32, int >> 32].pack(INT32_INT32_LE)
369
+ i += 1
370
+ end
371
+ str
372
+ end
373
+
374
+ def append_int16_be!(str, *ints)
375
+ i = 0
376
+ sz = ints.size
377
+ while i < sz
378
+ int = ints[i]
379
+ str << ((int>>8) & 255) << (int & 255)
380
+ i += 1
381
+ end
382
+ str
383
+ end
384
+
385
+ def append_int24_be!(str, *ints)
386
+ i = 0
387
+ sz = ints.size
388
+ while i < sz
389
+ int = ints[i]
390
+ str << ((int>>16) & 255) << ((int>>8) & 255) << (int & 255)
391
+ i += 1
392
+ end
393
+ str
394
+ end
395
+
396
+ def append_int32_be!(str, *ints)
397
+ i = 0
398
+ sz = ints.size
399
+ while i < sz
400
+ int = ints[i]
401
+ str << ((int>>24) & 255) << ((int>>16) & 255) <<
402
+ ((int>>8) & 255) << (int & 255)
403
+ i += 1
404
+ end
405
+ str
406
+ end
407
+
408
+ def append_int40_be!(str, *ints)
409
+ i = 0
410
+ sz = ints.size
411
+ while i < sz
412
+ int = ints[i]
413
+ str << ((int>>32) & 255) << ((int>>24) & 255) <<
414
+ ((int>>16) & 255) << ((int>>8) & 255) <<
415
+ (int & 255)
416
+ i += 1
417
+ end
418
+ str
282
419
  end
283
420
 
284
- def append_bersize_int8!(str, int)
285
- str << 1 << (int & 255)
421
+ def append_int48_be!(str, *ints)
422
+ i = 0
423
+ sz = ints.size
424
+ while i < sz
425
+ int = ints[i]
426
+ str << [int >> 32, int & MAX_INT32].pack(INT16_INT32_BE)
427
+ i += 1
428
+ end
429
+ str
286
430
  end
287
431
 
288
- def append_int16_le!(str, int)
289
- str << (int & 255) << ((int>>8) & 255)
432
+ def append_int56_be!(str, *ints)
433
+ i = 0
434
+ sz = ints.size
435
+ while i < sz
436
+ int = ints[i]
437
+ str << [(int >> 48), (int >> 32) & MAX_INT16, int & MAX_INT32].pack(INT8_INT16_INT32_BE)
438
+ i += 1
439
+ end
440
+ str
290
441
  end
291
442
 
292
- def append_int24_le!(str, int)
293
- str << (int & 255) << ((int>>8) & 255) <<
294
- ((int>>16) & 255)
443
+ def append_int64_be!(str, *ints)
444
+ i = 0
445
+ sz = ints.size
446
+ while i < sz
447
+ int = ints[i]
448
+ str << [int >> 32, int & MAX_INT32].pack(INT32_INT32_BE)
449
+ i += 1
450
+ end
451
+ str
295
452
  end
296
453
 
297
- def append_int32_le!(str, int)
298
- str << (int & 255) << ((int>>8) & 255) <<
299
- ((int>>16) & 255) << ((int>>24) & 255)
454
+ def append_bersize_int8!(str, *ints)
455
+ append_ber!(str, ints.size)
456
+ append_int8!(str, *ints)
300
457
  end
301
458
 
302
- def append_int40_le!(str, int)
303
- str << (int & 255) << ((int>>8) & 255) <<
304
- ((int>>16) & 255) << ((int>>24) & 255) <<
305
- ((int>>32) & 255)
459
+ def append_bersize_int16_le!(str, *ints)
460
+ append_ber!(str, ints.size * 2)
461
+ append_int16_le!(str, *ints)
306
462
  end
307
463
 
308
- def append_int48_le!(str, int)
309
- str << [int & MAX_INT32, int >> 32].pack(INT32_INT16_LE)
464
+ def append_bersize_int24_le!(str, *ints)
465
+ append_ber!(str, ints.size * 3)
466
+ append_int24_le!(str, *ints)
310
467
  end
311
468
 
312
- def append_int56_le!(str, int)
313
- str << [int & MAX_INT32, (int >> 32) & MAX_INT16, (int >> 48)].pack(INT32_INT16_INT8_LE)
469
+ def append_bersize_int32_le!(str, *ints)
470
+ append_ber!(str, ints.size * 4)
471
+ append_int32_le!(str, *ints)
314
472
  end
315
473
 
316
- def append_int64_le!(str, int)
317
- str << [int & MAX_INT32, int >> 32].pack(INT32_INT32_LE)
474
+ def append_bersize_int40_le!(str, *ints)
475
+ append_ber!(str, ints.size * 5)
476
+ append_int40_le!(str, *ints)
318
477
  end
319
478
 
320
- alias append_sint8! append_int8!
321
- alias append_sint16_le! append_int16_le!
322
- alias append_sint24_le! append_int24_le!
323
- alias append_sint32_le! append_int32_le!
324
- alias append_sint40_le! append_int40_le!
325
- alias append_sint48_le! append_int48_le!
326
- alias append_sint56_le! append_int56_le!
327
- alias append_sint64_le! append_int64_le!
479
+ def append_bersize_int48_le!(str, *ints)
480
+ append_ber!(str, ints.size * 6)
481
+ append_int48_le!(str, *ints)
482
+ end
328
483
 
329
- def append_int16_be!(str, int)
330
- str << ((int>>8) & 255) << (int & 255)
484
+ def append_bersize_int56_le!(str, *ints)
485
+ append_ber!(str, ints.size * 7)
486
+ append_int56_le!(str, *ints)
331
487
  end
332
488
 
333
- def append_int24_be!(str, int)
334
- str << ((int>>16) & 255) << ((int>>8) & 255) << (int & 255)
489
+ def append_bersize_int64_le!(str, *ints)
490
+ append_ber!(str, ints.size * 8)
491
+ append_int64_le!(str, *ints)
335
492
  end
336
493
 
337
- def append_int32_be!(str, int)
338
- str << ((int>>24) & 255) << ((int>>16) & 255) <<
339
- ((int>>8) & 255) << (int & 255)
494
+ def append_bersize_int16_be!(str, *ints)
495
+ append_ber!(str, ints.size * 2)
496
+ append_int16_be!(str, *ints)
340
497
  end
341
498
 
342
- def append_int40_be!(str, int)
343
- str << ((int>>32) & 255) << ((int>>24) & 255) <<
344
- ((int>>16) & 255) << ((int>>8) & 255) <<
345
- (int & 255)
499
+ def append_bersize_int24_be!(str, *ints)
500
+ append_ber!(str, ints.size * 3)
501
+ append_int24_be!(str, *ints)
346
502
  end
347
503
 
348
- def append_int48_be!(str, int)
349
- str << [int >> 32, int & MAX_INT32].pack(INT16_INT32_BE)
504
+ def append_bersize_int32_be!(str, *ints)
505
+ append_ber!(str, ints.size * 4)
506
+ append_int32_be!(str, *ints)
350
507
  end
351
508
 
352
- def append_int56_be!(str, int)
353
- str << [(int >> 48), (int >> 32) & MAX_INT16, int & MAX_INT32].pack(INT8_INT16_INT32_BE)
509
+ def append_bersize_int40_be!(str, *ints)
510
+ append_ber!(str, ints.size * 5)
511
+ append_int40_be!(str, *ints)
354
512
  end
355
513
 
356
- def append_int64_be!(str, int)
357
- str << [int >> 32, int & MAX_INT32].pack(INT32_INT32_BE)
514
+ def append_bersize_int48_be!(str, *ints)
515
+ append_ber!(str, ints.size * 6)
516
+ append_int48_be!(str, *ints)
358
517
  end
359
518
 
360
- alias append_sint8! append_int8!
361
- alias append_sint16_be! append_int16_be!
362
- alias append_sint24_be! append_int24_be!
363
- alias append_sint32_be! append_int32_be!
364
- alias append_sint40_be! append_int40_be!
365
- alias append_sint48_be! append_int48_be!
366
- alias append_sint56_be! append_int56_be!
367
- alias append_sint64_be! append_int64_be!
519
+ def append_bersize_int56_be!(str, *ints)
520
+ append_ber!(str, ints.size * 7)
521
+ append_int56_be!(str, *ints)
522
+ end
368
523
 
369
- def append_bersize_int16_le!(str, int)
370
- str << 2 << (int & 255) << ((int>>8) & 255)
524
+ def append_bersize_int64_be!(str, *ints)
525
+ append_ber!(str, ints.size * 8)
526
+ append_int64_be!(str, *ints)
371
527
  end
372
528
 
373
- def append_bersize_int24_le!(str, int)
374
- str << 3 << (int & 255) << ((int>>8) & 255) <<
375
- ((int>>16) & 255)
529
+ def append_int32size_int8_le!(str, *ints)
530
+ append_int32_le!(str, ints.size)
531
+ append_int8!(str, *ints)
376
532
  end
377
533
 
378
- def append_bersize_int32_le!(str, int)
379
- str << 4 <<
380
- (int & 255) << ((int>>8) & 255) <<
381
- ((int>>16) & 255) << ((int>>24) & 255)
534
+ def append_int32size_int16_le!(str, *ints)
535
+ append_int32_le!(str, ints.size * 2)
536
+ append_int16_le!(str, *ints)
382
537
  end
383
538
 
384
- def append_bersize_int40_le!(str, int)
385
- str << 5 <<
386
- (int & 255) << ((int>>8) & 255) <<
387
- ((int>>16) & 255) << ((int>>24) & 255) <<
388
- ((int>>32) & 255)
539
+ def append_int32size_int24_le!(str, *ints)
540
+ append_int32_le!(str, ints.size * 3)
541
+ append_int24_le!(str, *ints)
389
542
  end
390
543
 
391
- def append_bersize_int48_le!(str, int)
392
- str << 6 << [int & MAX_INT32, int >> 32].pack(INT32_INT16_LE)
544
+ def append_int32size_int32_le!(str, *ints)
545
+ append_int32_le!(str, ints.size * 4)
546
+ append_int32_le!(str, *ints)
393
547
  end
394
548
 
395
- def append_bersize_int56_le!(str, int)
396
- str << 7 << [int & MAX_INT32, (int >> 32) & MAX_INT16, (int >> 48)].pack(INT32_INT16_INT8_LE)
549
+ def append_int32size_int40_le!(str, *ints)
550
+ append_int32_le!(str, ints.size * 5)
551
+ append_int40_le!(str, *ints)
397
552
  end
398
553
 
399
- def append_bersize_int64_le!(str, int)
400
- str << 8 << [int & MAX_INT32, int >> 32].pack(INT32_INT32_LE)
554
+ def append_int32size_int48_le!(str, *ints)
555
+ append_int32_le!(str, ints.size * 6)
556
+ append_int48_le!(str, *ints)
401
557
  end
402
558
 
403
- alias append_bersize_sint8! append_bersize_int8!
404
- alias append_bersize_sint16_le! append_bersize_int16_le!
405
- alias append_bersize_sint24_le! append_bersize_int24_le!
406
- alias append_bersize_sint32_le! append_bersize_int32_le!
407
- alias append_bersize_sint40_le! append_bersize_int40_le!
408
- alias append_bersize_sint48_le! append_bersize_int48_le!
409
- alias append_bersize_sint56_le! append_bersize_int56_le!
410
- alias append_bersize_sint64_le! append_bersize_int64_le!
559
+ def append_int32size_int56_le!(str, *ints)
560
+ append_int32_le!(str, ints.size * 7)
561
+ append_int56_le!(str, *ints)
562
+ end
411
563
 
412
- def append_bersize_int16_be!(str, int)
413
- str << 2 << ((int>>8) & 255) << (int & 255)
564
+ def append_int32size_int64_le!(str, *ints)
565
+ append_int32_le!(str, ints.size * 8)
566
+ append_int64_le!(str, *ints)
414
567
  end
415
568
 
416
- def append_bersize_int24_be!(str, int)
417
- str << 3 << ((int>>16) & 255) << ((int>>8) & 255) << (int & 255)
569
+ def append_int32size_int8_be!(str, *ints)
570
+ append_int32_be!(str, ints.size)
571
+ append_int8!(str, *ints)
418
572
  end
419
573
 
420
- def append_bersize_int32_be!(str, int)
421
- str << 4 <<
422
- ((int>>24) & 255) << ((int>>16) & 255) <<
423
- ((int>>8) & 255) << (int & 255)
574
+ def append_int32size_int16_be!(str, *ints)
575
+ append_int32_be!(str, ints.size * 2)
576
+ append_int16_be!(str, *ints)
424
577
  end
425
578
 
426
- def append_bersize_int40_be!(str, int)
427
- str << 5 <<
428
- ((int>>32) & 255) << ((int>>24) & 255) <<
429
- ((int>>16) & 255) << ((int>>8) & 255) <<
430
- (int & 255)
579
+ def append_int32size_int24_be!(str, *ints)
580
+ append_int32_be!(str, ints.size * 3)
581
+ append_int24_be!(str, *ints)
431
582
  end
432
583
 
433
- def append_bersize_int48_be!(str, int)
434
- str << 6 << [int >> 32, int & MAX_INT32].pack(INT16_INT32_BE)
584
+ def append_int32size_int32_be!(str, *ints)
585
+ append_int32_be!(str, ints.size * 4)
586
+ append_int32_be!(str, *ints)
435
587
  end
436
588
 
437
- def append_bersize_int56_be!(str, int)
438
- str << 7 << [(int >> 48), (int >> 32) & MAX_INT16, int & MAX_INT32].pack(INT8_INT16_INT32_BE)
589
+ def append_int32size_int40_be!(str, *ints)
590
+ append_int32_be!(str, ints.size * 5)
591
+ append_int40_be!(str, *ints)
439
592
  end
440
593
 
441
- def append_bersize_int64_be!(str, int)
442
- str << 8 << [int >> 32, int & MAX_INT32].pack(INT32_INT32_BE)
594
+ def append_int32size_int48_be!(str, *ints)
595
+ append_int32_be!(str, ints.size * 6)
596
+ append_int48_be!(str, *ints)
443
597
  end
444
598
 
445
- alias append_bersize_sint16_be! append_bersize_int16_be!
446
- alias append_bersize_sint24_be! append_bersize_int24_be!
447
- alias append_bersize_sint32_be! append_bersize_int32_be!
448
- alias append_bersize_sint40_be! append_bersize_int40_be!
449
- alias append_bersize_sint48_be! append_bersize_int48_be!
450
- alias append_bersize_sint56_be! append_bersize_int56_be!
451
- alias append_bersize_sint64_be! append_bersize_int64_be!
599
+ def append_int32size_int56_be!(str, *ints)
600
+ append_int32_be!(str, ints.size * 7)
601
+ append_int56_be!(str, *ints)
602
+ end
452
603
 
453
- INT32LE_1 = "\x01\x00\x00\x00"
454
- INT32LE_2 = "\x02\x00\x00\x00"
455
- INT32LE_3 = "\x03\x00\x00\x00"
456
- INT32LE_4 = "\x04\x00\x00\x00"
457
- INT32LE_5 = "\x05\x00\x00\x00"
458
- INT32LE_6 = "\x06\x00\x00\x00"
459
- INT32LE_7 = "\x07\x00\x00\x00"
460
- INT32LE_8 = "\x08\x00\x00\x00"
461
- def append_int32lesize_int8!(str, int)
462
- str << INT32LE_1 << (int & 255)
604
+ def append_int32size_int64_be!(str, *ints)
605
+ append_int32_be!(str, ints.size * 8)
606
+ append_int64_be!(str, *ints)
463
607
  end
464
608
 
465
- def append_int32lesize_int16_le!(str, int)
466
- str << INT32LE_2 << (int & 255) << ((int>>8) & 255)
609
+ BINARY = ::Encoding::BINARY
610
+ def append_string!(data, str)
611
+ data << str.dup.force_encoding(BINARY)
467
612
  end
468
613
 
469
- def append_int32lesize_int24_le!(str, int)
470
- str << INT32LE_3 << (int & 255) << ((int>>8) & 255) <<
471
- ((int>>16) & 255)
614
+ BER_STRING = "wa*".freeze
615
+ INT32LE_STRING = "Va*".freeze
616
+ INT32BE_STRING = "Na*".freeze
617
+ def append_bersize_string!(data, str)
618
+ data << [str.bytesize, str].pack(BER_STRING)
472
619
  end
473
620
 
474
- def append_int32lesize_int32_le!(str, int)
475
- str << INT32LE_4 <<
476
- (int & 255) << ((int>>8) & 255) <<
477
- ((int>>16) & 255) << ((int>>24) & 255)
621
+ def append_int32size_string_le!(data, str)
622
+ data << [str.bytesize, str].pack(INT32LE_STRING)
478
623
  end
479
624
 
480
- def append_int32lesize_int40_le!(str, int)
481
- str << INT32LE_5 <<
482
- (int & 255) << ((int>>8) & 255) <<
483
- ((int>>16) & 255) << ((int>>24) & 255) <<
484
- ((int>>32) & 255)
625
+ def append_int32size_string_be!(data, str)
626
+ data << [str.bytesize, str].pack(INT32BE_STRING)
485
627
  end
486
628
 
487
- def append_int32lesize_int48_le!(str, int)
488
- str << INT32LE_6 << [int & MAX_INT32, int >> 32].pack(INT32_INT16_LE)
629
+ BER = 'w*'
630
+ INT32LE_BER = 'Vw'
631
+ INT32BE_BER = 'Nw'
632
+ def append_ber!(data, *ints)
633
+ if ints.size == 1 && ints[0] < 128
634
+ data << ints[0]
635
+ else
636
+ data << ints.pack(BER)
637
+ end
489
638
  end
490
639
 
491
- def append_int32lesize_int56_le!(str, int)
492
- str << INT32LE_7 << [int & MAX_INT32, (int >> 32) & MAX_INT16, (int >> 48)].pack(INT32_INT16_INT8_LE)
640
+ def append_bersize_ber!(data, *ints)
641
+ bers = ints.pack(BER)
642
+ append_ber!(data, bers.size)
643
+ data << bers
493
644
  end
494
645
 
495
- def append_int32lesize_int64_le!(str, int)
496
- str << INT32LE_8 << [int & MAX_INT32, int >> 32].pack(INT32_INT32_LE)
646
+ def append_int32size_ber_le!(data, *ints)
647
+ bers = ints.pack(BER)
648
+ append_int32_le!(data, bers.size)
649
+ data << bers
497
650
  end
498
651
 
499
- alias append_int32lesize_sint8! append_int32lesize_int8!
500
- alias append_int32lesize_sint16_le! append_int32lesize_int16_le!
501
- alias append_int32lesize_sint24_le! append_int32lesize_int24_le!
502
- alias append_int32lesize_sint32_le! append_int32lesize_int32_le!
503
- alias append_int32lesize_sint40_le! append_int32lesize_int40_le!
504
- alias append_int32lesize_sint48_le! append_int32lesize_int48_le!
505
- alias append_int32lesize_sint56_le! append_int32lesize_int56_le!
506
- alias append_int32lesize_sint64_le! append_int32lesize_int64_le!
652
+ def append_int32size_ber_be!(data, *ints)
653
+ bers = ints.pack(BER)
654
+ append_int32_be!(data, bers.size)
655
+ data << bers
656
+ end
507
657
 
508
- def append_int32lesize_int16_be!(str, int)
509
- str << INT32LE_2 << ((int>>8) & 255) << (int & 255)
658
+ # complex
659
+
660
+ def append_int8_ber!(data, int1, *ints)
661
+ data << (int1 & 255)
662
+ append_ber!(data, *ints)
510
663
  end
511
664
 
512
- def append_int32lesize_int24_be!(str, int)
513
- str << INT32LE_3 << ((int>>16) & 255) << ((int>>8) & 255) << (int & 255)
665
+ def append_int8_int16_le!(data, int1, *ints)
666
+ data << (int1 & 255)
667
+ append_int16_le!(data, *ints)
514
668
  end
515
669
 
516
- def append_int32lesize_int32_be!(str, int)
517
- str << INT32LE_4 <<
518
- ((int>>24) & 255) << ((int>>16) & 255) <<
519
- ((int>>8) & 255) << (int & 255)
670
+ def append_int8_int24_le!(data, int1, *ints)
671
+ data << (int1 & 255)
672
+ append_int24_le!(data, *ints)
520
673
  end
521
674
 
522
- def append_int32lesize_int40_be!(str, int)
523
- str << INT32LE_5 <<
524
- ((int>>32) & 255) << ((int>>24) & 255) <<
525
- ((int>>16) & 255) << ((int>>8) & 255) <<
526
- (int & 255)
675
+ def append_int8_int32_le!(data, int1, *ints)
676
+ data << (int1 & 255)
677
+ append_int32_le!(data, *ints)
678
+ end
679
+
680
+ def append_int16_ber_le!(data, int1, *ints)
681
+ append_int16_le!(data, int1)
682
+ append_ber!(data, *ints)
527
683
  end
528
684
 
529
- def append_int32lesize_int48_be!(str, int)
530
- str << INT32LE_6 << [int >> 32, int & MAX_INT32].pack(INT16_INT32_BE)
685
+ def append_int16_int8_le!(data, int1, *ints)
686
+ append_int16_le!(data, int1)
687
+ append_int8!(data, *ints)
531
688
  end
532
689
 
533
- def append_int32lesize_int56_be!(str, int)
534
- str << INT32LE_7 << [(int >> 48), (int >> 32) & MAX_INT16, int & MAX_INT32].pack(INT8_INT16_INT32_BE)
690
+ def append_int16_int24_le!(data, int1, *ints)
691
+ append_int16_le!(data, int1)
692
+ append_int24_le!(data, *ints)
535
693
  end
536
694
 
537
- def append_int32lesize_int64_be!(str, int)
538
- str << INT32LE_8 << [int >> 32, int & MAX_INT32].pack(INT32_INT32_BE)
695
+ def append_int16_int32_le!(data, int1, *ints)
696
+ append_int16_le!(data, int1)
697
+ append_int32_le!(data, *ints)
698
+ end
699
+
700
+ def append_int24_ber_le!(data, int1, *ints)
701
+ append_int24_le!(data, int1)
702
+ append_ber!(data, *ints)
539
703
  end
540
704
 
541
- alias append_int32lesize_sint16_be! append_int32lesize_int16_be!
542
- alias append_int32lesize_sint24_be! append_int32lesize_int24_be!
543
- alias append_int32lesize_sint32_be! append_int32lesize_int32_be!
544
- alias append_int32lesize_sint40_be! append_int32lesize_int40_be!
545
- alias append_int32lesize_sint48_be! append_int32lesize_int48_be!
546
- alias append_int32lesize_sint56_be! append_int32lesize_int56_be!
547
- alias append_int32lesize_sint64_be! append_int32lesize_int64_be!
705
+ def append_int24_int8_le!(data, int1, *ints)
706
+ append_int24_le!(data, int1)
707
+ append_int8!(data, *ints)
708
+ end
548
709
 
549
- INT32BE_1 = "\x00\x00\x00\x01"
550
- INT32BE_2 = "\x00\x00\x00\x02"
551
- INT32BE_3 = "\x00\x00\x00\x03"
552
- INT32BE_4 = "\x00\x00\x00\x04"
553
- INT32BE_5 = "\x00\x00\x00\x05"
554
- INT32BE_6 = "\x00\x00\x00\x06"
555
- INT32BE_7 = "\x00\x00\x00\x07"
556
- INT32BE_8 = "\x00\x00\x00\x08"
557
- def append_int32besize_int8!(str, int)
558
- str << INT32BE_1 << (int & 255)
710
+ def append_int24_int16_le!(data, int1, *ints)
711
+ append_int24_le!(data, int1)
712
+ append_int16_le!(data, *ints)
559
713
  end
560
714
 
561
- def append_int32besize_int16_le!(str, int)
562
- str << INT32BE_2 << (int & 255) << ((int>>8) & 255)
715
+ def append_int24_int32_le!(data, int1, *ints)
716
+ append_int24_le!(data, int1)
717
+ append_int32_le!(data, *ints)
718
+ end
719
+
720
+ def append_int32_ber_le!(data, int1, *ints)
721
+ append_int32_le!(data, int1)
722
+ append_ber!(data, *ints)
563
723
  end
564
724
 
565
- def append_int32besize_int24_le!(str, int)
566
- str << INT32BE_3 << (int & 255) << ((int>>8) & 255) <<
567
- ((int>>16) & 255)
725
+ def append_int32_int8_le!(data, int1, *ints)
726
+ append_int32_le!(data, int1)
727
+ append_int8!(data, *ints)
568
728
  end
569
729
 
570
- def append_int32besize_int32_le!(str, int)
571
- str << INT32BE_4 <<
572
- (int & 255) << ((int>>8) & 255) <<
573
- ((int>>16) & 255) << ((int>>24) & 255)
730
+ def append_int32_int16_le!(data, int1, *ints)
731
+ append_int32_le!(data, int1)
732
+ append_int16_le!(data, *ints)
574
733
  end
575
734
 
576
- def append_int32besize_int40_le!(str, int)
577
- str << INT32BE_5 <<
578
- (int & 255) << ((int>>8) & 255) <<
579
- ((int>>16) & 255) << ((int>>24) & 255) <<
580
- ((int>>32) & 255)
735
+ def append_int32_int24_le!(data, int1, *ints)
736
+ append_int32_le!(data, int1)
737
+ append_int24_le!(data, *ints)
581
738
  end
582
739
 
583
- def append_int32besize_int48_le!(str, int)
584
- str << INT32BE_6 << [int & MAX_INT32, int >> 32].pack(INT32_INT16_LE)
740
+ def append_int8_int16_be!(data, int1, *ints)
741
+ data << (int1 & 255)
742
+ append_int16_be!(data, *ints)
585
743
  end
586
744
 
587
- def append_int32besize_int56_le!(str, int)
588
- str << INT32BE_7 << [int & MAX_INT32, (int >> 32) & MAX_INT16, (int >> 48)].pack(INT32_INT16_INT8_LE)
745
+ def append_int8_int24_be!(data, int1, *ints)
746
+ data << (int1 & 255)
747
+ append_int24_be!(data, *ints)
589
748
  end
590
749
 
591
- def append_int32besize_int64_le!(str, int)
592
- str << INT32BE_8 << [int & MAX_INT32, int >> 32].pack(INT32_INT32_LE)
750
+ def append_int8_int32_be!(data, int1, *ints)
751
+ data << (int1 & 255)
752
+ append_int32_be!(data, *ints)
753
+ end
754
+
755
+ def append_int16_ber_be!(data, int1, *ints)
756
+ append_int16_be!(data, int1)
757
+ append_ber!(data, *ints)
593
758
  end
594
759
 
595
- alias append_int32besize_sint8! append_int32besize_int8!
596
- alias append_int32besize_sint16_le! append_int32besize_int16_le!
597
- alias append_int32besize_sint24_le! append_int32besize_int24_le!
598
- alias append_int32besize_sint32_le! append_int32besize_int32_le!
599
- alias append_int32besize_sint40_le! append_int32besize_int40_le!
600
- alias append_int32besize_sint48_le! append_int32besize_int48_le!
601
- alias append_int32besize_sint56_le! append_int32besize_int56_le!
602
- alias append_int32besize_sint64_le! append_int32besize_int64_le!
760
+ def append_int16_int8_be!(data, int1, *ints)
761
+ append_int16_be!(data, int1)
762
+ append_int8!(data, *ints)
763
+ end
603
764
 
604
- def append_int32besize_int16_be!(str, int)
605
- str << INT32BE_2 << ((int>>8) & 255) << (int & 255)
765
+ def append_int16_int24_be!(data, int1, *ints)
766
+ append_int16_be!(data, int1)
767
+ append_int24_be!(data, *ints)
606
768
  end
607
769
 
608
- def append_int32besize_int24_be!(str, int)
609
- str << INT32BE_3 << ((int>>16) & 255) << ((int>>8) & 255) << (int & 255)
770
+ def append_int16_int32_be!(data, int1, *ints)
771
+ append_int16_be!(data, int1)
772
+ append_int32_be!(data, *ints)
773
+ end
774
+
775
+ def append_int24_ber_be!(data, int1, *ints)
776
+ append_int24_be!(data, int1)
777
+ append_ber!(data, *ints)
610
778
  end
611
779
 
612
- def append_int32besize_int32_be!(str, int)
613
- str << INT32BE_4 <<
614
- ((int>>24) & 255) << ((int>>16) & 255) <<
615
- ((int>>8) & 255) << (int & 255)
780
+ def append_int24_int8_be!(data, int1, *ints)
781
+ append_int24_be!(data, int1)
782
+ append_int8!(data, *ints)
616
783
  end
617
784
 
618
- def append_int32besize_int40_be!(str, int)
619
- str << INT32BE_5 <<
620
- ((int>>32) & 255) << ((int>>24) & 255) <<
621
- ((int>>16) & 255) << ((int>>8) & 255) <<
622
- (int & 255)
785
+ def append_int24_int16_be!(data, int1, *ints)
786
+ append_int24_be!(data, int1)
787
+ append_int16_be!(data, *ints)
623
788
  end
624
789
 
625
- def append_int32besize_int48_be!(str, int)
626
- str << INT32BE_6 << [int >> 32, int & MAX_INT32].pack(INT16_INT32_BE)
790
+ def append_int24_int32_be!(data, int1, *ints)
791
+ append_int24_be!(data, int1)
792
+ append_int32_be!(data, *ints)
793
+ end
794
+
795
+ def append_int32_ber_be!(data, int1, *ints)
796
+ append_int32_be!(data, int1)
797
+ append_ber!(data, *ints)
627
798
  end
628
799
 
629
- def append_int32besize_int56_be!(str, int)
630
- str << INT32BE_7 << [(int >> 48), (int >> 32) & MAX_INT16, int & MAX_INT32].pack(INT8_INT16_INT32_BE)
800
+ def append_int32_int8_be!(data, int1, *ints)
801
+ append_int32_be!(data, int1)
802
+ append_int8!(data, *ints)
631
803
  end
632
804
 
633
- def append_int32besize_int64_be!(str, int)
634
- str << INT32BE_8 << [int >> 32, int & MAX_INT32].pack(INT32_INT32_BE)
805
+ def append_int32_int16_be!(data, int1, *ints)
806
+ append_int32_be!(data, int1)
807
+ append_int16_be!(data, *ints)
635
808
  end
636
809
 
637
- alias append_int32besize_sint16_be! append_int32besize_int16_be!
638
- alias append_int32besize_sint24_be! append_int32besize_int24_be!
639
- alias append_int32besize_sint32_be! append_int32besize_int32_be!
640
- alias append_int32besize_sint40_be! append_int32besize_int40_be!
641
- alias append_int32besize_sint48_be! append_int32besize_int48_be!
642
- alias append_int32besize_sint56_be! append_int32besize_int56_be!
643
- alias append_int32besize_sint64_be! append_int32besize_int64_be!
810
+ def append_int32_int24_be!(data, int1, *ints)
811
+ append_int32_be!(data, int1)
812
+ append_int24_be!(data, *ints)
813
+ end
644
814
 
645
- BINARY = ::Encoding::BINARY
646
- def append_string!(data, str)
647
- data << str.dup.force_encoding(BINARY)
815
+ def append_ber_int8!(data, int1, *ints)
816
+ append_ber!(data, int1)
817
+ append_int8!(data, *ints)
648
818
  end
649
819
 
650
- BER_STRING = "wa*".freeze
651
- INT32LE_STRING = "Va*".freeze
652
- INT32BE_STRING = "Na*".freeze
653
- def append_bersize_string!(data, str)
654
- data << [str.bytesize, str].pack(BER_STRING)
820
+ def append_ber_int16_le!(data, int1, *ints)
821
+ append_ber!(data, int1)
822
+ append_int16_le!(data, *ints)
655
823
  end
656
824
 
657
- def append_int32lesize_string!(data, str)
658
- data << [str.bytesize, str].pack(INT32LE_STRING)
825
+ def append_ber_int24_le!(data, int1, *ints)
826
+ append_ber!(data, int1)
827
+ append_int24_le!(data, *ints)
659
828
  end
660
829
 
661
- def append_int32besize_string!(data, str)
662
- data << [str.bytesize, str].pack(INT32BE_STRING)
830
+ def append_ber_int32_le!(data, int1, *ints)
831
+ append_ber!(data, int1)
832
+ append_int32_le!(data, *ints)
663
833
  end
664
834
 
665
- BER = 'w'
666
- INT32LE_BER = 'Vw'
667
- INT32BE_BER = 'Nw'
668
- def append_ber!(data, int)
669
- data << [int].pack(BER)
835
+ def append_ber_int8!(data, int1, *ints)
836
+ append_ber!(data, int1)
837
+ append_int8!(data, *ints)
670
838
  end
671
839
 
672
- def append_bersize_ber!(data, int)
673
- data << ber_size(int) << [int].pack(BER)
840
+ def append_ber_int16_be!(data, int1, *ints)
841
+ append_ber!(data, int1)
842
+ append_int16_be!(data, *ints)
674
843
  end
675
844
 
676
- def append_int32lesize_ber!(data, int)
677
- data << [ber_size(int), int].pack(INT32LE_BER)
845
+ def append_ber_int24_be!(data, int1, *ints)
846
+ append_ber!(data, int1)
847
+ append_int24_be!(data, *ints)
678
848
  end
679
849
 
680
- def append_int32besize_ber!(data, int)
681
- data << [ber_size(int), int].pack(INT32BE_BER)
850
+ def append_ber_int32_be!(data, int1, *ints)
851
+ append_ber!(data, int1)
852
+ append_int32_be!(data, *ints)
682
853
  end
683
854
  end
684
855
  end