<> <> <> <> <> <> <> <> DIRECTORY BasicTime, DB, DBStorage, DBModel, DBCommon, DBDefs, RefTab, Rope; DBModelPrivate: CEDAR DEFINITIONS = BEGIN OPEN DBCommon, DBDefs; <> ROPE: TYPE = Rope.ROPE; <> DefaultNameLength: CARDINAL = 12; OneWordDescriptor: DBStorage.FieldDescriptor = DBStorage.FieldDescriptor[OneWord[]]; TypeDescriptor: DBStorage.FieldDescriptor = DBStorage.FieldDescriptor[TwoWord[]]; NameDescriptor: DBStorage.FieldDescriptor = DBStorage.FieldDescriptor[VarByte[lengthHint: DefaultNameLength]]; <> TupleSetDescriptor: DBStorage.FieldDescriptor = DBStorage.FieldDescriptor[NWord[length: DBStorage.TuplesetObjectSize]]; <> <<>> IndexDescriptor: DBStorage.FieldDescriptor = DBStorage.FieldDescriptor[NWord[length: DBStorage.IndexObjectSize]]; <> HandleDescriptor: DBStorage.FieldDescriptor = DBStorage.FieldDescriptor[NWord[length: DBStorage.FieldObjectSize]]; <> NoTID: LONG CARDINAL = 0; -- used in tuple handles nullified by storage level DomainTSID: LONG CARDINAL = 1; <> RelationTSID: LONG CARDINAL = 2; <> IndexTSID: LONG CARDINAL = 3; <> IndexFactorTSID: LONG CARDINAL = 4; <> AttributeTSID: LONG CARDINAL = 5; <> SetSystemTable: PROC[tid: TID] RETURNS[tupleSet: DBStorage.SystemTuplesetHandle, tuple: TupleHandle]; IndexDomain: DBCommon.TupleHandle; IndexTupleSet: DBStorage.SystemTuplesetHandle; IndexCountField: DBStorage.FieldHandle; IndexRelationField: DBStorage.FieldHandle; IndexKeyField: DBStorage.FieldHandle; DomainDomain: DBCommon.TupleHandle; RelationDomain: DBCommon.TupleHandle; RelationTupleSet: DBStorage.SystemTuplesetHandle; DomainTupleSet: DBStorage.SystemTuplesetHandle; <> SegmentToHandle: PROC [segment: Segment] RETURNS [SegmentHandle]; <> <> <> InitializeDomainSchema: PROC[]; <> TupleToDomain: PROC[t: TupleHandle, segment: Segment, name: Rope.ROPE _ NIL] RETURNS[d: Domain]; <> CompatibleTypes: PROC[d: Domain, type: TypeCode] RETURNS[yes: BOOL]; <> NoSubtypes: PROC[d: Domain] RETURNS[yes: BOOL]; <> <<>> CheckDomainKey: PROC[d: Domain]; <> ReadDomain: PROC[d: Domain]; <> <> <> <<>> InitializeRelationSchema: PROC[]; <> CheckRelationKey: PROC[r: Relation]; TupleToRelation: PROC[t: TupleHandle, segment: Segment, name: Rope.ROPE _ NIL] RETURNS[r: Relation]; <> DestroyStoredRelations: PROC[d: Domain]; <> DestroySurrogates: PROC[d: Domain]; <> Unlink: PROC[t: TupleHandle, d: Domain]; <> CacheAttributes: PROC[r: Relation]; <> IsLegalIndex: PROC[r: Relation, index: Index, checkKeysOnly: BOOL _ FALSE] RETURNS[legal: BOOL]; <> <> DestroyRelshipTuple: PROC[t: TupleHandle, r: Relation]; <> <> InitializeIndexSchema: PROC[]; DestroyIndexTuple: PROC[handle: DBStorage.TupleHandle]; <> DeleteTupleFromIndex: PROC[t: TupleHandle, r: Relation, iHandle: IndexHandle]; <> AddTupleToIndex: PROC[t: TupleHandle, r: Relation, iHandle: IndexHandle]; <> CheckKeyInIndex: PROC[i: IndexHandle, key: Rope.ROPE] RETURNS [yes: BOOL]; NCode: PROC [v: Value] RETURNS [code: Rope.ROPE]; <> NCodeTuple: PROC[t: TupleHandle] RETURNS [code: Rope.ROPE]; NCodeRope: PROC[rope: Rope.ROPE] RETURNS [code: Rope.ROPE]; NCodeBool: PROC[bool: BOOL] RETURNS [code: Rope.ROPE]; NCodeInt: PROC[int: INT] RETURNS [code: Rope.ROPE]; NCodeTime: PROC[time: BasicTime.GMT] RETURNS [code: Rope.ROPE]; DCode: PROC[key: DBCommon.IndexKey, ropes: RopeSequence]; <> NameFromIndexKey: PUBLIC PROC[key: DBCommon.IndexKey] RETURNS[name: Rope.ROPE]; <> CacheIndices: PROC[r: Relation]; <> <> CheckForNull: PROC[t: TupleHandle]; <> CopyTupleHandle: PROC[t: TupleHandle] RETURNS[new: TupleHandle]; <> EmptyTupleSet: PROC[ts: TupleHandle] RETURNS[yes: BOOL]; <> GetNamedTuple: PROC[index: DBStorage.IndexHandle, name: Rope.ROPE] RETURNS[TupleHandle]; <> SetTupleField: PROC[t: TupleHandle, f: DBStorage.FieldHandle, val: TupleHandle]; <> NullifyTupleField: PROC[t: TupleHandle, f: DBStorage.FieldHandle]; GetTupleField: PROC[t: TupleHandle, f: DBStorage.FieldHandle] RETURNS[val: TupleHandle]; SetRopeField: PROC[t: TupleHandle, f: DBStorage.FieldHandle, val: Rope.ROPE]; GetRopeField: PROC[t: TupleHandle, f: DBStorage.FieldHandle] RETURNS[val: Rope.ROPE]; SetCardField: PROC[t: TupleHandle, f: DBStorage.FieldHandle, val: CARDINAL]; GetCardField: PROC[t: TupleHandle, f: DBStorage.FieldHandle] RETURNS[val: CARDINAL]; SetBoolField: PROC[t: TupleHandle, f: DBStorage.FieldHandle, val: BOOL]; GetBoolField: PROC[t: TupleHandle, f: DBStorage.FieldHandle] RETURNS[val: BOOL]; SetIntField: PROC[t: TupleHandle, f: DBStorage.FieldHandle, val: INT]; GetIntField: PROC[t: TupleHandle, f: DBStorage.FieldHandle] RETURNS[val: INT]; SetTimeField: PROC[t: TupleHandle, f: DBStorage.FieldHandle, val: BasicTime.GMT]; GetTimeField: PROC[t: TupleHandle, f: DBStorage.FieldHandle] RETURNS[val: BasicTime.GMT]; SetTypeField: PROC[t: TupleHandle, f: DBStorage.FieldHandle, val: DBDefs.TypeCode]; GetTypeField: PROC[t: TupleHandle, f: DBStorage.FieldHandle] RETURNS[val: DBDefs.TypeCode]; SetFieldField: PROC[t: TupleHandle, f: DBStorage.FieldHandle, val: DBStorage.FieldHandle]; GetFieldField: PROC[t: TupleHandle, f: DBStorage.FieldHandle] RETURNS[val: DBStorage.FieldHandle]; END.