DIRECTORY DBCommon USING[CacheHandle, TID], DBStorage USING[TupleHandle, FieldHandle], DBStoragePage USING[TupleBody]; DBStorageGroup: CEDAR DEFINITIONS = BEGIN OPEN DBCommon; 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 DBStoragePage.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 `File 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, May 23, 1986 9:55:06 am 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 Κ ˜šœ™Jšœ Οmœ1™<—šœ2™2J™-Icode™$—J˜J˜šΟk ˜ Jšœ žœžœ˜!Jšœ žœ˜*Jšœžœ ˜J˜—š œžœž œžœžœ ˜8JšœQ™QJšœ™Ihead1šœ™J˜š œžœžœž œžœ˜.Jšœ žœ˜ Jšœ žœ˜ Jšœ ž˜ JšœΟc˜—J˜šœžœ˜1JšœJ™JJ˜—Jšœ žœžœžœ˜1J˜š œžœžœž œžœ˜0Jšœ žœ˜ Jšœ žœ˜Jšœ ž˜ JšœŸ˜—J˜šœžœ˜*JšœK™K—Lšœ™š Οnœžœžœžœž œžœ"˜mšœΉ™ΉJ˜——š œžœIžœ˜}šœ0™0J˜——š œžœf˜{šœ8™8J˜——š  œžœJžœ˜}šœC™CJšœ-™-J˜——š œžœg˜{šœQ™QJšœ*™*J˜——š œžœ5˜JJšœ8™8Jšœ™J˜—š œžœ5˜KJšœ:™:Jšœ™J˜—š  œžœžœžœžœ˜Ešžœžœž œžœ ˜'JšœJ™JJšœ1™1J˜J˜———JšžœŸ˜J˜J˜Jšžœž˜ J˜Jšœ*ž˜,Jšœb™bJšœ2™2J˜Jšœ)ž˜+Jšœ:™:J˜Jšœ,ž˜.Jšœ?™?J˜Jšœ*˜*J™"—…—hΣ