bin_utils 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,8 +6,8 @@ end
6
6
 
7
7
  module BinUtils
8
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.
9
+ # It is provided just reference implementation, so that I could write tests before writting
10
+ # native code. You should not expect performance from it.
11
11
  module PureRuby
12
12
  extend self
13
13
  INT32_INT32_LE = 'VV'.freeze
@@ -280,7 +280,10 @@ module BinUtils
280
280
  res
281
281
  end
282
282
 
283
+ BINARY = ::Encoding::BINARY
283
284
  def append_int8!(str, *ints)
285
+ str ||= ''.force_encoding(BINARY)
286
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
284
287
  i = 0
285
288
  sz = ints.size
286
289
  while i < sz
@@ -291,6 +294,8 @@ module BinUtils
291
294
  end
292
295
 
293
296
  def append_int16_le!(str, *ints)
297
+ str ||= ''.force_encoding(BINARY)
298
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
294
299
  i = 0
295
300
  sz = ints.size
296
301
  while i < sz
@@ -302,6 +307,8 @@ module BinUtils
302
307
  end
303
308
 
304
309
  def append_int24_le!(str, *ints)
310
+ str ||= ''.force_encoding(BINARY)
311
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
305
312
  i = 0
306
313
  sz = ints.size
307
314
  while i < sz
@@ -314,6 +321,8 @@ module BinUtils
314
321
  end
315
322
 
316
323
  def append_int32_le!(str, *ints)
324
+ str ||= ''.force_encoding(BINARY)
325
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
317
326
  i = 0
318
327
  sz = ints.size
319
328
  while i < sz
@@ -326,6 +335,8 @@ module BinUtils
326
335
  end
327
336
 
328
337
  def append_int40_le!(str, *ints)
338
+ str ||= ''.force_encoding(BINARY)
339
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
329
340
  i = 0
330
341
  sz = ints.size
331
342
  while i < sz
@@ -339,6 +350,8 @@ module BinUtils
339
350
  end
340
351
 
341
352
  def append_int48_le!(str, *ints)
353
+ str ||= ''.force_encoding(BINARY)
354
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
342
355
  i = 0
343
356
  sz = ints.size
344
357
  while i < sz
@@ -350,6 +363,8 @@ module BinUtils
350
363
  end
351
364
 
352
365
  def append_int56_le!(str, *ints)
366
+ str ||= ''.force_encoding(BINARY)
367
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
353
368
  i = 0
354
369
  sz = ints.size
355
370
  while i < sz
@@ -361,6 +376,8 @@ module BinUtils
361
376
  end
362
377
 
363
378
  def append_int64_le!(str, *ints)
379
+ str ||= ''.force_encoding(BINARY)
380
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
364
381
  i = 0
365
382
  sz = ints.size
366
383
  while i < sz
@@ -372,6 +389,8 @@ module BinUtils
372
389
  end
373
390
 
374
391
  def append_int16_be!(str, *ints)
392
+ str ||= ''.force_encoding(BINARY)
393
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
375
394
  i = 0
376
395
  sz = ints.size
377
396
  while i < sz
@@ -383,6 +402,8 @@ module BinUtils
383
402
  end
384
403
 
385
404
  def append_int24_be!(str, *ints)
405
+ str ||= ''.force_encoding(BINARY)
406
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
386
407
  i = 0
387
408
  sz = ints.size
388
409
  while i < sz
@@ -394,6 +415,8 @@ module BinUtils
394
415
  end
395
416
 
396
417
  def append_int32_be!(str, *ints)
418
+ str ||= ''.force_encoding(BINARY)
419
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
397
420
  i = 0
398
421
  sz = ints.size
399
422
  while i < sz
@@ -406,6 +429,8 @@ module BinUtils
406
429
  end
407
430
 
408
431
  def append_int40_be!(str, *ints)
432
+ str ||= ''.force_encoding(BINARY)
433
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
409
434
  i = 0
410
435
  sz = ints.size
411
436
  while i < sz
@@ -419,6 +444,8 @@ module BinUtils
419
444
  end
420
445
 
421
446
  def append_int48_be!(str, *ints)
447
+ str ||= ''.force_encoding(BINARY)
448
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
422
449
  i = 0
423
450
  sz = ints.size
424
451
  while i < sz
@@ -430,6 +457,8 @@ module BinUtils
430
457
  end
