00001
00002 #ifndef MICROFEED_STORE_H
00003 #define MICROFEED_STORE_H
00004
00019 typedef struct _MicrofeedStore MicrofeedStore;
00020
00024 typedef struct _MicrofeedStoreIterator MicrofeedStoreIterator;
00025
00030 typedef int (*MicrofeedStoreCompareKeysFunction)(const void* key1, const void* key2);
00031 typedef const void* (*MicrofeedStoreGetKeyFunction)(const void* item);
00032 typedef void (*MicrofeedStoreForeachFunction)(void* data, void* user_data);
00033
00034 MicrofeedStore* microfeed_store_new_sorted(MicrofeedStoreCompareKeysFunction compare_keys, MicrofeedStoreGetKeyFunction get_key);
00035 MicrofeedStore* microfeed_store_new_unsorted(MicrofeedStoreCompareKeysFunction compare_keys, MicrofeedStoreGetKeyFunction get_key);
00036 void microfeed_store_free(MicrofeedStore* store);
00037
00038 void microfeed_store_foreach(MicrofeedStore* store, MicrofeedStoreForeachFunction foreach, void* user_data);
00039 #define microfeed_store_get(s, k, t) ((t*)microfeed_store_get_impl(s, k))
00040 void* microfeed_store_get_impl(MicrofeedStore* store, const void* key);
00041 #define microfeed_store_get_index(s, i, t) ((t*)microfeed_store_index_impl(s, i))
00042 void* microfeed_store_index_impl(MicrofeedStore* store, unsigned int index);
00043 unsigned int microfeed_store_get_size(MicrofeedStore* store);
00044 void microfeed_store_insert(MicrofeedStore* store, void* data);
00045 void* microfeed_store_replace(MicrofeedStore* store, void* data);
00046 int microfeed_store_remove(MicrofeedStore* store, const void* data);
00047 #define microfeed_store_remove_key(s, k, t) ((t*)microfeed_store_remove_key_impl(s, k))
00048 void* microfeed_store_remove_key_impl(MicrofeedStore* store, const void* key);
00049 #define microfeed_store_remove_index(s, i, t) ((t*)microfeed_store_remove_index_impl(s, i))
00050 void* microfeed_store_remove_index_impl(MicrofeedStore* store, unsigned int index);
00051 MicrofeedStoreIterator* microfeed_store_iterate(MicrofeedStore* store, const void* start_key);
00052
00053 void microfeed_store_iterator_free(MicrofeedStoreIterator* iterator);
00054 void* microfeed_store_iterator_get_impl(MicrofeedStoreIterator* iterator);
00055 #define microfeed_store_iterator_get(i, t) ((t*)microfeed_store_iterator_get_impl(i))
00056 void microfeed_store_iterator_next(MicrofeedStoreIterator* iterator);
00057
00058 int microfeed_store_compare_keys_direct(const void* key1, const void* key2);
00059 const void* microfeed_store_get_key_direct(const void* data);
00060
00061
00064 #endif