-- Copyright (C) 1986 by Xerox Corporation.  All rights reserved.
-- Stub file  was translated on April 18, 1986 12:25:51 pm PST by Lupine of May 23, 1985 8:38:08 am PDT
-- Source interface ComputeServerCallbacks came from file ComputeServerCallbacks.bcd, which was created on April 18, 1986 12:25:46 pm PST with version stamp 30#377#27632646066 from source of April 18, 1986 12:25:33 pm PST.

-- The RPC stub modules for ComputeServerCallbacks are:
--   ComputeServerCallbacksRpcControl.mesa;
--   ComputeServerCallbacksRpcClientImpl.mesa;
--   ComputeServerCallbacksRpcBinderImpl.mesa;
--   ComputeServerCallbacksRpcServerImpl.mesa.

-- The parameters for this translation are:
--   Target language = Cedar
--   Default parameter passing = VALUE
--   Deallocate server heap arguments = TRUE
--   Inline RpcServerImpl dispatcher stubs = FALSE
--   Declare signals = FALSE
--   Warn about short POINTER ("MDS") allocations = TRUE
--   Maximum number of dynamic heap NEWs = 50, MDS NEWs = 50
--   Acceptable parameter protocols = VersionRange[1..1].


DIRECTORY
  BasicTime,
  FS,
  IO,
  Pup,
  Rope,
  RPC,
  UserCredentials,
  ComputeServerCallbacks,
  RPCLupine USING [ImportHandle];


ComputeServerCallbacksRpcControl: DEFINITIONS
  SHARES  ComputeServerCallbacks
  = BEGIN OPEN ComputeServerCallbacks, RpcPublic: RPC, RpcPrivate:
      RPCLupine;


-- Public RPC types and constants.

  InterfaceName: TYPE = RpcPublic.InterfaceName;
  VersionRange: TYPE = RpcPublic.VersionRange;
  Principal: TYPE = RpcPublic.Principal;
  EncryptionKey: TYPE = RpcPublic.EncryptionKey;
  Zones: TYPE = RpcPublic.Zones;
  
  defaultInterfaceName: InterfaceName = RpcPublic.defaultInterfaceName;
  standardZones: Zones = RpcPublic.standardZones;


-- Standard remote binding routines.

  ImportInterface: SAFE PROCEDURE [
        interface: InterfaceRecord,
        interfaceName: InterfaceName ← defaultInterfaceName,
        parameterStorage: Zones ← standardZones ];


  ExportInterface: SAFE PROCEDURE [
        interfaceName: InterfaceName ← defaultInterfaceName,
        user: Principal,
        password: EncryptionKey,
        parameterStorage: Zones ← standardZones ];

  UnexportInterface: SAFE PROCEDURE;


