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

DIRECTORY
  Rope,
  Arpa,
  fortyone,
  fourtwo,
  SunRPCAuth,
  SunRPC;

fortytwo: CEDAR DEFINITIONS =
BEGIN

ROPE: TYPE = Rope.ROPE;


QuestionType: TYPE = MACHINE DEPENDENT {
	boring(123),
	cosmic(456),
	universal(457),
	stupid(789),
	silly(790)
	};

Question1Type: TYPE = MACHINE DEPENDENT {
	boooring(0),
	cooosmic(1),
	univeeersal(2),
	stuuupid(3),
	sillly(4)
	};

Question1TypeNames: READONLY ARRAY Question1Type OF ROPE;

answerRecType: TYPE = fourtwo.answerRec;

TheANSWER: TYPE = REF TheANSWERObject;
TheANSWERObject: TYPE = RECORD [
	union: SELECT truthType: QuestionType FROM
	  boring => [b: PACKED ARRAY [0..13) OF BYTE],
	  cosmic => [c: INT32],
	  stupid => [],
	  silly, universal => [d: REF fourtwo.answerRec],
	  ENDCASE];

YetAnotherAnswer: TYPE = REF YetAnotherAnswerObject;
YetAnotherAnswerObject: TYPE = RECORD [
	responseType: INT32,
	union: SELECT uTag: * FROM
	  v0 => [answer: QuestionType],
	  v1 => [a: INT32],
	  default => [],
	  ENDCASE];

trueAnswerRec: TYPE = RECORD [
 tellingTheTruth: BOOLEAN,
 theTruth: PACKED ARRAY [0..fortyone.TRUTHSIZE) OF INT32,
 theTRUTH: TheANSWER
	];

trueQuestionRec: TYPE = RECORD [
 questionType: QuestionType,
 randomNumbers: SeqType0
	];

SeqType0: TYPE = REF SeqType0Object;
SeqType0Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF INT32];

QuestionRec: TYPE = trueQuestionRec;

AnswerRec: TYPE = trueAnswerRec;

QuestionRecPtr: TYPE = REF QuestionRec;

QuestionRecArray: TYPE = SeqType1;

SeqType1: TYPE = REF SeqType1Object;
SeqType1Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF QuestionRec];

QuestionRecArray1: TYPE = PACKED ARRAY [0..13) OF QuestionRec;

tuple: TYPE = RECORD [
 x: INT32,
 y: INT32
	];

randomTypes: TYPE = RECORD [
 a: REAL,
 b: DREAL,
 c: BYTE,
 d: INT16,
 e: INT32,
 f: INT32,
 g: BYTE,
 h: CARD16,
 i: CARD32,
 j: CARD32,
 k: SeqType2,
 l: PACKED ARRAY [0..3) OF BYTE,
 m: SeqType3
	];

SeqType3: TYPE = REF SeqType3Object;
SeqType3Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF BYTE];

SeqType2: TYPE = REF SeqType2Object;
SeqType2Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF tuple];

FooBar: TYPE = INT32;

foo: TYPE = REF fooObject;
fooObject: TYPE = RECORD [
	desc: CARD32,
	union: SELECT uTag: * FROM
	  v1 => [a: CARD32],
	  v2 => [b: SeqType4],
	  v3 => [c: PACKED ARRAY [0..42) OF BYTE],
	  v4 => [d: SeqType5],
	  default => [e: BYTE],
	  ENDCASE];

SeqType5: TYPE = REF SeqType5Object;
SeqType5Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF CARD32];

SeqType4: TYPE = REF SeqType4Object;
SeqType4Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF CARD32];

barr: TYPE = RECORD [
 a: CARD16,
 b: SeqType6,
 c: PACKED ARRAY [0..13) OF BYTE,
 d: REF CARD32
	];

SeqType6: TYPE = REF SeqType6Object;
SeqType6Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF CARD32];

ULONG: TYPE = CARD32;

foobar: TYPE = SeqType7;

SeqType7: TYPE = REF SeqType7Object;
SeqType7Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF CARD32];

foobaz: TYPE = PACKED ARRAY [0..137) OF BYTE;

foobarrr: TYPE = REF CARD32;

