14 #define MkBufferListCreateTLS(name,num) \
15 static MkThreadLocal struct MkBufferListS __##name = {0}; \
16 MK_BFL name = &__##name; \
17 if (likely(__MqBflCheck(__##name))) { \
18 MkBufferListReserve(name,num); \
20 MkBufferListInit(name,num); \
42#define HighErrorV(cls,fmt,args...) \
43 MkErrorSetV_3M(obj, cls, fmt, args)
45#define HighErrorC(cls,fmt) \
46 MkErrorSetV_3M(obj, cls, "%s", fmt)
48#define highRETURN_type_S \
49 if (MkBufferListSizeI(RET) == 0 && highLastReturnListType != '*') { \
51 } else if (MkBufferListSizeI(RET) == 1 && highLastReturnListType != '*' ) { \
52 switch (highLastReturnListType) { \
53 case 'U': OT_retObj_SET_BUF(RET->data[0]); break; \
66 case 'L': OT_MK_CALL_0(RET->data[0],MkBufferC,GetBFL,retObj); break; \
67 default : OT_MK_CALL_0(RET->data[0],MkBufferC,ToObject,retObj); break; \
70 OT_retObj_SET_BFL(RET); \
87#define high_C_BOL OT_TMP_BOL_OBJ
88#define high_C_I8 OT_TMP_I8_OBJ
89#define high_C_I16 OT_TMP_I16_OBJ
90#define high_C_I32 OT_TMP_I32_OBJ
91#define high_C_I64 OT_TMP_I64_OBJ
92#define high_C_H OT_TMP_HDL_OBJ
93#define high_C_FLT OT_TMP_FLT_OBJ
94#define high_C_DBL OT_TMP_DBL_OBJ
95#define high_C_STR OT_TMP_CST_OBJ
96#define high_C_BIN OT_TMP_BIN_OBJ
97#define high_C_BUF OT_TMP_BUF_OBJ
98#define high_C_BFL OT_TMP_BFL_OBJ
99#define high_C_A OT_TMP_BAC_OBJ
101#define high_T_BOL MK_BOL
102#define high_T_I8 MK_I8
103#define high_T_I16 MK_I16
104#define high_T_I32 MK_I32
105#define high_T_I64 MK_I64
106#define high_T_HDL MK_HDL
107#define high_T_FLT MK_FLT
108#define high_T_DBL MK_DBL
109#define high_T_STR MK_STRN
110#if !defined(high_T_BIN)
111 #define high_T_BIN MK_BIN
113#if !defined(high_T_BUF)
114 #define high_T_BUF MK_BUF
116#if !defined(high_T_BFL)
117 #define high_T_BFL MK_BFL
119#if !defined(high_T_A)
120 #define high_T_A MK_BAC
123 #define MqReadA MqReadALL
139#if highSIZE_AVAILABLE==0
140#if !defined(highSIZE)
141 # define highSIZE highSKIP+1
145#if highREAD_RETURN_LIST==1
146 __attribute__((unused))
MK_STRB highLastReturnListType =
'\0';
149 #define MkBufferListReserve_RT(...)
151 #undef MkBufferListReserve_RT
154#if defined(compile_as_cc_method)
181#if highSIZE_AVAILABLE
183 HighErrorV(
"ArgumentListSizeError",
"require %d have %d for item '%c'",
191 HighErrorC(
"SubError",
"expect a FUNCTION pointer, but got 'NULL'");
197 HighErrorC(
"CallbackError",
"expect a FUNCTION pointer, but got 'NULL'");
203 if (strlen(
srvSig) != 4) {
204 HighErrorC(
"TokenError",
"expect a '4' character string as a TRANSACTION-identifier");
210 case 'r':
rpc = true ;
234 size_t const toklen = strlen(
tokSig);
237 size_t tlen = end ? (size_t) (end-
ptr) : toklen;
250 HighErrorV(
"TokenError",
"expect token as string of size 4 or as hex-string of size 8 but got '%s'",
tokSig);
254 if (*
ptr !=
'\0' && *
ptr !=
'@') {
255 if (*
ptr !=
':' && *
ptr !=
'\0') {
256 HighErrorV(
"TokenError",
"expect ':' character but got '%c' character", *
ptr);
271 HighErrorC(
"SendError",
"missing opening '[' to closing ']'");
290 }
else if (
Tstart ==
false) {
291 HighErrorV(
"SendError",
"missing opening '(' to closing ')' for CALL-signature '%s'",
callSig);
300#if highSIZE_AVAILABLE==1
302 HighErrorV(
"ArgumentListSizeError",
"require %d have %d for item '%c'",
325# error "'wordsize' cannot be recognized because 'NHI1_bits' is not set. probably missing the header 'nhi1_config.h' ?"
329 HighErrorV(
"SendError",
"invalid character '%c' found", *
ptr);
341#if highSIZE_AVAILABLE==1
371#if highREAD_RETURN_LIST==1
378#if highREAD_RETURN_LIST==0
379 HighErrorV(
"ArgumentListSizeError",
"require %d have %d - missing argument for item '%c'",
384 HighErrorV(
"PackageSizeError",
"missing package-item(s) for format-string '%s'",
ptr);
388 highLastReturnListType = *
ptr;
391 case 'Y': target=
MK_I8T;
goto native;
392 case 'O': target=
MK_BOLT;
goto native;
393 case 'S': target=
MK_I16T;
goto native;
394 case 'I': target=
MK_I32T;
goto native;
395 case 'F': target=
MK_FLTT;
goto native;
396 case 'W': target=
MK_I64T;
goto native;
397 case 'D': target=
MK_DBLT;
goto native;
399 case 'G': target=
MK_I64T;
goto native;
401 case 'G': target=
MK_I32T;
goto native;
403 case 'H': target=
MK_HDLT;
goto native;
410 }
else if (buf->
var.
type != target) {
445 HighErrorV(
"ReadError",
"special character '%c' not supported for RETURN-LIST type", *
ptr);
449 HighErrorV(
"ReadError",
"invalid character '%c' found", *
ptr);
456#if highREAD_HAS_REFERENCE==1
475 HighErrorV(
"ReadError",
"invalid character '%c' found", *
ptr);
483#if highSIZE_AVAILABLE==1
486 "found more arguments '%d' as required '%d' at %s-signature '%s'",
495#if defined(compile_as_cc_method)
498}
catch (
const std::exception& e) {
510 if ((
int)(
ptr-cstr) == (
int)strlen(cstr))
512 else if (*
ptr !=
'@')
513 MkErrorAppendV_2M(
obj,
" -> found on CHARACTER '%c' at POSITION '" MK_FORMAT_Z
"' of %s-SIGNATURE '%s'",
516#if defined(compile_as_cc_method)
#define MkBufferGetType1(...)
#define MkBufferTemp(...)
#define MkBufferCastTo_E(...)
#define MkBufferSetV(...)
#define MkBufferListAppendBUF(...)
#define MkBufferListReserve(...)
#define MkBufferListCreateTLS_T(name, num)
#define MkErrorStack_4M(m,...)
#define MkErrorAppendV_2M(m,...)
#define MkErrorSetV_4M(m,...)
MK_STRN MkSysHashSTR(MK_STRN key, MK_NUM length)
#define MQ_SEND_TOKEN_SIGNATURE_SIZE
#define MQ_SEND_TRANSACTION_TOKEN_SIZE
#define MqReadT_START(...)
#define MqReadL_START(...)
MK_NUM MqReadGetNumItems(MQ_CTX const ctx)
get the number of items left in the read-data-package …
#define MqSendEND_AND_TRANSACTION(...)
#define MqSendEND_AND_CALLBACK(...)
#define MqSendEND_AND_SUB(...)
#define MqSendEND_AND_WAIT(...)
#define MqSendL_START(...)
#define MqSendT_START(...)
#define MqSendRETURN(...)
#define HighErrorV(cls, fmt, args...)
#define HighErrorC(cls, fmt)
MK_STRB srvSig[MQ_SEND_TRANSACTION_TOKEN_SIZE+1]
MkErrorCheck(MqSendSTART(mqctx))
MqCallE
select the MqSendEND... style
@ MQ_CB
MqSendEND_AND_CALLBACK
@ MQ_SUB
MqSendEND_AND_SUB
@ MQ_TRAN
MqSendEND_AND_TRANSACTION
@ MQ_WAIT
MqSendEND_AND_WAIT
MK_STRB tokSig[MQ_SEND_TOKEN_SIGNATURE_SIZE+1]