diff options
author | 2009-10-25 14:54:13 -0700 | |
---|---|---|
committer | 2009-10-25 14:54:13 -0700 | |
commit | a360670c03475b1489ea5e2327cc3037cc8dff0b (patch) | |
tree | e30dd0679d50c5c89de11936139be28b3a93b573 /notmuch-private.h | |
parent | ec77f6b50cb460dc8c376eeee045a25ed390c337 (diff) |
Change database to store only a single thread ID per message.
Instead of supporting multiple thread IDs, we now merge together
thread IDs if one message is ever found to belong to more than one
thread. This allows for constructing complete threads when, for
example, a child message doesn't include a complete list of References
headers back to the beginning of the thread.
It also simplifies dealing with mapping a message ID to a thread ID
which is now a simple get_thread_id just like get_message_id, (and no
longer an iterator-based thing like get_tags).
Diffstat (limited to 'notmuch-private.h')
-rw-r--r-- | notmuch-private.h | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/notmuch-private.h b/notmuch-private.h index 53b4f1dd..be1fb63f 100644 --- a/notmuch-private.h +++ b/notmuch-private.h @@ -46,21 +46,31 @@ NOTMUCH_BEGIN_DECLS #include "xutil.h" +#ifdef DEBUG +# define DEBUG_DATABASE_SANITY 1 +# define DEBUG_QUERY 1 +#endif + #define COMPILE_TIME_ASSERT(pred) ((void)sizeof(char[1 - 2*!(pred)])) /* There's no point in continuing when we've detected that we've done * something wrong internally (as opposed to the user passing in a * bogus value). * + * Note that PRINTF_ATTRIBUTE comes from talloc.h + */ +int +_internal_error (const char *format, ...) PRINTF_ATTRIBUTE (1, 2); + +/* There's no point in continuing when we've detected that we've done + * something wrong internally (as opposed to the user passing in a + * bogus value). + * * Note that __location__ comes from talloc.h. */ #define INTERNAL_ERROR(format, ...) \ - do { \ - fprintf(stderr, \ - "Internal error: " format " (%s)\n", \ - ##__VA_ARGS__, __location__); \ - exit (1); \ - } while (0) + _internal_error (format " (%s).\n", \ + ##__VA_ARGS__, __location__) /* Thanks to Andrew Tridgell's (SAMBA's) talloc for this definition of * unlikely. The talloc source code comes to us via the GNU LGPL v. 3. @@ -110,6 +120,21 @@ typedef enum _notmuch_private_status { NOTMUCH_PRIVATE_STATUS_LAST_STATUS } notmuch_private_status_t; +/* Coerce a notmuch_private_status_t value to a notmuch_status_t + * value, generating an internal error if the private value is equal + * to or greater than NOTMUCH_STATUS_LAST_STATUS. (The idea here is + * that the caller has previously handled any expected + * notmuch_private_status_t values.) + */ +#define COERCE_STATUS(private_status, format, ...) \ + ((private_status >= (notmuch_private_status_t) NOTMUCH_STATUS_LAST_STATUS)\ + ? \ + (notmuch_status_t) _internal_error (format " (%s).\n", \ + ##__VA_ARGS__, \ + __location__) \ + : \ + (notmuch_status_t) private_status) + /* message.cc */ notmuch_message_t * |