00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00063 #ifndef KVP_FRAME_H
00064 #define KVP_FRAME_H
00065
00066 #include "qofnumeric.h"
00067 #include "guid.h"
00068 #include "qoftime.h"
00069 #include "qofutil.h"
00070
00071 #define QOF_MOD_KVP "qof-kvp"
00072
00074 typedef struct _KvpFrame KvpFrame;
00075
00078 typedef struct _KvpValue KvpValue;
00079
00087 typedef enum
00088 {
00094 KVP_TYPE_GINT64 = 1,
00100 KVP_TYPE_DOUBLE,
00106 KVP_TYPE_NUMERIC,
00112 KVP_TYPE_STRING,
00118 KVP_TYPE_GUID,
00119 #ifndef QOF_DISABLE_DEPRECATED
00120
00121 KVP_TYPE_TIMESPEC,
00122 #endif
00123
00128 KVP_TYPE_TIME,
00130 KVP_TYPE_BINARY,
00132 KVP_TYPE_GLIST,
00134 KVP_TYPE_FRAME,
00140 KVP_TYPE_BOOLEAN
00141 } KvpValueType;
00142
00148 KvpFrame *
00149 kvp_frame_new (void);
00150
00152 void
00153 kvp_frame_delete (KvpFrame * frame);
00154
00157 KvpFrame *
00158 kvp_frame_copy (const KvpFrame * frame);
00159
00161 gboolean
00162 kvp_frame_is_empty (KvpFrame * frame);
00163
00174 void
00175 kvp_frame_set_gint64 (KvpFrame * frame, const gchar * path, gint64 ival);
00176
00181 void
00182 kvp_frame_set_double (KvpFrame * frame, const gchar * path, gdouble dval);
00183
00188 void
00189 kvp_frame_set_numeric (KvpFrame * frame, const gchar * path,
00190 QofNumeric nval);
00191
00198 void
00199 kvp_frame_set_string (KvpFrame * frame, const gchar * path,
00200 const gchar *str);
00201
00208 void
00209 kvp_frame_set_guid (KvpFrame * frame, const gchar * path,
00210 const GUID * guid);
00211
00218 void
00219 kvp_frame_set_time (KvpFrame * frame, const gchar *path, QofTime *qt);
00220
00225 void
00226 kvp_frame_set_boolean (KvpFrame * frame, const gchar * path, gboolean val);
00227
00234 void
00235 kvp_frame_set_frame (KvpFrame * frame, const gchar * path,
00236 KvpFrame * chld);
00237
00244 void kvp_frame_set_frame_nc (KvpFrame * frame, const gchar * path,
00245 KvpFrame * chld);
00246
00263 KvpFrame *
00264 kvp_frame_set_value (KvpFrame * frame, const gchar * path,
00265 const KvpValue * value);
00266
00281 KvpFrame *
00282 kvp_frame_set_value_nc (KvpFrame * frame, const gchar * path, KvpValue * value);
00283
00292 KvpValue *
00293 kvp_frame_replace_value_nc (KvpFrame * frame, const gchar * slot,
00294 KvpValue * new_value);
00308 void
00309 kvp_frame_add_gint64 (KvpFrame * frame, const gchar * path, gint64 ival);
00310
00318 void
00319 kvp_frame_add_double (KvpFrame * frame, const gchar * path, gdouble dval);
00320
00328 void
00329 kvp_frame_add_numeric (KvpFrame * frame, const gchar * path,
00330 QofNumeric nval);
00331
00339 void
00340 kvp_frame_add_time (KvpFrame * frame, const gchar *path, QofTime *qt);
00341
00350 void kvp_frame_add_string (KvpFrame * frame, const gchar * path,
00351 const gchar * str);
00352
00353 void
00354 kvp_frame_add_boolean (KvpFrame * frame, const gchar * path, gboolean val);
00355
00363 void kvp_frame_add_guid (KvpFrame * frame, const gchar * path,
00364 const GUID * guid);
00365
00373 void kvp_frame_add_frame (KvpFrame * frame, const gchar * path,
00374 KvpFrame * chld);
00382 void kvp_frame_add_frame_nc (KvpFrame * frame, const gchar * path,
00383 KvpFrame * chld);
00384
00394 KvpFrame *
00395 kvp_frame_add_value (KvpFrame * frame, const gchar * path,
00396 KvpValue * value);
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407 KvpFrame *
00408 kvp_frame_add_value_nc (KvpFrame * frame, const gchar * path,
00409 KvpValue * value);
00410
00411
00443 gint64
00444 kvp_frame_get_gint64 (const KvpFrame * frame, const gchar * path);
00445 gdouble
00446 kvp_frame_get_double (const KvpFrame * frame, const gchar * path);
00447 QofNumeric
00448 kvp_frame_get_numeric (const KvpFrame * frame, const gchar * path);
00449 gchar *
00450 kvp_frame_get_string (const KvpFrame * frame, const gchar * path);
00451 GUID *
00452 kvp_frame_get_guid (const KvpFrame * frame, const gchar * path);
00453 gpointer
00454 kvp_frame_get_binary (const KvpFrame * frame, const gchar * path,
00455 guint64 * size_return);
00456
00457 gboolean
00458 kvp_frame_get_boolean (const KvpFrame * frame, const gchar * path);
00459
00460 QofTime *
00461 kvp_frame_get_time (const KvpFrame * frame, const gchar *path);
00462
00463 KvpValue *kvp_frame_get_value (const KvpFrame * frame, const gchar * path);
00464
00473 KvpFrame *kvp_frame_get_frame (const KvpFrame * frame, const gchar * path);
00474
00479 KvpFrame *
00480 kvp_frame_get_frame_path (KvpFrame * frame, const gchar *, ...);
00481
00486 KvpFrame *
00487 kvp_frame_get_frame_gslist (KvpFrame * frame, GSList * key_path);
00488
00500 KvpFrame *kvp_frame_get_frame_slash (KvpFrame * frame, const gchar * path);
00501
00524 KvpValue *
00525 kvp_frame_replace_slot_nc (KvpFrame * frame, const gchar * slot,
00526 KvpValue * new_value);
00527
00528
00535 void kvp_frame_set_slot (KvpFrame * frame,
00536 const gchar * key, const KvpValue * value);
00545 void kvp_frame_set_slot_nc (KvpFrame * frame,
00546 const gchar * key, KvpValue * value);
00547
00553 void kvp_frame_set_slot_path (KvpFrame * frame,
00554 const KvpValue * value,
00555 const gchar * first_key, ...);
00556
00562 void kvp_frame_set_slot_path_gslist (KvpFrame * frame,
00563 const KvpValue * value,
00564 GSList * key_path);
00565
00582 KvpValue *kvp_frame_get_slot (const KvpFrame * frame, const gchar * key);
00583
00587 KvpValue *kvp_frame_get_slot_path (KvpFrame * frame,
00588 const gchar * first_key, ...);
00589
00593 KvpValue *kvp_frame_get_slot_path_gslist (KvpFrame * frame,
00594 GSList * key_path);
00595
00604 gint kvp_glist_compare (const GList * list1, const GList * list2);
00605
00611 GList *kvp_glist_copy (const GList * list);
00612
00618 void kvp_glist_delete (GList * list);
00619
00620
00629 KvpValue *kvp_value_new_gint64 (gint64 value);
00630 KvpValue *kvp_value_new_double (double value);
00631
00632 KvpValue *kvp_value_new_numeric (QofNumeric value);
00633 KvpValue *kvp_value_new_string (const gchar * value);
00634 KvpValue *kvp_value_new_guid (const GUID * guid);
00635 KvpValue *kvp_value_new_time (QofTime *value);
00637 KvpValue *kvp_value_new_boolean (gboolean value);
00638
00639 KvpValue *kvp_value_new_binary (const void *data, guint64 datasize);
00640 KvpValue *kvp_value_new_frame (const KvpFrame * value);
00641
00644 KvpValue *kvp_value_new_glist (const GList * value);
00645
00648 KvpValue *kvp_value_new_binary_nc (void *data, guint64 datasize);
00649
00656 KvpValue *kvp_value_new_glist_nc (GList * lst);
00657
00660 KvpValue *kvp_value_new_frame_nc (KvpFrame * value);
00661
00663 void kvp_value_delete (KvpValue * value);
00664
00666 KvpValue *kvp_value_copy (const KvpValue * value);
00667
00669 KvpFrame *kvp_value_replace_frame_nc (KvpValue * value, KvpFrame * newframe);
00670
00672 GList *kvp_value_replace_glist_nc (KvpValue * value, GList * newlist);
00673
00682 KvpValueType kvp_value_get_type (const KvpValue * value);
00683
00699 gint64 kvp_value_get_gint64 (const KvpValue * value);
00700 gdouble kvp_value_get_double (const KvpValue * value);
00701 QofNumeric kvp_value_get_numeric (const KvpValue * value);
00702
00705 gchar *
00706 kvp_value_get_string (const KvpValue * value);
00707
00710 GUID *
00711 kvp_value_get_guid (const KvpValue * value);
00712
00715 gpointer
00716 kvp_value_get_binary (const KvpValue * value, guint64 * size_return);
00717
00721 GList *
00722 kvp_value_get_glist (const KvpValue * value);
00723
00726 KvpFrame *
00727 kvp_value_get_frame (const KvpValue * value);
00728
00729
00730 gboolean
00731 kvp_value_get_boolean (const KvpValue * value);
00732
00733 QofTime*
00734 kvp_value_get_time (const KvpValue * value);
00735
00739 gint
00740 kvp_value_compare (const KvpValue * va, const KvpValue * vb);
00741
00748 gchar *
00749 kvp_value_to_bare_string (const KvpValue * val);
00750
00756 gchar *
00757 kvp_value_to_string (const KvpValue * val);
00758
00762 gboolean
00763 kvp_value_binary_append (KvpValue * v, gpointer data, guint64 size);
00764
00770 typedef void (*KvpValueForeachCB) (const gchar *key, KvpValue * value, gpointer data);
00771
00776 void
00777 kvp_frame_for_each_slot (KvpFrame * f, KvpValueForeachCB, gpointer data);
00778
00782 #endif