Class: BitStream::String
- Inherits:
-
Object
- Object
- BitStream::String
- Defined in:
- lib/types/string.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(byte_len) ⇒ String
constructor
A new instance of String.
- #length ⇒ Object
- #read(s, offset) ⇒ Object
- #write(s, offset, data) ⇒ Object
Constructor Details
#initialize(byte_len) ⇒ String
Returns a new instance of String.
17 18 19 |
# File 'lib/types/string.rb', line 17 def initialize(byte_len) @byte_len = byte_len end |
Class Method Details
.instance(props, byte_len) ⇒ Object
13 14 15 |
# File 'lib/types/string.rb', line 13 def self.instance(props, byte_len) new byte_len end |
Instance Method Details
#length ⇒ Object
21 22 23 |
# File 'lib/types/string.rb', line 21 def length @byte_len * 8 end |
#read(s, offset) ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/types/string.rb', line 25 def read(s, offset) bitoffset = offset % 8 head = offset / 8 tail = (offset + @byte_len * 8 + 7) / 8 val = s[head...tail] Utils.bit_lshift(val, bitoffset) val.slice!(val.size - 1) if bitoffset != 0 return FieldInfo.new(val, @byte_len * 8) end |
#write(s, offset, data) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/types/string.rb', line 36 def write(s, offset, data) head = offset / 8 tail = (offset + @byte_len * 8 + 7) / 8 if offset % 8 != 0 bitoffset = offset % 8 Utils.bit_rshift(data, bitoffset) s[head] = ((data[0].ord & 0xff >> bitoffset) | (s[head].ord & 0xff << (8 - bitoffset))).chr s[tail - 1] = (data[data.size - 1].ord & 0xff << (8 - bitoffset)).chr s[(head + 1)..(tail - 2)] = data[1..(data.size - 2)] else s[head...tail] = data end return @byte_len * 8 end |