-- fortytwoGetPutImpl.mesa -- Please do not edit this file. -- It was generated using CedarRPCGen. DIRECTORY Rope, SunRPC, fortyone, fourtwo, fourtwoGetPut, fortytwo, fortytwoGetPut; fortytwoGetPutImpl: CEDAR PROGRAM IMPORTS SunRPC, fourtwoGetPut EXPORTS fortytwo, fortytwoGetPut = BEGIN Handle: TYPE = SunRPC.Handle; ROPE: TYPE = Rope.ROPE; GetQuestionType: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.QuestionType] = { res ← VAL[SunRPC.GetInt32[h]]; }; PutQuestionType: PUBLIC PROC[h: Handle, in: fortytwo.QuestionType] = { SunRPC.PutInt32[h, ORD[in]]; }; Question1TypeNames: PUBLIC ARRAY fortytwo.Question1Type OF ROPE ← [ "boooring", "cooosmic", "univeeersal", "stuuupid", "sillly" ]; GetQuestion1Type: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.Question1Type] = { res ← VAL[SunRPC.GetInt32[h]]; }; PutQuestion1Type: PUBLIC PROC[h: Handle, in: fortytwo.Question1Type] = { SunRPC.PutInt32[h, ORD[in]]; }; GetanswerRecType: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.answerRecType] = { res ← fourtwoGetPut.GetanswerRec[h]; }; PutanswerRecType: PUBLIC PROC[h: Handle, in: fortytwo.answerRecType] = { fourtwoGetPut.PutanswerRec[h, in]; }; GetTheANSWER: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.TheANSWER] = { tag: fortytwo.QuestionType; tag ← GetQuestionType[h]; SELECT tag FROM boring => { v: REF boring fortytwo.TheANSWERObject ← NEW[boring fortytwo.TheANSWERObject]; FOR i: INT IN [0..13) DO v.b[i] ← SunRPC.GetByte[h]; ENDLOOP; SunRPC.GetAlign[h]; res ← v; }; cosmic => { v: REF cosmic fortytwo.TheANSWERObject ← NEW[cosmic fortytwo.TheANSWERObject]; v.c ← SunRPC.GetInt32[h]; res ← v; }; stupid => { v: REF stupid fortytwo.TheANSWERObject ← NEW[stupid fortytwo.TheANSWERObject]; res ← v; }; silly => { v: REF silly fortytwo.TheANSWERObject ← NEW[silly fortytwo.TheANSWERObject]; IF SunRPC.GetInt32[h] # 0 THEN { v.d ← NEW[fourtwo.answerRec]; v.d↑ ← fourtwoGetPut.GetanswerRec[h]; } ELSE v.d ← NIL; res ← v; }; universal => { v: REF universal fortytwo.TheANSWERObject ← NEW[universal fortytwo.TheANSWERObject]; IF SunRPC.GetInt32[h] # 0 THEN { v.d ← NEW[fourtwo.answerRec]; v.d↑ ← fourtwoGetPut.GetanswerRec[h]; } ELSE v.d ← NIL; res ← v; }; ENDCASE => NULL; }; PutTheANSWER: PUBLIC PROC[h: Handle, in: fortytwo.TheANSWER] = { PutQuestionType[h, in.truthType]; SELECT in.truthType FROM boring => { v: REF boring fortytwo.TheANSWERObject ← NARROW[in]; FOR i: INT IN [0..13) DO SunRPC.PutByte[h, v.b[i]]; ENDLOOP; SunRPC.PutAlign[h]; }; cosmic => { v: REF cosmic fortytwo.TheANSWERObject ← NARROW[in]; SunRPC.PutInt32[h, v.c]; }; stupid => { v: REF stupid fortytwo.TheANSWERObject ← NARROW[in]; }; silly => { v: REF silly fortytwo.TheANSWERObject ← NARROW[in]; IF v.d = NIL THEN { SunRPC.PutInt32[h, 0]; } ELSE { SunRPC.PutInt32[h, 1]; fourtwoGetPut.PutanswerRec[h, v.d↑]; }; }; universal => { v: REF universal fortytwo.TheANSWERObject ← NARROW[in]; IF v.d = NIL THEN { SunRPC.PutInt32[h, 0]; } ELSE { SunRPC.PutInt32[h, 1]; fourtwoGetPut.PutanswerRec[h, v.d↑]; }; }; ENDCASE => NULL; }; GetYetAnotherAnswer: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.YetAnotherAnswer] = { tag: INT32; tag ← VAL[SunRPC.GetInt32[h]]; SELECT tag FROM 0 => { v: REF v0 fortytwo.YetAnotherAnswerObject ← NEW[v0 fortytwo.YetAnotherAnswerObject]; v.answer ← GetQuestionType[h]; res ← v; }; 1 => { v: REF v1 fortytwo.YetAnotherAnswerObject ← NEW[v1 fortytwo.YetAnotherAnswerObject]; v.a ← SunRPC.GetInt32[h]; res ← v; }; ENDCASE => { v: REF default fortytwo.YetAnotherAnswerObject ← NEW[default fortytwo.YetAnotherAnswerObject]; v.responseType ← tag; res ← v; }; }; PutYetAnotherAnswer: PUBLIC PROC[h: Handle, in: fortytwo.YetAnotherAnswer] = { SunRPC.PutInt32[h, ORD[in.responseType]]; SELECT in.responseType FROM 0 => { v: REF v0 fortytwo.YetAnotherAnswerObject ← NARROW[in]; PutQuestionType[h, v.answer]; }; 1 => { v: REF v1 fortytwo.YetAnotherAnswerObject ← NARROW[in]; SunRPC.PutInt32[h, v.a]; }; ENDCASE => { v: REF default fortytwo.YetAnotherAnswerObject ← NARROW[in]; }; }; GettrueAnswerRec: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.trueAnswerRec] = { res.tellingTheTruth ← SunRPC.GetInt32[h] # 0; FOR i: INT IN [0..fortyone.TRUTHSIZE) DO res.theTruth[i] ← SunRPC.GetInt32[h]; ENDLOOP; res.theTRUTH ← GetTheANSWER[h]; }; PuttrueAnswerRec: PUBLIC PROC[h: Handle, in: fortytwo.trueAnswerRec] = { SunRPC.PutInt32[h, IF in.tellingTheTruth THEN 1 ELSE 0]; FOR i: INT IN [0..fortyone.TRUTHSIZE) DO SunRPC.PutInt32[h, in.theTruth[i]]; ENDLOOP; PutTheANSWER[h, in.theTRUTH]; }; GettrueQuestionRec: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.trueQuestionRec] = { res.questionType ← GetQuestionType[h]; { len: INT ← SunRPC.GetInt32[h]; res.randomNumbers ← NEW[fortytwo.SeqType0Object[len]]; FOR i: INT IN [0..len) DO res.randomNumbers[i] ← SunRPC.GetInt32[h]; ENDLOOP; }; }; PuttrueQuestionRec: PUBLIC PROC[h: Handle, in: fortytwo.trueQuestionRec] = { PutQuestionType[h, in.questionType]; SunRPC.PutInt32[h, in.randomNumbers.size]; FOR i: INT IN [0..in.randomNumbers.size) DO SunRPC.PutInt32[h, in.randomNumbers[i]]; ENDLOOP; }; GetQuestionRec: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.QuestionRec] = { res ← GettrueQuestionRec[h]; }; PutQuestionRec: PUBLIC PROC[h: Handle, in: fortytwo.QuestionRec] = { PuttrueQuestionRec[h, in]; }; GetAnswerRec: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.AnswerRec] = { res ← GettrueAnswerRec[h]; }; PutAnswerRec: PUBLIC PROC[h: Handle, in: fortytwo.AnswerRec] = { PuttrueAnswerRec[h, in]; }; GetQuestionRecPtr: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.QuestionRecPtr] = { IF SunRPC.GetInt32[h] # 0 THEN { res ← NEW[fortytwo.QuestionRec]; res↑ ← GetQuestionRec[h]; } ELSE res ← NIL; }; PutQuestionRecPtr: PUBLIC PROC[h: Handle, in: fortytwo.QuestionRecPtr] = { IF in = NIL THEN { SunRPC.PutInt32[h, 0]; } ELSE { SunRPC.PutInt32[h, 1]; PutQuestionRec[h, in↑]; }; }; GetQuestionRecArray: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.QuestionRecArray] = { { len: INT ← SunRPC.GetInt32[h]; res ← NEW[fortytwo.SeqType1Object[len]]; FOR i: INT IN [0..len) DO res[i] ← GetQuestionRec[h]; ENDLOOP; }; }; PutQuestionRecArray: PUBLIC PROC[h: Handle, in: fortytwo.QuestionRecArray] = { SunRPC.PutInt32[h, in.size]; FOR i: INT IN [0..in.size) DO PutQuestionRec[h, in[i]]; ENDLOOP; }; GetQuestionRecArray1: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.QuestionRecArray1] = { FOR i: INT IN [0..13) DO res[i] ← GetQuestionRec[h]; ENDLOOP; }; PutQuestionRecArray1: PUBLIC PROC[h: Handle, in: fortytwo.QuestionRecArray1] = { FOR i: INT IN [0..13) DO PutQuestionRec[h, in[i]]; ENDLOOP; }; Gettuple: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.tuple] = { res.x ← SunRPC.GetInt32[h]; res.y ← SunRPC.GetInt32[h]; }; Puttuple: PUBLIC PROC[h: Handle, in: fortytwo.tuple] = { SunRPC.PutInt32[h, in.x]; SunRPC.PutInt32[h, in.y]; }; GetrandomTypes: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.randomTypes] = { res.a ← SunRPC.GetReal[h]; res.b ← SunRPC.GetDReal[h]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; res.c ← SunRPC.GetByte[h]; res.d ← SunRPC.GetInt32[h]; res.e ← SunRPC.GetInt32[h]; res.f ← SunRPC.GetInt32[h]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; res.g ← SunRPC.GetByte[h]; res.h ← SunRPC.GetCard32[h]; res.i ← SunRPC.GetCard32[h]; res.j ← SunRPC.GetCard32[h]; { len: INT ← SunRPC.GetInt32[h]; res.k ← NEW[fortytwo.SeqType2Object[len]]; FOR i: INT IN [0..len) DO res.k[i] ← Gettuple[h]; ENDLOOP; }; FOR i: INT IN [0..3) DO res.l[i] ← SunRPC.GetByte[h]; ENDLOOP; SunRPC.GetAlign[h]; { len: INT ← SunRPC.GetInt32[h]; res.m ← NEW[fortytwo.SeqType3Object[len]]; FOR i: INT IN [0..len) DO [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; res.m[i] ← SunRPC.GetByte[h]; ENDLOOP; }; }; PutrandomTypes: PUBLIC PROC[h: Handle, in: fortytwo.randomTypes] = { SunRPC.PutReal[h, in.a]; SunRPC.PutDReal[h, in.b]; SunRPC.PutInt32[h, in.c]; SunRPC.PutInt32[h, in.d]; SunRPC.PutInt32[h, in.e]; SunRPC.PutInt32[h, in.f]; SunRPC.PutInt32[h, in.g]; SunRPC.PutCard32[h, in.h]; SunRPC.PutCard32[h, in.i]; SunRPC.PutCard32[h, in.j]; SunRPC.PutInt32[h, in.k.size]; FOR i: INT IN [0..in.k.size) DO Puttuple[h, in.k[i]]; ENDLOOP; FOR i: INT IN [0..3) DO SunRPC.PutByte[h, in.l[i]]; ENDLOOP; SunRPC.PutAlign[h]; SunRPC.PutInt32[h, in.m.size]; FOR i: INT IN [0..in.m.size) DO SunRPC.PutInt32[h, in.m[i]]; ENDLOOP; }; GetFooBar: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.FooBar] = { res ← SunRPC.GetInt32[h]; }; PutFooBar: PUBLIC PROC[h: Handle, in: fortytwo.FooBar] = { SunRPC.PutInt32[h, in]; }; Getfoo: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.foo] = { tag: CARD32; tag ← SunRPC.GetCard32[h]; SELECT tag FROM 1 => { v: REF v1 fortytwo.fooObject ← NEW[v1 fortytwo.fooObject]; v.a ← SunRPC.GetCard32[h]; res ← v; }; 2 => { v: REF v2 fortytwo.fooObject ← NEW[v2 fortytwo.fooObject]; { len: INT ← SunRPC.GetInt32[h]; v.b ← NEW[fortytwo.SeqType4Object[len]]; FOR i: INT IN [0..len) DO v.b[i] ← SunRPC.GetCard32[h]; ENDLOOP; }; res ← v; }; 3 => { v: REF v3 fortytwo.fooObject ← NEW[v3 fortytwo.fooObject]; FOR i: INT IN [0..42) DO [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; v.c[i] ← SunRPC.GetByte[h]; ENDLOOP; res ← v; }; 4 => { v: REF v4 fortytwo.fooObject ← NEW[v4 fortytwo.fooObject]; { len: INT ← SunRPC.GetInt32[h]; v.d ← NEW[fortytwo.SeqType5Object[len]]; FOR i: INT IN [0..len) DO v.d[i] ← SunRPC.GetCard32[h]; ENDLOOP; }; res ← v; }; ENDCASE => { v: REF default fortytwo.fooObject ← NEW[default fortytwo.fooObject]; v.desc ← tag; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; v.e ← SunRPC.GetByte[h]; res ← v; }; }; Putfoo: PUBLIC PROC[h: Handle, in: fortytwo.foo] = { SunRPC.PutCard32[h, in.desc]; SELECT in.desc FROM 1 => { v: REF v1 fortytwo.fooObject ← NARROW[in]; SunRPC.PutCard32[h, v.a]; }; 2 => { v: REF v2 fortytwo.fooObject ← NARROW[in]; SunRPC.PutInt32[h, v.b.size]; FOR i: INT IN [0..v.b.size) DO SunRPC.PutCard32[h, v.b[i]]; ENDLOOP; }; 3 => { v: REF v3 fortytwo.fooObject ← NARROW[in]; FOR i: INT IN [0..42) DO SunRPC.PutInt32[h, v.c[i]]; ENDLOOP; }; 4 => { v: REF v4 fortytwo.fooObject ← NARROW[in]; SunRPC.PutInt32[h, v.d.size]; FOR i: INT IN [0..v.d.size) DO SunRPC.PutCard32[h, v.d[i]]; ENDLOOP; }; ENDCASE => { v: REF default fortytwo.fooObject ← NARROW[in]; SunRPC.PutInt32[h, v.e]; }; }; Getbarr: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.barr] = { res.a ← SunRPC.GetCard32[h]; { len: INT ← SunRPC.GetInt32[h]; res.b ← NEW[fortytwo.SeqType6Object[len]]; FOR i: INT IN [0..len) DO res.b[i] ← SunRPC.GetCard32[h]; ENDLOOP; }; FOR i: INT IN [0..13) DO [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; res.c[i] ← SunRPC.GetByte[h]; ENDLOOP; IF SunRPC.GetInt32[h] # 0 THEN { res.d ← NEW[CARD32]; res.d↑ ← SunRPC.GetCard32[h]; } ELSE res.d ← NIL; }; Putbarr: PUBLIC PROC[h: Handle, in: fortytwo.barr] = { SunRPC.PutCard32[h, in.a]; SunRPC.PutInt32[h, in.b.size]; FOR i: INT IN [0..in.b.size) DO SunRPC.PutCard32[h, in.b[i]]; ENDLOOP; FOR i: INT IN [0..13) DO SunRPC.PutInt32[h, in.c[i]]; ENDLOOP; IF in.d = NIL THEN { SunRPC.PutInt32[h, 0]; } ELSE { SunRPC.PutInt32[h, 1]; SunRPC.PutCard32[h, in.d↑]; }; }; GetULONG: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.ULONG] = { res ← SunRPC.GetCard32[h]; }; PutULONG: PUBLIC PROC[h: Handle, in: fortytwo.ULONG] = { SunRPC.PutCard32[h, in]; }; Getfoobar: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.foobar] = { { len: INT ← SunRPC.GetInt32[h]; res ← NEW[fortytwo.SeqType7Object[len]]; FOR i: INT IN [0..len) DO res[i] ← SunRPC.GetCard32[h]; ENDLOOP; }; }; Putfoobar: PUBLIC PROC[h: Handle, in: fortytwo.foobar] = { SunRPC.PutInt32[h, in.size]; FOR i: INT IN [0..in.size) DO SunRPC.PutCard32[h, in[i]]; ENDLOOP; }; Getfoobaz: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.foobaz] = { FOR i: INT IN [0..137) DO [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; res[i] ← SunRPC.GetByte[h]; ENDLOOP; }; Putfoobaz: PUBLIC PROC[h: Handle, in: fortytwo.foobaz] = { FOR i: INT IN [0..137) DO SunRPC.PutInt32[h, in[i]]; ENDLOOP; }; Getfoobarrr: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.foobarrr] = { IF SunRPC.GetInt32[h] # 0 THEN { res ← NEW[CARD32]; res↑ ← SunRPC.GetCard32[h]; } ELSE res ← NIL; }; Putfoobarrr: PUBLIC PROC[h: Handle, in: fortytwo.foobarrr] = { IF in = NIL THEN { SunRPC.PutInt32[h, 0]; } ELSE { SunRPC.PutInt32[h, 1]; SunRPC.PutCard32[h, in↑]; }; }; Getbar: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.bar] = { tag: BOOLEAN; tag ← VAL[SunRPC.GetInt32[h]]; SELECT tag FROM TRUE => { v: REF TRUE fortytwo.barObject ← NEW[TRUE fortytwo.barObject]; v.a ← SunRPC.GetInt32[h]; res ← v; }; FALSE => { v: REF FALSE fortytwo.barObject ← NEW[FALSE fortytwo.barObject]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; [] ← SunRPC.GetByte[h]; v.b ← SunRPC.GetByte[h]; res ← v; }; ENDCASE => NULL; }; Putbar: PUBLIC PROC[h: Handle, in: fortytwo.bar] = { SunRPC.PutInt32[h, ORD[in.desc]]; SELECT in.desc FROM TRUE => { v: REF TRUE fortytwo.barObject ← NARROW[in]; SunRPC.PutInt32[h, v.a]; }; FALSE => { v: REF FALSE fortytwo.barObject ← NARROW[in]; SunRPC.PutInt32[h, v.b]; }; ENDCASE => NULL; }; GetTestNamesArray: PUBLIC PROC[h: Handle] RETURNS [res: fortytwo.TestNamesArray] = { res ← VAL[SunRPC.GetInt32[h]]; }; PutTestNamesArray: PUBLIC PROC[h: Handle, in: fortytwo.TestNamesArray] = { SunRPC.PutInt32[h, ORD[in]]; }; END.