-- JoinAppGetPutImpl.mesa
-- Please do not edit this file.
-- It was generated using CedarRPCGen.

DIRECTORY
  Rope,
  SunRPC,
  UT,
  UTGetPut,
  JoinApp,
  JoinAppGetPut;

JoinAppGetPutImpl: CEDAR PROGRAM
  IMPORTS SunRPC, UTGetPut  EXPORTS JoinApp, JoinAppGetPut =
BEGIN
Handle: TYPE = SunRPC.Handle;

ROPE: TYPE = Rope.ROPE;

ReturnCodesNames: PUBLIC ARRAY JoinApp.ReturnCodes OF ROPE ← [
	"iluSuccess",
	"iluECantExportService",
	"ENotAuthorized"
	];

GetReturnCodes: PUBLIC PROC[h: Handle] RETURNS [res: JoinApp.ReturnCodes] = {
    res ← VAL[SunRPC.GetInt32[h]];
  };

PutReturnCodes: PUBLIC PROC[h: Handle, in: JoinApp.ReturnCodes] = {
    SunRPC.PutInt32[h, ORD[in]];
  };

GetJoinApplicationargs: PUBLIC PROC[h: Handle] RETURNS [res: JoinApp.JoinApplicationargs] = {
    res.in ← UTGetPut.GetObjectDescription[h];
  };

PutJoinApplicationargs: PUBLIC PROC[h: Handle, in: JoinApp.JoinApplicationargs] = {
    UTGetPut.PutObjectDescription[h, in.in];
  };

GetJoinApplicationreturn: PUBLIC PROC[h: Handle] RETURNS [res: JoinApp.JoinApplicationreturn] = {
    tag: JoinApp.ReturnCodes;
    tag ← GetReturnCodes[h];
    SELECT tag FROM
      iluSuccess => {
          v: REF iluSuccess JoinApp.JoinApplicationreturnObject ← NEW[iluSuccess JoinApp.JoinApplicationreturnObject];
          v.returnValue ← UTGetPut.GetObjectDescription[h];
          res ← v;
          };
      ENotAuthorized => {
          v: REF ENotAuthorized JoinApp.JoinApplicationreturnObject ← NEW[ENotAuthorized JoinApp.JoinApplicationreturnObject];
          res ← v;
        };
      iluECantExportService => {
          v: REF iluECantExportService JoinApp.JoinApplicationreturnObject ← NEW[iluECantExportService JoinApp.JoinApplicationreturnObject];
          res ← v;
        };
      ENDCASE => NULL;
  };

PutJoinApplicationreturn: PUBLIC PROC[h: Handle, in: JoinApp.JoinApplicationreturn] = {
    PutReturnCodes[h, in.returnCode];
    SELECT in.returnCode FROM
      iluSuccess => {
          v: REF iluSuccess JoinApp.JoinApplicationreturnObject ← NARROW[in];
          UTGetPut.PutObjectDescription[h, v.returnValue];
          };
      ENotAuthorized => {
          v: REF ENotAuthorized JoinApp.JoinApplicationreturnObject ← NARROW[in];
        };
      iluECantExportService => {
          v: REF iluECantExportService JoinApp.JoinApplicationreturnObject ← NARROW[in];
        };
      ENDCASE => NULL;
  };

END.