value.h

Go to the documentation of this file.
00001 
00025 #ifndef _PURPLE_VALUE_H_
00026 #define _PURPLE_VALUE_H_
00027 
00028 #include <glib.h>
00029 
00033 typedef enum
00034 {
00035     PURPLE_TYPE_UNKNOWN = 0,  
00036     PURPLE_TYPE_SUBTYPE,      
00037     PURPLE_TYPE_CHAR,         
00038     PURPLE_TYPE_UCHAR,        
00039     PURPLE_TYPE_BOOLEAN,      
00040     PURPLE_TYPE_SHORT,        
00041     PURPLE_TYPE_USHORT,       
00042     PURPLE_TYPE_INT,          
00043     PURPLE_TYPE_UINT,         
00044     PURPLE_TYPE_LONG,         
00045     PURPLE_TYPE_ULONG,        
00046     PURPLE_TYPE_INT64,        
00047     PURPLE_TYPE_UINT64,       
00048     PURPLE_TYPE_STRING,       
00049     PURPLE_TYPE_OBJECT,       
00050     PURPLE_TYPE_POINTER,      
00051     PURPLE_TYPE_ENUM,         
00052     PURPLE_TYPE_BOXED         
00054 } PurpleType;
00055 
00056 
00060 typedef enum
00061 {
00062     PURPLE_SUBTYPE_UNKNOWN = 0,
00063     PURPLE_SUBTYPE_ACCOUNT,
00064     PURPLE_SUBTYPE_BLIST,
00065     PURPLE_SUBTYPE_BLIST_BUDDY,
00066     PURPLE_SUBTYPE_BLIST_GROUP,
00067     PURPLE_SUBTYPE_BLIST_CHAT,
00068     PURPLE_SUBTYPE_BUDDY_ICON,
00069     PURPLE_SUBTYPE_CONNECTION,
00070     PURPLE_SUBTYPE_CONVERSATION,
00071     PURPLE_SUBTYPE_PLUGIN,
00072     PURPLE_SUBTYPE_BLIST_NODE,
00073     PURPLE_SUBTYPE_CIPHER,
00074     PURPLE_SUBTYPE_STATUS,
00075     PURPLE_SUBTYPE_LOG,
00076     PURPLE_SUBTYPE_XFER,
00077     PURPLE_SUBTYPE_SAVEDSTATUS,
00078     PURPLE_SUBTYPE_XMLNODE,
00079     PURPLE_SUBTYPE_USERINFO,
00080     PURPLE_SUBTYPE_STORED_IMAGE
00081 } PurpleSubType;
00082 
00086 typedef struct
00087 {
00088     PurpleType type;
00089     unsigned short flags;
00090 
00091     union
00092     {
00093         char char_data;
00094         unsigned char uchar_data;
00095         gboolean boolean_data;
00096         short short_data;
00097         unsigned short ushort_data;
00098         int int_data;
00099         unsigned int uint_data;
00100         long long_data;
00101         unsigned long ulong_data;
00102         gint64 int64_data;
00103         guint64 uint64_data;
00104         char *string_data;
00105         void *object_data;
00106         void *pointer_data;
00107         int enum_data;
00108         void *boxed_data;
00109 
00110     } data;
00111 
00112     union
00113     {
00114         unsigned int subtype;
00115         char *specific_type;
00116 
00117     } u;
00118 
00119 } PurpleValue;
00120 
00121 #ifdef __cplusplus
00122 extern "C" {
00123 #endif
00124 
00144 PurpleValue *purple_value_new(PurpleType type, ...);
00145 
00166 PurpleValue *purple_value_new_outgoing(PurpleType type, ...);
00167 
00173 void purple_value_destroy(PurpleValue *value);
00174 
00182 PurpleValue *purple_value_dup(const PurpleValue *value);
00183 
00191 PurpleType purple_value_get_type(const PurpleValue *value);
00192 
00203 unsigned int purple_value_get_subtype(const PurpleValue *value);
00204 
00214 const char *purple_value_get_specific_type(const PurpleValue *value);
00215 
00223 gboolean purple_value_is_outgoing(const PurpleValue *value);
00224 
00231 void purple_value_set_char(PurpleValue *value, char data);
00232 
00239 void purple_value_set_uchar(PurpleValue *value, unsigned char data);
00240 
00247 void purple_value_set_boolean(PurpleValue *value, gboolean data);
00248 
00255 void purple_value_set_short(PurpleValue *value, short data);
00256 
00263 void purple_value_set_ushort(PurpleValue *value, unsigned short data);
00264 
00271 void purple_value_set_int(PurpleValue *value, int data);
00272 
00279 void purple_value_set_uint(PurpleValue *value, unsigned int data);
00280 
00287 void purple_value_set_long(PurpleValue *value, long data);
00288 
00295 void purple_value_set_ulong(PurpleValue *value, unsigned long data);
00296 
00303 void purple_value_set_int64(PurpleValue *value, gint64 data);
00304 
00311 void purple_value_set_uint64(PurpleValue *value, guint64 data);
00312 
00319 void purple_value_set_string(PurpleValue *value, const char *data);
00320 
00327 void purple_value_set_object(PurpleValue *value, void *data);
00328 
00335 void purple_value_set_pointer(PurpleValue *value, void *data);
00336 
00343 void purple_value_set_enum(PurpleValue *value, int data);
00344 
00351 void purple_value_set_boxed(PurpleValue *value, void *data);
00352 
00360 char purple_value_get_char(const PurpleValue *value);
00361 
00369 unsigned char purple_value_get_uchar(const PurpleValue *value);
00370 
00378 gboolean purple_value_get_boolean(const PurpleValue *value);
00379 
00387 short purple_value_get_short(const PurpleValue *value);
00388 
00396 unsigned short purple_value_get_ushort(const PurpleValue *value);
00397 
00405 int purple_value_get_int(const PurpleValue *value);
00406 
00414 unsigned int purple_value_get_uint(const PurpleValue *value);
00415 
00423 long purple_value_get_long(const PurpleValue *value);
00424 
00432 unsigned long purple_value_get_ulong(const PurpleValue *value);
00433 
00441 gint64 purple_value_get_int64(const PurpleValue *value);
00442 
00450 guint64 purple_value_get_uint64(const PurpleValue *value);
00451 
00459 const char *purple_value_get_string(const PurpleValue *value);
00460 
00468 void *purple_value_get_object(const PurpleValue *value);
00469 
00477 void *purple_value_get_pointer(const PurpleValue *value);
00478 
00486 int purple_value_get_enum(const PurpleValue *value);
00487 
00495 void *purple_value_get_boxed(const PurpleValue *value);
00496 
00497 #ifdef __cplusplus
00498 }
00499 #endif
00500 
00501 #endif /* _PURPLE_VALUE_H_ */