static int backupTestCmd( ClientData clientData, Tcl_Interp interp, int objc, Tcl_Obj[] objv ) { BackupSubCommand[] aSub = new BackupSubCommand[] { new BackupSubCommand("step", BackupSubCommandEnum.BACKUP_STEP, 1, "npage"), new BackupSubCommand("finish", BackupSubCommandEnum.BACKUP_FINISH, 0, ""), new BackupSubCommand("remaining", BackupSubCommandEnum.BACKUP_REMAINING, 0, ""), new BackupSubCommand("pagecount", BackupSubCommandEnum.BACKUP_PAGECOUNT, 0, ""), new BackupSubCommand(null, 0, 0, null) }; sqlite3_backup p = (sqlite3_backup)clientData; int iCmd = 0; int rc; rc = Tcl_GetIndexFromObjStruct( interp, objv[1], aSub, aSub.Length, "option", 0, ref iCmd ); if (rc != TCL.TCL_OK) { return(rc); } if (objc != (2 + aSub[iCmd].nArg)) { TCL.Tcl_WrongNumArgs(interp, 2, objv, aSub[iCmd].zArg); return(TCL.TCL_ERROR); } switch (aSub[iCmd].eCmd) { case BackupSubCommandEnum.BACKUP_FINISH: { string zCmdName; WrappedCommand cmdInfo = null; zCmdName = TCL.Tcl_GetString(objv[0]); TCL.Tcl_GetCommandInfo(interp, zCmdName, ref cmdInfo); cmdInfo.deleteProc = null; TCL.Tcl_SetCommandInfo(interp, zCmdName, cmdInfo); TCL.Tcl_DeleteCommand(interp, zCmdName); rc = sqlite3_backup_finish(p); TCL.Tcl_SetResult(interp, sqlite3TestErrorName(rc), TCL.TCL_STATIC); break; } case BackupSubCommandEnum.BACKUP_STEP: { int nPage = 0; if (TCL.Tcl_GetIntFromObj(interp, objv[2], ref nPage)) { return(TCL.TCL_ERROR); } rc = sqlite3_backup_step(p, nPage); TCL.Tcl_SetResult(interp, sqlite3TestErrorName(rc), TCL.TCL_STATIC); break; } case BackupSubCommandEnum.BACKUP_REMAINING: TCL.Tcl_SetObjResult(interp, TCL.Tcl_NewIntObj(sqlite3_backup_remaining(p))); break; case BackupSubCommandEnum.BACKUP_PAGECOUNT: TCL.Tcl_SetObjResult(interp, TCL.Tcl_NewIntObj(sqlite3_backup_pagecount(p))); break; } return(TCL.TCL_OK); }