indexing
description: "Packed boolean strings"
names: packed_booleans
access: index
representation: array
size: fixed
class interface
BOOL_STRING
create
make (n: INTEGER)
-- Allocate area of n booleans.
require
non_negative_size: n >= 0
ensure
correct_allocation: count = n
feature -- Initialization
make (n: INTEGER)
-- Allocate area of n booleans.
require
non_negative_size: n >= 0
ensure
correct_allocation: count = n
feature -- Access
item (i: INTEGER): BOOLEAN
-- Boolean at i-th position,
-- beginning at left, 1 origin
require
index_large_enough: 1 <= i;
index_small_enough: i <= count
feature -- Measurement
count: INTEGER
-- Number of boolean in the area.
feature -- Element change
all_false
-- Set all booleans to false.
all_true
-- Set all booleans to true.
put (v: like item; i: INTEGER)
-- Put boolean v at i-th position
-- beginning at left, 1 origin.
require
index_large_enough: 1 <= i;
index_small_enough: i <= count
feature -- Basic operations
left_shifted (n: INTEGER): like Current
-- Left shifted 'Current' set, by n positions
require
non_negative_shift: n >= 0
right_shifted (n: INTEGER): like Current
-- Right shifted 'Current' set, by n positions
require
non_negative_shift: n >= 0
infix "and" (other: like Current): like Current
-- Logical and of 'Current' and other
require
other_not_void: other /= void;
same_size: other.count = count
prefix "not ": like Current
-- Negation of 'Current'
infix "or" (other: like Current): like Current
-- Logical or of 'Current' and other
require
other_not_void: other /= void;
same_size: other.count = count
infix "xor" (other: like Current): like Current
-- Logical exclusive or of 'Current' and other
require
other_not_void: other /= void;
same_size: other.count = count
end -- class BOOL_STRING