As of gcc 4.6, there are new warnings from -Wattributes along the lines of:
warning: ‘_notmuch_messages’ declared with greater visibility
than the type of its field ‘_notmuch_messages::iterator’
[-Wattributes]
To squelch these, we decorate all such containing structs with
__attribute__((visibility("default"))). We take care to let only the
C++ compiler see this, (since the C compiler would otherwise warn
about ignored visibility attributes on types).
#include <gmime/gmime.h>
-struct _notmuch_message {
+struct visible _notmuch_message {
notmuch_database_t *notmuch;
Xapian::docid doc_id;
int frozen;
#define unused(x) x __attribute__ ((unused))
+#ifdef __cplusplus
+# define visible __attribute__((visibility("default")))
+#else
+# define visible
+#endif
+
/* 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.
*/
* 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)
*/
-struct _notmuch_messages {
+struct visible _notmuch_messages {
notmuch_bool_t is_of_list_type;
notmuch_message_node_t *iterator;
};
#define DOCIDSET_WORD(bit) ((bit) / sizeof (unsigned int))
#define DOCIDSET_BIT(bit) ((bit) % sizeof (unsigned int))
-struct _notmuch_threads {
+struct visible _notmuch_threads {
notmuch_query_t *query;
/* The ordered list of doc ids matched by the query. */
#include <gmime/gmime.h>
#include <glib.h> /* GHashTable */
-struct _notmuch_thread {
+struct visible _notmuch_thread {
notmuch_database_t *notmuch;
char *thread_id;
char *subject;