Oberon || Library || Module Index || Search Engine || Definition || Module
PROCEDURE InclTrue(obj: Disciplines.Object; name: ARRAY OF CHAR); PROCEDURE InclFalse(obj: Disciplines.Object; name: ARRAY OF CHAR); PROCEDURE ExclTrue(obj: Disciplines.Object; name: ARRAY OF CHAR); PROCEDURE ExclFalse(obj: Disciplines.Object; name: ARRAY OF CHAR); PROCEDURE IsTrue(obj: Disciplines.Object; name: ARRAY OF CHAR) : BOOLEAN; PROCEDURE IsFalse(obj: Disciplines.Object; name: ARRAY OF CHAR) : BOOLEAN; PROCEDURE CreateIterator(VAR it: Iterators.Iterator; obj: Disciplines.Object; bool: BOOLEAN);
InclTrue and InclFalse allow to add alias names for TRUE and FALSE, respectively. ExclTrue and ExclFalse remove an alias name entered before by InclTrue or InclFalse. Initial alias names are "TRUE" for TRUE and "FALSE" for FALSE.
IsTrue and IsFalse test name for being an alias for TRUE or FALSE, respectively. CreateIterator returns an iterator which returns all alias names for bool as ConstStrings.String.
PROCEDURE ReadBool(s: Streams.Stream; VAR boolval: BOOLEAN) : BOOLEAN; VAR name: ARRAY 32 OF CHAR; BEGIN IF ~Read.FieldS(s, name) THEN RETURN FALSE END; IF BoolDisciplines.IsTrue(s, name) THEN boolval := TRUE; RETURN TRUE ELSIF BoolDisciplines.IsFalse(s, name) THEN boolval := FALSE; RETURN TRUE ELSE (* unknown name *) RETURN FALSE END; END ReadBool;The callee of ReadBool may then decide to add "yes" and "no" to the default names "TRUE" and "FALSE":
BoolDisciplines.InclTrue(s, "yes"); BoolDisciplines.InclFalse(s, "no"); IF ReadBool(s, boolval) THEN (* ... *) END;
Oberon || Library || Module Index || Search Engine || Definition || Module