DIRECTORY DBCommon USING[CacheHandle], DBStorage USING[TupleHandle, FieldHandle], DBStorageExtTuple USING[TupleBody], DBStorageTID USING[TID]; DBStorageGroup: CEDAR DEFINITIONS = BEGIN OPEN DBStorageTID; TIDFieldBody: TYPE = MACHINE DEPENDENT RECORD[ headTID: TID, prevTID: TID, nextTID: TID ];--TIDFieldBody TIDFieldPart: TYPE = {headTID, prevTID, nextTID}; GroupList: TYPE = ARRAY [0..0) OF GroupListEntry; GroupListEntry: TYPE = MACHINE DEPENDENT RECORD[ groupID: TID, firstTID: TID, lastTID: TID ];--GroupListEntry HeadFieldPart: TYPE = {firstTID, lastTID}; GroupListFromTuple: PROC[DBStorage.TupleHandle] RETURNS[LONG DESCRIPTOR FOR GroupList, DBCommon.CacheHandle]; ReadGroupField: PROC[ x: DBStorage.TupleHandle, f: DBStorage.FieldHandle, part: TIDFieldPart] RETURNS[DBStorage.TupleHandle]; WriteGroupField: PROC[ x: DBStorage.TupleHandle, f: DBStorage.FieldHandle, part: TIDFieldPart, val: DBStorage.TupleHandle]; ReadHeadField: PROC[ x: DBStorage.TupleHandle, f: DBStorage.FieldHandle, part: HeadFieldPart] RETURNS[DBStorage.TupleHandle]; WriteHeadField: PROC[ x: DBStorage.TupleHandle, f: DBStorage.FieldHandle, part: HeadFieldPart, val: DBStorage.TupleHandle]; CreateHeadEntry: PROC[x: DBStorage.TupleHandle, f: DBStorage.FieldHandle]; DestroyHeadEntry: PROC[x: DBStorage.TupleHandle, f: DBStorage.FieldHandle]; GroupListFromTupleBase: PROC[LONG POINTER TO DBStorageExtTuple.TupleBody] RETURNS[LONG DESCRIPTOR FOR GroupList]; END.--DBStorageGroup CHANGE LOG Created by MBrown on June 17, 1980 10:15 AM Changed by MBrown on June 18, 1980 8:16 PM Changed by MBrown on August 13, 1980 11:56 AM Changed by Willie-Sue on February 15, 1985 dFile DBStorageGroup.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last edited by MBrown on August 13, 1980 11:55 AM Willie-Sue, February 15, 1985 11:17:17 am PST Donahue, September 5, 1985 4:15:55 pm PDT This interface contains the internal storage level definitions that relate to the representation of groups. Types Allows parts of a TIDFieldBody to be addressed (see ReadGroupField below). Allows parts of a GroupListEntry to be addressed (see ReadHeadField below). Procs Returns the BASE and LENGTH of the tuple's GroupList. The BASE is a LONG POINTER to a locked readonly cache page, and the second result is the cache handle to be used for unlocking it. Returns the indicated part of x's group field f. Writes val into the indicated part of x's group field f. returns the indicated part of x's GroupListEntry for group field f. error if no such entry. result is never NIL. writes val's tid into the indicated part of x's GroupListEntry for group field f. error if no such entry. val is never NIL. creates a group list entry in tuple x for group field f. error if already such an entry removes the group list entry in tuple x for group field f. error if no such entry Returns the BASE and LENGTH of the tuple's GroupList, given a LONG POINTER to the tuple's body (presumably in a cache page). Moved here from DBStoragePrivateB. This allows the implementation of group scans to be split from the implementation of group field reading/writing. Added GroupListFromTupleBase, to satisfy StoragePrintImpl. DBStoragePrivateB.TupleBody became DBStorageExtTuple.TupleBody. made cedar, added tioga formatting ΚR˜šœ™Jšœ Οmœ1™<—šœ2™2J™-Icode™)—J˜J˜šΟk ˜ Jšœ žœ˜Jšœ žœ˜*Jšœžœ ˜#Jšœ žœžœ˜J˜—š œžœž œžœžœ˜