00001 #ifndef MICROFEEDITEM_H
00002 #define MICROFEEDITEM_H
00003
00004 #include <microfeed-common/microfeedstore.h>
00005
00006 #include <sys/types.h>
00007
00026 typedef struct _MicrofeedItem MicrofeedItem;
00027
00031 typedef struct _MicrofeedItemIterator MicrofeedItemIterator;
00032
00033 typedef enum {
00034 MICROFEED_ITEM_STATUS_NONE = 0,
00035 MICROFEED_ITEM_STATUS_ACTIVE = 1 << 0,
00036 MICROFEED_ITEM_STATUS_UNREAD = 1 << 1,
00037 MICROFEED_ITEM_STATUS_MARKED = 1 << 2,
00038 MICROFEED_ITEM_STATUS_SET = 1 << 7
00039 } MicrofeedItemStatus;
00040
00041 #define MICROFEED_ITEM_STATUS_NEW (MICROFEED_ITEM_STATUS_ACTIVE | MICROFEED_ITEM_STATUS_UNREAD)
00042
00043 typedef enum {
00044 MICROFEED_ITEM_PERMISSION_NONE = 0,
00045 MICROFEED_ITEM_PERMISSION_MODIFY = 1 << 0,
00046 MICROFEED_ITEM_PERMISSION_REMOVE = 1 << 1,
00047 MICROFEED_ITEM_PERMISSION_REPLY = 1 << 2
00048 } MicrofeedItemPermission;
00049
00050 MicrofeedItem* microfeed_item_new_temporary(void);
00051 MicrofeedItem* microfeed_item_new(const char* uid, time_t timestamp);
00052 MicrofeedItem* microfeed_item_new_with_status(const char* uid, time_t timestamp, MicrofeedItemStatus status);
00053 void microfeed_item_free(MicrofeedItem* item);
00054 MicrofeedItem* microfeed_item_duplicate(MicrofeedItem* item);
00055
00056 int microfeed_item_demarshal_properties(MicrofeedItem* item, const void* data, size_t size);
00057 const char* microfeed_item_get_uid(MicrofeedItem* item);
00058 time_t microfeed_item_get_timestamp(MicrofeedItem* item);
00059 void microfeed_item_set_timestamp(MicrofeedItem* item, time_t timestamp);
00060 MicrofeedItemStatus microfeed_item_get_status(MicrofeedItem* item);
00061 const char* microfeed_item_get_property(MicrofeedItem* item, const char* key);
00062 MicrofeedItemIterator* microfeed_item_iterate_properties(MicrofeedItem* item, const char* start_key);
00063 void microfeed_item_marshal_properties(MicrofeedItem* item, const void** data_pointer, size_t* size_pointer);
00064 void microfeed_item_set_property(MicrofeedItem* item, const char* key, const char* value);
00065 void microfeed_item_set_property_with_length(MicrofeedItem* item, const char* key, const char* value, size_t value_length);
00066 void microfeed_item_set_property_full(MicrofeedItem* item, const char* key, size_t key_length, const char* value, size_t value_length);
00067 char* microfeed_item_get_properties_as_string(MicrofeedItem* item);
00068 int microfeed_item_set_properties_from_string(MicrofeedItem* item, const char* string);
00069 MicrofeedItemPermission microfeed_item_permission_from_string(const char* string);
00070 char* microfeed_item_permission_to_string(MicrofeedItemPermission item_permission);
00071
00072 void microfeed_item_iterator_free(MicrofeedItemIterator* iterator);
00073 int microfeed_item_iterator_get(MicrofeedItemIterator* iterator, const char** key, const char** value);
00074 void microfeed_item_iterator_next(MicrofeedItemIterator* iterator);
00075
00081 #endif