-- Dynamic instantiation and binding.

  ImportNewInterface: SAFE PROCEDURE [
        interfaceName: InterfaceName ← defaultInterfaceName,
        parameterStorage: Zones ← standardZones ]
    RETURNS [interfaceRecord: InterfaceRecord];

  -- NewInterfaceRecord is necessary for Cedar clients who want to
  -- manufacture a private interface instance, because
  -- RpcBindingImpl has finalization on type InterfaceRecord.
  NewInterfaceRecord: SAFE PROCEDURE
    RETURNS [interfaceRecord: InterfaceRecord];

  InterfaceRecord: TYPE = REF InterfaceRecordObject;

  InterfaceRecordObject: TYPE = RECORD [
          myInterface: RpcPrivate.ImportHandle ← NIL,
      paramZones: RpcPublic.Zones ← RpcPublic.standardZones,
      Error: ERROR [error: FS.ErrorDesc],
      clientStubrGeneric: SAFE PROCEDURE [interface: InterfaceRecord,
          requestCode: ATOM, requestString: ROPE] RETURNS [resultCode:
          ATOM, resultString: ROPE],
      clientStubrSetDefaultWDir: SAFE PROCEDURE [interface: InterfaceRecord,
          dir: RPC.ShortROPE],
      clientStubrGetDefaultWDir: SAFE PROCEDURE[interface: InterfaceRecord]
          RETURNS [RPC.ShortROPE],
      clientStubrExpandName: SAFE PROCEDURE [interface: InterfaceRecord,
          name: ROPE, wDir: RPC.ShortROPE] RETURNS [fullFName: ROPE, cp:
          FS.ComponentPositions, dirOmitted: BOOLEAN],
      clientStubrFileInfo: SAFE PROCEDURE [interface: InterfaceRecord,
          name: ROPE, wantedCreatedTime: BasicTime.GMT, remoteCheck: BOOLEAN,
          wDir: RPC.ShortROPE] RETURNS [fullFName: ROPE, attachedTo: ROPE,
          keep: CARDINAL, bytes: INT, created: BasicTime.GMT],
      clientStubrStartEnumerateForInfo: SAFE PROCEDURE [interface:
          InterfaceRecord, listenerPupAddress: Pup.Address, pattern: ROPE,
          wDir: RPC.ShortROPE] RETURNS [fullFName: ROPE, attachedTo: ROPE,
          created: BasicTime.GMT, bytes: INT, keep: CARDINAL, continue:
          BOOLEAN],
      clientStubrNextEnumerateForInfo: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address] RETURNS [fullFName: ROPE, attachedTo:
          ROPE, created: BasicTime.GMT, bytes: INT, keep: CARDINAL, continue:
          BOOLEAN],
      clientStubrStartEnumerateForNames: SAFE PROCEDURE [interface:
          InterfaceRecord, listenerPupAddress: Pup.Address, pattern: ROPE,
          wDir: RPC.ShortROPE] RETURNS [fullFName: ROPE, continue: BOOLEAN],
      clientStubrNextEnumerateForNames: SAFE PROCEDURE [interface:
          InterfaceRecord, listenerPupAddress: Pup.Address] RETURNS [fullFName:
          ROPE, continue: BOOLEAN],
      clientStubrDoneEnumerate: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address],
      clientStubrOpen: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, name: ROPE, lock: FS.Lock, wantedCreatedTime:
          BasicTime.GMT, remoteCheck: BOOLEAN, wDir: RPC.ShortROPE, forceRemoteOpen:
          BOOL] RETURNS [globalNameToOpen: ROPE, openFile: OpenFile],
      clientStubrCreate: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, name: ROPE, setPages: BOOLEAN,
          pages: INT, setKeep: BOOLEAN, keep: CARDINAL, wDir: RPC.ShortROPE]
          RETURNS [OpenFile],
      clientStubrOpenOrCreate: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, name: ROPE, keep: CARDINAL,
          pages: INT, wDir: RPC.ShortROPE] RETURNS [OpenFile],
      clientStubrGetClass: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, file: OpenFile] RETURNS [ATOM],
      clientStubrSameFile: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, file1: OpenFile, file2: OpenFile]
          RETURNS [BOOLEAN],
      clientStubrGetName: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, file: OpenFile] RETURNS [fullFName:
          ROPE, attachedTo: ROPE],
      clientStubrGetInfo: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, file: OpenFile] RETURNS [keep:
          CARDINAL, pages: INT, bytes: INT, created: BasicTime.GMT, lock:
          FS.Lock],
      clientStubrSetPageCount: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, file: OpenFile, pages: INT],
      clientStubrSetByteCountAndCreatedTime: SAFE PROCEDURE [interface:
          InterfaceRecord, listenerPupAddress: Pup.Address, file: OpenFile,
          bytes: INT, created: BasicTime.GMT],
      clientStubrRead: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, file: OpenFile, from: INT, nPages:
          INT, pageBuffer: RESULTPageBuffer],
      clientStubrWrite: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, file: OpenFile, to: INT, nPages:
          INT, pageBuffer: VALUEPageBuffer],
      clientStubrClose: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, file: OpenFile],
      clientStubrCopy: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, from: ROPE, to: ROPE, setKeep:
          BOOLEAN, keep: CARDINAL, wantedCreatedTime: BasicTime.GMT, remoteCheck:
          BOOLEAN, attach: BOOLEAN, wDir: RPC.ShortROPE] RETURNS [toFName:
          ROPE],
      clientStubrDelete: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, name: ROPE, wantedCreatedTime:
          BasicTime.GMT, wDir: RPC.ShortROPE],
      clientStubrRename: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, from: ROPE, to: ROPE, setKeep:
          BOOLEAN, keep: CARDINAL, wantedCreatedTime: BasicTime.GMT, wDir:
          RPC.ShortROPE],
      clientStubrSetKeep: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, name: ROPE, keep: CARDINAL,
          wDir: RPC.ShortROPE],
      clientStubrBoolean: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, key: Rope.ROPE, default: BOOLEAN]
          RETURNS [value: BOOLEAN],
      clientStubrNumber: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, key: Rope.ROPE, default: INT]
          RETURNS [value: INT],
      clientStubrToken: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, key: Rope.ROPE, default: Rope.ROPE]
          RETURNS [value: Rope.ROPE],
      clientStubrListOfTokens: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, key: Rope.ROPE, default: LIST
          OF Rope.ROPE] RETURNS [value: LIST OF Rope.ROPE],
      clientStubrLine: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, key: Rope.ROPE, default: Rope.ROPE]
          RETURNS [value: Rope.ROPE],
      clientStubrGetProfileName: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address] RETURNS [Rope.ROPE],
      clientStubrGetState: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address] RETURNS [UserCredentials.State],
      clientStubrGet: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
          Pup.Address] RETURNS [name: Rope.ROPE, password: Rope.ROPE],
      clientStubOpenDebugStream: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, newListenerPupAddress: Pup.Address,
          name: Rope.ROPE, serverMachine: Rope.ROPE] RETURNS [byteStreamOK:
          BOOL],
      clientStubOpenSourceViewer: SAFE PROCEDURE [interface: InterfaceRecord,
          listenerPupAddress: Pup.Address, name: Rope.ROPE, index: INT],
      bound: BOOL ← FALSE];

  rGeneric: SAFE PROCEDURE [interface: InterfaceRecord, requestCode:
      ATOM, requestString: ROPE] RETURNS [resultCode: ATOM, resultString:
      ROPE] = CHECKED INLINE  { RETURN interface.clientStubrGeneric[interface,
      requestCode, requestString]};
   rSetDefaultWDir: SAFE PROCEDURE [interface: InterfaceRecord, dir:
      RPC.ShortROPE] = CHECKED INLINE  { interface.clientStubrSetDefaultWDir[interface,
      dir]};
   rGetDefaultWDir: SAFE PROCEDURE[interface: InterfaceRecord] RETURNS
      [RPC.ShortROPE] = CHECKED INLINE  { RETURN interface.clientStubrGetDefaultWDir[interface]};
   rExpandName: SAFE PROCEDURE [interface: InterfaceRecord, name: ROPE,
      wDir: RPC.ShortROPE] RETURNS [fullFName: ROPE, cp: FS.ComponentPositions,
      dirOmitted: BOOLEAN] = CHECKED INLINE  { RETURN interface.clientStubrExpandName[interface,
      name, wDir]};
   rFileInfo: SAFE PROCEDURE [interface: InterfaceRecord, name: ROPE,
      wantedCreatedTime: BasicTime.GMT, remoteCheck: BOOLEAN, wDir: RPC.ShortROPE]
      RETURNS [fullFName: ROPE, attachedTo: ROPE, keep: CARDINAL, bytes:
      INT, created: BasicTime.GMT] = CHECKED INLINE  { RETURN interface.clientStubrFileInfo[interface,
      name, wantedCreatedTime, remoteCheck, wDir]};
   rStartEnumerateForInfo: SAFE PROCEDURE [interface: InterfaceRecord,
      listenerPupAddress: Pup.Address, pattern: ROPE, wDir: RPC.ShortROPE]
      RETURNS [fullFName: ROPE, attachedTo: ROPE, created: BasicTime.GMT,
      bytes: INT, keep: CARDINAL, continue: BOOLEAN] = CHECKED INLINE
       { RETURN interface.clientStubrStartEnumerateForInfo[interface,
      listenerPupAddress, pattern, wDir]};
   rNextEnumerateForInfo: SAFE PROCEDURE [interface: InterfaceRecord,
      listenerPupAddress: Pup.Address] RETURNS [fullFName: ROPE, attachedTo:
      ROPE, created: BasicTime.GMT, bytes: INT, keep: CARDINAL, continue:
      BOOLEAN] = CHECKED INLINE  { RETURN interface.clientStubrNextEnumerateForInfo[interface,
      listenerPupAddress]};
   rStartEnumerateForNames: SAFE PROCEDURE [interface: InterfaceRecord,
      listenerPupAddress: Pup.Address, pattern: ROPE, wDir: RPC.ShortROPE]
      RETURNS [fullFName: ROPE, continue: BOOLEAN] = CHECKED INLINE  {
      RETURN interface.clientStubrStartEnumerateForNames[interface, listenerPupAddress,
      pattern, wDir]};
   rNextEnumerateForNames: SAFE PROCEDURE [interface: InterfaceRecord,
      listenerPupAddress: Pup.Address] RETURNS [fullFName: ROPE, continue:
      BOOLEAN] = CHECKED INLINE  { RETURN interface.clientStubrNextEnumerateForNames[interface,
      listenerPupAddress]};
   rDoneEnumerate: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address] = CHECKED INLINE  { interface.clientStubrDoneEnumerate[interface,
      listenerPupAddress]};
   rOpen: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, name: ROPE, lock: FS.Lock, wantedCreatedTime: BasicTime.GMT,
      remoteCheck: BOOLEAN, wDir: RPC.ShortROPE, forceRemoteOpen: BOOL]
      RETURNS [globalNameToOpen: ROPE, openFile: OpenFile] = CHECKED INLINE
       { RETURN interface.clientStubrOpen[interface, listenerPupAddress,
      name, lock, wantedCreatedTime, remoteCheck, wDir, forceRemoteOpen]};
   rCreate: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, name: ROPE, setPages: BOOLEAN, pages: INT, setKeep:
      BOOLEAN, keep: CARDINAL, wDir: RPC.ShortROPE] RETURNS [OpenFile]
      = CHECKED INLINE  { RETURN interface.clientStubrCreate[interface,
      listenerPupAddress, name, setPages, pages, setKeep, keep, wDir]};
   rOpenOrCreate: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, name: ROPE, keep: CARDINAL, pages: INT, wDir: RPC.ShortROPE]
      RETURNS [OpenFile] = CHECKED INLINE  { RETURN interface.clientStubrOpenOrCreate[interface,
      listenerPupAddress, name, keep, pages, wDir]};
   rGetClass: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, file: OpenFile] RETURNS [ATOM] = CHECKED INLINE  {
      RETURN interface.clientStubrGetClass[interface, listenerPupAddress,
      file]};
   rSameFile: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, file1: OpenFile, file2: OpenFile] RETURNS [BOOLEAN]
      = CHECKED INLINE  { RETURN interface.clientStubrSameFile[interface,
      listenerPupAddress, file1, file2]};
   rGetName: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, file: OpenFile] RETURNS [fullFName: ROPE, attachedTo:
      ROPE] = CHECKED INLINE  { RETURN interface.clientStubrGetName[interface,
      listenerPupAddress, file]};
   rGetInfo: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, file: OpenFile] RETURNS [keep: CARDINAL, pages: INT,
      bytes: INT, created: BasicTime.GMT, lock: FS.Lock] = CHECKED INLINE
       { RETURN interface.clientStubrGetInfo[interface, listenerPupAddress,
      file]};
   rSetPageCount: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, file: OpenFile, pages: INT] = CHECKED INLINE  { interface.clientStubrSetPageCount[interface,
      listenerPupAddress, file, pages]};
   rSetByteCountAndCreatedTime: SAFE PROCEDURE [interface: InterfaceRecord,
      listenerPupAddress: Pup.Address, file: OpenFile, bytes: INT, created:
      BasicTime.GMT] = CHECKED INLINE  { interface.clientStubrSetByteCountAndCreatedTime[interface,
      listenerPupAddress, file, bytes, created]};
   rRead: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, file: OpenFile, from: INT, nPages: INT, pageBuffer:
      RESULTPageBuffer] = CHECKED INLINE  { interface.clientStubrRead[interface,
      listenerPupAddress, file, from, nPages, pageBuffer]};
   rWrite: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, file: OpenFile, to: INT, nPages: INT, pageBuffer: VALUEPageBuffer]
      = CHECKED INLINE  { interface.clientStubrWrite[interface, listenerPupAddress,
      file, to, nPages, pageBuffer]};
   rClose: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, file: OpenFile] = CHECKED INLINE  { interface.clientStubrClose[interface,
      listenerPupAddress, file]};
   rCopy: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, from: ROPE, to: ROPE, setKeep: BOOLEAN, keep: CARDINAL,
      wantedCreatedTime: BasicTime.GMT, remoteCheck: BOOLEAN, attach:
      BOOLEAN, wDir: RPC.ShortROPE] RETURNS [toFName: ROPE] = CHECKED
      INLINE  { RETURN interface.clientStubrCopy[interface, listenerPupAddress,
      from, to, setKeep, keep, wantedCreatedTime, remoteCheck, attach,
      wDir]};
   rDelete: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, name: ROPE, wantedCreatedTime: BasicTime.GMT, wDir:
      RPC.ShortROPE] = CHECKED INLINE  { interface.clientStubrDelete[interface,
      listenerPupAddress, name, wantedCreatedTime, wDir]};
   rRename: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, from: ROPE, to: ROPE, setKeep: BOOLEAN, keep: CARDINAL,
      wantedCreatedTime: BasicTime.GMT, wDir: RPC.ShortROPE] = CHECKED
      INLINE  { interface.clientStubrRename[interface, listenerPupAddress,
      from, to, setKeep, keep, wantedCreatedTime, wDir]};
   rSetKeep: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, name: ROPE, keep: CARDINAL, wDir: RPC.ShortROPE] =
      CHECKED INLINE  { interface.clientStubrSetKeep[interface, listenerPupAddress,
      name, keep, wDir]};
   rBoolean: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, key: Rope.ROPE, default: BOOLEAN] RETURNS [value: BOOLEAN]
      = CHECKED INLINE  { RETURN interface.clientStubrBoolean[interface,
      listenerPupAddress, key, default]};
   rNumber: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, key: Rope.ROPE, default: INT] RETURNS [value: INT]
      = CHECKED INLINE  { RETURN interface.clientStubrNumber[interface,
      listenerPupAddress, key, default]};
   rToken: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, key: Rope.ROPE, default: Rope.ROPE] RETURNS [value:
      Rope.ROPE] = CHECKED INLINE  { RETURN interface.clientStubrToken[interface,
      listenerPupAddress, key, default]};
   rListOfTokens: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, key: Rope.ROPE, default: LIST OF Rope.ROPE] RETURNS
      [value: LIST OF Rope.ROPE] = CHECKED INLINE  { RETURN interface.clientStubrListOfTokens[interface,
      listenerPupAddress, key, default]};
   rLine: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, key: Rope.ROPE, default: Rope.ROPE] RETURNS [value:
      Rope.ROPE] = CHECKED INLINE  { RETURN interface.clientStubrLine[interface,
      listenerPupAddress, key, default]};
   rGetProfileName: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address] RETURNS [Rope.ROPE] = CHECKED INLINE  { RETURN interface.clientStubrGetProfileName[interface,
      listenerPupAddress]};
   rGetState: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address] RETURNS [UserCredentials.State] = CHECKED INLINE  {
      RETURN interface.clientStubrGetState[interface, listenerPupAddress]};
   rGet: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address] RETURNS [name: Rope.ROPE, password: Rope.ROPE] = CHECKED
      INLINE  { RETURN interface.clientStubrGet[interface, listenerPupAddress]};
   OpenDebugStream: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, newListenerPupAddress: Pup.Address, name: Rope.ROPE,
      serverMachine: Rope.ROPE] RETURNS [byteStreamOK: BOOL] = CHECKED
      INLINE  { RETURN interface.clientStubOpenDebugStream[interface,
      listenerPupAddress, newListenerPupAddress, name, serverMachine]};
   OpenSourceViewer: SAFE PROCEDURE [interface: InterfaceRecord, listenerPupAddress:
      Pup.Address, name: Rope.ROPE, index: INT] = CHECKED INLINE  { interface.clientStubOpenSourceViewer[interface,
      listenerPupAddress, name, index]};
 
 -- Definitions for the stubs.
 
 LupineProtocolVersion: PUBLIC VersionRange = [first: 1, last: 1];
 
 InterMdsCallsOnly: PUBLIC BOOLEAN = FALSE;

  ProcedureIndex: PRIVATE TYPE = MACHINE DEPENDENT {
      LupineUnusedIndex (0), LupineLastIndex (3),
      rGeneric (4), rSetDefaultWDir (5), rGetDefaultWDir (6), rExpandName
      (7), rFileInfo (8), rStartEnumerateForInfo (9), rNextEnumerateForInfo
      (10), rStartEnumerateForNames (11), rNextEnumerateForNames (12),
      rDoneEnumerate (13), rOpen (14), rCreate (15), rOpenOrCreate (16),
      rGetClass (17), rSameFile (18), rGetName (19), rGetInfo (20), rSetPageCount
      (21), rSetByteCountAndCreatedTime (22), rRead (23), rWrite (24),
      rClose (25), rCopy (26), rDelete (27), rRename (28), rSetKeep (29),
      rBoolean (30), rNumber (31), rToken (32), rListOfTokens (33), rLine
      (34), rGetProfileName (35), rGetState (36), rGet (37), OpenDebugStream
      (38), OpenSourceViewer (39)};

  SignalIndex: PRIVATE TYPE = MACHINE DEPENDENT {
      LupineUnusedIndex (0), LupineLastIndex (3),
      Error (4)};


END.  -- ComputeServerCallbacksRpcControl.