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,
00124 KVP_TYPE_TIME,
00126 KVP_TYPE_BINARY,
00128 KVP_TYPE_GLIST,
00130 KVP_TYPE_FRAME,
00136 KVP_TYPE_BOOLEAN
00137 } KvpValueType;
00138
00144 KvpFrame *
00145 kvp_frame_new (void);
00146
00148 void
00149 kvp_frame_delete (KvpFrame * frame);
00150
00153 KvpFrame *
00154 kvp_frame_copy (const KvpFrame * frame);
00155
00157 gboolean
00158 kvp_frame_is_empty (KvpFrame * frame);
00159
00170 void
00171 kvp_frame_set_gint64 (KvpFrame * frame, const gchar * path, gint64 ival);
00172
00177 void
00178 kvp_frame_set_double (KvpFrame * frame, const gchar * path, gdouble dval);
00179
00184 void
00185 kvp_frame_set_numeric (KvpFrame * frame, const gchar * path,
00186 QofNumeric nval);
00187
00194 void
00195 kvp_frame_set_string (KvpFrame * frame, const gchar * path,
00196 const gchar *str);
00197
00204 void
00205 kvp_frame_set_guid (KvpFrame * frame, const gchar * path,
00206 const GUID * guid);
00207
00214 void
00215 kvp_frame_set_time (KvpFrame * frame, const gchar *path, QofTime *qt);
00216
00221 void
00222 kvp_frame_set_boolean (KvpFrame * frame, const gchar * path, gboolean val);
00223
00230 void
00231 kvp_frame_set_frame (KvpFrame * frame, const gchar * path,
00232 KvpFrame * chld);
00233
00240 void kvp_frame_set_frame_nc (KvpFrame * frame, const gchar * path,
00241 KvpFrame * chld);
00242
00259 KvpFrame *
00260 kvp_frame_set_value (KvpFrame * frame, const gchar * path,
00261 const KvpValue * value);
00262
00277 KvpFrame *
00278 kvp_frame_set_value_nc (KvpFrame * frame, const gchar * path, KvpValue * value);
00279
00288 KvpValue *
00289 kvp_frame_replace_value_nc (KvpFrame * frame, const gchar * slot,
00290 KvpValue * new_value);
00304 void
00305 kvp_frame_add_gint64 (KvpFrame * frame, const gchar * path, gint64 ival);
00306
00314 void
00315 kvp_frame_add_double (KvpFrame * frame, const gchar * path, gdouble dval);
00316
00324 void
00325 kvp_frame_add_numeric (KvpFrame * frame, const gchar * path,
00326 QofNumeric nval);
00327
00335 void
00336 kvp_frame_add_time (KvpFrame * frame, const gchar *path, QofTime *qt);
00337
00346 void kvp_frame_add_string (KvpFrame * frame, const gchar * path,
00347 const gchar * str);
00348
00349 void
00350 kvp_frame_add_boolean (KvpFrame * frame, const gchar * path, gboolean val);
00351
00359 void kvp_frame_add_guid (KvpFrame * frame, const gchar * path,
00360 const GUID * guid);
00361
00369 void kvp_frame_add_frame (KvpFrame * frame, const gchar * path,
00370 KvpFrame * chld);
00378 void kvp_frame_add_frame_nc (KvpFrame * frame, const gchar * path,
00379 KvpFrame * chld);
00380
00390 KvpFrame *
00391 kvp_frame_add_value (KvpFrame * frame, const gchar * path,
00392 KvpValue * value);
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403 KvpFrame *
00404 kvp_frame_add_value_nc (KvpFrame * frame, const gchar * path,
00405 KvpValue * value);
00406
00407
00439 gint64
00440 kvp_frame_get_gint64 (const KvpFrame * frame, const gchar * path);
00441 gdouble
00442 kvp_frame_get_double (const KvpFrame * frame, const gchar * path);
00443 QofNumeric
00444 kvp_frame_get_numeric (const KvpFrame * frame, const gchar * path);
00445 gchar *
00446 kvp_frame_get_string (const KvpFrame * frame, const gchar * path);
00447 GUID *
00448 kvp_frame_get_guid (const KvpFrame * frame, const gchar * path);
00449 gpointer
00450 kvp_frame_get_binary (const KvpFrame * frame, const gchar * path,
00451 guint64 * size_return);
00452
00453 gboolean
00454 kvp_frame_get_boolean (const KvpFrame * frame, const gchar * path);
00455
00456 QofTime *
00457 kvp_frame_get_time (const KvpFrame * frame, const gchar *path);
00458
00459 KvpValue *kvp_frame_get_value (const KvpFrame * frame, const gchar * path);
00460
00469 KvpFrame *kvp_frame_get_frame (const KvpFrame * frame, const gchar * path);
00470
00475 KvpFrame *
00476 kvp_frame_get_frame_path (KvpFrame * frame, const gchar *, ...);
00477
00482 KvpFrame *
00483 kvp_frame_get_frame_gslist (KvpFrame * frame, GSList * key_path);
00484
00496 KvpFrame *kvp_frame_get_frame_slash (KvpFrame * frame, const gchar * path);
00497
00520 KvpValue *
00521 kvp_frame_replace_slot_nc (KvpFrame * frame, const gchar * slot,
00522 KvpValue * new_value);
00523
00524
00531 void kvp_frame_set_slot (KvpFrame * frame,
00532 const gchar * key, const KvpValue * value);
00541 void kvp_frame_set_slot_nc (KvpFrame * frame,
00542 const gchar * key, KvpValue * value);
00543
00549 void kvp_frame_set_slot_path (KvpFrame * frame,
00550 const KvpValue * value,
00551 const gchar * first_key, ...);
00552
00558 void kvp_frame_set_slot_path_gslist (KvpFrame * frame,
00559 const KvpValue * value,
00560 GSList * key_path);
00561
00578 KvpValue *kvp_frame_get_slot (const KvpFrame * frame, const gchar * key);
00579
00583 KvpValue *kvp_frame_get_slot_path (KvpFrame * frame,
00584 const gchar * first_key, ...);
00585
00589 KvpValue *kvp_frame_get_slot_path_gslist (KvpFrame * frame,
00590 GSList * key_path);
00591
00600 gint kvp_glist_compare (const GList * list1, const GList * list2);
00601
00607 GList *kvp_glist_copy (const GList * list);
00608
00614 void kvp_glist_delete (GList * list);
00615
00616
00625 KvpValue *kvp_value_new_gint64 (gint64 value);
00626 KvpValue *kvp_value_new_double (double value);
00627
00628 KvpValue *kvp_value_new_numeric (QofNumeric value);
00629 KvpValue *kvp_value_new_string (const gchar * value);
00630 KvpValue *kvp_value_new_guid (const GUID * guid);
00631 KvpValue *kvp_value_new_time (QofTime *value);
00633 KvpValue *kvp_value_new_boolean (gboolean value);
00634
00635 KvpValue *kvp_value_new_binary (const void *data, guint64 datasize);
00636 KvpValue *kvp_value_new_frame (const KvpFrame * value);
00637
00640 KvpValue *kvp_value_new_glist (const GList * value);
00641
00644 KvpValue *kvp_value_new_binary_nc (void *data, guint64 datasize);
00645
00652 KvpValue *kvp_value_new_glist_nc (GList * lst);
00653
00656 KvpValue *kvp_value_new_frame_nc (KvpFrame * value);
00657
00659 void kvp_value_delete (KvpValue * value);
00660
00662 KvpValue *kvp_value_copy (const KvpValue * value);
00663
00665 KvpFrame *kvp_value_replace_frame_nc (KvpValue * value, KvpFrame * newframe);
00666
00668 GList *kvp_value_replace_glist_nc (KvpValue * value, GList * newlist);
00669
00678 KvpValueType kvp_value_get_type (const KvpValue * value);
00679
00695 gint64 kvp_value_get_gint64 (const KvpValue * value);
00696 gdouble kvp_value_get_double (const KvpValue * value);
00697 QofNumeric kvp_value_get_numeric (const KvpValue * value);
00698
00701 gchar *
00702 kvp_value_get_string (const KvpValue * value);
00703
00706 GUID *
00707 kvp_value_get_guid (const KvpValue * value);
00708
00711 gpointer
00712 kvp_value_get_binary (const KvpValue * value, guint64 * size_return);
00713
00717 GList *
00718 kvp_value_get_glist (const KvpValue * value);
00719
00722 KvpFrame *
00723 kvp_value_get_frame (const KvpValue * value);
00724
00725
00726 gboolean
00727 kvp_value_get_boolean (const KvpValue * value);
00728
00729 QofTime*
00730 kvp_value_get_time (const KvpValue * value);
00731
00735 gint
00736 kvp_value_compare (const KvpValue * va, const KvpValue * vb);
00737
00744 gchar *
00745 kvp_value_to_bare_string (const KvpValue * val);
00746
00752 gchar *
00753 kvp_value_to_string (const KvpValue * val);
00754
00758 gboolean
00759 kvp_value_binary_append (KvpValue * v, gpointer data, guint64 size);
00760
00766 typedef void (*KvpValueForeachCB) (const gchar *key, KvpValue * value, gpointer data);
00767
00772 void
00773 kvp_frame_for_each_slot (KvpFrame * f, KvpValueForeachCB, gpointer data);
00774
00778 #endif