wxWidgets/wxPython/wxSWIG/swig_lib/tcl/objcmd.swg

70 lines
2.2 KiB
Plaintext
Raw Normal View History

/* objcmd.swg : Tcl object creation */
static int Tcl@CLASS@Cmd(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) {
void (*del)(ClientData) = 0;
char *name = 0;
int (*cmd)(ClientData, Tcl_Interp *, int, char **) = 0;
@CLASSTYPE@ newObj = 0;
int firstarg = 0;
int thisarg = 0;
if (argc == 1) {
cmd = @TCLCONSTRUCTOR@;
} else {
if (strcmp(argv[1],"-this") == 0) thisarg = 2;
else if (strcmp(argv[1],"-args") == 0) {
firstarg = 1;
cmd = @TCLCONSTRUCTOR@;
} else if (argc == 2) {
firstarg = 1;
name = argv[1];
cmd = @TCLCONSTRUCTOR@;
} else if (argc >= 3) {
name = argv[1];
if (strcmp(argv[2],"-this") == 0) thisarg = 3;
else {
firstarg = 1;
cmd = @TCLCONSTRUCTOR@;
}
}
}
if (cmd) {
int result;
result = (*cmd)(clientData,interp,argc-firstarg,&argv[firstarg]);
if (result == TCL_OK) {
SWIG_GetPtr(interp->result,(void **) &newObj,"@CLASSMANGLE@");
} else { return result; }
if (!name) name = interp->result;
del = @TCLDESTRUCTOR@;
} else if (thisarg > 0) {
if (thisarg < argc) {
char *r;
r = SWIG_GetPtr(argv[thisarg],(void **) &newObj,"@CLASSMANGLE@");
if (r) {
interp->result = "Type error. not a @CLASS@ object.";
return TCL_ERROR;
}
if (!name) name = argv[thisarg];
/* Return value is same as pointer value */
Tcl_SetResult(interp,argv[thisarg],TCL_VOLATILE);
} else {
interp->result = "wrong # args.";
return TCL_ERROR;
}
} else {
interp->result = "No constructor available.";
return TCL_ERROR;
}
{
Tcl_CmdInfo dummy;
if (!Tcl_GetCommandInfo(interp,name,&dummy)) {
Tcl_CreateCommand(interp,name, Tcl@CLASS@MethodCmd, (ClientData) newObj, del);
return TCL_OK;
} else {
Tcl_SetResult(interp,"",TCL_VOLATILE);
Tcl_AppendResult(interp,"Object ", name, " already exists!", (char *) NULL);
return TCL_ERROR;
}
}
}