]> git.notmuchmail.org Git - notmuch/blobdiff - lib/message.cc
notmuch show: Implement proper thread ordering/nesting of messages.
[notmuch] / lib / message.cc
index b9f998c5f7e9f6bd7c75f01e8bf337fdb15add14..72c350f32ac2badaa96c15530c1d5b2071db4074 100644 (file)
@@ -33,6 +33,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 +112,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
@@ -305,6 +314,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