DEFINITION MODULE SetOfChar; (* Some implementations cannot handle SETs of CHAR type because that type has too large a range. This module overcomes that limitation, allowing for 256 character values, from zero to 255. *) (* V1.1, J. Andrea, Jun.22/93 -add Duplicate *) (* V1.0, J. Andrea, Apr.5/92 *) (* This code may be freely used and distributed, it may not be sold *) EXPORT QUALIFIED CharSet, Build, Destroy, Empty, Fill, Incl, Excl, In, Not, Equal, Copy, Duplicate; TYPE CharSet; (* opaque *) PROCEDURE Build( VAR s :CharSet ); (* create a set *) PROCEDURE Destroy( VAR s :CharSet ); (* get rid of the specified set *) PROCEDURE Empty( s :CharSet ); (* turn off all elements *) PROCEDURE Fill( s :CharSet ); (* turn on all elements *) PROCEDURE Incl( s :CharSet; c :CHAR ); (* put the specified character into the set *) PROCEDURE Excl( s :CharSet; c :CHAR ); (* take the specified character out of the set *) PROCEDURE In( s :CharSet; c :CHAR ) :BOOLEAN; (* determine if the character is in the set *) PROCEDURE Not( s :CharSet ); (* invert the set *) PROCEDURE Equal( s, t :CharSet ) :BOOLEAN; (* compare two sets, return TRUE if they are the same *) PROCEDURE Copy( s, t :CharSet ); (* make 't' equal to 's', iff sizes are the same *) PROCEDURE Duplicate( s :CharSet; VAR t :CharSet ); (* copy set 's' into a new set 't' *) END SetOfChar.