bin_utils 0.0.3 → 0.0.4
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.
- data/ext/bin_utils/extconf.rb +4 -2
- data/ext/bin_utils/native.c +18 -5
- data/lib/bin_utils.rb +8 -3
- data/lib/bin_utils/version.rb +1 -1
- data/test/benchmark.rb +5 -0
- data/test/test_bin_utils.rb +1 -1
- metadata +23 -8
    
        data/ext/bin_utils/extconf.rb
    CHANGED
    
    | @@ -1,6 +1,8 @@ | |
| 1 | 
            -
            if RUBY_ENGINE == 'ruby'
         | 
| 1 | 
            +
            if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
         | 
| 2 2 | 
             
              require 'mkmf'
         | 
| 3 | 
            -
               | 
| 3 | 
            +
              # rubinius has no rb_str_drop_bytes
         | 
| 4 | 
            +
              have_func('rb_str_drop_bytes')
         | 
| 5 | 
            +
              create_makefile("bin_utils")
         | 
| 4 6 | 
             
            else
         | 
| 5 7 | 
             
              File.open(File.dirname(__FILE__) + "/Makefile", 'w') do |f|
         | 
| 6 8 | 
             
                f.write("install:\n\t#nothing to build")
         | 
    
        data/ext/bin_utils/native.c
    CHANGED
    
    | @@ -59,13 +59,24 @@ typedef unsigned long long uint64_t; | |
| 59 59 |  | 
| 60 60 | 
             
            ID rshft;
         | 
| 61 61 | 
             
            ID band;
         | 
| 62 | 
            +
            #ifndef HAVE_RB_STR_DROP_BYTES
         | 
| 63 | 
            +
            /* rubinius has no rb_str_drop_bytes */
         | 
| 64 | 
            +
            ID aset;
         | 
| 65 | 
            +
            static VALUE
         | 
| 66 | 
            +
            rb_str_drop_bytes(VALUE str, long bytes)
         | 
| 67 | 
            +
            {
         | 
| 68 | 
            +
                VALUE args[3] = {INT2FIX(0), INT2FIX(bytes), rb_str_new(0, 0)};
         | 
| 69 | 
            +
                rb_funcall2(str, aset, 3, args);
         | 
| 70 | 
            +
                return str;
         | 
| 71 | 
            +
            }
         | 
| 72 | 
            +
            #endif
         | 
| 62 73 |  | 
| 63 74 | 
             
            static long
         | 
| 64 75 | 
             
            check_size(long i, long strlen, long ilen)
         | 
| 65 76 | 
             
            {
         | 
| 66 77 | 
             
                if (i < 0) { i += strlen; }
         | 
| 67 78 | 
             
                if (i > strlen - ilen || i < 0) {
         | 
| 68 | 
            -
                    rb_raise(rb_eArgError, "index %ld be in range 0..%ld or in range -%ld..-%ld for string of size %ld", i, strlen-ilen, strlen, -ilen, strlen);
         | 
| 79 | 
            +
                    rb_raise(rb_eArgError, "index %ld should be in range 0..%ld or in range -%ld..-%ld for string of size %ld", i, strlen-ilen, strlen, -ilen, strlen);
         | 
| 69 80 | 
             
                }
         | 
| 70 81 | 
             
                return i;
         | 
| 71 82 | 
             
            }
         | 
| @@ -94,7 +105,6 @@ get_int16_le(VALUE rstr, VALUE ri) | |
| 94 105 | 
             
                long i = NUM2LONG(ri);
         | 
| 95 106 | 
             
                const uint8_t *ptr;
         | 
| 96 107 | 
             
                uint32_t byte0, byte1;
         | 
| 97 | 
            -
                int32_t res;
         | 
| 98 108 | 
             
                StringValue(rstr);
         | 
| 99 109 | 
             
                i = check_size(i, RSTRING_LEN(rstr), 2);
         | 
| 100 110 | 
             
                ptr = (const uint8_t*)RSTRING_PTR(rstr);
         | 
| @@ -481,7 +491,7 @@ get_ber(VALUE rstr, VALUE ri) | |
| 481 491 | 
             
                StringValue(rstr);
         | 
| 482 492 | 
             
                len = RSTRING_LEN(rstr);
         | 
