public void free() { foreach (var h in collation.Values) { h.free(); } foreach (var h in scalar.Values) { h.free(); } foreach (var h in agg.Values) { h.free(); } if (update != null) { update.free(); } if (rollback != null) { rollback.free(); } if (commit != null) { commit.free(); } if (trace != null) { trace.free(); } if (progress != null) { progress.free(); } if (profile != null) { profile.free(); } if (authorizer != null) { authorizer.free(); } }
void ISQLite3Provider.sqlite3_update_hook(IntPtr db, delegate_update func, object v) { if (_update_hook != null) { // TODO maybe turn off the hook here, for now _update_hook.free(); _update_hook = null; } if (func != null) { _update_hook = new update_hook_info(func, v); SQLite3RuntimeProvider.sqlite3_update_hook(db.ToInt64(), Marshal.GetFunctionPointerForDelegate(new callback_update(update_hook_bridge)).ToInt64(), _update_hook.ptr.ToInt64()); } else { SQLite3RuntimeProvider.sqlite3_update_hook(db.ToInt64(), IntPtr.Zero.ToInt64(), IntPtr.Zero.ToInt64()); } }