From 466a7bbf620e4bf1b57097a6d3c474159c475b6d Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Tue, 20 Oct 2009 21:03:30 -0700 Subject: Implement 'notmuch dump'. This is a fairly big milestone for notmuch. It's our first command to do anything besides building the index, so it proves we can actually read valid results out from the index. It also puts in place almost all of the API and infrastructure we will need to allow searching of the database. Finally, with this change we are now using talloc inside of notmuch which is truly a delight to use. And now that I figured out how to use C++ objects with talloc allocation, (it requires grotty parts of C++ such as "placement new" and "explicit destructors"), we are valgrind-clean for "notmuch dump", (as in "no leaks are possible"). --- notmuch-private.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'notmuch-private.h') diff --git a/notmuch-private.h b/notmuch-private.h index 0c20a3c..728c1a6 100644 --- a/notmuch-private.h +++ b/notmuch-private.h @@ -41,6 +41,31 @@ NOTMUCH_BEGIN_DECLS +#include + + +/* 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. + */ +/* these macros gain us a few percent of speed on gcc */ +#if (__GNUC__ >= 3) +/* the strange !! is to ensure that __builtin_expect() takes either 0 or 1 + as its first argument */ +#ifndef likely +#define likely(x) __builtin_expect(!!(x), 1) +#endif +#ifndef unlikely +#define unlikely(x) __builtin_expect(!!(x), 0) +#endif +#else +#ifndef likely +#define likely(x) (x) +#endif +#ifndef unlikely +#define unlikely(x) (x) +#endif +#endif + /* xutil.c */ void * xcalloc (size_t nmemb, size_t size); @@ -57,6 +82,13 @@ xstrdup (const char *s); char * xstrndup (const char *s, size_t n); +/* message.cc */ + +notmuch_message_t * +_notmuch_message_create (notmuch_results_t *owner, + notmuch_database_t *notmuch, + unsigned int doc_id); + /* message-file.c */ /* XXX: I haven't decided yet whether these will actually get exported -- cgit v1.2.3