| 483 493 | 
             
                i = check_size(i, len, 1);
         | 
| 484 | 
            -
                ptr = RSTRING_PTR(rstr) + i;
         | 
| 494 | 
            +
                ptr = (const uint8_t*)RSTRING_PTR(rstr) + i;
         | 
| 485 495 | 
             
                return parse_ber(ptr, len, &i);
         | 
| 486 496 | 
             
            }
         | 
| 487 497 |  | 
| @@ -953,7 +963,7 @@ slice_ber(VALUE rstr, long *i) | |
| 953 963 | 
             
                const uint8_t *ptr;
         | 
| 954 964 | 
             
                StringValue(rstr);
         | 
| 955 965 | 
             
                len = RSTRING_LEN(rstr);
         | 
| 956 | 
            -
                ptr = RSTRING_PTR(rstr);
         | 
| 966 | 
            +
                ptr = (const uint8_t*)RSTRING_PTR(rstr);
         | 
| 957 967 | 
             
                return parse_ber(ptr, len, i);
         | 
| 958 968 | 
             
            }
         | 
| 959 969 |  | 
| @@ -1583,12 +1593,15 @@ append_int_int(32, 24, be) | |
| 1583 1593 | 
             
            /** APPEND COMPLEX END **/
         | 
| 1584 1594 |  | 
| 1585 1595 | 
             
            void
         | 
| 1586 | 
            -
             | 
| 1596 | 
            +
            Init_bin_utils()
         | 
| 1587 1597 | 
             
            {
         | 
| 1588 1598 | 
             
                VALUE mod_bin_utils = rb_define_module("BinUtils");
         | 
| 1589 1599 | 
             
                VALUE mod_native = rb_define_module_under(mod_bin_utils, "Native");
         | 
| 1590 1600 | 
             
                rshft = rb_intern(">>");
         | 
| 1591 1601 | 
             
                band = rb_intern("&");
         | 
| 1602 | 
            +
            #ifndef HAVE_RB_STR_DROP_BYTES
         | 
| 1603 | 
            +
                aset = rb_intern("[]=");
         | 
| 1604 | 
            +
            #endif
         | 
| 1592 1605 |  | 
| 1593 1606 | 
             
                rb_define_method(mod_native, "get_ber", rb_get_ber, -1);
         | 
| 1594 1607 | 
             
                rb_define_method(mod_native, "get_int8", rb_get_int8, -1);
         | 
    
        data/lib/bin_utils.rb
    CHANGED
    
    | @@ -2,12 +2,17 @@ require "bin_utils/version" | |
| 2 2 |  | 
| 3 3 | 
             
            module BinUtils
         | 
| 4 4 | 
             
              begin
         | 
| 5 | 
            -
                 | 
| 6 | 
            -
             | 
| 5 | 
            +
                if RUBY_ENGINE == 'jruby'
         | 
| 6 | 
            +
                  require 'bin_utils/bin_utils.jar'
         | 
| 7 | 
            +
                else
         | 
| 8 | 
            +
                  require 'bin_utils/bin_utils'
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
                extend ::BinUtils::Native
         | 
| 7 11 | 
             
              rescue LoadError
         | 
| 12 | 
            +
                raise
         | 
| 8 13 | 
             
                require 'bin_utils/pure_ruby'
         | 
| 9 14 | 
             
                extend PureRuby
         | 
| 10 | 
            -
                if RUBY_ENGINE == 'ruby'
         | 
| 15 | 
            +
                if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'jruby'
         | 
| 11 16 | 
             
                  $stderr.puts "Attention: pure ruby version of BinUtils is used"
         | 
| 12 17 | 
             
                end
         | 
| 13 18 | 
             
              end
         | 
    
        data/lib/bin_utils/version.rb
    CHANGED
    
    
    
        data/test/benchmark.rb
    CHANGED
    
    | @@ -68,6 +68,11 @@ Benchmark.bmbm(6) do |x| | |
| 68 68 | 
             
                i, i2 = b.unpack(_Vv)
         | 
| 69 69 | 
             
                b[0, 6] = EMPTY
         | 
| 70 70 | 
             
              } }
         | 
