<<>> <> <> <> DIRECTORY Rope, Arpa, SunRPCAuth, SunRPC; NS: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; ReturnCodes: TYPE = MACHINE DEPENDENT { Success(0), Unavailable(1), IllegalInsertPid(2), IllegalDeleteUid(3), IllegalFindSpec(4), ResourceFailure(5) }; ReturnCodesNames: READONLY ARRAY ReturnCodes OF ROPE; Domain: TYPE = MACHINE DEPENDENT { localHost(0), localArea(1) }; DomainNames: READONLY ARRAY Domain OF ROPE; String: TYPE = ROPE; ValueType: TYPE = MACHINE DEPENDENT { text(0), attributes(1), any(2) }; ValueTypeNames: READONLY ARRAY ValueType OF ROPE; Value: TYPE = REF ValueObject; ValueObject: TYPE = RECORD [ union: SELECT vType: ValueType FROM text => [valStr: String], attributes => [valPairs: SeqType0], any => [anyValue: BYTE], ENDCASE]; SeqType0: TYPE = REF SeqType0Object; SeqType0Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF Attribute]; Attribute: TYPE = RECORD [ name: String, value: Value ]; Object: TYPE = SeqType1; SeqType1: TYPE = REF SeqType1Object; SeqType1Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF Attribute]; ProjectionList: TYPE = SeqType2; SeqType2: TYPE = REF SeqType2Object; SeqType2Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF String]; ProjectedObject: TYPE = SeqType3; SeqType3: TYPE = REF SeqType3Object; SeqType3Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF Value]; ProjectType: TYPE = MACHINE DEPENDENT { projected(0), complete(1) }; ProjectTypeNames: READONLY ARRAY ProjectType OF ROPE; FoundObjects: TYPE = REF FoundObjectsObject; FoundObjectsObject: TYPE = RECORD [ union: SELECT pType: ProjectType FROM projected => [projectedObjects: SeqType4], complete => [objects: SeqType5], ENDCASE]; SeqType5: TYPE = REF SeqType5Object; SeqType5Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF Object]; SeqType4: TYPE = REF SeqType4Object; SeqType4Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF ProjectedObject]; Insertargs: TYPE = RECORD [ registrationKind: String, object: Object, pid: INT32, domain: Domain ]; Insertreturn: TYPE = REF InsertreturnObject; InsertreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM Success => [uid: String], ResourceFailure, IllegalFindSpec, IllegalDeleteUid, IllegalInsertPid, Unavailable => [], ENDCASE]; Deleteargs: TYPE = RECORD [ uid: String, domain: Domain ]; Replaceargs: TYPE = RECORD [ registrationKind: String, object: Object, uid: String, domain: Domain ]; Findargs: TYPE = RECORD [ patterns: Object, projection: ProjectionList, domain: Domain ]; Findreturn: TYPE = REF FindreturnObject; FindreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM Success => [objects: FoundObjects], ResourceFailure, IllegalFindSpec, IllegalDeleteUid, IllegalInsertPid, Unavailable => [], ENDCASE]; END.