DEFINITION MODULE GenLists; (* * REPERTOIRE * Release 1.6 * By Charles Bradford and Cole Brecheen * (c) Copyright 1985-1992 PMI * Green Bay, Wisconsin * All rights reserved * (414) 468-6040 * * $Header: D:/logfiles/defs/genlists.dev 1.4 30 Dec 1990 18:01:04 coleb $ * *) FROM SYSTEM IMPORT ADDRESS, BYTE; FROM VStorage IMPORT MemHandle; CONST StrCode = 65534; ListCode = 65535; TYPE GenList; (*opaque type*) ListError = (NoListError, underflow, overflow, NoInit, RefToZero, RefPastEnd, InsuffMem, corruption, NoSuchList); Comparator = PROCEDURE(ADDRESS, CARDINAL, ADDRESS, CARDINAL): INTEGER; VAR DiagMode: BOOLEAN; ErrorFlag: ListError; PROCEDURE AdrOfList( VAR TheList: GenList ): ADDRESS; PROCEDURE AdrToList( TheAddr: ADDRESS; TheSize: CARDINAL; VAR TheList: GenList ): BOOLEAN; PROCEDURE BlockToList( TheAddr: ADDRESS; BlockSize: CARDINAL; delimiter1, delimiter2: ARRAY OF CHAR; RecSize, TypeCode: CARDINAL; VAR TheList: GenList); PROCEDURE ChangeTypeCode( VAR TheList: GenList; spot, NewTypeCode: CARDINAL ); PROCEDURE CopyList( InList: GenList; VAR OutList: GenList ); PROCEDURE DisconnectLists( VAR sublist, mainlist: GenList ); PROCEDURE DisposeList( VAR TheList : GenList ); PROCEDURE ElmtNow( TheList: GenList ): CARDINAL; PROCEDURE GetChildList( TheList: GenList; spot: CARDINAL; VAR Child: GenList ); PROCEDURE GetElmt( TheList : GenList; spot : CARDINAL; VAR TheElmt: ARRAY OF BYTE; VAR TypeCode: CARDINAL ); PROCEDURE GetElmtAdr( TheList : GenList; spot : CARDINAL; VAR ReadAddr: ADDRESS; VAR TheSize: CARDINAL; VAR TypeCode: CARDINAL) ; PROCEDURE GetParentList( TheList: GenList; VAR Parent: GenList ); PROCEDURE Initialized( TheList: GenList ): BOOLEAN; PROCEDURE JoinLists( VAR MergedList, SurvivingList: GenList; spot: CARDINAL); PROCEDURE ListDelete( TheList : GenList; spot, HowMany : CARDINAL ); PROCEDURE ListInsert( Element: ARRAY OF BYTE; TypeCode: CARDINAL; TheList: GenList; spot: CARDINAL ); PROCEDURE ListInsertAdr( ReadAddr: ADDRESS; TheSize: CARDINAL; TypeCode: CARDINAL; TheList: GenList; spot: CARDINAL); PROCEDURE ListLength( TheList : GenList ): CARDINAL; PROCEDURE ListReplace( Element: ARRAY OF BYTE; TypeCode: CARDINAL; TheList: GenList; spot: CARDINAL); PROCEDURE ListReplaceAdr( ReadAddr: ADDRESS; TheSize, TypeCode: CARDINAL; TheList: GenList; spot: CARDINAL); PROCEDURE ListSize( TheList: GenList; VAR TotalElements: LONGINT; VAR TotalSublists: CARDINAL; VAR TotalListSize: LONGINT ): LONGINT; PROCEDURE ListToAdr( TheList: GenList; TheAddr: ADDRESS; TheSize: CARDINAL ): BOOLEAN; PROCEDURE ListToBlock( TheList: GenList; delimiter1, delimiter2: ARRAY OF CHAR; VAR TheAddr: ADDRESS; VAR BlockSize, RecSize: CARDINAL ); PROCEDURE NewList( VAR TheList: GenList ); PROCEDURE NextElmt( TheList: GenList; HowFar: INTEGER; VAR TheElmt: ARRAY OF BYTE; VAR TypeCode: CARDINAL ); PROCEDURE NilList( VAR TheList: GenList ); PROCEDURE SameList( list1, list2: GenList ): BOOLEAN; PROCEDURE ScanList( TheStr: ARRAY OF CHAR; TheList: GenList; StartingAt, EndingAt: CARDINAL; VAR FoundSpot: CARDINAL ): CARDINAL; PROCEDURE ShellSortList( TheList: GenList; CompResult: Comparator ); PROCEDURE SortList( TheList: GenList; CompResult: Comparator ); PROCEDURE SplitList( InList: GenList; where: CARDINAL; VAR OutList: GenList ); PROCEDURE Init(); END GenLists.