bar: TYPE = REF barObject;
barObject: TYPE = RECORD [
	union: SELECT desc: BOOLEAN FROM
	  TRUE => [a: INT32],
	  FALSE => [b: BYTE],
	  ENDCASE];

TestNamesArray: TYPE = MACHINE DEPENDENT {
	a(1),
	b(2)
	};

FORTYTWOPROG: CARDINAL = 20000000H;

FORTYTWOVERS1: CARDINAL = 1;

getanswerProc: TYPE = PROC[o: FORTYTWOPROG1,
                theQuestion: ROPE,
                aRandomNumber: CARD16,
                anotherQuestion: REF TEXT]
		RETURNS [res: fourtwo.answerRec];
gettrueanswerProc: TYPE = PROC[o: FORTYTWOPROG1,
                questionType: QuestionType,
                randomNumbers: SeqType0]
		RETURNS [res: trueAnswerRec];
getbogusanswerProc: TYPE = PROC[o: FORTYTWOPROG1]
		RETURNS [res: INT32];
dontanswerProc: TYPE = PROC[o: FORTYTWOPROG1, in: INT32];

FORTYTWOPROG1: TYPE =  REF FORTYTWOPROG1Object;
FORTYTWOPROG1Object: TYPE = RECORD [
  getanswer: getanswerProc,
  gettrueanswer: gettrueanswerProc,
  getbogusanswer: getbogusanswerProc,
  dontanswer: dontanswerProc,
  rpcHandle: SunRPC.Handle ← NIL,
  rpcConversation: SunRPCAuth.Conversation ← NIL,
  data: REF ANY ← NIL
  ];

MakeFORTYTWOPROG1Client: PROC[h: SunRPC.Handle,
	c: SunRPCAuth.Conversation] RETURNS [FORTYTWOPROG1];
MakeFORTYTWOPROG1Server: PROC[
  data: REF,
  getanswer: getanswerProc,
  gettrueanswer: gettrueanswerProc,
  getbogusanswer: getbogusanswerProc,
  dontanswer: dontanswerProc
  ] RETURNS [SunRPC.Server];


FORTYTWOVERS2: CARDINAL = 2;

gettheanswerProc: TYPE = PROC[o: FORTYTWOPROG2,
                questionType: QuestionType,
                randomNumbers: SeqType0]
		RETURNS [res: AnswerRec];

FORTYTWOPROG2: TYPE =  REF FORTYTWOPROG2Object;
FORTYTWOPROG2Object: TYPE = RECORD [
  gettheanswer: gettheanswerProc,
  rpcHandle: SunRPC.Handle ← NIL,
  rpcConversation: SunRPCAuth.Conversation ← NIL,
  data: REF ANY ← NIL
  ];

MakeFORTYTWOPROG2Client: PROC[h: SunRPC.Handle,
	c: SunRPCAuth.Conversation] RETURNS [FORTYTWOPROG2];
MakeFORTYTWOPROG2Server: PROC[
  data: REF,
  gettheanswer: gettheanswerProc
  ] RETURNS [SunRPC.Server];


TESTTYPESPROG: CARDINAL = 40400001;

TESTTYPES3: CARDINAL = 3;

dotestProc: TYPE = PROC[o: TESTTYPESPROG3,
                a: REAL,
                b: DREAL,
                c: BYTE,
                d: INT16,
                e: INT32,
                f: INT32,
                g: BYTE,
                h: CARD16,
                i: CARD32,
                j: CARD32,
                k: SeqType2,
                l: PACKED ARRAY [0..3) OF BYTE,
                m: SeqType3]
		RETURNS [res: randomTypes];

TESTTYPESPROG3: TYPE =  REF TESTTYPESPROG3Object;
TESTTYPESPROG3Object: TYPE = RECORD [
  dotest: dotestProc,
  rpcHandle: SunRPC.Handle ← NIL,
  rpcConversation: SunRPCAuth.Conversation ← NIL,
  data: REF ANY ← NIL
  ];

MakeTESTTYPESPROG3Client: PROC[h: SunRPC.Handle,
	c: SunRPCAuth.Conversation] RETURNS [TESTTYPESPROG3];
MakeTESTTYPESPROG3Server: PROC[
  data: REF,
  dotest: dotestProc
  ] RETURNS [SunRPC.Server];


END.