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