00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MICROFEED_STORE_H
00021 #define MICROFEED_STORE_H
00022
00038 typedef struct _MicrofeedStore MicrofeedStore;
00039
00043 typedef struct _MicrofeedStoreIterator MicrofeedStoreIterator;
00044
00049 typedef int (*MicrofeedStoreCompareKeysFunction)(const void* key1, const void* key2);
00050 typedef const void* (*MicrofeedStoreGetKeyFunction)(const void* item);
00051 typedef void (*MicrofeedStoreForeachFunction)(void* data, void* user_data);
00052 typedef int (*MicrofeedStoreCompareDatasFunction)(const void* data1, const void* data2, unsigned int index1, unsigned int index2, void* user_data);
00053 typedef void (*MicrofeedStoreFreeDataFunction)(void* data);
00054
00055 MicrofeedStore* microfeed_store_new_sorted(MicrofeedStoreCompareKeysFunction compare_keys, MicrofeedStoreGetKeyFunction get_key);
00056 MicrofeedStore* microfeed_store_new_unsorted(MicrofeedStoreCompareKeysFunction compare_keys, MicrofeedStoreGetKeyFunction get_key);
00057 void microfeed_store_free(MicrofeedStore* store);
00058
00059 int microfeed_store_is_sorted(MicrofeedStore* store);
00060 void microfeed_store_foreach(MicrofeedStore* store, MicrofeedStoreForeachFunction foreach, void* user_data);
00061 #define microfeed_store_get(s, k, t) ((t*)microfeed_store_get_impl(s, k))
00062 void* microfeed_store_get_impl(MicrofeedStore* store, const void* key);
00063 #define microfeed_store_get_index(s, i, t) ((t*)microfeed_store_get_index_impl(s, i))
00064 void* microfeed_store_get_index_impl(MicrofeedStore* store, unsigned int index);
00065 unsigned int microfeed_store_get_size(MicrofeedStore* store);
00066 int microfeed_store_insert(MicrofeedStore* store, void* data);
00067 #define microfeed_store_replace(s, d, t) ((t*)microfeed_store_replace_impl(s, d))
00068 void* microfeed_store_replace_impl(MicrofeedStore* store, void* data);
00069 int microfeed_store_remove(MicrofeedStore* store, const void* data);
00070 #define microfeed_store_remove_key(s, k, t) ((t*)microfeed_store_remove_key_impl(s, k))
00071 void* microfeed_store_remove_key_impl(MicrofeedStore* store, const void* key);
00072 #define microfeed_store_remove_index(s, i, t) ((t*)microfeed_store_remove_index_impl(s, i))
00073 void* microfeed_store_remove_index_impl(MicrofeedStore* store, unsigned int index);
00074 void microfeed_store_remove_and_free_all(MicrofeedStore* store, MicrofeedStoreFreeDataFunction free_data);
00075 MicrofeedStoreIterator* microfeed_store_iterate(MicrofeedStore* store, const void* start_key);
00076 void microfeed_store_sort(MicrofeedStore* store, MicrofeedStoreCompareDatasFunction compare_datas, void* user_data);
00077
00078 void microfeed_store_iterator_free(MicrofeedStoreIterator* iterator);
00079 void* microfeed_store_iterator_get_impl(MicrofeedStoreIterator* iterator);
00080 #define microfeed_store_iterator_get(i, t) ((t*)microfeed_store_iterator_get_impl(i))
00081 void microfeed_store_iterator_next(MicrofeedStoreIterator* iterator);
00082
00083 int microfeed_store_compare_keys_direct(const void* key1, const void* key2);
00084 const void* microfeed_store_get_key_direct(const void* data);
00085
00091 #endif