/* * sqlite levenshtein extenson for TVM2VDR Plugin * * See the README file for copyright information and how to reach the author. * */ #include #include #include "levenshtein.h" SQLITE_EXTENSION_INIT1 extern "C" { //*************************************************************************** // //*************************************************************************** static void levenMatch(sqlite3_context* context, int argc, sqlite3_value** argv) { int result; int maxDist = 0; if (sqlite3_value_type(argv[0]) == SQLITE_NULL || sqlite3_value_type(argv[1]) == SQLITE_NULL || sqlite3_value_type(argv[2]) == SQLITE_NULL) { sqlite3_result_null(context); return ; } result = lvDistance((char*)sqlite3_value_text(argv[0]), (char*)sqlite3_value_text(argv[1]), atoi((char*)sqlite3_value_text(argv[2])), maxDist); result = result <= maxDist; sqlite3_result_int(context, result); } static void levenFunc(sqlite3_context* context, int argc, sqlite3_value** argv) { int result; int dummy = 0; if (sqlite3_value_type(argv[0]) == SQLITE_NULL || sqlite3_value_type(argv[1]) == SQLITE_NULL) { sqlite3_result_null(context); return ; } result = lvDistance((char*)sqlite3_value_text(argv[0]), (char*)sqlite3_value_text(argv[1]), na, dummy); sqlite3_result_int(context, result); } int sqlite3_extension_init(sqlite3* db, char** pzErrMsg, const sqlite3_api_routines* pApi) { SQLITE_EXTENSION_INIT2(pApi) sqlite3_create_function(db, "lv", 2, SQLITE_ANY, 0, levenFunc, 0, 0); sqlite3_create_function(db, "lvmatch", 3, SQLITE_ANY, 0, levenMatch, 0, 0); return 0; } //*************************************************************************** } // extern C