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.
@@ -1,6 +1,8 @@
1
- if RUBY_ENGINE == 'ruby'
1
+ if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
2
2
  require 'mkmf'
3
- create_makefile("native_bin_utils")
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")
@@ -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
- Init_native_bin_utils()
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);
@@ -2,12 +2,17 @@ require "bin_utils/version"
2
2
 
3
3
  module BinUtils
4
4
  begin
5
- require 'bin_utils/native_bin_utils'
6
- extend Native
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
@@ -1,3 +1,3 @@
1
1
  module BinUtils
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -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)
@@ -460,7 +460,7 @@ describe 'pure_ruby' do
460
460
  end
461
461
 
462
462
  begin
463
- require 'bin_utils/native_bin_utils'
463
+ require 'bin_utils/bin_utils'
464
464
  describe 'native' do
465
465
  let(:util){ BinUtils::Native }
466
466
  class_eval(&shared_example)
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: 2012-08-08 00:00:00.000000000 Z
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: