private unsafe int CallbackProc(Tcl_Interp* interp) { try { _proc(_interp); } catch (Exception) { return TclNative.TCL_ERROR; } return TclNative.TCL_OK; }
private unsafe int CallbackProc(IntPtr clientData, Tcl_Interp* interp, int argc, char** argv) { try { string[] arr = new string[argc]; for(int i=0; i<argc; i++) { arr[i] = Marshal.PtrToStringAnsi((IntPtr)argv[i]); } _proc(_interp, arr); } catch (Exception) { return TclNative.TCL_ERROR; } return TclNative.TCL_OK; }
internal static extern void Tk_MainEx(int argc, [In, MarshalAs(UnmanagedType.LPArray)] string[] argv, Tcl_AppInitProc appInitProc, Tcl_Interp* interp);
internal static extern int Tk_Init(Tcl_Interp* interp);
internal static extern IntPtr Tcl_CreateCommand(Tcl_Interp* interp, [MarshalAs(UnmanagedType.LPStr)]string cmdName, Tcl_CmdProc proc, IntPtr clientData, Tcl_CmdDeleteProc deleteProc);
internal static extern IntPtr Tcl_GetVar(Tcl_Interp* interp, [MarshalAs(UnmanagedType.LPStr)] string varName, int flags);
internal static extern int Tcl_Eval(Tcl_Interp* interp, [MarshalAs(UnmanagedType.LPStr)]string str);