// Create one function for each expression as a closure, capturing the serial and type for that function // Create an open or predicate function public bool CreateFunction(string name, FuncTypes functype, int serial, SqlCommonType[] args, SqlCommonType retn) { UserFunctionCallback func = (c, nv, v) => EvalFunctionOpen(c, nv, v, functype, serial, args, retn); _userfuncs.Add(func); return(CreateFunction(name, func)); }
private static extern int sqlite3_create_function(IntPtr dbHandle, byte[] functionName, int numArgs, int textEncoding, IntPtr pApp, UserFunctionCallback xFunc, IntPtr xStep, IntPtr xFinal);
public static extern int sqlite3_create_function_scalar(IntPtr db, string zFunctionName, int nArg, int eTextRep, IntPtr pApp, UserFunctionCallback xFunc, IntPtr xStep, IntPtr xFinal);
// Wrapper public bool CreateFunction(string name, UserFunctionCallback callback) { _lastresult = (Result)sqlite3_create_function_scalar(_dbhandle, name, -1, (int)Encoding.UTF8, IntPtr.Zero, callback, IntPtr.Zero, IntPtr.Zero); return(CheckOk()); }