<> <> <> <> <<>> <> <> <> <> <> <> DIRECTORY DBCommon, DBIndex; DBIndexMod: CEDAR DEFINITIONS = BEGIN OPEN DBIndex; ReplaceKey: PROC [p: Page, key: REF TEXT, at: CARDINAL]; <> MoveEntriesToLeftLeaf: PROC [from, to: Page, nentries: CARDINAL]; <> <> <> MoveEntriesToRightLeaf: PROC [from, to: Page, nentries: CARDINAL]; <> <> <> MoveEntriesToRightLeafAfter: PROC [from, to: Page, nentries: CARDINAL]; <> <> InsertTheFirstLeafEntry: PROC [page: Page, key: REF TEXT, value: LONG CARDINAL]; <> InsertTwoEntriesToEmptyPage: PROC[page: Page, first: LONG CARDINAL, key: REF TEXT, second: LONG CARDINAL]; <<"page" is empty and an internal node.>> <> MoveEntriesToRightInternal: PROC[from, to: Page, key: REF TEXT, nentries: CARDINAL]; <<"from" is to the left of "to">> <<"key" is the dividing key between from and to>> <<"nentries" are moved (returns if 0)>> MoveEntriesToLeftInternal: PROC[from, to: Page, key: REF TEXT, nentries: CARDINAL]; <<"from" is to the right of "to">> <> <<"nentries" are moved (0 => no-op)>> SplitEntriesToRightPage: PROC [from, to: Page, at: CARDINAL] RETURNS [REF TEXT]; <> <<"From" is to the left of "to", and "to" is empty.>> <> MoveRightAndInsert: PROC[from: Page, to: Page, after: CARDINAL, at: CARDINAL, key: REF TEXT, value: LONG CARDINAL] RETURNS [CARDINAL]; < between from[at] and from[at+1]. Since from will overflow, we move from[after+1..fromEnd] to the page to, and insert . Returns the index where insertion occurred>> SlideLeafAt: PROC[p: Page, index: CARDINAL, key: REF TEXT, value: LONG CARDINAL]; <>> <> RemoveFromInternal: PROC [page: Page, deleting: CARDINAL] RETURNS [State]; <> RemoveFromLeaf: PUBLIC PROC [page: Page, deleting: CARDINAL] RETURNS [State]; <> SetLinks: PROC [left, new: Page]; <> RemoveLinks: PROC [page: Page]; <> END. Changed by Willie-Sue on February 15, 1985 <>