internal TclCmdDeleteProcWrapper(TclInterp interp, TclCmdDeleteProc proc, Object deletee) { _interp = interp; _proc = proc; unsafe { _callback = new Tcl_CmdDeleteProc(this.CallbackProc); } _deletee = deletee; _interp.AddKeepAlive(this); _interp.AddKeepAlive(_deletee); }
public TclCmdToken CreateCommand(string cmdName, TclCmdProc proc, TclCmdDeleteProc deleteProc) { TclCmdToken token; TclCmdProcWrapper cmdWrapper = new TclCmdProcWrapper(this, proc); TclCmdDeleteProcWrapper deleteWrapper = new TclCmdDeleteProcWrapper(this, deleteProc, cmdWrapper); unsafe { token._token = TclNative.Tcl_CreateCommand(_interp, cmdName, cmdWrapper.Callback, IntPtr.Zero, deleteWrapper.Callback); } return(token); }
public TclCmdToken CreateCommand(string cmdName, TclCmdProc proc, TclCmdDeleteProc deleteProc) { TclCmdToken token; TclCmdProcWrapper cmdWrapper = new TclCmdProcWrapper(this, proc); TclCmdDeleteProcWrapper deleteWrapper = new TclCmdDeleteProcWrapper(this, deleteProc, cmdWrapper); unsafe { token._token = TclNative.Tcl_CreateCommand(_interp, cmdName, cmdWrapper.Callback, IntPtr.Zero, deleteWrapper.Callback); } return token; }