示例#1
0
/** \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);
}
示例#2
0
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;
}
示例#3
0
/*++

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;
}
示例#4
0
void RtclProxyBase::ThunkTclCmdDeleteProc(ClientData cdata)
{
  Tcl_DeleteExitHandler((Tcl_ExitProc*) ThunkTclExitProc, cdata);
  delete ((RtclProxyBase*) cdata);
  return;
}
示例#5
0
void
HandleNameToRepMap::deleteInterpProc (ClientData clientData, Tcl_Interp *)
{
    Tcl_DeleteExitHandler(exitProc, clientData);
    delete static_cast<HandleNameToRepMap *>(clientData);
}