I would rather add these functions directly to the core SQLite DLL in C in and compile them directly into the code (using a conditional).
For example on the web I found an example of adding a sign() function: /* ** Implementation of the sign() function */ static void signFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ assert( argc==1 ); switch( sqlite3_value_type(argv[0]) ){ case SQLITE_INTEGER: { i64 iVal = sqlite3_value_int64(argv[0]); /* 1st change below. Line below was: if( iVal<0 ) iVal = iVal * -1; */ iVal = ( iVal > 0) ? 1: ( iVal < 0 ) ? -1: 0; sqlite3_result_int64(context, iVal); break; } case SQLITE_NULL: { sqlite3_result_null(context); break; } default: { /* 2nd change below. Line for abs was: if( rVal<0 ) rVal = rVal * -1.0; */ double rVal = sqlite3_value_double(argv[0]); rVal = ( rVal > 0) ? 1: ( rVal < 0 ) ? -1: 0; sqlite3_result_double(context, rVal); break; } } } They then register this function by adding it to the array of existing functions: } aFuncs[] = { { "min", -1, 0, SQLITE_UTF8, 1, minmaxFunc }, { "min", 0, 0, SQLITE_UTF8, 1, 0 }, { "max", -1, 2, SQLITE_UTF8, 1, minmaxFunc }, { "max", 0, 2, SQLITE_UTF8, 1, 0 }, { "typeof", 1, 0, SQLITE_UTF8, 0, typeofFunc }, { "length", 1, 0, SQLITE_UTF8, 0, lengthFunc }, { "substr", 3, 0, SQLITE_UTF8, 0, substrFunc }, { "substr", 3, 0, SQLITE_UTF16LE, 0, sqlite3utf16Substr }, { "abs", 1, 0, SQLITE_UTF8, 0, absFunc }, /* Added here */ { "sign", 1, 0, SQLITE_UTF8, 0, signFunc }, { "round", 1, 0, SQLITE_UTF8, 0, roundFunc }, { "round", 2, 0, SQLITE_UTF8, 0, roundFunc }, This seems to work (I've tried it). HOWEVER, it means altering func.c and I was looking for how to add these functions in a separate C file without having to alter any existing code? Anyone any ideas how best to extend the codebase of SQLite with minimal alteration to existing code? Cheers, Mike -- View this message in context: http://www.nabble.com/Extra+functions+-+New+Project--t1674436.html#a4542123 Sent from the SQLite forum at Nabble.com.