/* methodcmd.swg : Tcl method invocation */

static int Tcl@CLASS@MethodCmd(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) {
    int (*cmd)(ClientData, Tcl_Interp *, int, char **) = 0;
    char temp[256], *oldarg;
    int rcode;
    int length;
    char c;

    if (argc < 2) {
        Tcl_SetResult(interp,"@CLASS@ methods : { @METHODLIST@ }",TCL_STATIC);
        return TCL_ERROR;
    }
    c = argv[1][0];
    length = strlen(argv[1]);
    SWIG_MakePtr(temp,(void *) clientData, "@CLASSMANGLE@");
    if (0);
    @METHODS@
    else if ((c == 'c') && (strncmp(argv[1],"configure",length) == 0) && (length >= 2)) {
      int i = 2;
      cmd = 0;
      while (i+1 < argc) {
	@CONFIGMETHODS@
	   if (cmd) {
	     oldarg = argv[i];
	     argv[i] = &temp[0];
	     rcode = (*cmd)(clientData,interp,3,&argv[i-1]);
	     argv[i] = oldarg;
	     if (rcode == TCL_ERROR) return rcode;
	     cmd = 0;
	   } else {
	     Tcl_SetResult(interp,"Invalid configure option. Must be { @CONFIGLIST@ }",TCL_STATIC);
	     return TCL_ERROR;
	   }
	i+=2;
      }
      if ((i < argc) || (i == 2)) {
	Tcl_SetResult(interp,"{ @CONFIGLIST@ }",TCL_STATIC);
	return TCL_ERROR;
      }
      return TCL_OK;
    } else if ((c == 'c') && (strncmp(argv[1],"cget",length) == 0) && (length >= 2)) {
            if (argc == 3) {
	      if (0) {}
	      @CGETMETHODS@
		 else if (strcmp(argv[2],"-this") == 0) {
                   SWIG_MakePtr(interp->result,(void *) clientData, "@CLASSMANGLE@");
                   return TCL_OK;
		 }
	      if (cmd) {
		oldarg = argv[2];
		argv[2] = &temp[0];
		rcode = (*cmd)(clientData,interp,argc-1,&argv[1]);
		argv[2] = oldarg;
		return rcode;
	      } else {
		Tcl_SetResult(interp,"Invalid cget option. Must be { -this @CGETLIST@ }",TCL_STATIC);
		return TCL_ERROR;
	      }
	    } else {
	      Tcl_SetResult(interp,"{ -this @CGETLIST@ }", TCL_STATIC);
	      return TCL_ERROR;
	    }
    }
    if (!cmd) {
        Tcl_SetResult(interp,"Invalid Method. Must be { @METHODLIST@}",TCL_STATIC);
        return TCL_ERROR;
    }
    oldarg = argv[1];
    argv[1] = &temp[0];
    rcode = (*cmd)(clientData,interp,argc,argv);
    argv[1] = oldarg;
    return rcode;
}