00001
00002 #ifndef MICROFEED_STORE_H
00003 #define MICROFEED_STORE_H
00004
00020 typedef struct _MicrofeedStore MicrofeedStore;
00021
00025 typedef struct _MicrofeedStoreIterator MicrofeedStoreIterator;
00026
00031 typedef int (*MicrofeedStoreCompareKeysFunction)(const void* key1, const void* key2);
00032 typedef const void* (*MicrofeedStoreGetKeyFunction)(const void* item);
00033 typedef void (*MicrofeedStoreForeachFunction)(void* data, void* user_data);
00034 typedef int (*MicrofeedStoreCompareDatasFunction)(const void* data1, const void* data2, unsigned int index1, unsigned int index2, void* user_data);
00035 typedef void (*MicrofeedStoreFreeDataFunction)(void* data);
00036
00037 MicrofeedStore* microfeed_store_new_sorted(MicrofeedStoreCompareKeysFunction compare_keys, MicrofeedStoreGetKeyFunction get_key);
00038 MicrofeedStore* microfeed_store_new_unsorted(MicrofeedStoreCompareKeysFunction compare_keys, MicrofeedStoreGetKeyFunction get_key);
00039 void microfeed_store_free(MicrofeedStore* store);
00040
00041 int microfeed_store_is_sorted(MicrofeedStore* store);
00042 void microfeed_store_foreach(MicrofeedStore* store, MicrofeedStoreForeachFunction foreach, void* user_data);
00043 #define microfeed_store_get(s, k, t) ((t*)microfeed_store_get_impl(s, k))
00044 void* microfeed_store_get_impl(MicrofeedStore* store, const void* key);
00045 #define microfeed_store_get_index(s, i, t) ((t*)microfeed_store_get_index_impl(s, i))
00046 void* microfeed_store_get_index_impl(MicrofeedStore* store, unsigned int index);
00047 unsigned int microfeed_store_get_size(MicrofeedStore* store);
00048 int microfeed_store_insert(MicrofeedStore* store, void* data);
00049 #define microfeed_store_replace(s, d, t) ((t*)microfeed_store_replace_impl(s, d))
00050 void* microfeed_store_replace_impl(MicrofeedStore* store, void* data);
00051 int microfeed_store_remove(MicrofeedStore* store, const void* data);
00052 #define microfeed_store_remove_key(s, k, t) ((t*)microfeed_store_remove_key_impl(s, k))
00053 void* microfeed_store_remove_key_impl(MicrofeedStore* store, const void* key);
00054 #define microfeed_store_remove_index(s, i, t) ((t*)microfeed_store_remove_index_impl(s, i))
00055 void* microfeed_store_remove_index_impl(MicrofeedStore* store, unsigned int index);
00056 void microfeed_store_remove_and_free_all(MicrofeedStore* store, MicrofeedStoreFreeDataFunction free_data);
00057 MicrofeedStoreIterator* microfeed_store_iterate(MicrofeedStore* store, const void* start_key);
00058 void microfeed_store_sort(MicrofeedStore* store, MicrofeedStoreCompareDatasFunction compare_datas, void* user_data);
00059
00060 void microfeed_store_iterator_free(MicrofeedStoreIterator* iterator);
00061 void* microfeed_store_iterator_get_impl(MicrofeedStoreIterator* iterator);
00062 #define microfeed_store_iterator_get(i, t) ((t*)microfeed_store_iterator_get_impl(i))
00063 void microfeed_store_iterator_next(MicrofeedStoreIterator* iterator);
00064
00065 int microfeed_store_compare_keys_direct(const void* key1, const void* key2);
00066 const void* microfeed_store_get_key_direct(const void* data);
00067
00073 #endif