00001 #ifndef MICROFEEDDATABASE_H 00002 #define MICROFEEDDATABASE_H 00003 00004 #include <sys/types.h> 00005 00022 typedef struct _MicrofeedDatabaseEnvironment MicrofeedDatabaseEnvironment; 00023 00027 typedef struct _MicrofeedDatabase MicrofeedDatabase; 00028 00032 typedef struct _MicrofeedDatabaseIndex MicrofeedDatabaseIndex; 00033 00037 typedef struct _MicrofeedDatabaseIterator MicrofeedDatabaseIterator; 00038 00052 typedef void (*MicrofeedDatabaseIndexFunction)(void* key, const size_t key_size, void* data, const size_t data_size, void** index_key, size_t* index_key_size); 00053 00066 typedef int (*MicrofeedDatabaseCompareFunction)(const void* key1, const size_t key1_size, const void* key2, const size_t key2_size); 00067 00068 MicrofeedDatabaseEnvironment* microfeed_database_environment_new(const char* name, const char* directory); 00069 void microfeed_database_environment_free(MicrofeedDatabaseEnvironment* database_environment); 00070 MicrofeedDatabaseEnvironment* microfeed_database_environment_ref(MicrofeedDatabaseEnvironment* database_environment); 00071 void microfeed_database_environment_unref(MicrofeedDatabaseEnvironment* database_environment); 00072 00073 MicrofeedDatabase* microfeed_database_environment_get_database(MicrofeedDatabaseEnvironment* database_environment, const char* name, MicrofeedDatabaseCompareFunction); 00074 MicrofeedDatabaseIndex* microfeed_database_get_index(MicrofeedDatabase* database, const char* name, MicrofeedDatabaseIndexFunction index_function); 00075 00076 void microfeed_database_free(MicrofeedDatabase* database); 00077 MicrofeedDatabase* microfeed_database_ref(MicrofeedDatabase* database); 00078 void microfeed_database_unref(MicrofeedDatabase* database); 00079 00080 const char* microfeed_database_get_name(MicrofeedDatabase* database); 00081 int microfeed_database_get_data(MicrofeedDatabase* database, const void* key, size_t key_size, void** data, size_t* data_size); 00082 MicrofeedDatabaseIterator* microfeed_database_iterate(MicrofeedDatabase* database, const void* start_key, size_t start_key_size, int backwards); 00083 void microfeed_database_replace_data(MicrofeedDatabase* database, const void* key, size_t key_size, const void* data, size_t data_size); 00084 void microfeed_database_replace_data_partial(MicrofeedDatabase* database, const void* key, size_t key_size, const void* data, size_t data_size, size_t offset); 00085 void microfeed_database_remove_data(MicrofeedDatabase* database, const void* key, const size_t key_size); 00086 void microfeed_database_remove_data_range(MicrofeedDatabase* database, const void* start_key, size_t start_key_size, const void* end_key, size_t end_key_size); 00087 00088 MicrofeedDatabase* microfeed_database_index_get_database(MicrofeedDatabaseIndex* database_index); 00089 const char* microfeed_database_index_get_name(MicrofeedDatabaseIndex* database_index); 00090 int microfeed_database_index_get_data(MicrofeedDatabaseIndex* database_index, const void* index_key, size_t index_key_size, void** key, size_t* key_size, void** data, size_t* data_size); 00091 int microfeed_database_get_data_partial(MicrofeedDatabase* database, const void* key, const size_t key_size, void* data, size_t* data_size, size_t offset); 00092 MicrofeedDatabaseIterator* microfeed_database_index_iterate(MicrofeedDatabaseIndex* database_index, const void* start_key, const size_t start_key_size, int backwards); 00093 void microfeed_database_index_remove_data(MicrofeedDatabaseIndex* database_index, const void* key, size_t key_size); 00094 void microfeed_database_index_remove_data_range(MicrofeedDatabaseIndex* database_index, const void* start_key, const size_t start_key_size, const void* end_key, const size_t end_key_size); 00095 00096 void microfeed_database_iterator_free(MicrofeedDatabaseIterator* iterator); 00097 int microfeed_database_iterator_get(MicrofeedDatabaseIterator* iterator, const void** key, size_t* key_size, const void** data, size_t* data_size); 00098 void microfeed_database_iterator_next(MicrofeedDatabaseIterator* iterator); 00099 00105 #endif