431
458
 
432
459
  def append_int56_be!(str, *ints)
460
+ str ||= ''.force_encoding(BINARY)
461
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
433
462
  i = 0
434
463
  sz = ints.size
435
464
  while i < sz
@@ -441,6 +470,8 @@ module BinUtils
441
470
  end
442
471
 
443
472
  def append_int64_be!(str, *ints)
473
+ str ||= ''.force_encoding(BINARY)
474
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
444
475
  i = 0
445
476
  sz = ints.size
446
477
  while i < sz
@@ -452,162 +483,224 @@ module BinUtils
452
483
  end
453
484
 
454
485
  def append_bersize_int8!(str, *ints)
486
+ str ||= ''.force_encoding(BINARY)
487
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
455
488
  append_ber!(str, ints.size)
456
489
  append_int8!(str, *ints)
457
490
  end
458
491
 
459
492
  def append_bersize_int16_le!(str, *ints)
493
+ str ||= ''.force_encoding(BINARY)
494
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
460
495
  append_ber!(str, ints.size * 2)
461
496
  append_int16_le!(str, *ints)
462
497
  end
463
498
 
464
499
  def append_bersize_int24_le!(str, *ints)
500
+ str ||= ''.force_encoding(BINARY)
501
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
465
502
  append_ber!(str, ints.size * 3)
466
503
  append_int24_le!(str, *ints)
467
504
  end
468
505
 
469
506
  def append_bersize_int32_le!(str, *ints)
507
+ str ||= ''.force_encoding(BINARY)
508
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
470
509
  append_ber!(str, ints.size * 4)
471
510
  append_int32_le!(str, *ints)
472
511
  end
473
512
 
474
513
  def append_bersize_int40_le!(str, *ints)
514
+ str ||= ''.force_encoding(BINARY)
515
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
475
516
  append_ber!(str, ints.size * 5)
476
517
  append_int40_le!(str, *ints)
477
518
  end
478
519
 
479
520
  def append_bersize_int48_le!(str, *ints)
521
+ str ||= ''.force_encoding(BINARY)
522
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
480
523
  append_ber!(str, ints.size * 6)
481
524
  append_int48_le!(str, *ints)
482
525
  end
483
526
 
484
527
  def append_bersize_int56_le!(str, *ints)
528
+ str ||= ''.force_encoding(BINARY)
529
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
485
530
  append_ber!(str, ints.size * 7)
486
531
  append_int56_le!(str, *ints)
487
532
  end
488
533
 
489
534
  def append_bersize_int64_le!(str, *ints)
535
+ str ||= ''.force_encoding(BINARY)
536
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
490
537
  append_ber!(str, ints.size * 8)
491
538
  append_int64_le!(str, *ints)
492
539
  end
493
540
 
494
541
  def append_bersize_int16_be!(str, *ints)
542
+ str ||= ''.force_encoding(BINARY)
543
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
495
544
  append_ber!(str, ints.size * 2)
496
545
  append_int16_be!(str, *ints)
497
546
  end
498
547
 
499
548
  def append_bersize_int24_be!(str, *ints)
549
+ str ||= ''.force_encoding(BINARY)
550
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
500
551
  append_ber!(str, ints.size * 3)
501
552
  append_int24_be!(str, *ints)
502
553
  end
503
554
 
504
555
  def append_bersize_int32_be!(str, *ints)
556
+ str ||= ''.force_encoding(BINARY)
557
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
505
558
  append_ber!(str, ints.size * 4)
506
559
  append_int32_be!(str, *ints)
507
560
  end
508
561
 
509
562
  def append_bersize_int40_be!(str, *ints)
563
+ str ||= ''.force_encoding(BINARY)
564
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
510
565
  append_ber!(str, ints.size * 5)
511
566
  append_int40_be!(str, *ints)
512
567
  end
513
568
 
514
569
  def append_bersize_int48_be!(str, *ints)
570
+ str ||= ''.force_encoding(BINARY)
571
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
515
572
  append_ber!(str, ints.size * 6)
516
573
  append_int48_be!(str, *ints)
517
574
  end
518
575
 
519
576
  def append_bersize_int56_be!(str, *ints)
577
+ str ||= ''.force_encoding(BINARY)
578
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
520
579
  append_ber!(str, ints.size * 7)
521
580
  append_int56_be!(str, *ints)
