-- HeaderContents2P0V0ClientImpl.Mesa
-- Copyright Ó 1991 by Xerox Corporation. All rights reserved.
 -- Copyright (C) 1989 by Xerox Corporation. All rights reserved.
 -- Generated by Willie-sue.pa at February 13, 1989 6:54:17 pm PST
 -- using Sirocco [2.0] of February 10, 1989 6:26:26 pm PST

DIRECTORY
 CrRPC,
 MailFormatP1516V3,
 CHNameP2V0,
 MailTransportP17V5,
 HeaderContents2P0V0;

HeaderContents2P0V0ClientImpl: CEDAR PROGRAM
 IMPORTS CrRPC
 EXPORTS HeaderContents2P0V0 ~ {
 OPEN HeaderContents2P0V0;

GetError: CrRPC.GetErrorProc ~ {
  ERROR CrRPC.Error[h, remoteError, "Unexpected Remote Error"];
  };

-- Remote Procedures --

 AttrFromExpiryDate: PUBLIC AttrFromExpiryDateType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutCard32[s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~31 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromSubject: PUBLIC AttrFromSubjectType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutRope[s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~30 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromReplyBy: PUBLIC AttrFromReplyByType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutCard32[s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~32 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromImmutable: PUBLIC AttrFromImmutableType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   NULL; -- RECORD [] --
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~37 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromImportance: PUBLIC AttrFromImportanceType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutCard16[s, ORD[value]];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~34 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromInReplyTo: PUBLIC AttrFromInReplyToType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc2[h, s, value.originator];
   CrRPC.PutRope[s, value.uniqueString];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~27 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromAutoforwarded: PUBLIC AttrFromAutoforwardedType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutBool[s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~36 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromMessageID: PUBLIC AttrFromMessageIDType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc2[h, s, value.originator];
   CrRPC.PutRope[s, value.uniqueString];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~21 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromForwardedHeadings: PUBLIC AttrFromForwardedHeadingsType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc3[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~40 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromAuthorizingUsers: PUBLIC AttrFromAuthorizingUsersType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc4[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~23 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromTextAnnotation: PUBLIC AttrFromTextAnnotationType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutRope[s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~39 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromOriginator: PUBLIC AttrFromOriginatorType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc2[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~22 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromReplyRequest: PUBLIC AttrFromReplyRequestType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc4[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~38 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromReplyToUsers: PUBLIC AttrFromReplyToUsersType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc4[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~33 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromObsoletes: PUBLIC AttrFromObsoletesType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc5[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~28 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromPrimaryRecipients: PUBLIC AttrFromPrimaryRecipientsType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc4[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~24 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromCrossReferences: PUBLIC AttrFromCrossReferencesType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc5[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~29 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromCopyRecipients: PUBLIC AttrFromCopyRecipientsType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc4[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~25 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromSensitivity: PUBLIC AttrFromSensitivityType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutCard16[s, ORD[value]];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~35 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 AttrFromBlindCopyRecipients: PUBLIC AttrFromBlindCopyRecipientsType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc4[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   attr ¬ UProc1[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~26 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

-- Unmarshal / Marshal Procs --


 MProc5: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailFormatP1516V3.IPMessageIDList] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i6: CARDINAL IN [0..val.length) DO
   MProc2[h, s, val.body[i6].originator];
   CrRPC.PutRope[s, val.body[i6].uniqueString];
   ENDLOOP;
  };

 MProc4: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailFormatP1516V3.RNameList] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i7: CARDINAL IN [0..val.length) DO
   MProc2[h, s, val.body[i7]];
   ENDLOOP;
  };

 UProc1: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: MailFormatP1516V3.Val] ~ {
  {
   length9: CARDINAL ~ CrRPC.GetCard16[s];
   res ¬ NEW[MailFormatP1516V3.ValObject[length9]];
   FOR i8: CARDINAL IN [0..length9) DO
    res.body[i8] ¬ CrRPC.GetCard16[s];
    ENDLOOP;
   };
  };

 MProc2: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.RName] ~ {
  CrRPC.PutCard16[s, ORD[val.type]];
  WITH val SELECT FROM
   it: REF MailTransportP17V5.RNameObject.xns => {
    CrRPC.PutRope[s, it­.xns.organization];
    CrRPC.PutRope[s, it­.xns.domain];
    CrRPC.PutRope[s, it­.xns.object];
    };
   it: REF MailTransportP17V5.RNameObject.gateway => {
    CrRPC.PutRope[s, it­.gateway.country];
    CrRPC.PutRope[s, it­.gateway.adminDomain];
    CrRPC.PutRope[s, it­.gateway.privateDomain];
    CrRPC.PutRope[s, it­.gateway.organization];
    MProc11[h, s, it­.gateway.organizationalUnits];
    MProc12[h, s, it­.gateway.personal];
    MProc13[h, s, it­.gateway.gatewaySpecificInformation];
    };
   ENDCASE;
  };

 MProc12: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.PerChoice] ~ {
  CrRPC.PutCard16[s, ORD[val.type]];
  WITH val SELECT FROM
   it: REF MailTransportP17V5.PerChoiceObject.whole => {
    CrRPC.PutRope[s, it­.whole];
    };
   it: REF MailTransportP17V5.PerChoiceObject.broken => {
    CrRPC.PutRope[s, it­.broken.given];
    CrRPC.PutRope[s, it­.broken.initials];
    CrRPC.PutRope[s, it­.broken.family];
    CrRPC.PutRope[s, it­.broken.generation];
    };
   ENDCASE;
  };

 MProc3: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailFormatP1516V3.ForwardedHeadings] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i15: CARDINAL IN [0..val.length) DO
   MProc16[h, s, val.body[i15].envelope];
   MProc17[h, s, val.body[i15].heading];
   MProc18[h, s, val.body[i15].associatedBodyParts];
   MProc19[h, s, val.body[i15].indexOfParentHeading];
   ENDLOOP;
  };

 MProc19: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailFormatP1516V3.IndexOfParentHeading] ~ {
  CrRPC.PutCard16[s, ORD[val.type]];
  WITH val SELECT FROM
   it: REF MailFormatP1516V3.IndexOfParentHeadingObject.null => {
    NULL; -- RECORD [] --
    };
   it: REF MailFormatP1516V3.IndexOfParentHeadingObject.nested => {
    CrRPC.PutCard16[s, it­.nested.index];
    };
   ENDCASE;
  };

 MProc11: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.OrgUnits] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i21: CARDINAL IN [0..val.length) DO
   CrRPC.PutRope[s, val.body[i21]];
   ENDLOOP;
  };

 MProc18: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailFormatP1516V3.assocBP] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i22: CARDINAL IN [0..val.length) DO
   CrRPC.PutCard16[s, val.body[i22]];
   ENDLOOP;
  };

 MProc17: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailFormatP1516V3.HeadingAtt] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i23: CARDINAL IN [0..val.length) DO
   CrRPC.PutCard32[s, val.body[i23].type];
   MProc24[h, s, val.body[i23].value];
   ENDLOOP;
  };

 MProc13: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.GatewaySpecInfo] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i25: CARDINAL IN [0..val.length) DO
   CrRPC.PutRope[s, val.body[i25].type];
   CrRPC.PutRope[s, val.body[i25].value];
   ENDLOOP;
  };

 MProc24: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailFormatP1516V3.Val] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i26: CARDINAL IN [0..val.length) DO
   CrRPC.PutCard16[s, val.body[i26]];
   ENDLOOP;
  };

 MProc16: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailFormatP1516V3.EnvelopeAtt] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i27: CARDINAL IN [0..val.length) DO
   CrRPC.PutCard32[s, val.body[i27].type];
   MProc28[h, s, val.body[i27].value];
   ENDLOOP;
  };

 MProc28: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.Opaque] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i29: CARDINAL IN [0..val.length) DO
   CrRPC.PutCard16[s, val.body[i29]];
   ENDLOOP;
  };

}...