# Section 8.2.2.4:
QUADBITS

###### immutable class QUADBITS < $BIT_PATTERN

#### Formal Types

types
SAME = QUADBITS ;
QUADBITS = seq of BIT
inv oct ==
len oct = 32

This class is the primitive immutable class which has thirty-two bits, but otherwise may have any meaning. Operations for creation, conversion and individual bit testing and manipulation are provided in addition to equality testing (which is solely a test of identical bit-patterns).

#### External specifications

The following feature is required to be implemented for this class in accordance with the specification given in $IS_EQ of which $BIT_PATTERN is a sub-type :-

- is_eq(other : SAME) : BOOL

The following features are required to be implemented for this class in accordance with the specifications given by inheritance in $STR of which $BIT_PATTERN is a sub-type :-

- str(lib : LIBCHARS) : STR
- str : STR

The following feature is required to be implemented for this class in accordance with the specification given in $HASH of which $BIT_PATTERN is a sub-type :-

- hash : CARD

The following features are required to be implemented for this class in accordance with the specifications given in $BINARY of which $BIT_PATTERN is a sub-type :-

- create(storage : BINSTR) : SAME
- build(cursor : BIN_CURSOR) : SAME
- read(cursor : BIN_CURSOR) : SAME
- binstr : BINSTR
- write(fyle : BIN_FILE)

The following features are required to be implemented for this class in accordance with the specifications given in the abstract class $BIT_PATTERN :-

- asize : CARD
- null : SAME
- octet : OCTET
- hextet : HEXTET
- quad : QUADBITS
- card : CARD
- char : CHAR
- int : INT
- bit(index : CARD) : BIT
- alter(index : CARD, val : BIT) : SAME
- set(index : CARD) : BOOL
- clear(index : CARD) : BOOL
- bit_invert : SAME
- bit_and(other : SAME) : SAME
- bit_or(other : SAME) : SAME
- bit_xor(other : SAME) : SAME
- left(places : CARD) : SAME
- right(places : CARD) : SAME
- highest(val : BIT) : CARD
- highest : CARD
- lowest(val : BIT) : CARD
- lowest : CARD
- hex_str(lib : LIBCHARS) : STR
- hex_str : STR

#### Quad_Bits

This reader routine provides the same value as asize - for a four octet object!

Quad_Bits | : CARD

##### Formal Signature

Quad_Bits() : res : CARD

##### Pre-condition

Since this is a reader routine, the pre-condition is vacuously true.

##### Post-condition

post (res = asize(self))

This reader routine returns the number of bits contained in a four octet object.

#### Quad_Max

This reader routine returns the maximum unsigned value which can be represented in a bit-pattern of four octets.

Quad_Max | : CARD

##### Formal Signature

Quad_Max() : res : CARD

##### Pre-condition

Since this is a reader routine, the pre-condition is vacuously true.

##### Post-condition

post (res = 2 ** asize(self) - 1)

This reader routine returns the maximum numeric value representable as an exact unsigned number in the four octet bit-pattern.

#### Octets_per_Quad

This reader routine returns the number of octets in this class of object.

Octets_per_Quad | : CARD

##### Formal Signature

Octets_per_Quad() : res : CARD

##### Pre-condition

Since this is a reader routine, the pre-condition is vacuously true.

##### Post-condition

post res = asize div OCTET.asize

This reader routine returns the number of octets in an object of this class.

#### create

This creation feature returns a new object all the bits of which are clear (ie having the value clearbit.

create | : SAME

##### Formal Signature

create() res : SAME

##### Pre-condition

Because there are no arguments to this feature, the pre-condition is vacuously true.

##### Post-condition

post let resbits : seq of BIT be st resbits = res in
resbits = [clearbit, clearbit, clearbit, clearbit, clearbit, clearbit, clearbit, clearbit,
clearbit, clearbit, clearbit, clearbit, clearbit, clearbit, clearbit, clearbit,
clearbit, clearbit, clearbit, clearbit, clearbit, clearbit, clearbit, clearbit,
clearbit, clearbit, clearbit, clearbit, clearbit, clearbit, clearbit, clearbit]

This routine creates a new value all the components of which are clear.

#### create

This second creation routine returns a new object in which the bit-pattern is the representation of val as an exact number.

create | (
| val : CARD
| ) : SAME

##### Formal Signature

Note that the name of this feature in vdm has been changed since there is no name overloading in vdm.

create2(val : CARD) res : SAME

##### Pre-condition

pre val <= Quad_Max

##### Post-condition

post card(res) = val

This routine returns a new object which takes the value val as a bit-pattern.

#### create

This third creation routine returns a new object in which the bit-pattern is the representation of the character val.

create | (
| val : CHAR
| ) : SAME

##### Formal Signature

Note that the name of this feature in vdm has been changed since there is no name overloading in vdm.

create3(val : CHAR) res : SAME

##### Pre-condition

pre let extra = tl tl tl tl CHAR.binstr(val) in
forall idx in inds extra & extra(idx) = null

##### Post-condition

post char(res) = val

This routine returns a new object which takes the value val as a bit-pattern.

| Language Index |  | Library Index |  | Binary Index

Comments or enquiries should be made to Keith Hopper. Page last modified: Wednesday, 22 November 2000. |