Annotation of 43BSDTahoe/new/xns/xnslib/courier.h.org, revision 1.1.1.1

1.1       root        1: /* $Header: courier.h,v 3.2 87/05/11 09:27:36 ed Exp $ */
                      2: /*
                      3:  $Log: courier.h,v $
                      4:  * Revision 3.2  87/05/11  09:27:36  ed
                      5:  * Added MAX_SEQUENCE_LENGTH.
                      6:  * 
                      7:  * Revision 3.1  87/03/17  09:30:33  ed
                      8:  * changes from webster: Sequence_of_Unspecified, mc68xxx conditionals
                      9:  * 
                     10:  * Revision 3.1  87/03/17  09:30:33  ed
                     11:  * Added conditions for mc68000 family
                     12:  * 
                     13:  * Revision 3.0  87/01/14  14:40:39  ed
                     14:  * release containing Xerox (Webster Research Center) modifications
                     15:  * 
                     16:  * Revision 2.0  85/11/21  07:22:05  jqj
                     17:  * 4.3BSD standard release
                     18:  * 
                     19:  * Revision 1.3  85/10/23  16:43:30  root
                     20:  * Probably correct versions of basic conversion operators for the Gould.
                     21:  * 
                     22:  * Revision 1.2  85/10/21  12:49:15  root
                     23:  * Gould version:  definitions for MoveLong, etc. (the MoveLong routine is in misc.c)
                     24:  * 
                     25:  * Revision 1.2  85/10/17  16:46:55  jqj
                     26:  * first Gould version: definitions for MoveLong etc.
                     27:  * 
                     28:  * Revision 1.5  85/05/23  06:18:06  jqj
                     29:  * Public Beta-test version, released 24 May 1985
                     30:  * 
                     31:  * Revision 1.3  85/03/11  16:36:54  jqj
                     32:  * Public alpha-test version, released 11 March 1985
                     33:  * 
                     34:  * Revision 1.2  85/01/27  07:37:18  jqj
                     35:  * finished but undebugged version
                     36:  * 
                     37:  */
                     38: 
                     39: #ifndef COURIERVERSION
                     40: /*
                     41:  * the version of Courier we support
                     42:  */
                     43: #define COURIERVERSION 3
                     44: 
                     45: /*
                     46:  * Predefined Courier types.
                     47:  */
                     48: typedef char           Boolean;
                     49: typedef unsigned short Cardinal;
                     50: typedef unsigned long  LongCardinal;
                     51: typedef short          Integer;
                     52: typedef long           LongInteger;
                     53: typedef char           *String;
                     54: typedef unsigned short Unspecified;
                     55: typedef unsigned long  LongUnspecified;
                     56: typedef int            NilRecord;
                     57: 
                     58: 
                     59: /*
                     60:  * Low-level byte moving, with byte-swapping.
                     61:  * Use these definitions for VAX and other low-enders.
                     62:  */
                     63: #if vax
                     64: #define externalize_Boolean(p, buf)    (*(short*)(buf) = *((char*)(p))<<8, 1)
                     65: #define internalize_Boolean(p, buf)    (*(char*)(p) = *((char*)(buf)+1), 1)
                     66: #define MoveShort(a, b)        (*(char*)(b) = *((char*)(a)+1),\
                     67:                         *((char*)(b)+1) = *(char*)(a),1)
                     68: #define MoveLong(a, b) (*(char*)(b) = *((char*)(a)+3),\
                     69:                         *((char*)(b)+1) = *((char*)(a)+2),\
                     70:                         *((char*)(b)+2) = *((char*)(a)+1),\
                     71:                         *((char*)(b)+3) = *(char*)(a), 2)
                     72: #endif
                     73: 
                     74: /*
                     75:  * Low-level byte moving, without byte-swapping.
                     76:  * Use these definitions for SUN and other high-enders.
                     77:  */
                     78: #if sun || mc68000 || mc68010 || mc68020
                     79: #define externalize_Boolean(p, buf)  (*(Unspecified*)(buf) = 1&*(char*)(p), 1)
                     80: #define internalize_Boolean(p, buf)  (*(char*)(p) = 1&*(Unspecified*)(buf), 1)
                     81: #define MoveShort(a, b)        (*(short *)(b) = *(short *)(a),1)
                     82: #define MoveLong(a, b) (*(long *)(b) = *(long *)(a),2)
                     83: #endif
                     84: 
                     85: /*
                     86:  * Low-level byte moving, without byte-swapping.
                     87:  * Use these definitions for sel and other high-enders that require
                     88:  * longword alignment.
                     89:  */
                     90: #if sel
                     91: #define externalize_Boolean(p, buf)  (*(Unspecified*)(buf) = 1&*(char*)(p), 1)
                     92: #define internalize_Boolean(p, buf)  (*(p) = 1&*(Unspecified*)(buf), 1)
                     93: #define MoveShort(a, b)        (*(short *)(b) = *(short *)(a),1)
                     94: int MoveLong();
                     95: #endif
                     96: 
                     97: /*
                     98:  * sizeof_Foo(p) is a function that returns the externalized size of
                     99:  * the variable specified as argument (assumed to be of type Foo).
                    100:  * clear_Foo(p) is a function that deallocates any components of Foo.
                    101:  * externalize_Foo translates a variable from C form to external
                    102:  * serialized form.
                    103:  * internalize_Foo translates a variable from external serializedform 
                    104:  * to internal C form
                    105:  */
                    106: #define sizeof_NilRecord(p)            0
                    107: #define clear_NilRecord(p)
                    108: #define externalize_NilRecord(p, buf)          0
                    109: #define internalize_NilRecord(p, buf)          0
                    110: 
                    111: #define sizeof_Boolean(p)              1
                    112: #define clear_Boolean(p)
                    113: 
                    114: #define sizeof_Cardinal(p)             1
                    115: #define clear_Cardinal(p)
                    116: #define externalize_Cardinal(p, buf)           MoveShort(p, buf)
                    117: #define internalize_Cardinal(p, buf)           MoveShort(buf, p)
                    118: 
                    119: #define sizeof_LongCardinal(p)         2
                    120: #define clear_LongCardinal(p)
                    121: #define externalize_LongCardinal(p, buf)       MoveLong(p, buf)
                    122: #define internalize_LongCardinal(p, buf)       MoveLong(buf, p)
                    123: 
                    124: #define sizeof_Integer(p)              1
                    125: #define clear_Integer(p)
                    126: #define externalize_Integer(p, buf)            MoveShort(p, buf)
                    127: #define internalize_Integer(p, buf)            MoveShort(buf, p)
                    128: 
                    129: #define sizeof_LongInteger(p)          2
                    130: #define clear_LongInteger(p)
                    131: #define externalize_LongInteger(p, buf)                MoveLong(p, buf)
                    132: #define internalize_LongInteger(p, buf)                MoveLong(buf, p)
                    133: 
                    134: #define sizeof_Unspecified(p)          1
                    135: #define clear_Unspecified(p)
                    136: #define externalize_Unspecified(p, buf)                MoveShort(p, buf)
                    137: #define internalize_Unspecified(p, buf)                MoveShort(buf, p)
                    138: 
                    139: #define sizeof_LongUnspecified(p)      2
                    140: #define clear_LongUnspecified(p)
                    141: #define externalize_LongUnspecified(p, buf)    MoveLong(p, buf)
                    142: #define internalize_LongUnspecified(p, buf)    MoveLong(buf, p)
                    143: 
                    144: 
                    145: /* 
                    146:  * SPP stream types used by Courier
                    147:  */
                    148: #define SPPSST_RPC 0
                    149: #define SPPSST_BDT 1
                    150: #define SPPSST_END 254
                    151: #define SPPSST_ENDREPLY 255
                    152: 
                    153: /*
                    154:  * the following should be in xn.h or spp.h
                    155:  */
                    156: #define IDPPORT_COURIER 5
                    157: #ifndef MAXWORDS
                    158: #define MAXWORDS 267
                    159: #endif
                    160: #ifndef SPPMAXDATA
                    161: #define SPPMAXDATA (MAXWORDS*2)
                    162: #endif
                    163: 
                    164: /*
                    165:  * For streams
                    166:  */
                    167: typedef enum {
                    168:        nextSegment = 0,
                    169:        lastSegment = 1
                    170: } StreamEnumerator;
                    171: #define sizeof_StreamEnumerator sizeof_enumeration
                    172: #define clear_StreamEnumerator clear_enumeration
                    173: #define externalize_StreamEnumerator externalize_enumeration
                    174: #define internalize_StreamEnumerator internalize_enumeration
                    175: 
                    176: 
                    177: /*
                    178:  * miscellaneous structures and values used by Courier
                    179:  * runtimes
                    180:  */
                    181: 
                    182: #define MAX_SEQUENCE_LENGTH    65535
                    183: 
                    184: typedef struct {
                    185:        Cardinal length;
                    186:        Unspecified *sequence;
                    187: } Sequence_of_Unspecified;
                    188: 
                    189: /* 
                    190:  * message types for Courier messages (should be mixed case?)
                    191:  * (should only be of interest to the runtimes)
                    192:  */
                    193: #define CALL 0
                    194: #define REJECT 1
                    195: #define RETURN 2
                    196: #define ABORT 3
                    197: 
                    198: /*
                    199:  * components of Courier error messages
                    200:  */
                    201: 
                    202: typedef struct {
                    203:        Cardinal lowest;
                    204:        Cardinal highest;
                    205: } ImplementedVersionNumbers;
                    206: 
                    207: typedef struct {
                    208:        enum {
                    209:                unspecifiedError = 65535,
                    210:                invalidArgument = 3,
                    211:                noSuchProcedureValue = 2,
                    212:                noSuchVersionNumber = 1,
                    213:                noSuchProgramNumber = 0
                    214:        } designator;
                    215:        union {
                    216:                NilRecord u_noSuchProgramNumber;
                    217: #define noSuchProgramNumber_case u.u_noSuchProgramNumber
                    218:                ImplementedVersionNumbers u_noSuchVersionNumber;
                    219: #define noSuchVersionNumber_case u.u_noSuchVersionNumber
                    220:                NilRecord u_noSuchProcedureValue;
                    221: #define noSuchProcedureValue_case u.u_noSuchProcedureValue
                    222:                NilRecord u_invalidArgument;
                    223: #define invalidArgument_case u.u_invalidArgument
                    224:                NilRecord u_unspecifiedError;
                    225: #define unspecifiedError_case u.u_unspecifiedError
                    226:        } u;
                    227: } rejectionDetails;
                    228: 
                    229: /*
                    230:  * Macro for unpacking error arguments given a typedef and a field name
                    231:  */
                    232: #define CourierErrArgs(type,field) \
                    233:        (((type *)Exception.Message)->field)
                    234: 
                    235: /*
                    236:  * miscellaneous constants
                    237:  */
                    238: 
                    239: #ifndef TRUE
                    240: #define TRUE (1)
                    241: #endif
                    242: 
                    243: #ifndef FALSE
                    244: #define FALSE (0)
                    245: #endif
                    246: 
                    247: #ifndef NULL
                    248: #define NULL ((char*) 0)
                    249: #endif
                    250: 
                    251: 
                    252: /*
                    253:  * exceptions defined in Courier
                    254:  */
                    255: 
                    256: #define REJECT_ERROR 65535
                    257: #define PROTOCOL_VIOLATION 65534
                    258: 
                    259: /* plus all user-defined ERROR values, offset by ERROR_OFFSET */
                    260: #define ERROR_OFFSET 65536
                    261: 
                    262: /*
                    263:  * External declarations.
                    264:  */
                    265: 
                    266: extern Unspecified *Allocate();
                    267: extern Unspecified *ReceiveCallMessage(), *ReceiveReturnMessage();
                    268: extern Unspecified *ReadMessage();
                    269: extern int BDTwrite(),BDTclosewrite(),BDTread();
                    270: extern int sppclose(),sppclosereply();
                    271: 
                    272: #endif COURIERVERSION

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.