bin_utils 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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