33#include "gnc-xml-helper.h"
35#include "sixtp-utils.h"
36#include "sixtp-parsers.h"
37#include "sixtp-utils.h"
38#include "sixtp-dom-parsers.h"
39#include "sixtp-dom-generators.h"
42#include "io-gncxml-gen.h"
44#include "sixtp-dom-parsers.h"
46static QofLogModule log_module = GNC_MOD_IO;
48const gchar* lot_version_string =
"2.0.0";
51#define gnc_lot_string "gnc:lot"
52#define lot_id_string "lot:id"
53#define lot_slots_string "lot:slots"
56gnc_lot_dom_tree_create (GNCLot* lot)
60 ENTER (
"(lot=%p)", lot);
61 ret = xmlNewNode (NULL, BAD_CAST gnc_lot_string);
62 xmlSetProp (ret, BAD_CAST
"version", BAD_CAST lot_version_string);
64 xmlAddChild (ret, guid_to_dom_tree (lot_id_string, gnc_lot_get_guid (lot)));
66 xmlAddChild (ret, qof_instance_slots_to_dom_tree (lot_slots_string,
82lot_id_handler (xmlNodePtr node, gpointer p)
84 struct lot_pdata* pdata =
static_cast<decltype (pdata)
> (p);
86 ENTER (
"(lot=%p)", pdata->lot);
87 auto guid = dom_tree_to_guid (node);
88 gnc_lot_set_guid (pdata->lot, *guid);
95lot_slots_handler (xmlNodePtr node, gpointer p)
97 struct lot_pdata* pdata =
static_cast<decltype (pdata)
> (p);
100 ENTER (
"(lot=%p)", pdata->lot);
101 success = dom_tree_create_instance_slots (node, QOF_INSTANCE (pdata->lot));
104 g_return_val_if_fail (success, FALSE);
111 { lot_id_string, lot_id_handler, 1, 0 },
112 { lot_slots_string, lot_slots_handler, 0, 0 },
117gnc_lot_end_handler (gpointer data_for_children,
118 GSList* data_from_children, GSList* sibling_data,
119 gpointer parent_data, gpointer global_data,
120 gpointer* result,
const gchar* tag)
123 xmlNodePtr tree = (xmlNodePtr)data_for_children;
124 gxpf_data* gdata = (gxpf_data*)global_data;
125 QofBook* book =
static_cast<decltype (book)
> (gdata->bookdata);
139 g_return_val_if_fail (tree, FALSE);
141 lot = dom_tree_to_lot (tree, book);
142 ENTER (
"(lot=%p)", lot);
145 gdata->cb (tag, gdata->parsedata, lot);
155dom_tree_to_lot (xmlNodePtr node,
QofBook* book)
161 lot = gnc_lot_new (book);
162 ENTER (
"(lot=%p)", lot);
167 successful = dom_tree_generic_parse (node, lot_handlers_v2,
171 PERR (
"failed to parse lot");
172 gnc_lot_destroy (lot);
181gnc_lot_sixtp_parser_create (
void)
183 return sixtp_dom_parser_new (gnc_lot_end_handler, NULL, NULL);
#define LEAVE(format, args...)
Print a function exit debugging message.
#define PERR(format, args...)
Log a serious error.
#define ENTER(format, args...)
Print a function entry debugging message.
api for GnuCash version 2 XML-based file format