]> git.notmuchmail.org Git - notmuch/blobdiff - lib/notmuch-private.h
database: Export _notmuch_database_find_parent_id for internal use.
[notmuch] / lib / notmuch-private.h
index 190d30385ba3893dcf6d38bd57f938ca81741d6d..56929ffa87cb67343fba6bb623832c7410971ded 100644 (file)
@@ -26,6 +26,8 @@
 #endif
 #include <stdio.h>
 
+#include "compat.h"
+
 #include "notmuch.h"
 
 NOTMUCH_BEGIN_DECLS
@@ -110,13 +112,15 @@ typedef enum _notmuch_private_status {
     /* First, copy all the public status values. */
     NOTMUCH_PRIVATE_STATUS_SUCCESS = NOTMUCH_STATUS_SUCCESS,
     NOTMUCH_PRIVATE_STATUS_OUT_OF_MEMORY = NOTMUCH_STATUS_OUT_OF_MEMORY,
+    NOTMUCH_PRIVATE_STATUS_READONLY_DATABASE = NOTMUCH_STATUS_READONLY_DATABASE,
     NOTMUCH_PRIVATE_STATUS_XAPIAN_EXCEPTION = NOTMUCH_STATUS_XAPIAN_EXCEPTION,
     NOTMUCH_PRIVATE_STATUS_FILE_NOT_EMAIL = NOTMUCH_STATUS_FILE_NOT_EMAIL,
     NOTMUCH_PRIVATE_STATUS_NULL_POINTER = NOTMUCH_STATUS_NULL_POINTER,
     NOTMUCH_PRIVATE_STATUS_TAG_TOO_LONG = NOTMUCH_STATUS_TAG_TOO_LONG,
+    NOTMUCH_PRIVATE_STATUS_UNBALANCED_FREEZE_THAW = NOTMUCH_STATUS_UNBALANCED_FREEZE_THAW,
 
     /* Then add our own private values. */
-    NOTMUCH_PRIVATE_STATUS_TERM_TOO_LONG,
+    NOTMUCH_PRIVATE_STATUS_TERM_TOO_LONG = NOTMUCH_STATUS_LAST_STATUS,
     NOTMUCH_PRIVATE_STATUS_NO_DOCUMENT_FOUND,
 
     NOTMUCH_PRIVATE_STATUS_LAST_STATUS
@@ -147,12 +151,22 @@ typedef enum _notmuch_private_status {
 const char *
 _find_prefix (const char *name);
 
+const char *
+_notmuch_database_relative_path (notmuch_database_t *notmuch,
+                                const char *path);
+
+notmuch_status_t
+_notmuch_database_find_parent_id (notmuch_database_t *notmuch,
+                                 const char *path,
+                                 unsigned int *parent_id);
+
 /* thread.cc */
 
 notmuch_thread_t *
-_notmuch_thread_create (const void *ctx,
+_notmuch_thread_create (void *ctx,
                        notmuch_database_t *notmuch,
-                       const char *thread_id);
+                       const char *thread_id,
+                       const char *query_string);
 
 /* message.cc */
 
@@ -163,13 +177,12 @@ _notmuch_message_create (const void *talloc_owner,
                         notmuch_private_status_t *status);
 
 notmuch_message_t *
-_notmuch_message_create_for_message_id (const void *talloc_owner,
-                                       notmuch_database_t *notmuch,
+_notmuch_message_create_for_message_id (notmuch_database_t *notmuch,
                                        const char *message_id,
                                        notmuch_private_status_t *status);
 
 const char *
-_notmuch_message_get_subject (notmuch_message_t *message);
+_notmuch_message_get_in_reply_to (notmuch_message_t *message);
 
 notmuch_private_status_t
 _notmuch_message_add_term (notmuch_message_t *message,
@@ -190,10 +203,6 @@ void
 _notmuch_message_set_filename (notmuch_message_t *message,
                               const char *filename);
 
-void
-_notmuch_message_add_thread_id (notmuch_message_t *message,
-                               const char *thread_id);
-
 void
 _notmuch_message_ensure_thread_id (notmuch_message_t *message);
 
@@ -204,6 +213,9 @@ _notmuch_message_set_date (notmuch_message_t *message,
 void
 _notmuch_message_sync (notmuch_message_t *message);
 
+void
+_notmuch_message_close (notmuch_message_t *message);
+
 /* index.cc */
 
 notmuch_status_t
@@ -231,7 +243,7 @@ notmuch_message_file_open (const char *filename);
 notmuch_message_file_t *
 _notmuch_message_file_open_ctx (void *ctx, const char *filename);
 
-/* Close a notmuch message preivously opened with notmuch_message_open. */
+/* Close a notmuch message previously opened with notmuch_message_open. */
 void
 notmuch_message_file_close (notmuch_message_file_t *message);
 
@@ -274,17 +286,57 @@ const char *
 notmuch_message_file_get_header (notmuch_message_file_t *message,
                                 const char *header);
 
-/* date.c */
+/* messages.c */
 
-/* Parse an RFC 8222 date string to a time_t value.
- *
- * The tz_offset argument can be used to also obtain the time-zone
- * offset, (but can be NULL if the call is not interested in that).
- *
- * Returns 0 on error.
+typedef struct _notmuch_message_node {
+    notmuch_message_t *message;
+    struct _notmuch_message_node *next;
+} notmuch_message_node_t;
+
+typedef struct _notmuch_message_list {
+    notmuch_message_node_t *head;
+    notmuch_message_node_t **tail;
+} notmuch_message_list_t;
+
+/* There's a rumor that there's an alternate struct _notmuch_messages
+ * somewhere with some nasty C++ objects in it. We'll try to maintain
+ * ignorance of that here. (See notmuch_mset_messages_t in query.cc)
  */
-time_t
-notmuch_parse_date (const char *str, int *tz_offset);
+struct _notmuch_messages {
+    notmuch_bool_t is_of_list_type;
+    notmuch_message_node_t *iterator;
+};
+
+notmuch_message_list_t *
+_notmuch_message_list_create (const void *ctx);
+
+void
+_notmuch_message_list_append (notmuch_message_list_t *list,
+                             notmuch_message_node_t *node);
+
+void
+_notmuch_message_list_add_message (notmuch_message_list_t *list,
+                                  notmuch_message_t *message);
+
+notmuch_messages_t *
+_notmuch_messages_create (notmuch_message_list_t *list);
+
+/* query.cc */
+
+notmuch_bool_t
+_notmuch_mset_messages_has_more (notmuch_messages_t *messages);
+
+notmuch_message_t *
+_notmuch_mset_messages_get (notmuch_messages_t *messages);
+
+void
+_notmuch_mset_messages_advance (notmuch_messages_t *messages);
+
+/* message.cc */
+
+void
+_notmuch_message_add_reply (notmuch_message_t *message,
+                           notmuch_message_node_t *reply);
 
 /* sha1.c */