summaryrefslogtreecommitdiff
path: root/src/libtracker-fts
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-06-09 23:34:30 +0200
committerCarlos Garnacho <carlosg@gnome.org>2017-06-29 20:49:05 +0200
commitbda1d774c51667aa8974ec8f3002ee463afdb9c5 (patch)
tree6ac06a70dc4506dfeedfe4c0841295371aaeb56c /src/libtracker-fts
parentbfc5e1672e0be0af07f783aad6dda4b49c3f45ab (diff)
downloadtracker-bda1d774c51667aa8974ec8f3002ee463afdb9c5.tar.gz
libtracker-fts: Pass TrackerDBInterface through FTS machinery
It will be useful in order to retrieve the data manager, and the TrackerOntologies.
Diffstat (limited to 'src/libtracker-fts')
-rw-r--r--src/libtracker-fts/tracker-fts-tokenizer.c43
-rw-r--r--src/libtracker-fts/tracker-fts-tokenizer.h6
-rw-r--r--src/libtracker-fts/tracker-fts.c7
-rw-r--r--src/libtracker-fts/tracker-fts.h6
4 files changed, 47 insertions, 15 deletions
diff --git a/src/libtracker-fts/tracker-fts-tokenizer.c b/src/libtracker-fts/tracker-fts-tokenizer.c
index b7ddf7b7f..e3db10cab 100644
--- a/src/libtracker-fts/tracker-fts-tokenizer.c
+++ b/src/libtracker-fts/tracker-fts-tokenizer.c
@@ -36,6 +36,7 @@
typedef struct TrackerTokenizerData TrackerTokenizerData;
typedef struct TrackerTokenizer TrackerTokenizer;
+typedef struct TrackerTokenizerFunctionData TrackerTokenizerFunctionData;
struct TrackerTokenizerData {
TrackerLanguage *language;
@@ -52,6 +53,11 @@ struct TrackerTokenizer {
TrackerParser *parser;
};
+struct TrackerTokenizerFunctionData {
+ TrackerDBInterface *interface;
+ gchar **property_names;
+};
+
static int
tracker_tokenizer_create (void *data,
const char **argv,
@@ -390,11 +396,32 @@ get_fts5_api (sqlite3 *db) {
return api;
}
+TrackerTokenizerFunctionData *
+tracker_tokenizer_function_data_new (TrackerDBInterface *interface,
+ const gchar **property_names)
+{
+ TrackerTokenizerFunctionData *data;
+
+ data = g_new0 (TrackerTokenizerFunctionData, 1);
+ data->interface = g_object_ref (interface);
+ data->property_names = g_strdupv (property_names);
+}
+
+static void
+tracker_tokenizer_function_data_free (TrackerTokenizerFunctionData *data)
+{
+ g_object_unref (data->interface);
+ g_strfreev (data->property_names);
+ g_free (data);
+}
+
gboolean
-tracker_tokenizer_initialize (sqlite3 *db,
- const gchar **property_names)
+tracker_tokenizer_initialize (sqlite3 *db,
+ TrackerDBInterface *interface,
+ const gchar **property_names)
{
TrackerTokenizerData *data;
+ TrackerTokenizerFunctionData *func_data;
fts5_tokenizer *tokenizer;
fts5_api *api;
@@ -409,16 +436,16 @@ tracker_tokenizer_initialize (sqlite3 *db,
tracker_tokenizer_data_free);
/* Offsets */
- api->xCreateFunction (api, "tracker_offsets",
- g_strdupv ((gchar **) property_names),
+ func_data = tracker_tokenizer_function_data_new (interface, property_names);
+ api->xCreateFunction (api, "tracker_offsets", func_data,
&tracker_offsets_function,
- (GDestroyNotify) g_strfreev);
+ (GDestroyNotify) tracker_tokenizer_function_data_free);
/* Rank */
- api->xCreateFunction (api, "tracker_rank",
- g_strdupv ((gchar **) property_names),
+ func_data = tracker_tokenizer_function_data_new (interface, property_names);
+ api->xCreateFunction (api, "tracker_rank", func_data,
&tracker_rank_function,
- (GDestroyNotify) g_strfreev);
+ (GDestroyNotify) tracker_tokenizer_function_data_free);
return TRUE;
}
diff --git a/src/libtracker-fts/tracker-fts-tokenizer.h b/src/libtracker-fts/tracker-fts-tokenizer.h
index 30843d23e..457476c5d 100644
--- a/src/libtracker-fts/tracker-fts-tokenizer.h
+++ b/src/libtracker-fts/tracker-fts-tokenizer.h
@@ -21,11 +21,13 @@
#include <sqlite3.h>
#include <glib.h>
+#include <libtracker-data/tracker-db-interface.h>
#ifndef __TRACKER_FTS_TOKENIZER_H__
#define __TRACKER_FTS_TOKENIZER_H__
-gboolean tracker_tokenizer_initialize (sqlite3 *db,
- const gchar **property_names);
+gboolean tracker_tokenizer_initialize (sqlite3 *db,
+ TrackerDBInterface *interface,
+ const gchar **property_names);
#endif /* __TRACKER_FTS_TOKENIZER_H__ */
diff --git a/src/libtracker-fts/tracker-fts.c b/src/libtracker-fts/tracker-fts.c
index 3f6e26bcd..ec5ac293a 100644
--- a/src/libtracker-fts/tracker-fts.c
+++ b/src/libtracker-fts/tracker-fts.c
@@ -99,8 +99,9 @@ get_fts_properties (GHashTable *tables)
}
gboolean
-tracker_fts_init_db (sqlite3 *db,
- GHashTable *tables)
+tracker_fts_init_db (sqlite3 *db,
+ TrackerDBInterface *interface,
+ GHashTable *tables)
{
gchar **property_names;
gboolean retval;
@@ -108,7 +109,7 @@ tracker_fts_init_db (sqlite3 *db,
g_return_val_if_fail (initialized == TRUE, FALSE);
property_names = get_fts_properties (tables);
- retval = tracker_tokenizer_initialize (db, (const gchar **) property_names);
+ retval = tracker_tokenizer_initialize (db, interface, (const gchar **) property_names);
g_strfreev (property_names);
return retval;
diff --git a/src/libtracker-fts/tracker-fts.h b/src/libtracker-fts/tracker-fts.h
index 945338e8d..e1461f112 100644
--- a/src/libtracker-fts/tracker-fts.h
+++ b/src/libtracker-fts/tracker-fts.h
@@ -25,13 +25,15 @@
#include <sqlite3.h>
#include <glib.h>
+#include <libtracker-data/tracker-db-interface.h>
G_BEGIN_DECLS
gboolean tracker_fts_init (void);
gboolean tracker_fts_shutdown (void);
-gboolean tracker_fts_init_db (sqlite3 *db,
- GHashTable *tables);
+gboolean tracker_fts_init_db (sqlite3 *db,
+ TrackerDBInterface *interface,
+ GHashTable *tables);
gboolean tracker_fts_create_table (sqlite3 *db,
gchar *table_name,
GHashTable *tables,