49 long offset,
long rpcval, ...);
88#define ARG_MARSHALL(mode, type, name, object, howmany) \
89 type *name##_ptrs[howmany] __attribute__((unused)); \
90 type name##_bufs[howmany]; \
92 memset(&name##_bufs, 0, sizeof(type) * howmany); \
93 for (unsigned int name##_local_i = 0; name##_local_i < howmany; \
95 name##_ptrs[name##_local_i] = &name##_bufs[name##_local_i]; \
96 if (mode == IN_OUT_MODE) \
97 name##_bufs[name##_local_i] = (object); \
101#define ARG_MARSHALL_BS(mode, type, name, object, howmany, maxbslen) \
102 type *name##_ptrs[howmany]; \
103 type name##_bufs[howmany]; \
104 char name##_data[maxbslen * howmany]; \
106 for (unsigned int name##_local_i = 0; name##_local_i < howmany; \
107 name##_local_i++) { \
108 name##_ptrs[name##_local_i] = &name##_bufs[name##_local_i]; \
109 if (mode == OUT_MODE) \
110 (object).SeqLen = 0; \
111 name##_bufs[name##_local_i] = (object); \
112 name##_bufs[name##_local_i].SeqBody = \
113 (RPC2_ByteSeq) & name##_data[name##_local_i * maxbslen]; \
114 if ((object).SeqLen > 0) \
115 memcpy(name##_bufs[name##_local_i].SeqBody, (object).SeqBody, \
116 (int)(object).SeqLen); \
120#define ARG_MARSHALL_ARRAY(mode, type, name, numelts, maxelts, object, \
122 type *name##_ptrs[howmany]; \
123 type name##_bufs[howmany][maxelts]; \
125 for (unsigned int name##_local_i = 0; name##_local_i < howmany; \
126 name##_local_i++) { \
127 name##_ptrs[name##_local_i] = name##_bufs[name##_local_i]; \
128 if (mode == IN_OUT_MODE) { \
129 for (unsigned int name##_local_j = 0; \
130 name##_local_j < numelts; name##_local_j++) \
131 name##_bufs[name##_local_i][name##_local_j] = \
132 (object)[name##_local_j]; \
137#define ARG_UNMARSHALL(name, object, ix) (object) = name##_bufs[ix];
139#define ARG_UNMARSHALL_BS(name, object, ix) \
141 RPC2_Integer seqlen = name##_bufs[ix].SeqLen; \
142 (object).SeqLen = seqlen; \
144 memcpy((object).SeqBody, name##_bufs[ix].SeqBody, (int)seqlen); \
147#define ARG_UNMARSHALL_ARRAY(name, numelts, object, ix) \
149 for (unsigned int name##_local_i = 0; name##_local_i < (numelts); \
151 (object)[name##_local_i] = name##_bufs[ix][name##_local_i]; \
long RPC2_HandleResult_func(int HowMany, RPC2_Handle ConnList[], long offset, long rpcval,...)
Definition: multi.h:48
RPC2_Byte RPC2_EncryptionKey[RPC2_KEYSIZE]
Definition: rpc2.h:336
int32_t RPC2_Integer
Definition: rpc2.h:297
uint32_t RPC2_Unsigned
Definition: rpc2.h:300
RPC2_Integer RPC2_Handle
Definition: rpc2.h:345
RPC2_ByteSeq RPC2_String
Definition: rpc2.h:312
uint8_t RPC2_Byte
Definition: rpc2.h:302
ARG * ArgTypes
Definition: multi.h:77
int ArgCount
Definition: multi.h:80
RPC2_HandleResult_func * HandleResult
Definition: multi.h:79
PARM * Args
Definition: multi.h:78
RPC2_BoundedBS ** bbsp
Definition: multi.h:66
RPC2_CountedBS ** cbsp
Definition: multi.h:64
RPC2_Byte byte
Definition: multi.h:59
RPC2_Unsigned unsgned
Definition: multi.h:57
RPC2_String string
Definition: multi.h:61
RPC2_EncryptionKey ** keyp
Definition: multi.h:68
RPC2_CountedBS * cbs
Definition: multi.h:63
RPC2_Integer ** integerp
Definition: multi.h:56
RPC2_BoundedBS * bbs
Definition: multi.h:65
RPC2_Handle * cidp
Definition: multi.h:69
union PARM ** structpp
Definition: multi.h:72
SE_Descriptor * sedp
Definition: multi.h:70
RPC2_Integer integer
Definition: multi.h:55
RPC2_String ** stringp
Definition: multi.h:62
RPC2_EncryptionKey * key
Definition: multi.h:67
RPC2_Unsigned ** unsgnedp
Definition: multi.h:58
union PARM * structp
Definition: multi.h:71
RPC2_Byte ** bytep
Definition: multi.h:60