57 lines
1.2 KiB
Plaintext
57 lines
1.2 KiB
Plaintext
note
|
|
description: "Facilities to use a stream of bytes as blocks of bytes"
|
|
author: "Colin LeMahieu"
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
quote: "Democracy must be something more than two wolves and a sheep voting on what to have for dinner. - James Bovard (1994)"
|
|
|
|
deferred class
|
|
BYTE_32_BIT_BLOCK_FACILITIES
|
|
|
|
feature
|
|
update_word (in: NATURAL_32)
|
|
do
|
|
update ((in |>> 24).to_natural_8)
|
|
update ((in |>> 16).to_natural_8)
|
|
update ((in |>> 8).to_natural_8)
|
|
update (in.to_natural_8)
|
|
ensure
|
|
buffer_offset = old buffer_offset
|
|
end
|
|
|
|
update (in: NATURAL_8)
|
|
do
|
|
buffer [buffer_offset] := in
|
|
buffer_offset := buffer_offset + 1
|
|
if
|
|
buffer_offset > buffer.upper
|
|
then
|
|
process_word (buffer, 0)
|
|
buffer_offset := 0
|
|
end
|
|
ensure
|
|
buffer_offset = (old buffer_offset + 1) \\ bytes
|
|
end
|
|
|
|
process_word (in: SPECIAL [NATURAL_8] offset: INTEGER_32)
|
|
require
|
|
valid_start: in.valid_index (offset)
|
|
valid_end: in.valid_index (offset + bytes - 1)
|
|
deferred
|
|
end
|
|
|
|
bytes: INTEGER
|
|
do
|
|
Result := 4
|
|
end
|
|
|
|
feature {NONE}
|
|
buffer: SPECIAL [NATURAL_8]
|
|
buffer_offset: INTEGER_32
|
|
|
|
invariant
|
|
buffer_lower: buffer.lower = 0
|
|
buffer_upper: buffer.upper = buffer.lower + bytes - 1
|
|
valid_buffer_offset: buffer.valid_index (buffer_offset)
|
|
end
|