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