[tracker] libtracker-common: Port sparql_builder_object_unvalidated to Vala



commit 54119ab09fa4bb4957449b03a87866787280a93a
Author: Jürg Billeter <j bitron ch>
Date:   Thu Feb 11 11:20:43 2010 +0100

    libtracker-common: Port sparql_builder_object_unvalidated to Vala

 src/libtracker-common/Makefile.am                 |    3 +-
 src/libtracker-common/glib-2.0-fixes.vapi         |   24 ++++++++++++++++
 src/libtracker-common/tracker-sparql-builder.vala |   16 +++++++++++
 src/libtracker-common/tracker-statement-list.c    |   30 ---------------------
 src/libtracker-common/tracker-statement-list.h    |    2 -
 5 files changed, 42 insertions(+), 33 deletions(-)
---
diff --git a/src/libtracker-common/Makefile.am b/src/libtracker-common/Makefile.am
index e85ec86..972d358 100644
--- a/src/libtracker-common/Makefile.am
+++ b/src/libtracker-common/Makefile.am
@@ -101,7 +101,7 @@ libtracker_commoninclude_HEADERS =			\
 	tracker-utils.h					\
 	tracker-crc32.h
 
-libtracker-common.vala.stamp: $(libtracker_common_la_VALASOURCES) posix.vapi
+libtracker-common.vala.stamp: $(libtracker_common_la_VALASOURCES) posix.vapi glib-2.0-fixes.vapi
 	$(AM_V_GEN)$(VALAC) $(GCOV_VALAFLAGS) -C $(VALAFLAGS) --pkg gio-2.0 -H tracker-sparql-builder.h $^
 	$(AM_V_GEN)touch $@
 
@@ -148,5 +148,6 @@ EXTRA_DIST = 						\
 	$(libtracker_common_la_VALASOURCES)		\
 	libtracker-common.vala.stamp			\
 	posix.vapi					\
+	glib-2.0-fixes.vapi					\
 	libtracker-common.vapi
 
diff --git a/src/libtracker-common/glib-2.0-fixes.vapi b/src/libtracker-common/glib-2.0-fixes.vapi
new file mode 100644
index 0000000..c589777
--- /dev/null
+++ b/src/libtracker-common/glib-2.0-fixes.vapi
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010, Nokia
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ */
+
+namespace GLib {
+	[CCode (cname = "g_utf8_validate")]
+	public bool utf8_validate (string str, ssize_t max_len, out char* end);
+}
+
diff --git a/src/libtracker-common/tracker-sparql-builder.vala b/src/libtracker-common/tracker-sparql-builder.vala
index 8dcc6f1..7008ccd 100644
--- a/src/libtracker-common/tracker-sparql-builder.vala
+++ b/src/libtracker-common/tracker-sparql-builder.vala
@@ -226,6 +226,22 @@ public class Tracker.SparqlBuilder : Object {
 		length++;
 	}
 
+	public void object_unvalidated (string value) {
+		char* end;
+
+		if (!utf8_validate (value, -1, out end)) {
+			if (value != end) {
+				object_string (value.ndup (end - (char*) value));
+			} else {
+				object_string ("(invalid data)");
+			}
+
+			return;
+		}
+
+		object_string (value);
+	}
+
 	public void object_boolean (bool literal) {
 		object (literal ? "true" : "false");
 	}
diff --git a/src/libtracker-common/tracker-statement-list.c b/src/libtracker-common/tracker-statement-list.c
index cf82ea4..388324a 100644
--- a/src/libtracker-common/tracker-statement-list.c
+++ b/src/libtracker-common/tracker-statement-list.c
@@ -48,36 +48,6 @@ tracker_statement_list_insert (TrackerSparqlBuilder *statements,
 }
 
 void
-tracker_sparql_builder_object_unvalidated (TrackerSparqlBuilder *sparql,
-                                           const gchar          *value)
-{
-	const gchar *end;
-
-	g_return_if_fail (TRACKER_IS_SPARQL_BUILDER (sparql));
-	g_return_if_fail (value != NULL);
-
-	if (!g_utf8_validate (value, -1, &end)) {
-		gchar *valid;
-
-		/* g_message ("Only inserting %ld/%ld (valid UTF8) bytes for statement list", */
-		/*         end - value, */
-		/*         strlen (value)); */
-
-		if (value != end) {
-			valid = g_strndup (value, end - value);
-			tracker_sparql_builder_object_string (sparql, valid);
-			g_free (valid);
-		} else {
-			tracker_sparql_builder_object_string (sparql, "(invalid data)");
-		}
-
-		return;
-	}
-
-	tracker_sparql_builder_object_string (sparql, value);
-}
-
-void
 tracker_statement_list_insert_with_int64 (TrackerSparqlBuilder *statements,
                                           const gchar          *subject,
                                           const gchar          *predicate,
diff --git a/src/libtracker-common/tracker-statement-list.h b/src/libtracker-common/tracker-statement-list.h
index 23c5d55..eb475e4 100644
--- a/src/libtracker-common/tracker-statement-list.h
+++ b/src/libtracker-common/tracker-statement-list.h
@@ -32,8 +32,6 @@ G_BEGIN_DECLS
 
 #define SHOULD_VALIDATE_UTF8
 
-void tracker_sparql_builder_object_unvalidated (TrackerSparqlBuilder *sparql,
-                                                const gchar          *value);
 void tracker_statement_list_insert             (TrackerSparqlBuilder *statements,
                                                 const gchar          *subject,
                                                 const gchar          *predicate,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]