DIRECTORY AlpineEnvironment, AlpTransaction USING [Handle], DBCommon, DBFile, DBFileAlpine, Rope; DBFileImpl: CEDAR PROGRAM IMPORTS DBFileAlpine, Rope EXPORTS DBFile = BEGIN ROPE: TYPE = Rope.ROPE; OpenFileHandle: TYPE = DBCommon.OpenFileHandle; AlpTrans: TYPE = AlpTransaction.Handle; SegmentIndex: TYPE = DBCommon.SegmentIndex; VersionOptions: TYPE = DBCommon.VersionOptions; DBPage: TYPE = DBCommon.DBPage; NullDBPage: DBPage = DBCommon.NullDBPage; PagesFromBytes: PUBLIC PROC [bytes: INT] RETURNS [pages: CARDINAL] = { IF bytes < 0 OR bytes > LONG[CARDINAL.LAST - 1]*DBCommon.BytesPerPage THEN ERROR; RETURN [(bytes+DBCommon.BytesPerPage-1)/DBCommon.BytesPerPage]; }; BytesFromPages: PUBLIC PROC [pages: CARDINAL] RETURNS [bytes: INT] = { RETURN [pages*DBCommon.BytesPerPage]; }; CreateTransaction: PUBLIC PROC [server: ROPE] RETURNS [t: AlpTrans] = { RETURN [NARROW[DBFileAlpine.CreateTransaction[server], AlpTrans]] }; FinishTransaction: PUBLIC PROC [t: AlpTrans, abort: BOOL, continue: BOOL] = { DBFileAlpine.FinishTransaction[t, abort, continue]; }; OpenFile: PUBLIC PROC [t: AlpTrans, file: ROPE, version: VersionOptions, discardFileContents: BOOL, nPagesInitial: INT, lock: AlpineEnvironment.LockOption, readOnly: BOOL] RETURNS [f: OpenFileHandle, createdFile: BOOL] = { flatFile: Rope.Text = Rope.Flatten[file]; [f, createdFile] _ DBFileAlpine.OpenFile[t, flatFile, version, discardFileContents, nPagesInitial, lock, readOnly]; }; Close: PUBLIC PROC [f: OpenFileHandle] ~ { DBFileAlpine.Close[f] }; ReadFilePage: PUBLIC PROC [ f: OpenFileHandle, p: CARDINAL, corePage: LONG POINTER] = { DBFileAlpine.ReadFilePage[NARROW[f], p, corePage]; }; WriteFilePage: PUBLIC PROC [ f: OpenFileHandle, p: CARDINAL, corePage: LONG POINTER] = { DBFileAlpine.WriteFilePage[NARROW[f], p, corePage]; }; GetSize: PUBLIC PROC [f: OpenFileHandle] RETURNS [nPages: CARDINAL] = { RETURN[DBFileAlpine.GetSize[NARROW[f]]]; }; SetSize: PUBLIC PROC [f: OpenFileHandle, nPages: CARDINAL] = { DBFileAlpine.SetSize[NARROW[f], nPages]; }; END. RFile DBFileImpl.Mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last edited by: MBrown on February 22, 1983 11:59 am Willie-sue, April 25, 1985 12:47:16 pm PST Cattell, September 14, 1983 12:17 pm Wert, July 26, 1984 4:37:08 pm PDT Widom, August 15, 1985 10:37:37 am PDT Donahue, November 13, 1985 11:25:04 am PST Κ˜šœ™Jšœ Οmœ1™<—šœ™Jšœ$™$Jšœ*™*Jšœ$™$Jšœ"™"J™&Icode™*—˜šΟk ˜ J˜Jšœžœ ˜J˜ J˜J˜ J˜J˜——šœ žœž˜šž˜J˜—J˜šž˜J˜—J˜Jšœž˜J˜Jšžœžœžœ˜Jšœžœ˜/Jšœ žœ˜'Jšœžœ˜+Jšœžœ˜/Jšœžœ˜J˜)J˜šΟnœžœžœ žœ˜(Jšžœ žœ˜š žœ žœ žœžœžœž˜JJšžœ˜—Jšžœ9˜?J˜J˜—šŸœžœžœ žœ˜-Jšžœ žœ˜Jšžœ˜%J˜J˜—š Ÿœžœžœ žœžœ˜GJšžœžœ6˜DJ˜—š Ÿœžœžœžœ žœ˜MJ˜3J˜J˜—šŸœžœžœžœ˜HJšœžœžœ0žœ˜bJšžœ"žœ˜2J˜)Jšœs˜sJ˜—J˜KšŸœž œ1˜CK˜šŸ œžœžœ˜Jšœžœ žœžœ˜;Jšœžœ˜2J˜J˜—šŸ œžœžœ˜Jšœžœ žœžœ˜;Jšœžœ˜3J˜J˜—š Ÿœžœžœžœ žœ˜GJšžœžœ˜(J˜J˜—šŸœžœžœžœ˜>Jšœžœ ˜(J˜J˜—Jšžœ˜J˜——…—ϊ O