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