void ISQLite3Provider.sqlite3_commit_hook(IntPtr db, delegate_commit func, object v) { if (_commit_hook != null) { // TODO maybe turn off the hook here, for now _commit_hook.free(); _commit_hook = null; } if (func != null) { _commit_hook = new commit_hook_info(func, v); SQLite3RuntimeProvider.sqlite3_commit_hook(db.ToInt64(), Marshal.GetFunctionPointerForDelegate(new callback_commit(commit_hook_bridge)).ToInt64(), _commit_hook.ptr.ToInt64()); } else { SQLite3RuntimeProvider.sqlite3_commit_hook(db.ToInt64(), IntPtr.Zero.ToInt64(), IntPtr.Zero.ToInt64()); } }