VALUE notmuch_rb_cDatabase;
VALUE notmuch_rb_cDirectory;
-VALUE notmuch_rb_cFileNames;
VALUE notmuch_rb_cQuery;
VALUE notmuch_rb_cThreads;
VALUE notmuch_rb_cThread;
VALUE notmuch_rb_cMessages;
VALUE notmuch_rb_cMessage;
-VALUE notmuch_rb_cTags;
VALUE notmuch_rb_eBaseError;
VALUE notmuch_rb_eDatabaseError;
VALUE notmuch_rb_eUnbalancedAtomicError;
ID ID_call;
-ID ID_db_create;
-ID ID_db_mode;
+
+const rb_data_type_t notmuch_rb_object_type = {
+ .wrap_struct_name = "notmuch_object",
+ .function = {
+ .dfree = notmuch_rb_object_free,
+ },
+};
+
+#define define_type(id) \
+ const rb_data_type_t notmuch_rb_ ## id ## _type = { \
+ .wrap_struct_name = "notmuch_" #id, \
+ .parent = ¬much_rb_object_type, \
+ .data = ¬much_ ## id ## _destroy, \
+ .function = { \
+ .dfree = notmuch_rb_object_free, \
+ }, \
+ }
+
+define_type (database);
+define_type (directory);
+define_type (query);
+define_type (threads);
+define_type (thread);
+define_type (messages);
+define_type (message);
/*
* Document-module: Notmuch
* the user:
*
* - Notmuch::Database
- * - Notmuch::FileNames
* - Notmuch::Query
* - Notmuch::Threads
* - Notmuch::Messages
* - Notmuch::Thread
* - Notmuch::Message
- * - Notmuch::Tags
*/
void
VALUE mod;
ID_call = rb_intern ("call");
- ID_db_create = rb_intern ("create");
- ID_db_mode = rb_intern ("mode");
mod = rb_define_module ("Notmuch");
* Maximum allowed length of a tag
*/
rb_define_const (mod, "TAG_MAX", INT2FIX (NOTMUCH_TAG_MAX));
+ /*
+ * Document-const: Notmuch::EXCLUDE_FLAG
+ *
+ * Only flag excluded results
+ */
+ rb_define_const (mod, "EXCLUDE_FLAG", INT2FIX (NOTMUCH_EXCLUDE_FLAG));
+ /*
+ * Document-const: Notmuch::EXCLUDE_TRUE
+ *
+ * Exclude messages from the results
+ */
+ rb_define_const (mod, "EXCLUDE_TRUE", INT2FIX (NOTMUCH_EXCLUDE_TRUE));
+ /*
+ * Document-const: Notmuch::EXCLUDE_FALSE
+ *
+ * Don't exclude anything
+ */
+ rb_define_const (mod, "EXCLUDE_FALSE", INT2FIX (NOTMUCH_EXCLUDE_FALSE));
+ /*
+ * Document-const: Notmuch::EXCLUDE_ALL
+ *
+ * Exclude all results
+ */
+ rb_define_const (mod, "EXCLUDE_ALL", INT2FIX (NOTMUCH_EXCLUDE_ALL));
/*
* Document-class: Notmuch::BaseError
*
* Notmuch database interaction
*/
- notmuch_rb_cDatabase = rb_define_class_under (mod, "Database", rb_cData);
+ notmuch_rb_cDatabase = rb_define_class_under (mod, "Database", rb_cObject);
rb_define_alloc_func (notmuch_rb_cDatabase, notmuch_rb_database_alloc);
rb_define_singleton_method (notmuch_rb_cDatabase, "open", notmuch_rb_database_open, -1); /* in database.c */
rb_define_method (notmuch_rb_cDatabase, "initialize", notmuch_rb_database_initialize, -1); /* in database.c */
+ rb_define_method (notmuch_rb_cDatabase, "destroy!", notmuch_rb_database_destroy, 0); /* in database.c */
rb_define_method (notmuch_rb_cDatabase, "close", notmuch_rb_database_close, 0); /* in database.c */
rb_define_method (notmuch_rb_cDatabase, "path", notmuch_rb_database_path, 0); /* in database.c */
rb_define_method (notmuch_rb_cDatabase, "version", notmuch_rb_database_version, 0); /* in database.c */
rb_define_method (notmuch_rb_cDatabase, "find_message_by_filename",
notmuch_rb_database_find_message_by_filename, 1); /* in database.c */
rb_define_method (notmuch_rb_cDatabase, "all_tags", notmuch_rb_database_get_all_tags, 0); /* in database.c */
- rb_define_method (notmuch_rb_cDatabase, "query", notmuch_rb_database_query_create, 1); /* in database.c */
+ rb_define_method (notmuch_rb_cDatabase, "query", notmuch_rb_database_query_create, -1); /* in database.c */
/*
* Document-class: Notmuch::Directory
*
* Notmuch directory
*/
- notmuch_rb_cDirectory = rb_define_class_under (mod, "Directory", rb_cData);
+ notmuch_rb_cDirectory = rb_define_class_under (mod, "Directory", rb_cObject);
rb_undef_method (notmuch_rb_cDirectory, "initialize");
rb_define_method (notmuch_rb_cDirectory, "destroy!", notmuch_rb_directory_destroy, 0); /* in directory.c */
rb_define_method (notmuch_rb_cDirectory, "mtime", notmuch_rb_directory_get_mtime, 0); /* in directory.c */
rb_define_method (notmuch_rb_cDirectory, "child_files", notmuch_rb_directory_get_child_files, 0); /* in directory.c */
rb_define_method (notmuch_rb_cDirectory, "child_directories", notmuch_rb_directory_get_child_directories, 0); /* in directory.c */
- /*
- * Document-class: Notmuch::FileNames
- *
- * Notmuch file names
- */
- notmuch_rb_cFileNames = rb_define_class_under (mod, "FileNames", rb_cData);
- rb_undef_method (notmuch_rb_cFileNames, "initialize");
- rb_define_method (notmuch_rb_cFileNames, "destroy!", notmuch_rb_filenames_destroy, 0); /* in filenames.c */
- rb_define_method (notmuch_rb_cFileNames, "each", notmuch_rb_filenames_each, 0); /* in filenames.c */
- rb_include_module (notmuch_rb_cFileNames, rb_mEnumerable);
-
/*
* Document-class: Notmuch::Query
*
* Notmuch query
*/
- notmuch_rb_cQuery = rb_define_class_under (mod, "Query", rb_cData);
+ notmuch_rb_cQuery = rb_define_class_under (mod, "Query", rb_cObject);
rb_undef_method (notmuch_rb_cQuery, "initialize");
rb_define_method (notmuch_rb_cQuery, "destroy!", notmuch_rb_query_destroy, 0); /* in query.c */
rb_define_method (notmuch_rb_cQuery, "sort", notmuch_rb_query_get_sort, 0); /* in query.c */
*
* Notmuch threads
*/
- notmuch_rb_cThreads = rb_define_class_under (mod, "Threads", rb_cData);
+ notmuch_rb_cThreads = rb_define_class_under (mod, "Threads", rb_cObject);
rb_undef_method (notmuch_rb_cThreads, "initialize");
rb_define_method (notmuch_rb_cThreads, "destroy!", notmuch_rb_threads_destroy, 0); /* in threads.c */
rb_define_method (notmuch_rb_cThreads, "each", notmuch_rb_threads_each, 0); /* in threads.c */
*
* Notmuch messages
*/
- notmuch_rb_cMessages = rb_define_class_under (mod, "Messages", rb_cData);
+ notmuch_rb_cMessages = rb_define_class_under (mod, "Messages", rb_cObject);
rb_undef_method (notmuch_rb_cMessages, "initialize");
rb_define_method (notmuch_rb_cMessages, "destroy!", notmuch_rb_messages_destroy, 0); /* in messages.c */
rb_define_method (notmuch_rb_cMessages, "each", notmuch_rb_messages_each, 0); /* in messages.c */
*
* Notmuch thread
*/
- notmuch_rb_cThread = rb_define_class_under (mod, "Thread", rb_cData);
+ notmuch_rb_cThread = rb_define_class_under (mod, "Thread", rb_cObject);
rb_undef_method (notmuch_rb_cThread, "initialize");
rb_define_method (notmuch_rb_cThread, "destroy!", notmuch_rb_thread_destroy, 0); /* in thread.c */
rb_define_method (notmuch_rb_cThread, "thread_id", notmuch_rb_thread_get_thread_id, 0); /* in thread.c */
*
* Notmuch message
*/
- notmuch_rb_cMessage = rb_define_class_under (mod, "Message", rb_cData);
+ notmuch_rb_cMessage = rb_define_class_under (mod, "Message", rb_cObject);
rb_undef_method (notmuch_rb_cMessage, "initialize");
rb_define_method (notmuch_rb_cMessage, "destroy!", notmuch_rb_message_destroy, 0); /* in message.c */
rb_define_method (notmuch_rb_cMessage, "message_id", notmuch_rb_message_get_message_id, 0); /* in message.c */
rb_define_method (notmuch_rb_cMessage, "tags_to_maildir_flags", notmuch_rb_message_tags_to_maildir_flags, 0); /* in message.c */
rb_define_method (notmuch_rb_cMessage, "freeze", notmuch_rb_message_freeze, 0); /* in message.c */
rb_define_method (notmuch_rb_cMessage, "thaw", notmuch_rb_message_thaw, 0); /* in message.c */
-
- /*
- * Document-class: Notmuch::Tags
- *
- * Notmuch tags
- */
- notmuch_rb_cTags = rb_define_class_under (mod, "Tags", rb_cData);
- rb_undef_method (notmuch_rb_cTags, "initialize");
- rb_define_method (notmuch_rb_cTags, "destroy!", notmuch_rb_tags_destroy, 0); /* in tags.c */
- rb_define_method (notmuch_rb_cTags, "each", notmuch_rb_tags_each, 0); /* in tags.c */
- rb_include_module (notmuch_rb_cTags, rb_mEnumerable);
}