/* * Mktclapp support defs * taken from: * (find-fline "~/MTA/vtutilsh.c") * */ #include "mktclapp.h" #define ET_ERRORF(listargs) ({Et_ResultF listargs; return TCL_ERROR;}) #define ET_ERROR(str) ET_ERRORF((interp,str)) #define ET_ERROR1(str,a) ET_ERRORF((interp,str,a)) #define ET_ERROR2(str,a,b) ET_ERRORF((interp,str,a,b)) #define ET_ERROR3(str,a,b,c) ET_ERRORF((interp,str,a,b,c)) #define ET_ERROR4(str,a,b,c,d) ET_ERRORF((interp,str,a,b,c,d)) #define OARGV_STRING(n, lenptr) Tcl_GetStringFromObj(objv[n], lenptr) #define OARGV0 OARGV_STRING(0, 0) #define OARGV_INT(n) ({ \ int _tmpint; \ if (Tcl_GetIntFromObj(interp, objv[n], &_tmpint) != TCL_OK) \ ET_ERROR2("%s: arg %d not an int", OARGV0, n); \ _tmpint; \ }) #define ET_OARGSERROR(argstr) \ ET_ERROR2("wrong # args: should be \"%s %s\"", OARGV0, argstr) #define ET_ARGSERROR(argstr) \ ET_ERROR2("wrong # args: should be \"%s %s\"", argv[0], argstr) #define ET_ORETURN(data, len) \ Tcl_SetObjResult(interp, Tcl_NewStringObj(data, len))