DIRECTORY DBCommon USING[DBPage], DBStorageInternal USING[TID], DBIndex USING[Page, IndexKey, ItemHandle], PrincOpsUtils USING[LongCopy], Rope USING[ROPE]; DBIndexFilePage: CEDAR DEFINITIONS IMPORTS PrincOpsUtils = BEGIN Page: TYPE = DBIndex.Page; IndexKey: TYPE = DBIndex.IndexKey; ROPE: TYPE = Rope.ROPE; SetSize: PROC [p: Page, i: CARDINAL]; FreeSpace: PROC [p: Page] RETURNS [CARDINAL]; FrontSize: PROC [p: Page, index: CARDINAL] RETURNS [CARDINAL]; CoreAddr: PROC [p: Page, i: CARDINAL] RETURNS [DBIndex.ItemHandle]; EndAddr: PROC [p: Page] RETURNS [LONG POINTER]; SizeOfEntries: PROC [page: Page, from: CARDINAL, to: CARDINAL] RETURNS [CARDINAL]; Value: PROC [p: Page, index: CARDINAL] RETURNS [DBCommon.DBPage]; Tid: PROC [p: Page, index: CARDINAL] RETURNS [DBStorageInternal.TID]; Key: PROC [page: Page, index: CARDINAL] RETURNS [IndexKey]; CopyKey: PROC[key: IndexKey] RETURNS [IndexKey]; FreeKey: PROC [key: IndexKey]; CreateIndexKey: PROC [s: ROPE] RETURNS [IndexKey]; AllocateIndexKey: PUBLIC PROC [bytes: INT] RETURNS[key: IndexKey]; GreaterEq: PROC [left, right: IndexKey] RETURNS [BOOLEAN]; LessEq: PROC [left, right: IndexKey] RETURNS [BOOLEAN]; Less: PROC [left, right: IndexKey] RETURNS [BOOLEAN]; Greater: PROC [left, right: IndexKey] RETURNS [BOOLEAN]; LongCOPY: PROC [from, to: LONG POINTER, nwords: CARDINAL] = TRUSTED INLINE BEGIN i: CARDINAL; IF nwords > 256 THEN ERROR; IF LOOPHOLE[to, LONG CARDINAL] IN (LOOPHOLE[from, LONG CARDINAL]..LOOPHOLE[from, LONG CARDINAL] + nwords) THEN FOR i DECREASING IN [0..nwords) DO (to + i)^ _ (from + i)^; ENDLOOP ELSE PrincOpsUtils.LongCopy[from: from, nwords: nwords, to: to]; END; FindTheFirstLeafKey: PROC [p: Page, key: IndexKey] RETURNS [CARDINAL]; FindTheLastLeafKey: PROC [p: Page, key: IndexKey] RETURNS [CARDINAL]; FindTheFirstInternalKey: PROC [page: Page, key: IndexKey] RETURNS [CARDINAL] = INLINE BEGIN RETURN[FindTheInternalKey[page, key, Greater, LessEq]]; END; FindTheLastInternalKey: PROC [page: Page, key: IndexKey] RETURNS [CARDINAL] = INLINE BEGIN RETURN[FindTheInternalKey[page, key, GreaterEq, Less]]; END; FindTheInternalKey: PROC [ page: Page, key: IndexKey, Upper, Lower: PROC [IndexKey, IndexKey] RETURNS [BOOLEAN]] RETURNS [CARDINAL]; JustOver: PROC [p: Page, size: CARDINAL] RETURNS [CARDINAL]; END. CHANGE LOG Created by Suzuki Changed by MBrown on 17-Jun-81 9:55:35 Changed by Cattell on June 20, 1982 6:33 pm Changed by Cattell on September 21, 1982 8:34 pm Changed by Cattell on January 17, 1983 6:09 pm Changed by Willie-Sue on February 15, 1985 2File: DBIndexFilePage.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Willie-Sue, March 19, 1985 6:12:10 pm PST last edited by: Cattell on September 29, 1983 11:22 am MBrown on 17-Jun-81 9:56:21 Changes the state of Btree page Query the state of Btree page Returns the number free words available Returns the size(in words) that entries from 0 to index occupy. Returns the address of i-th entry in p (Address of the word of the end of the page)+1 Returns the number of words, entries from "from" to "to" occupy in page Query the value of elements Returns the key of index-th entry Returns the copy of the key "Deallocates" key Creates a new key with s as initial value Create a new key with given number of bytes, but does not initialize its value. Key comparison functions. Returns TRUE iff left>=right Returns TRUE iff left DBIndexInternal. CopyIndexKey -> CreateIndexKey. Add ERROR KeyTooBig. Rope.Ref -> ROPE. Removed StoreEntry, StoreKey, StoreEntryInPage, moved to DBIndexModImpl. Moved SplitPage to DBIndexOpImpl. made Cedar, added tioga formatting ÊD˜šœ™Jšœ Ïmœ1™Jšœ?™?J˜—šŸœžœžœžœ˜CJšœ&™&J˜—š Ÿœžœ žœžœžœ˜/Jšœ.™.J˜—šŸ œžœžœžœ˜>Jšžœžœ˜Jšœ9™9Jšœ™——šœ™JšŸœžœžœžœ˜AJ˜Jš Ÿœžœžœžœžœ˜EJ˜šŸœžœžœžœ ˜;Jšœ!™!J˜—šŸœžœžœ ˜0Jšœ™J˜—šŸœžœ˜Jšœ™J˜—šŸœžœžœžœ ˜2Jšœ)™)J˜—š Ÿœžœžœ žœžœ˜BJšœO™O——šœ™šŸ œžœžœžœ˜:Jšœ™J˜—šŸœžœžœžœ˜7Jšœ™J˜—JšŸœžœžœžœ˜5J˜JšŸœžœžœžœ˜8—šœ™š Ÿœžœ žœžœ žœ˜;Jšžœžœž˜Jšœžœ˜ Jšžœžœžœ˜š žœžœžœžœž˜!Jšœžœžœžœžœžœžœ ž˜LJš žœž œžœ žœž˜C—Jšžœ<˜@Jšžœ˜——šœ™šŸœžœžœžœ˜FJšœW™WJ˜—šŸœžœžœžœ˜EJšœ™JšœC™CJ˜—šŸœžœ˜9Jšžœžœ˜JšœA™AJšžœžœžœ2žœ˜IJ˜—šŸœžœ˜8Jšžœžœ˜JšœA™AJšžœžœžœ2žœ˜IJ˜—šŸœžœ˜J˜Jš œŸœžœžœžœžœžœ˜NJ˜—š Ÿœžœžœžœžœ˜