Module: BinReadable
- Defined in:
- lib/more/facets/binreadable.rb
Overview
BinReadable
This mixin solely depends on method read(n), which must be defined in the class/module where you mix in this module.
Defined Under Namespace
Modules: ByteOrder
Instance Method Summary collapse
-
#byte_order ⇒ Object
(also: #byteorder)
default is native byte-order.
- #byte_order=(new_byteorder) ⇒ Object (also: #byteorder=)
- #read_cstring ⇒ Object
- #read_int16_big ⇒ Object
- #read_int16_little ⇒ Object
-
#read_int16_native ⇒ Object
Signed.
- #read_int32_big ⇒ Object
- #read_int32_little ⇒ Object
-
#read_int32_native ⇒ Object
Signed.
- #read_int8 ⇒ Object
- #read_word16_big ⇒ Object
- #read_word16_little ⇒ Object
-
#read_word16_native ⇒ Object
Unsigned.
- #read_word32_big ⇒ Object
- #read_word32_little ⇒ Object
-
#read_word32_native ⇒ Object
Unsigned.
-
#read_word8 ⇒ Object
(also: #read_uint8)
no byteorder for 8 bit!.
-
#readn(n) ⇒ Object
read exactly n characters, otherwise raise an exception.
Instance Method Details
#byte_order ⇒ Object Also known as: byteorder
default is native byte-order
77 78 79 |
# File 'lib/more/facets/binreadable.rb', line 77 def byte_order @byte_order || ByteOrder::Native end |
#byte_order=(new_byteorder) ⇒ Object Also known as: byteorder=
81 82 83 |
# File 'lib/more/facets/binreadable.rb', line 81 def byte_order=(new_byteorder) @byte_order = new_byteorder end |
#read_cstring ⇒ Object
191 192 193 194 195 196 197 |
# File 'lib/more/facets/binreadable.rb', line 191 def read_cstring str = "" while (c=readn(1)) != "\0" str << c end str end |
#read_int16_big ⇒ Object
127 128 129 130 |
# File 'lib/more/facets/binreadable.rb', line 127 def read_int16_big # swap bytes if native=little (but we want big) ru_swap(2, 's', ByteOrder::Little) end |
#read_int16_little ⇒ Object
122 123 124 125 |
# File 'lib/more/facets/binreadable.rb', line 122 def read_int16_little # swap bytes if native=big (but we want little) ru_swap(2, 's', ByteOrder::Big) end |
#read_int16_native ⇒ Object
Signed
118 119 120 |
# File 'lib/more/facets/binreadable.rb', line 118 def read_int16_native ru(2, 's') end |
#read_int32_big ⇒ Object
159 160 161 162 |
# File 'lib/more/facets/binreadable.rb', line 159 def read_int32_big # swap bytes if native=little (but we want big) ru_swap(4, 'l', ByteOrder::Little) end |
#read_int32_little ⇒ Object
154 155 156 157 |
# File 'lib/more/facets/binreadable.rb', line 154 def read_int32_little # swap bytes if native=big (but we want little) ru_swap(4, 'l', ByteOrder::Big) end |
#read_int32_native ⇒ Object
Signed
150 151 152 |
# File 'lib/more/facets/binreadable.rb', line 150 def read_int32_native ru(4, 'l') end |
#read_int8 ⇒ Object
96 97 98 |
# File 'lib/more/facets/binreadable.rb', line 96 def read_int8 ru(1, 'c') end |
#read_word16_big ⇒ Object
112 113 114 |
# File 'lib/more/facets/binreadable.rb', line 112 def read_word16_big ru(2, 'n') end |
#read_word16_little ⇒ Object
108 109 110 |
# File 'lib/more/facets/binreadable.rb', line 108 def read_word16_little ru(2, 'v') end |
#read_word16_native ⇒ Object
Unsigned
104 105 106 |
# File 'lib/more/facets/binreadable.rb', line 104 def read_word16_native ru(2, 'S') end |
#read_word32_big ⇒ Object
144 145 146 |
# File 'lib/more/facets/binreadable.rb', line 144 def read_word32_big ru(4, 'N') end |
#read_word32_little ⇒ Object
140 141 142 |
# File 'lib/more/facets/binreadable.rb', line 140 def read_word32_little ru(4, 'V') end |
#read_word32_native ⇒ Object
Unsigned
136 137 138 |
# File 'lib/more/facets/binreadable.rb', line 136 def read_word32_native ru(4, 'L') end |
#read_word8 ⇒ Object Also known as: read_uint8
no byteorder for 8 bit!
92 93 94 |
# File 'lib/more/facets/binreadable.rb', line 92 def read_word8 ru(1, 'C') end |
#readn(n) ⇒ Object
read exactly n characters, otherwise raise an exception.
200 201 202 203 204 |
# File 'lib/more/facets/binreadable.rb', line 200 def readn(n) str = read(n) raise "couldn't read #{n} characters" if str.nil? or str.size != n str end |