522
581
  end
523
582
 
524
583
  def append_bersize_int64_be!(str, *ints)
584
+ str ||= ''.force_encoding(BINARY)
585
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
525
586
  append_ber!(str, ints.size * 8)
526
587
  append_int64_be!(str, *ints)
527
588
  end
528
589
 
529
590
  def append_int32size_int8_le!(str, *ints)
591
+ str ||= ''.force_encoding(BINARY)
592
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
530
593
  append_int32_le!(str, ints.size)
531
594
  append_int8!(str, *ints)
532
595
  end
533
596
 
534
597
  def append_int32size_int16_le!(str, *ints)
598
+ str ||= ''.force_encoding(BINARY)
599
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
535
600
  append_int32_le!(str, ints.size * 2)
536
601
  append_int16_le!(str, *ints)
537
602
  end
538
603
 
539
604
  def append_int32size_int24_le!(str, *ints)
605
+ str ||= ''.force_encoding(BINARY)
606
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
540
607
  append_int32_le!(str, ints.size * 3)
541
608
  append_int24_le!(str, *ints)
542
609
  end
543
610
 
544
611
  def append_int32size_int32_le!(str, *ints)
612
+ str ||= ''.force_encoding(BINARY)
613
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
545
614
  append_int32_le!(str, ints.size * 4)
546
615
  append_int32_le!(str, *ints)
547
616
  end
548
617
 
549
618
  def append_int32size_int40_le!(str, *ints)
619
+ str ||= ''.force_encoding(BINARY)
620
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
550
621
  append_int32_le!(str, ints.size * 5)
551
622
  append_int40_le!(str, *ints)
552
623
  end
553
624
 
554
625
  def append_int32size_int48_le!(str, *ints)
626
+ str ||= ''.force_encoding(BINARY)
627
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
555
628
  append_int32_le!(str, ints.size * 6)
556
629
  append_int48_le!(str, *ints)
557
630
  end
558
631
 
559
632
  def append_int32size_int56_le!(str, *ints)
633
+ str ||= ''.force_encoding(BINARY)
634
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
560
635
  append_int32_le!(str, ints.size * 7)
561
636
  append_int56_le!(str, *ints)
562
637
  end
563
638
 
564
639
  def append_int32size_int64_le!(str, *ints)
640
+ str ||= ''.force_encoding(BINARY)
641
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
565
642
  append_int32_le!(str, ints.size * 8)
566
643
  append_int64_le!(str, *ints)
567
644
  end
568
645
 
569
646
  def append_int32size_int8_be!(str, *ints)
647
+ str ||= ''.force_encoding(BINARY)
648
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
570
649
  append_int32_be!(str, ints.size)
571
650
  append_int8!(str, *ints)
572
651
  end
573
652
 
574
653
  def append_int32size_int16_be!(str, *ints)
654
+ str ||= ''.force_encoding(BINARY)
655
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
575
656
  append_int32_be!(str, ints.size * 2)
576
657
  append_int16_be!(str, *ints)
577
658
  end
578
659
 
579
660
  def append_int32size_int24_be!(str, *ints)
661
+ str ||= ''.force_encoding(BINARY)
662
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
580
663
  append_int32_be!(str, ints.size * 3)
581
664
  append_int24_be!(str, *ints)
582
665
  end
583
666
 
584
667
  def append_int32size_int32_be!(str, *ints)
668
+ str ||= ''.force_encoding(BINARY)
669
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
585
670
  append_int32_be!(str, ints.size * 4)
586
671
  append_int32_be!(str, *ints)
587
672
  end
588
673
 
589
674
  def append_int32size_int40_be!(str, *ints)
675
+ str ||= ''.force_encoding(BINARY)
676
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
590
677
  append_int32_be!(str, ints.size * 5)
591
678
  append_int40_be!(str, *ints)
592
679
  end
593
680
 
594
681
  def append_int32size_int48_be!(str, *ints)
682
+ str ||= ''.force_encoding(BINARY)
683
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
595
684
  append_int32_be!(str, ints.size * 6)
596
685
  append_int48_be!(str, *ints)
597
686
  end
598
687
 
599
688
  def append_int32size_int56_be!(str, *ints)
689
+ str ||= ''.force_encoding(BINARY)
690
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
600
691
  append_int32_be!(str, ints.size * 7)
