00001 #ifndef MICROFEEDDATABASE_H 00002 #define MICROFEEDDATABASE_H 00003 00004 #include <sys/types.h> 00005 00018 typedef struct _MicrofeedDatabaseEnvironment MicrofeedDatabaseEnvironment; 00019 00023 typedef struct _MicrofeedDatabase MicrofeedDatabase; 00024 00028 typedef struct _MicrofeedDatabaseIndex MicrofeedDatabaseIndex; 00029 00033 typedef struct _MicrofeedDatabaseIterator MicrofeedDatabaseIterator; 00034 00035 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); 00036 typedef int (*MicrofeedDatabaseCompareFunction)(const void* key1, const size_t key1_size, const void* key2, const size_t key2_size); 00037 00038 MicrofeedDatabaseEnvironment* microfeed_database_environment_new(const char* name, const char* directory); 00039 void microfeed_database_environment_free(MicrofeedDatabaseEnvironment* database_environment); 00040 MicrofeedDatabaseEnvironment* microfeed_database_environment_ref(MicrofeedDatabaseEnvironment* database_environment); 00041 void microfeed_database_environment_unref(MicrofeedDatabaseEnvironment* database_environment); 00042 00043 MicrofeedDatabase* microfeed_database_environment_get_database(MicrofeedDatabaseEnvironment* database_environment, const char* name, MicrofeedDatabaseCompareFunction); 00044 MicrofeedDatabaseIndex* microfeed_database_get_index(MicrofeedDatabase* database, const char* name, MicrofeedDatabaseIndexFunction index_function); 00045 00046 void microfeed_database_free(MicrofeedDatabase* database); 00047 MicrofeedDatabase* microfeed_database_ref(MicrofeedDatabase* database); 00048 void microfeed_database_unref(MicrofeedDatabase* database); 00049 00050 const char* microfeed_database_get_name(MicrofeedDatabase* database); 00051 int microfeed_database_get_data(MicrofeedDatabase* database, const void* key, size_t key_size, void** data, size_t* data_size); 00052 MicrofeedDatabaseIterator* microfeed_database_iterate(MicrofeedDatabase* database, const void* start_key, size_t start_key_size, int backwards); 00053 void microfeed_database_replace_data(MicrofeedDatabase* database, const void* key, size_t key_size, const void* data, size_t data_size); 00054 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); 00055 void microfeed_database_remove_data(MicrofeedDatabase* database, const void* key, const size_t key_size); 00056 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); 00057 00058 MicrofeedDatabase* microfeed_database_index_get_database(MicrofeedDatabaseIndex* database_index); 00059 const char* microfeed_database_index_get_name(MicrofeedDatabaseIndex* database_index); 00060 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); 00061 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); 00062 MicrofeedDatabaseIterator* microfeed_database_index_iterate(MicrofeedDatabaseIndex* database_index, const void* start_key, const size_t start_key_size, int backwards); 00063 void microfeed_database_index_remove_data(MicrofeedDatabaseIndex* database_index, const void* key, size_t key_size); 00064 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); 00065 00066 void microfeed_database_iterator_free(MicrofeedDatabaseIterator* iterator); 00067 int microfeed_database_iterator_get(MicrofeedDatabaseIterator* iterator, const void** key, size_t* key_size, const void** data, size_t* data_size); 00068 void microfeed_database_iterator_next(MicrofeedDatabaseIterator* iterator); 00069 00072 #endif