<<>> <> <> <> DIRECTORY Rope, Arpa, UT, SunRPCAuth, SunRPC; LB: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; ReturnCodes: TYPE = MACHINE DEPENDENT { iluSuccess(0), iluECantExportService(1), EError(2) }; ReturnCodesNames: READONLY ARRAY ReturnCodes OF ROPE; LocRoom: TYPE = ROPE; LocXYZ: TYPE = RECORD [ x: DREAL, y: DREAL, z: DREAL ]; LocationDescriminationValues: TYPE = MACHINE DEPENDENT { LocationVLocRoom(0), LocationVLocXYZ(1) }; LocationDescriminationValuesNames: READONLY ARRAY LocationDescriminationValues OF ROPE; Location: TYPE = REF LocationObject; LocationObject: TYPE = RECORD [ union: SELECT descriminator: LocationDescriminationValues FROM LocationVLocRoom => [vLocRoom: ROPE], LocationVLocXYZ => [vLocXYZ: LocXYZ], ENDCASE]; Sphere: TYPE = RECORD [ center: LocXYZ, radius: DREAL ]; BasicVolumeDescriminationValues: TYPE = MACHINE DEPENDENT { BasicVolumeVLocRoom(0), BasicVolumeVSphere(1) }; BasicVolumeDescriminationValuesNames: READONLY ARRAY BasicVolumeDescriminationValues OF ROPE; BasicVolume: TYPE = REF BasicVolumeObject; BasicVolumeObject: TYPE = RECORD [ union: SELECT descriminator: BasicVolumeDescriminationValues FROM BasicVolumeVLocRoom => [vLocRoom: ROPE], BasicVolumeVSphere => [vSphere: Sphere], ENDCASE]; Volume: TYPE = SeqType0; SeqType0: TYPE = REF SeqType0Object; SeqType0Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF BasicVolume]; LocatedObject: TYPE = RECORD [ o: UT.Objct, l: Location ]; LocatedObjectSet: TYPE = SeqType1; SeqType1: TYPE = REF SeqType1Object; SeqType1Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF LocatedObject]; ChangeOperation: TYPE = MACHINE DEPENDENT { Add(0), Delete(1) }; ChangeOperationNames: READONLY ARRAY ChangeOperation OF ROPE; ErrorType: TYPE = MACHINE DEPENDENT { BadLoc(0), BadObject(1), BadCallback(2), BadRoom(3), BadRock(4), NotDescendantLoc(5), NotCompositeLoc(6) }; ErrorTypeNames: READONLY ARRAY ErrorType OF ROPE; Simple: TYPE = ROPE; String: TYPE = ROPE; T: TYPE = SeqType2; SeqType2: TYPE = REF SeqType2Object; SeqType2Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF String]; Set: TYPE = SeqType3; SeqType3: TYPE = REF SeqType3Object; SeqType3Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF T]; Atomic: TYPE = ROPE; Distance: TYPE = DREAL; Step: TYPE = RECORD [ d: Distance, to: ROPE ]; StepSeq: TYPE = SeqType4; SeqType4: TYPE = REF SeqType4Object; SeqType4Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF Step]; Path: TYPE = RECORD [ frm: ROPE, d: Distance, steps: StepSeq ]; PathSet: TYPE = SeqType5; SeqType5: TYPE = REF SeqType5Object; SeqType5Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF Path]; PathSolution: TYPE = RECORD [ dmin: Distance, dmax: Distance, ps: PathSet ]; Nearest: TYPE = RECORD [ to: T, paths: PathSolution ]; Nearests: TYPE = SeqType6; SeqType6: TYPE = REF SeqType6Object; SeqType6Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF Nearest]; AtLocargs: TYPE = RECORD [ o: UT.Objct, loc: Location ]; AtLocreturn: TYPE = REF AtLocreturnObject; AtLocreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [], iluECantExportService => [], ENDCASE]; RemoveObjectargs: TYPE = RECORD [ o: UT.Objct ]; RemoveObjectreturn: TYPE = REF RemoveObjectreturnObject; RemoveObjectreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [returnValue: CARD32], iluECantExportService => [], ENDCASE]; FindObjectsargs: TYPE = RECORD [ locs: Volume, types: UT.ObjectTypeSet ]; FindObjectsreturn: TYPE = REF FindObjectsreturnObject; FindObjectsreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [returnValue: LocatedObjectSet], iluECantExportService => [], ENDCASE]; NotifyOfObjectsargs: TYPE = RECORD [ locs: Volume, types: UT.ObjectTypeSet, who: ROPE, rock: UT.OPAQUE ]; NotifyOfObjectsreturn: TYPE = REF NotifyOfObjectsreturnObject; NotifyOfObjectsreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [], iluECantExportService => [], ENDCASE]; RemoveObjectCallbackargs: TYPE = RECORD [ who: ROPE, rock: UT.OPAQUE ]; RemoveObjectCallbackreturn: TYPE = REF RemoveObjectCallbackreturnObject; RemoveObjectCallbackreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [], iluECantExportService => [], ENDCASE]; Parentargs: TYPE = RECORD [ l: ROPE ]; Parentreturn: TYPE = REF ParentreturnObject; ParentreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [returnValue: ROPE], iluECantExportService => [], ENDCASE]; Childrenargs: TYPE = RECORD [ l: ROPE ]; Childrenreturn: TYPE = REF ChildrenreturnObject; ChildrenreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [returnValue: Set], iluECantExportService => [], ENDCASE]; ShortestPathsargs: TYPE = RECORD [ frm: T, to: T, wantPaths: CARD32 ]; ShortestPathsreturn: TYPE = REF ShortestPathsreturnObject; ShortestPathsreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [returnValue: PathSolution], iluECantExportService => [], ENDCASE]; FindNearestsargs: TYPE = RECORD [ frm: T, to: Set, wantPaths: CARD32 ]; FindNearestsreturn: TYPE = REF FindNearestsreturnObject; FindNearestsreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [returnValue: Nearests], iluECantExportService => [], ENDCASE]; FindNearestsOfKindargs: TYPE = RECORD [ frm: T, kind: ROPE, description: UT.ObjectDescription, wantPaths: CARD32 ]; FindNearestsOfKindreturn: TYPE = REF FindNearestsOfKindreturnObject; FindNearestsOfKindreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [returnValue: Nearests], iluECantExportService => [], ENDCASE]; LBPrognum: CARDINAL = 822083614; version1: CARDINAL = 1; servernoopProc: TYPE = PROC[o: LB1]; atlocProc: TYPE = PROC[o0: LB1, o: UT.Objct, loc: Location] RETURNS [res: AtLocreturn]; removeobjectProc: TYPE = PROC[o0: LB1, o: UT.Objct] RETURNS [res: RemoveObjectreturn]; findobjectsProc: TYPE = PROC[o: LB1, locs: Volume, types: UT.ObjectTypeSet] RETURNS [res: FindObjectsreturn]; notifyofobjectsProc: TYPE = PROC[o: LB1, locs: Volume, types: UT.ObjectTypeSet, who: ROPE, rock: UT.OPAQUE] RETURNS [res: NotifyOfObjectsreturn]; removeobjectcallbackProc: TYPE = PROC[o: LB1, who: ROPE, rock: UT.OPAQUE] RETURNS [res: RemoveObjectCallbackreturn]; parentProc: TYPE = PROC[o: LB1, l: ROPE] RETURNS [res: Parentreturn]; childrenProc: TYPE = PROC[o: LB1, l: ROPE] RETURNS [res: Childrenreturn]; shortestpathsProc: TYPE = PROC[o: LB1, frm: T, to: T, wantPaths: CARD32] RETURNS [res: ShortestPathsreturn]; findnearestsProc: TYPE = PROC[o: LB1, frm: T, to: Set, wantPaths: CARD32] RETURNS [res: FindNearestsreturn]; findnearestsofkindProc: TYPE = PROC[o: LB1, frm: T, kind: ROPE, description: UT.ObjectDescription, wantPaths: CARD32] RETURNS [res: FindNearestsOfKindreturn]; LB1: TYPE = REF LB1Object; LB1Object: TYPE = RECORD [ servernoop: servernoopProc, atloc: atlocProc, removeobject: removeobjectProc, findobjects: findobjectsProc, notifyofobjects: notifyofobjectsProc, removeobjectcallback: removeobjectcallbackProc, parent: parentProc, children: childrenProc, shortestpaths: shortestpathsProc, findnearests: findnearestsProc, findnearestsofkind: findnearestsofkindProc, rpcHandle: SunRPC.Handle _ NIL, rpcConversation: SunRPCAuth.Conversation _ NIL, data: REF ANY _ NIL ]; MakeLB1Client: PROC[h: SunRPC.Handle, c: SunRPCAuth.Conversation] RETURNS [LB1]; MakeLB1Server: PROC[ data: REF, servernoop: servernoopProc, atloc: atlocProc, removeobject: removeobjectProc, findobjects: findobjectsProc, notifyofobjects: notifyofobjectsProc, removeobjectcallback: removeobjectcallbackProc, parent: parentProc, children: childrenProc, shortestpaths: shortestpathsProc, findnearests: findnearestsProc, findnearestsofkind: findnearestsofkindProc ] RETURNS [SunRPC.Server]; NotifyObjectsCallbackargs: TYPE = RECORD [ rock: UT.OPAQUE, os: LocatedObjectSet, change: ChangeOperation ]; NotifyObjectsCallbackreturn: TYPE = REF NotifyObjectsCallbackreturnObject; NotifyObjectsCallbackreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM EError => [EErrorValue: ErrorType], iluSuccess => [], iluECantExportService => [], ENDCASE]; callbacks: CARDINAL = 822083615; callbacksversion1: CARDINAL = 1; clientnoopProc: TYPE = PROC[o: callbacks1]; notifyobjectscallbackProc: TYPE = PROC[o: callbacks1, rock: UT.OPAQUE, os: LocatedObjectSet, change: ChangeOperation] RETURNS [res: NotifyObjectsCallbackreturn]; callbacks1: TYPE = REF callbacks1Object; callbacks1Object: TYPE = RECORD [ clientnoop: clientnoopProc, notifyobjectscallback: notifyobjectscallbackProc, rpcHandle: SunRPC.Handle _ NIL, rpcConversation: SunRPCAuth.Conversation _ NIL, data: REF ANY _ NIL ]; Makecallbacks1Client: PROC[h: SunRPC.Handle, c: SunRPCAuth.Conversation] RETURNS [callbacks1]; Makecallbacks1Server: PROC[ data: REF, clientnoop: clientnoopProc, notifyobjectscallback: notifyobjectscallbackProc ] RETURNS [SunRPC.Server]; END.