]> git.notmuchmail.org Git - notmuch/blobdiff - query.cc
query: Remove the magic NOTMUCH_QUERY_ALL
[notmuch] / query.cc
index d3614dc3ee8d012ab5a868b03b096bda001c82a5..50223b02bdd48ee5408d0e891cfef5f64bf7f8aa 100644 (file)
--- a/query.cc
+++ b/query.cc
@@ -23,8 +23,6 @@
 
 #include <xapian.h>
 
-const char *NOTMUCH_QUERY_ALL = "";
-
 struct _notmuch_query {
     notmuch_database_t *notmuch;
     const char *query_string;
@@ -49,11 +47,7 @@ notmuch_query_create (notmuch_database_t *notmuch,
 
     query->notmuch = notmuch;
 
-    /* Special-case NOTMUCH_QUERY_ALL so we see it and not a copy. */
-    if (query_string == NOTMUCH_QUERY_ALL)
-       query->query_string = query_string;
-    else
-       query->query_string = talloc_strdup (query, query_string);
+    query->query_string = talloc_strdup (query, query_string);
 
     query->sort = NOTMUCH_SORT_DATE_OLDEST_FIRST;
 
@@ -66,8 +60,14 @@ notmuch_query_set_sort (notmuch_query_t *query, notmuch_sort_t sort)
     query->sort = sort;
 }
 
+/* We end up having to call the destructors explicitly because we had
+ * to use "placement new" in order to initialize C++ objects within a
+ * block that we allocated with talloc. So C++ is making talloc
+ * slightly less simple to use, (we wouldn't need
+ * talloc_set_destructor at all otherwise).
+ */
 static int
-_notmuch_results_destroy (notmuch_results_t *results)
+_notmuch_results_destructor (notmuch_results_t *results)
 {
     results->iterator.~PostingIterator ();
     results->iterator_end.~PostingIterator ();
@@ -85,7 +85,7 @@ notmuch_query_search (notmuch_query_t *query)
        return NULL;
 
     try {
-       if (query->query_string != NOTMUCH_QUERY_ALL) {
+       if (strlen (query->query_string)) {
            fprintf (stderr, "Error: Arbitrary search strings are not supported yet. Come back soon!\n");
            exit (1);
        }
@@ -94,7 +94,7 @@ notmuch_query_search (notmuch_query_t *query)
        new (&results->iterator) Xapian::PostingIterator ();
        new (&results->iterator_end) Xapian::PostingIterator ();
 
-       talloc_set_destructor (results, _notmuch_results_destroy);
+       talloc_set_destructor (results, _notmuch_results_destructor);
 
        results->iterator = query->notmuch->xapian_db->postlist_begin ("");
        results->iterator_end = query->notmuch->xapian_db->postlist_end ("");
@@ -135,3 +135,9 @@ notmuch_results_advance (notmuch_results_t *results)
 {
     results->iterator++;
 }
+
+void
+notmuch_results_destroy (notmuch_results_t *results)
+{
+    talloc_free (results);
+}