00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MICROFEEDDATABASE_H
00020 #define MICROFEEDDATABASE_H
00021
00022 #include <sys/types.h>
00023
00040 typedef struct _MicrofeedDatabaseEnvironment MicrofeedDatabaseEnvironment;
00041
00045 typedef struct _MicrofeedDatabase MicrofeedDatabase;
00046
00050 typedef struct _MicrofeedDatabaseIndex MicrofeedDatabaseIndex;
00051
00055 typedef struct _MicrofeedDatabaseIterator MicrofeedDatabaseIterator;
00056
00070 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);
00071
00084 typedef int (*MicrofeedDatabaseCompareFunction)(const void* key1, const size_t key1_size, const void* key2, const size_t key2_size);
00085
00086 MicrofeedDatabaseEnvironment* microfeed_database_environment_new(const char* name, const char* directory);
00087 void microfeed_database_environment_free(MicrofeedDatabaseEnvironment* database_environment);
00088 MicrofeedDatabaseEnvironment* microfeed_database_environment_ref(MicrofeedDatabaseEnvironment* database_environment);
00089 void microfeed_database_environment_unref(MicrofeedDatabaseEnvironment* database_environment);
00090
00091 MicrofeedDatabase* microfeed_database_environment_get_database(MicrofeedDatabaseEnvironment* database_environment, const char* name, MicrofeedDatabaseCompareFunction);
00092 MicrofeedDatabaseIndex* microfeed_database_get_index(MicrofeedDatabase* database, const char* name, MicrofeedDatabaseIndexFunction index_function);
00093
00094 void microfeed_database_free(MicrofeedDatabase* database);
00095 MicrofeedDatabase* microfeed_database_ref(MicrofeedDatabase* database);
00096 void microfeed_database_unref(MicrofeedDatabase* database);
00097
00098 const char* microfeed_database_get_name(MicrofeedDatabase* database);
00099 int microfeed_database_get_data(MicrofeedDatabase* database, const void* key, size_t key_size, void** data, size_t* data_size);
00100 MicrofeedDatabaseIterator* microfeed_database_iterate(MicrofeedDatabase* database, const void* start_key, size_t start_key_size, int backwards);
00101 void microfeed_database_replace_data(MicrofeedDatabase* database, const void* key, size_t key_size, const void* data, size_t data_size);
00102 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);
00103 void microfeed_database_remove_data(MicrofeedDatabase* database, const void* key, const size_t key_size);
00104 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);
00105
00106 MicrofeedDatabase* microfeed_database_index_get_database(MicrofeedDatabaseIndex* database_index);
00107 const char* microfeed_database_index_get_name(MicrofeedDatabaseIndex* database_index);
00108 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);
00109 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);
00110 MicrofeedDatabaseIterator* microfeed_database_index_iterate(MicrofeedDatabaseIndex* database_index, const void* start_key, const size_t start_key_size, int backwards);
00111 void microfeed_database_index_remove_data(MicrofeedDatabaseIndex* database_index, const void* key, size_t key_size);
00112 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);
00113
00114 void microfeed_database_iterator_free(MicrofeedDatabaseIterator* iterator);
00115 int microfeed_database_iterator_get(MicrofeedDatabaseIterator* iterator, const void** key, size_t* key_size, const void** data, size_t* data_size);
00116 void microfeed_database_iterator_next(MicrofeedDatabaseIterator* iterator);
00117
00123 #endif