DIRECTORY DB, DBCommon, AlpineEnvironment, Rope, DBDefs; DBModel: CEDAR DEFINITIONS = BEGIN OPEN DBDefs, DBCommon; initialized: READONLY BOOL; Initialize: PROC [nCachePages: NAT, cacheFileName: ROPE]; OpenTransaction: PROC [segment: Segment, useTrans: TransactionHandle, eraseAfterOpen: BOOL _ FALSE] RETURNS[trans: TransactionHandle, schemaInvalid: BOOL]; MarkTransaction: PROC [trans: TransactionHandle]; AbortTransaction: PROC [trans: TransactionHandle]; CloseTransaction: PROC [trans: TransactionHandle]; MakeTransHandle: PROC[trans: DBCommon.Transaction] RETURNS[handle: TransactionHandle]; DeclareSegment: PROC [filePath: ROPE, segment: Segment, number: DBCommon.SegmentIndex, lock: AlpineEnvironment.LockOption, readonly: BOOL, createIfNotFound: BOOL, nPagesInitial, nPagesPerExtent: INT]; EraseSegment: PROC [segment: Segment, useTrans: TransactionHandle] RETURNS [trans: TransactionHandle]; GetSegmentInfo: PROC [segment: Segment] RETURNS [filePath: ROPE, readOnly: BOOL]; TransactionForSegment: PROC [segment: Segment] RETURNS [trans: TransactionHandle]; CacheKey: PROC[segment: Segment] RETURNS[key: INT]; DeclareDomain: PROC [name: ROPE, segment: Segment] RETURNS [d: Domain]; LookupDomain: PROC[name: ROPE, segment: Segment] RETURNS[d: Domain]; DestroyDomain: PROC [d: Domain]; DomainsByName: PROC [segment: Segment, lowName, highName: ROPE, start: DBCommon.FirstLast] RETURNS[ds: DomainSet]; NextDomain: PROC [ds: DomainSet] RETURNS [Domain]; PrevDomain: PROC [ds: DomainSet] RETURNS [Domain]; ReleaseDomainSet: PROC [ds: DomainSet]; DeclareSubType: PROC [of, is: Domain]; DestroySubType: PROC [of, is: Domain]; SuperType: PROC [d: Domain] RETURNS[super: Domain]; SubTypes: PROC [d: Domain] RETURNS[subs: DomainSet]; TypeForDomain: PROC[d: Domain] RETURNS[type: TypeCode]; DeclareRelation: PROC [name: ROPE, segment: Segment, fields: DB.FieldSpec, keys: LIST OF Index] RETURNS[r: Relation]; LookupRelation: PROC[name: ROPE, segment: Segment] RETURNS[r: Relation]; DestroyRelation: PROC [r: Relation]; RelationsByName: PROC [segment: Segment, lowName, highName: ROPE, start: DBCommon.FirstLast] RETURNS[RelationSet]; NextRelation: PROC [rs: RelationSet] RETURNS [Relation]; PrevRelation: PROC [rs: RelationSet] RETURNS [Relation]; ReleaseRelationSet: PROC [rs: RelationSet]; Fields: PROC[r: Relation] RETURNS[fieldSpec: DB.FieldSpec]; NameToField: PROC[r: Relation, name: ROPE] RETURNS[exists: BOOL, pos: CARDINAL]; FieldCount: PROC[r: Relation] RETURNS[count: CARDINAL]; FieldInfo: PROC[r: Relation, pos: CARDINAL] RETURNS[field: DB.Field]; DeclareIndex: PROC [r: Relation, index: Index, isKey: BOOL _ FALSE, doCheck: BOOL _ TRUE]; DestroyIndex: PROC[r: Relation, index: Index]; Keys: PROC[r: Relation] RETURNS[keys: LIST OF Index]; Indices: PROC[r: Relation] RETURNS[indices: LIST OF Index]; DeclareEntity: PROC[d: Domain, name: ROPE] RETURNS [e: Entity]; LookupEntity: PROC[d: Domain, name: ROPE] RETURNS[e: Entity]; CreateRelship: PROC[r: Relation, init: ValueSequence] RETURNS[t: Relship]; LookupRelship: PROC[r: Relation, key: Index, val: ValueSequence] RETURNS[relship: Relship]; DestroyEntity: PROC[e: Entity]; DestroyRelship: PROC[t: Relship]; SetF: PROC[t: Relship, field: CARDINAL, v: Value]; GetF: PROC[t: Relship, field: CARDINAL] RETURNS [Value]; SetP: PROC[e: Entity, r: Relation, field: CARDINAL, v: Value]; GetP: PROC[e: Entity, r: Relation, field: CARDINAL] RETURNS[Value]; EntityInfo: PROC [e: Entity] RETURNS [name: ROPE, domain: Domain]; RelationOf: PROC [t: Relship] RETURNS [Relation]; DomainEq: PROC [d1, d2: Domain] RETURNS[BOOL]; RelationEq: PROC [r1, r2: Relation] RETURNS[BOOL]; AttributeEq: PROC [a1, a2: Attribute] RETURNS[BOOL]; NullDomain: PROC [d: Domain] RETURNS[BOOLEAN]; NullRelation: PROC [r: Relation] RETURNS[BOOLEAN]; NullAttribute: PROC [a: Attribute] RETURNS[BOOLEAN]; RelationSubset: PROC [r: Relation, index: Index, constraint: Constraint, start: FirstLast] RETURNS [RelshipSet]; RelshipsForEntity: PROC [e: Entity] RETURNS [rs: RelshipSet]; RelshipsWithEntityField: PROC[r: Relation, field: CARDINAL, val: Entity] RETURNS[rs: RelshipSet]; NextRelship: PROC [rs: RelshipSet] RETURNS [rship: Relship]; PrevRelship: PROC [rs: RelshipSet] RETURNS [rship: Relship]; ReleaseRelshipSet: PROC [rs: RelshipSet]; DomainSubset: PROC [d: Domain, lowName, highName: ROPE, start: DBCommon.FirstLast] RETURNS [EntitySet]; NextEntity: PROC [es: EntitySet] RETURNS [Entity]; PrevEntity: PROC [es: EntitySet] RETURNS [Entity]; ReleaseEntitySet: PROC [es: EntitySet]; RelationsOf: PROC [d: Domain] RETURNS[rs: RelationSet]; END.  File: DBModel.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Contents: Internal versions of DBModel procs, imported by DBImpl and exported to DBModel. Last edited by: Cattell on: July 21, 1983 2:05 pm Willie-sue, February 22, 1985 9:21:04 am PST Donahue, March 10, 1986 8:48:42 am PST Widom, September 5, 1985 8:50:29 pm PDT Part 1: Initialization and transaction operations This becomes TRUE when Initialize is called The current value of the Model level cache key (which is changed only when the cache must be flushed because it is possibly inconsistent with the database) Part 2: Domain-definition and -interrogation operations Part 3: Relation-definition and -interrogation operations Part 4: Primitive operations Part 5: Aggregate operations Κ±˜šœ™Jšœ Οmœ1™<—Jšœ@™@Jšœ™šœ™Jšœ(™(Jšœ,™,Icode™&J™'J˜—šΟk ˜ J˜J˜ J˜J˜J˜J˜—Jšœ žœž ˜J˜Jšœžœžœ˜Ihead1šœ1™1˜šœ žœžœ˜Jšœ+™+—J˜šΟn œžœžœžœ˜9J˜—š ŸœžœAžœžœžœ*žœ˜›J˜—JšŸœžœ˜1J˜JšŸœžœ˜2J˜JšŸœžœ˜2J˜JšŸœžœžœ˜VJ˜š Ÿœžœ žœažœžœ"žœ˜ΘJ˜—JšŸ œžœ0žœ˜fJ˜Jš Ÿœžœžœ žœ žœ˜QJ˜JšŸœžœžœ˜RJ˜šŸœžœžœžœ˜3Jšœ›™›——šœ7™7šŸ œžœžœžœ ˜GJ˜—JšŸ œžœžœžœ ˜DJ˜JšŸ œžœ ˜ J˜JšŸ œžœ'žœžœ˜rJ˜JšŸ œžœžœ ˜2J˜JšŸ œžœžœ ˜2J˜JšŸœžœ˜'J˜JšŸœžœ˜&J˜JšŸœžœ˜&J˜JšŸ œžœ žœ˜3J˜JšŸœžœ žœ˜4J˜JšŸ œžœ žœ˜7—šœ9™9šŸœžœžœžœžœžœžœ˜uJ˜—JšŸœžœžœžœ˜IJ˜JšŸœžœ˜$J˜JšŸœžœ'žœžœ˜rJ˜JšŸ œžœžœ ˜8J˜JšŸ œžœžœ ˜8J˜JšŸœžœ˜+J˜šŸœžœžœ˜;J˜—Jš Ÿ œžœžœžœ žœžœ˜PJ˜JšŸ œžœžœžœ˜7J˜JšŸ œžœžœžœ˜EJ˜Jš Ÿ œžœ$žœžœ žœžœ˜ZJ˜JšŸ œžœ˜.J˜Jš Ÿœžœžœžœžœ˜5J˜Jš Ÿœžœžœ žœžœ˜;—šœ™šŸ œžœžœžœ ˜?J˜—JšŸ œžœžœžœ ˜>J˜šŸ œžœ"žœ ˜JJ˜—JšŸ œžœ.žœ˜[J˜JšŸ œžœ ˜J˜JšŸœžœ ˜!J˜šŸœžœžœ ˜2J˜—šŸœžœžœžœ ˜8J˜—JšŸœžœ žœ ˜>J˜JšŸœžœ žœžœ˜CJ˜JšŸ œžœ žœžœ˜BJ˜JšŸ œžœžœ ˜1J˜JšŸœžœžœžœ˜.J˜JšŸ œžœžœžœ˜2J˜JšŸ œžœžœžœ˜4J˜JšŸ œžœ žœžœ˜.J˜JšŸ œžœžœžœ˜2J˜JšŸ œžœžœžœ˜4—šœ™šŸœžœEžœ˜pJ˜—JšŸœžœ žœ˜=J˜JšŸœžœžœžœ˜aJ˜JšŸ œžœžœ˜