601
692
  append_int56_be!(str, *ints)
602
693
  end
603
694
 
604
695
  def append_int32size_int64_be!(str, *ints)
696
+ str ||= ''.force_encoding(BINARY)
697
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
605
698
  append_int32_be!(str, ints.size * 8)
606
699
  append_int64_be!(str, *ints)
607
700
  end
608
701
 
609
- BINARY = ::Encoding::BINARY
610
702
  def append_string!(data, str)
703
+ data ||= ''.force_encoding(BINARY)
611
704
  data << str.dup.force_encoding(BINARY)
612
705
  end
613
706
 
@@ -615,14 +708,17 @@ module BinUtils
615
708
  INT32LE_STRING = "Va*".freeze
616
709
  INT32BE_STRING = "Na*".freeze
617
710
  def append_bersize_string!(data, str)
711
+ data ||= ''.force_encoding(BINARY)
618
712
  data << [str.bytesize, str].pack(BER_STRING)
619
713
  end
620
714
 
621
715
  def append_int32size_string_le!(data, str)
716
+ data ||= ''.force_encoding(BINARY)
622
717
  data << [str.bytesize, str].pack(INT32LE_STRING)
623
718
  end
624
719
 
625
720
  def append_int32size_string_be!(data, str)
721
+ data ||= ''.force_encoding(BINARY)
626
722
  data << [str.bytesize, str].pack(INT32BE_STRING)
627
723
  end
628
724
 
@@ -630,6 +726,8 @@ module BinUtils
630
726
  INT32LE_BER = 'Vw'
631
727
  INT32BE_BER = 'Nw'
632
728
  def append_ber!(data, *ints)
729
+ data ||= ''.force_encoding(BINARY)
730
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
633
731
  if ints.size == 1 && ints[0] < 128
634
732
  data << ints[0]
635
733
  else
@@ -638,18 +736,24 @@ module BinUtils
638
736
  end
639
737
 
640
738
  def append_bersize_ber!(data, *ints)
739
+ data ||= ''.force_encoding(BINARY)
740
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
641
741
  bers = ints.pack(BER)
642
742
  append_ber!(data, bers.size)
643
743
  data << bers
644
744
  end
645
745
 
646
746
  def append_int32size_ber_le!(data, *ints)
747
+ data ||= ''.force_encoding(BINARY)
748
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
647
749
  bers = ints.pack(BER)
648
750
  append_int32_le!(data, bers.size)
649
751
  data << bers
650
752
  end
651
753
 
652
754
  def append_int32size_ber_be!(data, *ints)
755
+ data ||= ''.force_encoding(BINARY)
756
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
653
757
  bers = ints.pack(BER)
654
758
  append_int32_be!(data, bers.size)
655
759
  data << bers
@@ -658,41 +762,57 @@ module BinUtils
658
762
  # complex
659
763
 
660
764
  def append_int8_ber!(data, int1, *ints)
765
+ data ||= ''.force_encoding(BINARY)
766
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
661
767
  data << (int1 & 255)
662
768
  append_ber!(data, *ints)
663
769
  end
664
770
 
665
771
  def append_int8_int16_le!(data, int1, *ints)
772
+ data ||= ''.force_encoding(BINARY)
773
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
666
774
  data << (int1 & 255)
667
775
  append_int16_le!(data, *ints)
668
776
  end
669
777
 
670
778
  def append_int8_int24_le!(data, int1, *ints)
779
+ data ||= ''.force_encoding(BINARY)
780
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
671
781
  data << (int1 & 255)
672
782
  append_int24_le!(data, *ints)
673
783
  end
674
784
 
675
785
  def append_int8_int32_le!(data, int1, *ints)
786
+ data ||= ''.force_encoding(BINARY)
787
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
676
788
  data << (int1 & 255)
677
789
  append_int32_le!(data, *ints)
678
790
  end
679
-
791
+
680
792
  def append_int16_ber_le!(data, int1, *ints)
793
+ data ||= ''.force_encoding(BINARY)
794
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
681
795
  append_int16_le!(data, int1)
682
796
  append_ber!(data, *ints)
683
797
  end
684
798
 
685
799
  def append_int16_int8_le!(data, int1, *ints)
800
+ data ||= ''.force_encoding(BINARY)
801
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
686
802
  append_int16_le!(data, int1)
687
803
  append_int8!(data, *ints)
