PROCEDURE InitListOfStates(VAR list: ListOfStates);
BEGIN
list.top := NIL; list.nofstates := 0;
END InitListOfStates;
PROCEDURE AddState(VAR list: ListOfStates; state: State);
VAR
element: StateElement;
BEGIN
NEW(element); element.state := state;
element.next := list.top; list.top := element;
INC(list.nofstates);
END AddState;
PROCEDURE RemoveState(VAR list: ListOfStates);
BEGIN
ASSERT(list.top # NIL);
list.top := list.top.next;
DEC(list.nofstates);
END RemoveState;
PROCEDURE GetCurrentState(VAR list: ListOfStates;
VAR state: State);
BEGIN
ASSERT(list.nofstates > 0);
state := list.top.state;
END GetCurrentState;
PROCEDURE Length(list: ListOfStates) : INTEGER;
BEGIN
RETURN list.nofstates
END Length;
|