| 71 | 
            +
              x.report('cut unpack i32le i16le') { N.times{|_|
         | 
| 72 | 
            +
                b = a.dup
         | 
| 73 | 
            +
                i, i2 = b.unpack(_Vv)
         | 
| 74 | 
            +
                b.replace b[6..-1]
         | 
| 75 | 
            +
              } }
         | 
| 71 76 | 
             
              x.report('cut unpack i32le i16le ber') { N.times{|_|
         | 
| 72 77 | 
             
                b = a.dup
         | 
| 73 78 | 
             
                i, i2, i3 = b.unpack(_Vvw)
         | 
    
        data/test/test_bin_utils.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,16 +1,32 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: bin_utils
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0.3
         | 
| 5 4 | 
             
              prerelease: 
         | 
| 5 | 
            +
              version: 0.0.4
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| 8 8 | 
             
            - Sokolov Yura 'funny-falcon'
         | 
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 13 | 
            -
            dependencies: | 
| 12 | 
            +
            date: 2013-02-06 00:00:00.000000000 Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            +
              prerelease: false
         | 
| 16 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                requirements:
         | 
| 18 | 
            +
                - - ! '>='
         | 
| 19 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 20 | 
            +
                    version: '0'
         | 
| 21 | 
            +
                none: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - ! '>='
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '0'
         | 
| 27 | 
            +
                none: false
         | 
| 28 | 
            +
              type: :development
         | 
| 29 | 
            +
              name: rake-compiler
         | 
| 14 30 | 
             
            description: utils for extracting binary integers from binary string and packing them
         | 
| 15 31 | 
             
              back
         | 
| 16 32 | 
             
            email:
         | 
| @@ -20,13 +36,13 @@ extensions: | |
| 20 36 | 
             
            - ext/bin_utils/extconf.rb
         | 
| 21 37 | 
             
            extra_rdoc_files: []
         | 
| 22 38 | 
             
            files:
         | 
| 23 | 
            -
            - ext/bin_utils/extconf.rb
         | 
| 24 | 
            -
            - ext/bin_utils/native.c
         | 
| 25 39 | 
             
            - lib/bin_utils.rb
         | 
| 26 40 | 
             
            - lib/bin_utils/pure_ruby.rb
         | 
| 27 41 | 
             
            - lib/bin_utils/version.rb
         | 
| 28 42 | 
             
            - test/benchmark.rb
         | 
| 29 43 | 
             
            - test/test_bin_utils.rb
         | 
| 44 | 
            +
            - ext/bin_utils/extconf.rb
         | 
| 45 | 
            +
            - ext/bin_utils/native.c
         | 
| 30 46 | 
             
            homepage: https://github.com/funny-falcon/bin_utils
         | 
| 31 47 | 
             
            licenses: []
         | 
| 32 48 | 
             
            post_install_message: 
         | 
| @@ -35,17 +51,17 @@ require_paths: | |
| 35 51 | 
             
            - lib
         | 
| 36 52 | 
             
            - ext
         | 
| 37 53 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 38 | 
            -
              none: false
         | 
| 39 54 | 
             
              requirements:
         | 
| 40 55 | 
             
              - - ! '>='
         | 
| 41 56 | 
             
                - !ruby/object:Gem::Version
         | 
| 42 57 | 
             
                  version: 1.9.1
         | 
| 43 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 44 58 | 
             
              none: false
         | 
| 59 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 45 60 | 
             
              requirements:
         | 
| 46 61 | 
             
              - - ! '>='
         | 
| 47 62 | 
             
                - !ruby/object:Gem::Version
         | 
| 48 63 | 
             
                  version: '0'
         | 
| 64 | 
            +
              none: false
         | 
| 49 65 | 
             
            requirements: []
         | 
| 50 66 | 
             
            rubyforge_project: 
         | 
| 51 67 | 
             
            rubygems_version: 1.8.24
         | 
| @@ -56,4 +72,3 @@ summary: Faster alternative to String#unpack and Array#unpack, though not as com | |
| 56 72 | 
             
            test_files:
         | 
| 57 73 | 
             
            - test/benchmark.rb
         | 
| 58 74 | 
             
            - test/test_bin_utils.rb
         | 
| 59 | 
            -
            has_rdoc: 
         |