688
804
  end
689
805
 
690
806
  def append_int16_int24_le!(data, int1, *ints)
807
+ data ||= ''.force_encoding(BINARY)
808
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
691
809
  append_int16_le!(data, int1)
692
810
  append_int24_le!(data, *ints)
693
811
  end
694
812
 
695
813
  def append_int16_int32_le!(data, int1, *ints)
814
+ data ||= ''.force_encoding(BINARY)
815
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
696
816
  append_int16_le!(data, int1)
697
817
  append_int32_le!(data, *ints)
698
818
  end
@@ -703,151 +823,211 @@ module BinUtils
703
823
  end
704
824
 
705
825
  def append_int24_int8_le!(data, int1, *ints)
826
+ data ||= ''.force_encoding(BINARY)
827
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
706
828
  append_int24_le!(data, int1)
707
829
  append_int8!(data, *ints)
708
830
  end
709
831
 
710
832
  def append_int24_int16_le!(data, int1, *ints)
833
+ data ||= ''.force_encoding(BINARY)
834
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
711
835
  append_int24_le!(data, int1)
712
836
  append_int16_le!(data, *ints)
713
837
  end
714
838
 
715
839
  def append_int24_int32_le!(data, int1, *ints)
840
+ data ||= ''.force_encoding(BINARY)
841
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
716
842
  append_int24_le!(data, int1)
717
843
  append_int32_le!(data, *ints)
718
844
  end
719
-
845
+
720
846
  def append_int32_ber_le!(data, int1, *ints)
847
+ data ||= ''.force_encoding(BINARY)
848
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
721
849
  append_int32_le!(data, int1)
722
850
  append_ber!(data, *ints)
723
851
  end
724
852
 
725
853
  def append_int32_int8_le!(data, int1, *ints)
854
+ data ||= ''.force_encoding(BINARY)
855
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
726
856
  append_int32_le!(data, int1)
727
857
  append_int8!(data, *ints)
728
858
  end
729
859
 
730
860
  def append_int32_int16_le!(data, int1, *ints)
861
+ data ||= ''.force_encoding(BINARY)
862
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
731
863
  append_int32_le!(data, int1)
732
864
  append_int16_le!(data, *ints)
733
865
  end
734
866
 
735
867
  def append_int32_int24_le!(data, int1, *ints)
868
+ data ||= ''.force_encoding(BINARY)
869
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
736
870
  append_int32_le!(data, int1)
737
871
  append_int24_le!(data, *ints)
738
872
  end
739
873
 
740
874
  def append_int8_int16_be!(data, int1, *ints)
875
+ data ||= ''.force_encoding(BINARY)
876
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
741
877
  data << (int1 & 255)
742
878
  append_int16_be!(data, *ints)
743
879
  end
744
880
 
745
881
  def append_int8_int24_be!(data, int1, *ints)
882
+ data ||= ''.force_encoding(BINARY)
883
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
746
884
  data << (int1 & 255)
747
885
  append_int24_be!(data, *ints)
748
886
  end
749
887
 
750
888
  def append_int8_int32_be!(data, int1, *ints)
889
+ data ||= ''.force_encoding(BINARY)
890
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
751
891
  data << (int1 & 255)
752
892
  append_int32_be!(data, *ints)
753
893
  end
754
-
894
+
755
895
  def append_int16_ber_be!(data, int1, *ints)
896
+ data ||= ''.force_encoding(BINARY)
897
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
756
898
  append_int16_be!(data, int1)
757
899
  append_ber!(data, *ints)
758
900
  end
759
901
 
760
902
  def append_int16_int8_be!(data, int1, *ints)
903
+ data ||= ''.force_encoding(BINARY)
904
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
761
905
  append_int16_be!(data, int1)
762
906
  append_int8!(data, *ints)
763
907
  end
764
908
 
765
909
  def append_int16_int24_be!(data, int1, *ints)
910
+ data ||= ''.force_encoding(BINARY)
911
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
766
912
  append_int16_be!(data, int1)
767
913
  append_int24_be!(data, *ints)
768
914
  end
769
915
 
770
916
  def append_int16_int32_be!(data, int1, *ints)
917
+ data ||= ''.force_encoding(BINARY)
918
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
771
919
  append_int16_be!(data, int1)
772
920
  append_int32_be!(data, *ints)
773
921
  end
