do { \
if (c+start > RL_num) { \
Tcl_SetObjResult(interp,Tcl_ObjPrintf( \
"[%s:%d] error: overflow in 'RL_args', get '%d' items but only space for '%d' items is available", \
__func__, __LINE__, c, RL_num-start) \
); \
Tcl_SetErrorCode(interp, "MYOOX", "EVAL", "OVERFLOW", NULL); \
return TCL_ERROR; \
} \
for (
int i=0,j=start; i<c; i++, j++)
RL_ref(j,v[i]); \
RL_num=(start)+(c); \
} while(0)
#define RL_ref(num, code)
45#define RL_args(start,_c,_v) do { \
46 int c = _c; const MOX_OBJ_T * v = _v ; \
47 if (c+start > RL_num) { \
48 Tcl_SetObjResult(interp,Tcl_ObjPrintf( \
49 "[%s:%d] error: overflow in 'RL_args', get '%d' items but only space for '%d' items is available", \
50 __func__, __LINE__, c, RL_num-start) \
51 ); \
52 Tcl_SetErrorCode(interp, "MYOOX", "EVAL", "OVERFLOW", NULL); \
53 return TCL_ERROR; \
54 } \
55 for (int i=0,j=start; i<c; i++, j++) RL_ref(j,v[i]); \
56 RL_num=(start)+(c); \
57} while(0)