-- TexToken.mesa -- last written by Doug Wyatt, November 10, 1979 7:00 PM DIRECTORY TexDefs: FROM "TexDefs", TexMemDefs: FROM "TexMemDefs", TexTokenDefs: FROM "TexTokenDefs"; TexToken: PROGRAM IMPORTS TexMemDefs EXPORTS TexTokenDefs = BEGIN OPEN TexTokenDefs; MakeTokenLEntry: PUBLIC PROCEDURE[tok: Token] RETURNS[p: TokenPtr] = BEGIN p_TexMemDefs.AllocMem[SIZE[TokenLEntry]]; p^_[NIL,tok]; END; MakeTokenLHead: PUBLIC PROCEDURE[hd: TokenPtr] RETURNS[p: TokenListPtr] = BEGIN p_TexMemDefs.AllocMem[SIZE[TokenLHead]]; p^_[hd,1]; END; FreeTokenLEntry: PUBLIC PROCEDURE[p: TokenPtr] = BEGIN TexMemDefs.FreeMem[p,SIZE[TokenLEntry]] END; FreeTokenLHead: PUBLIC PROCEDURE[p: TokenListPtr] = BEGIN TexMemDefs.FreeMem[p,SIZE[TokenLHead]] END; StoreTok: PUBLIC PROCEDURE[p: POINTER TO TokenPtr, itm: Token] = BEGIN t: TokenPtr_MakeTokenLEntry[itm]; p.link_t; p^_t; END; DsList: PUBLIC PROCEDURE[p: TokenPtr] = BEGIN q: TokenPtr; WHILE p#NIL DO q_p.link; FreeTokenLEntry[p]; p_q ENDLOOP; END; AddRCLink: PUBLIC PROCEDURE[list: TokenListPtr] = BEGIN list.refs_list.refs+1; END; DelRCLink: PUBLIC PROCEDURE[list: TokenListPtr] = BEGIN p: TokenPtr; IF list=NIL OR (list.refs_list.refs-1)>0 THEN RETURN; p_list.link; FreeTokenLHead[list]; DsList[p]; END; TokChar: PUBLIC PROCEDURE[token: Token] RETURNS[TexDefs.Char] = BEGIN WITH tok:token SELECT FROM macprm,lbrace,rbrace,mathbr,tabmrk, supmrk,submrk,spacer,letter,otherchar => RETURN[tok.char]; ENDCASE; RETURN[0C]; END; END.