<> <> <> <<>> <> <<>> <> <<>> DIRECTORY BTreeSimple USING [PathStk, Tree], FS USING [OpenFile], IO USING [STREAM], RefTab USING [Ref], Rope USING [ROPE], LoganBerry; LoganBerryStructure: CEDAR DEFINITIONS ~ BEGIN OPEN LoganBerry; ROPE: TYPE = Rope.ROPE; STREAM: TYPE = IO.STREAM; <> <> <<>> LogAddress: TYPE = INT; EndOfEntry: CHAR = '\n; UpdateComplete: CHAR = 377C; <> IndexEntry: TYPE = RECORD [ log: LogID, firstByte: LogAddress ]; IndexPtr: TYPE = LONG POINTER TO IndexEntry; <> <> CursorInfo: TYPE = REF CursorRecord; CursorRecord: TYPE = RECORD[ dbinfo: OpenDBInfo, key: AttributeType, start, end: AttributeValue, index: IndexInfo, current: AttributeValue, pathStk: BTreeSimple.PathStk ]; <> <> IndexInfo: TYPE = REF IndexInfoRecord; IndexInfoRecord: TYPE = RECORD[ key: AttributeType, type: {primary, secondary}, filename: ROPE, openfile: FS.OpenFile, btree: BTreeSimple.Tree ]; IndexSet: TYPE = RefTab.Ref; --AttributeType <-> IndexInfo <> <<>> LogInfo: TYPE = REF LogInfoRecord; LogInfoRecord: TYPE = RECORD[ id: LogID, <> access: {readOnly, readWrite}, filename: ROPE, stream: STREAM ]; LogSet: TYPE = REF LogSetRecord; LogSetRecord: TYPE = RECORD[seq: SEQUENCE size: LogID OF LogInfo]; <<>> <> <<>> OpenDBInfo: TYPE = REF OpenDBRecord; OpenDBRecord: TYPE = MONITORED RECORD[ dbName: ROPE, isOpen: BOOLEAN, remoteAccess: BOOLEAN, statusMsg: ROPE, indices: IndexSet, primaryIndex: IndexInfo, logs: LogSet ]; <<>> <" are deemed to contain schema information for the file named in the subsequent line of the DF file or at the end of the same line. The two types of schema entries are as follows:>> <<--> log >> <<--> index >> SchemaChars: REF READONLY TEXT; -- currently the string "- - >" END. <> <> <<, OpenDBRecord>> <<>> <<>> <<>> <<>> <> <> <> <> <<>> <<>> <<>>