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]; 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]; 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]; TypeToDomain: PROC[type: DBDefs.TypeCode, segment: Segment] RETURNS[d: Domain]; DeclareRelation: PROC [name: ROPE, segment: Segment, fields: DB.FieldSpec, isProperty: BOOL] 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]; NameToField: PROC[r: Relation, name: ROPE] RETURNS[exists: BOOL, pos: CARDINAL]; FieldCount: PROC[r: Relation] RETURNS[count: CARDINAL]; FieldDescription: PROC[r: Relation, pos: CARDINAL] RETURNS[field: DB.Field]; Fields: PROC[r: Relation] RETURNS[fields: DB.FieldSpec]; DeclareIndex: PROC [r: Relation, fields: FieldSequence, isKey: BOOL _ FALSE, doCheck: BOOL _ TRUE] RETURNS[index: Index]; 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, newOnly: BOOL _ FALSE] 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]; LookupProperty: PROC[r: Relation, e: Entity] RETURNS[relship: Relship]; FirstRelship: PROC[r: Relation] RETURNS[relship: Relship]; DestroyEntity: PROC[e: Entity]; CopyEntity: PROC[e: Entity] RETURNS[Entity]; DestroyRelship: PROC[t: Relship]; CopyRelship: PROC[t: Relship] RETURNS[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]; ChangeName: PROC[ of: Entity, to: Rope.ROPE ]; ToUnderType: PROC[e: Entity]; RelationOf: PROC [t: Relship] RETURNS [Relation]; DomainEq: PROC [d1, d2: Domain] RETURNS[BOOL]; RelationEq: PROC [r1, r2: Relation] RETURNS[BOOL]; NullDomain: PROC [d: Domain] RETURNS[BOOLEAN]; NullRelation: PROC [r: Relation] RETURNS[BOOLEAN]; NullAttribute: PROC [a: Attribute] RETURNS[BOOLEAN]; NullEntity: PROC[e: Entity] RETURNS[BOOL]; NullRelship: PROC[r: Relship] RETURNS[BOOL]; EntityEq: PROC[e1: Entity, e2: Entity] RETURNS[BOOL]; RelshipEq: PROC[r1: Relship, r2: Relship] RETURNS[BOOL]; 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. FFile: 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, August 20, 1986 8:22:14 am PDT 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 Return the domain object corresponding to the named tuple Part 3: Relation-definition and -interrogation operations Part 4: Primitive operations Part 5: Aggregate operations Κh˜šœ™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˜š Ÿœžœ žœažœžœ"žœ˜ΘJ˜—JšŸ œžœ0žœ˜fJ˜Jš Ÿœžœžœ žœ žœ˜QJ˜šŸœžœžœžœ˜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šŸ œžœ žœ˜7J˜šŸ œžœ*žœ ˜OJšœ9™9——šœ9™9š Ÿœžœžœžœžœžœ˜rJ˜—JšŸœžœžœžœ˜IJ˜JšŸœžœ˜$J˜JšŸœžœ'žœžœ˜rJ˜JšŸ œžœžœ ˜8J˜JšŸ œžœžœ ˜8J˜JšŸœžœ˜+J˜Jš Ÿ œžœžœžœ žœžœ˜PJ˜JšŸ œžœžœžœ˜7J˜JšŸœžœžœžœ˜LJ˜JšŸœžœžœ˜8J˜JšŸ œžœ-žœžœ žœžœžœ˜yJ˜JšŸ œžœ˜.J˜Jš Ÿœžœžœžœžœ˜5J˜Jš Ÿœžœžœ žœžœ˜;—šœ™š Ÿ œžœžœ žœžœžœ ˜VJ˜—JšŸ œžœžœžœ ˜>J˜šŸ œžœ"žœ ˜JJ˜—JšŸ œžœ.žœ˜[J˜JšŸœžœžœ˜GJ˜JšŸ œžœžœ˜:J˜JšŸ œžœ ˜J˜JšŸ œžœ žœ ˜,J˜JšŸœžœ ˜!J˜JšŸ œžœ žœ ˜/J˜šŸœžœžœ ˜2J˜—šŸœžœžœžœ ˜8J˜—JšŸœžœ žœ ˜>J˜JšŸœžœ žœžœ˜CJ˜JšŸ œžœ žœžœ˜BJ˜JšŸ œžœžœ˜.J˜JšŸ œžœ ˜J˜JšŸ œžœžœ ˜1J˜JšŸœžœžœžœ˜.J˜JšŸ œžœžœžœ˜2J˜JšŸ œžœ žœžœ˜.J˜JšŸ œžœžœžœ˜2J˜JšŸ œžœžœžœ˜4J˜JšŸ œžœ žœžœ˜*J˜JšŸ œžœ žœžœ˜,J˜JšŸœžœžœžœ˜5J˜JšŸ œžœžœžœ˜8—šœ™šŸœžœEžœ˜pJ˜—JšŸœžœ žœ˜=J˜JšŸœžœžœžœ˜aJ˜JšŸ œžœžœ˜