/** \brief delete a \e MqDumpS object (called by "rename $dump {}") * * \param[in] clientData command specific data, a \e MqDumpS object in this case **/ static void NS(MqDumpS_Free) ( ClientData clientData ) { struct MqDumpS *dump = (struct MqDumpS *) clientData; Tcl_DeleteExitHandler (NS(MqDumpS_Free), dump); MqSysFree(dump); }
int DLLEXPORT Br_Unload(Tcl_Interp *interp, int flags) { /* remove the tcl commands from the interp and shut down sdl */ Tcl_DeleteNamespace(ns); Tcl_DeleteExitHandler(Br_Atexit, NULL); quit_brick(); return TCL_OK; }
/*++ Alcoext_Unload Unloads the extension from a process or interpreter. Arguments: interp - Current interpreter. flags - Type of detachment. Return Value: A standard Tcl result. --*/ int Alcoext_Unload( Tcl_Interp *interp, int flags ) { DebugPrint("Unload: interp=%p flags=%d\n", interp, flags); if (flags == TCL_UNLOAD_DETACH_FROM_INTERPRETER) { ExtState *state; Tcl_MutexLock(&stateListMutex); for (state = stateHead; state != NULL; state = state->next) { if (interp == state->interp) { // Remove the interpreter's state from the list. if (state->next != NULL) { state->next->prev = state->prev; } if (state->prev != NULL) { state->prev->next = state->next; } if (stateHead == state) { stateHead = state->next; } FreeState(state, 1, 1); break; } } Tcl_MutexUnlock(&stateListMutex); } else if (flags == TCL_UNLOAD_DETACH_FROM_PROCESS) { // Remove registered exit handlers. Tcl_DeleteExitHandler(ExitHandler, NULL); Finalise(1); } else { // Unknown flags value. return TCL_ERROR; } // Unregister the package (there is no Tcl_PkgForget(), or similar). Tcl_Eval(interp, "package forget " PACKAGE_NAME); return TCL_OK; }
void RtclProxyBase::ThunkTclCmdDeleteProc(ClientData cdata) { Tcl_DeleteExitHandler((Tcl_ExitProc*) ThunkTclExitProc, cdata); delete ((RtclProxyBase*) cdata); return; }
void HandleNameToRepMap::deleteInterpProc (ClientData clientData, Tcl_Interp *) { Tcl_DeleteExitHandler(exitProc, clientData); delete static_cast<HandleNameToRepMap *>(clientData); }