DIRECTORY DBStorageTID USING[TID], DBStorageVec USING[SlotIndexField, VecHeader, LengthField]; DBStorageString: CEDAR DEFINITIONS = BEGIN OPEN DBStorageTID; IString: TYPE = MACHINE DEPENDENT RECORD[ bytesInString: DBStorageVec.LengthField, slotOfExtension: DBStorageVec.SlotIndexField, rest: SELECT OVERLAID * FROM word => [words: ARRAY [0..0) OF WORD _ NULL], text => [text: PACKED ARRAY [0..0) OF CHARACTER _ NULL], ENDCASE ];--IString SizeOfNullIString: CARDINAL = SIZE[IString]; LString: TYPE = MACHINE DEPENDENT RECORD[ header: DBStorageVec.VecHeader, bytesInRemString: CARDINAL, eStringID: TID ];--LString SizeOfNullLString: CARDINAL = SIZE[LString]; EString: TYPE = MACHINE DEPENDENT RECORD[ header: DBStorageVec.VecHeader, eStringID: TID, rest: SELECT OVERLAID * FROM word => [words: ARRAY [0..0) OF WORD _ NULL], text => [text: PACKED ARRAY [0..0) OF CHARACTER _ NULL], ENDCASE ];--EString SizeOfNullEString: CARDINAL = SIZE[EString]; END.--DBStorageString CHANGE LOG Created by MBrown on August 12, 1980 11:03 AM Changed by MBrown on 20-Jun-81 16:14:07 Changed bywillie-Sue on February 15, 1985 „File DBStorageString.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last edited by MBrown on 20-Jun-81 16:14:59 Willie-Sue, February 15, 1985 11:17:50 am PST This interface contains the internal storage level definitions that relate to the representation of VarByte (and VarWord) fields. length, in bytes, of string stored in text portion of InlineString. zero means no extension (whole string fits into text field) nonzero is slot number of an LString. This is the portion of a variable length field (VarByte or VarWord) that is stored in the tuple body. The text portion allows space to be reserved in the tuple body for the "expected" length of the field. The actual amount of space for text in an IString is not represented anywhere in the tuple body, but is kept in the field handle that is used for all accesses to this field. LString is stored in a vec, so prefix is a VecHeader length of string represented by this LString (so storage allocation can be done all at once). ID of a "tuple" on another page; this tuple holds the first chars from remainder of string. Can't be null. EString is stored in a vec, so prefix is a VecHeader ID of a "tuple" on another page; this tuple holds the first chars from remainder of string. Null => this tuple holds tail of string. use overlaid variants to view variable part of records as words or bytes. made Cedar, added tioga formatting ʲ˜šœ™Jšœ Ïmœ1™<—šœ+™+J™-—J˜šÏk ˜ Jšœ žœžœ˜Jšœ žœ)˜;J˜—š œžœž œžœžœ˜=JšœQ™QJšœ/™/J˜J˜š œ žœžœž œžœ˜)˜(JšœC™C—˜-Jšœ;™;Jšœ%™%—šœžœžœž˜Jš œžœžœžœžœ˜-Jš œžœžœžœž œžœ˜8Jšž˜—JšœÏc ˜ —J™JšœR™RJšœR™RJšœR™RJšœO™OJšœ3™3J˜Jšœžœžœ ˜,J˜š œ žœžœž œžœ˜)˜Jšœ4™4—šœžœ˜JšœO™OJšœ ™ —šœ ž˜JšœF™FJšœ#™#—JšœŸ ˜ —J˜Jšœžœžœ ˜,J˜š œ žœžœž œžœ˜)˜Jšœ4™4—šœ žœ˜JšœF™FJšœ=™=—šœžœžœž˜Jš œžœžœžœžœ˜-Jš œžœžœžœž œžœ˜8Jšž˜—JšœŸ ˜ —J˜Jšœžœžœ ˜,J˜J˜—JšžœŸ˜J˜J˜Jšžœž˜ J˜Jšœ,ž˜.J˜J˜'JšœI™IJ™J˜)J™"J˜J˜—…—d š