bitwise 0.4.0 → 0.5.0
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/README.md +7 -2
- data/VERSION +1 -1
- data/bitwise.gemspec +3 -3
- data/lib/bitwise.rb +12 -2
- data/spec/bitwise_spec.rb +2 -2
- metadata +11 -11
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
Bitwise
|
2
2
|
=======
|
3
3
|
|
4
|
+
[](http://travis-ci.org/kenn/bitwise)
|
5
|
+
|
4
6
|
Fast, memory efficient bitwise operations on large binary strings.
|
5
7
|
|
6
8
|
Internally a bit array is represented as a ruby string with `Encoding::BINARY` encoding, which keeps billions of bits in a workable footprint.
|
@@ -18,7 +20,7 @@ Install
|
|
18
20
|
Usage
|
19
21
|
-----
|
20
22
|
|
21
|
-
Set and
|
23
|
+
Set and unset bits:
|
22
24
|
|
23
25
|
```ruby
|
24
26
|
b = Bitwise.new("\x00")
|
@@ -32,10 +34,13 @@ b.set_at(4)
|
|
32
34
|
b.bits
|
33
35
|
=> "01001000"
|
34
36
|
|
35
|
-
b.
|
37
|
+
b.unset_at(1)
|
36
38
|
|
37
39
|
b.bits
|
38
40
|
=> "00001000"
|
41
|
+
|
42
|
+
b.set_at?(4)
|
43
|
+
=> true
|
39
44
|
```
|
40
45
|
|
41
46
|
String-based accessor:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/bitwise.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "bitwise"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.5.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kenn Ejima"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2012-02-28"
|
13
13
|
s.description = "Fast, memory efficient bitwise operations on large binary strings"
|
14
14
|
s.email = "kenn.ejima@gmail.com"
|
15
15
|
s.extensions = ["ext/bitwise/extconf.rb"]
|
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.homepage = "http://github.com/kenn/bitwise"
|
33
33
|
s.licenses = ["MIT"]
|
34
34
|
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = "1.8.
|
35
|
+
s.rubygems_version = "1.8.15"
|
36
36
|
s.summary = "Fast, memory efficient bitwise operations on large binary strings"
|
37
37
|
|
38
38
|
if s.respond_to? :specification_version then
|
data/lib/bitwise.rb
CHANGED
@@ -19,19 +19,29 @@ class Bitwise
|
|
19
19
|
@value.setbyte(@div, @byte | bitmask)
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
22
|
+
def unset_at(index)
|
23
23
|
get_byte(index)
|
24
24
|
@value.setbyte(@div, @byte & ~bitmask)
|
25
25
|
end
|
26
26
|
|
27
|
+
def clear_at(index)
|
28
|
+
warn 'Bitwise#clear_at is deprecated. Use Bitwise#unset_at instead.'
|
29
|
+
unset_at(index)
|
30
|
+
end
|
31
|
+
|
27
32
|
def set_at?(index)
|
28
33
|
get_bit(index) == 1
|
29
34
|
end
|
30
35
|
|
31
|
-
def
|
36
|
+
def unset_at?(index)
|
32
37
|
get_bit(index) == 0
|
33
38
|
end
|
34
39
|
|
40
|
+
def clear_at?(index)
|
41
|
+
warn 'Bitwise#clear_at? is deprecated. Use Bitwise#unset_at? instead.'
|
42
|
+
unset_at?(index)
|
43
|
+
end
|
44
|
+
|
35
45
|
def get_bit(index)
|
36
46
|
get_byte(index)
|
37
47
|
(@byte & bitmask) > 0 ? 1 : 0
|
data/spec/bitwise_spec.rb
CHANGED
@@ -12,7 +12,7 @@ describe Bitwise do
|
|
12
12
|
@bitwise.raw.encoding.should == Encoding::BINARY
|
13
13
|
end
|
14
14
|
|
15
|
-
it "set and
|
15
|
+
it "set and unset" do
|
16
16
|
@bitwise.bits.should == '00000000'
|
17
17
|
|
18
18
|
@bitwise.set_at(1)
|
@@ -20,7 +20,7 @@ describe Bitwise do
|
|
20
20
|
@bitwise.bits.should == '01001000'
|
21
21
|
@bitwise.cardinality.should == 2
|
22
22
|
|
23
|
-
@bitwise.
|
23
|
+
@bitwise.unset_at(1)
|
24
24
|
@bitwise.bits.should == '00001000'
|
25
25
|
@bitwise.cardinality.should == 1
|
26
26
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitwise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-02-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &2155501460 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2155501460
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &2155499800 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2155499800
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &2155515220 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2155515220
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake-compiler
|
49
|
-
requirement: &
|
49
|
+
requirement: &2155514120 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2155514120
|
58
58
|
description: Fast, memory efficient bitwise operations on large binary strings
|
59
59
|
email: kenn.ejima@gmail.com
|
60
60
|
executables: []
|
@@ -95,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
95
|
version: '0'
|
96
96
|
requirements: []
|
97
97
|
rubyforge_project:
|
98
|
-
rubygems_version: 1.8.
|
98
|
+
rubygems_version: 1.8.15
|
99
99
|
signing_key:
|
100
100
|
specification_version: 3
|
101
101
|
summary: Fast, memory efficient bitwise operations on large binary strings
|