774
-
922
+
775
923
  def append_int24_ber_be!(data, int1, *ints)
924
+ data ||= ''.force_encoding(BINARY)
925
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
776
926
  append_int24_be!(data, int1)
777
927
  append_ber!(data, *ints)
778
928
  end
779
929
 
780
930
  def append_int24_int8_be!(data, int1, *ints)
931
+ data ||= ''.force_encoding(BINARY)
932
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
781
933
  append_int24_be!(data, int1)
782
934
  append_int8!(data, *ints)
783
935
  end
784
936
 
785
937
  def append_int24_int16_be!(data, int1, *ints)
938
+ data ||= ''.force_encoding(BINARY)
939
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
786
940
  append_int24_be!(data, int1)
787
941
  append_int16_be!(data, *ints)
788
942
  end
789
943
 
790
944
  def append_int24_int32_be!(data, int1, *ints)
945
+ data ||= ''.force_encoding(BINARY)
946
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
791
947
  append_int24_be!(data, int1)
792
948
  append_int32_be!(data, *ints)
793
949
  end
794
-
950
+
795
951
  def append_int32_ber_be!(data, int1, *ints)
952
+ data ||= ''.force_encoding(BINARY)
953
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
796
954
  append_int32_be!(data, int1)
797
955
  append_ber!(data, *ints)
798
956
  end
799
957
 
800
958
  def append_int32_int8_be!(data, int1, *ints)
959
+ data ||= ''.force_encoding(BINARY)
960
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
801
961
  append_int32_be!(data, int1)
802
962
  append_int8!(data, *ints)
803
963
  end
804
964
 
805
965
  def append_int32_int16_be!(data, int1, *ints)
966
+ data ||= ''.force_encoding(BINARY)
967
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
806
968
  append_int32_be!(data, int1)
807
969
  append_int16_be!(data, *ints)
808
970
  end
809
971
 
810
972
  def append_int32_int24_be!(data, int1, *ints)
973
+ data ||= ''.force_encoding(BINARY)
974
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
811
975
  append_int32_be!(data, int1)
812
976
  append_int24_be!(data, *ints)
813
977
  end
814
978
 
815
979
  def append_ber_int8!(data, int1, *ints)
980
+ data ||= ''.force_encoding(BINARY)
981
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
816
982
  append_ber!(data, int1)
817
983
  append_int8!(data, *ints)
818
984
  end
819
985
 
820
986
  def append_ber_int16_le!(data, int1, *ints)
987
+ data ||= ''.force_encoding(BINARY)
988
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
821
989
  append_ber!(data, int1)
822
990
  append_int16_le!(data, *ints)
823
991
  end
824
992
 
825
993
  def append_ber_int24_le!(data, int1, *ints)
994
+ data ||= ''.force_encoding(BINARY)
995
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
826
996
  append_ber!(data, int1)
827
997
  append_int24_le!(data, *ints)
828
998
  end
829
999
 
830
1000
  def append_ber_int32_le!(data, int1, *ints)
1001
+ data ||= ''.force_encoding(BINARY)
1002
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
831
1003
  append_ber!(data, int1)
832
1004
  append_int32_le!(data, *ints)
833
1005
  end
834
1006
 
835
1007
  def append_ber_int8!(data, int1, *ints)
1008
+ data ||= ''.force_encoding(BINARY)
1009
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
836
1010
  append_ber!(data, int1)
837
1011
  append_int8!(data, *ints)
838
1012
  end
839
1013
 
840
1014
  def append_ber_int16_be!(data, int1, *ints)
1015
+ data ||= ''.force_encoding(BINARY)
1016
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
841
1017
  append_ber!(data, int1)
842
1018
  append_int16_be!(data, *ints)
843
1019
  end
844
1020
 
845
1021
  def append_ber_int24_be!(data, int1, *ints)
1022
+ data ||= ''.force_encoding(BINARY)
1023
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
846
1024
  append_ber!(data, int1)
847
1025
  append_int24_be!(data, *ints)
848
1026
  end
849
1027
 
850
1028
  def append_ber_int32_be!(data, int1, *ints)
1029
+ data ||= ''.force_encoding(BINARY)
1030
+ ints = ints[0] if ints.size == 1 && Array === ints[0]
851
1031
  append_ber!(data, int1)
852
1032
  append_int32_be!(data, *ints)
853
1033
  end