]> git.notmuchmail.org Git - notmuch/blobdiff - lib/message.cc
Include <stdint.h> to get uint32_t in C++ file with gcc 4.4
[notmuch] / lib / message.cc
index 28f19a88502dc79ff29210297abfbed4f5ef2562..a4b090ba698f8867e350220f45e453cad753538f 100644 (file)
@@ -21,6 +21,8 @@
 #include "notmuch-private.h"
 #include "database-private.h"
 
+#include <stdint.h>
+
 #include <gmime/gmime.h>
 
 #include <xapian.h>
@@ -33,6 +35,8 @@ struct _notmuch_message {
     char *thread_id;
     char *filename;
     notmuch_message_file_t *message_file;
+    notmuch_message_list_t *replies;
+
     Xapian::Document doc;
 };
 
@@ -110,6 +114,13 @@ _notmuch_message_create (const void *talloc_owner,
     message->filename = NULL;
     message->message_file = NULL;
 
+    message->replies = _notmuch_message_list_create (message);
+    if (unlikely (message->replies == NULL)) {
+       if (status)
+           *status = NOTMUCH_PRIVATE_STATUS_OUT_OF_MEMORY;
+       return NULL;
+    }
+
     /* This is C++'s creepy "placement new", which is really just an
      * ugly way to call a constructor for a pre-allocated object. So
      * it's really not an error to not be checking for OUT_OF_MEMORY
@@ -259,6 +270,18 @@ notmuch_message_get_header (notmuch_message_t *message, const char *header)
     return notmuch_message_file_get_header (message->message_file, header);
 }
 
+/* XXX: We probably want to store the In-Reply-To header in the
+ * database (separate from the References message IDs) so that we can
+ * fetch it out again without having to go load the message file. */
+const char *
+_notmuch_message_get_in_reply_to (notmuch_message_t *message)
+{
+    return _parse_message_id (message,
+                             notmuch_message_get_header (message,
+                                                         "in-reply-to"),
+                             NULL);
+}
+
 const char *
 notmuch_message_get_thread_id (notmuch_message_t *message)
 {
@@ -293,6 +316,19 @@ notmuch_message_get_thread_id (notmuch_message_t *message)
     return message->thread_id;
 }
 
+void
+_notmuch_message_add_reply (notmuch_message_t *message,
+                           notmuch_message_node_t *reply)
+{
+    _notmuch_message_list_append (message->replies, reply);
+}
+
+notmuch_messages_t *
+notmuch_message_get_replies (notmuch_message_t *message)
+{
+    return _notmuch_messages_create (message->replies);
+}
+
 /* Set the filename for 'message' to 'filename'.
  *
  * XXX: We should still figure out if we think it's important to store