DEFINITION MODULE Sets ;
(* Implements large set functions. *)

(* Last Edit : 05 Dec 84 19:10:27 *)

FROM SYSTEM IMPORT WORD ;

EXPORT QUALIFIED Initialise , Range ,
                 Equal , In , Excl , Incl ,
                 And , AndNot , Or , Exor ;


PROCEDURE Initialise( VAR Set : ARRAY OF BITSET ; Full : BOOLEAN ) ;
(*     IF Full THEN
          Set := AnyType{ 0... }
       ELSE
          Set := AnyType{ } ;
       END ;
*)


PROCEDURE Range( VAR Set : ARRAY OF BITSET ; From , To : WORD ) ;
(*     Set := AnyType{ From..To }                          *)


PROCEDURE Equal( Set1 , Set2 : ARRAY OF BITSET ) : BOOLEAN ;
(*     Set1 = Set2                                         *)

PROCEDURE In( Element : WORD ; Set : ARRAY OF BITSET ) : BOOLEAN ;
(*     Element IN Set                                      *)

PROCEDURE Excl( VAR Set : ARRAY OF BITSET ; Element : WORD ) ;
(*     EXCL( Set , Element )                               *)

PROCEDURE Incl( VAR Set : ARRAY OF BITSET ; Element : WORD ) ;
(*     INCL( Set , Element )                               *)

PROCEDURE And( VAR Result : ARRAY OF BITSET ;
               Left , Right : ARRAY OF BITSET ) ;
(*     Result := Left * Right                              *)

PROCEDURE AndNot( VAR Result : ARRAY OF BITSET ;
                  Left , Right : ARRAY OF BITSET ) ;
(*     Result := Left - Right                              *)

PROCEDURE Or( VAR Result : ARRAY OF BITSET ;
              Left , Right : ARRAY OF BITSET ) ;
(*     Result := Left + Right                              *)

PROCEDURE Exor( VAR Result : ARRAY OF BITSET ;
                  Left , Right : ARRAY OF BITSET ) ;
(*     Result := Left / Right                              *)



END Sets.
