31 #include "gnc-lot-p.h" 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" 46 static QofLogModule log_module = GNC_MOD_IO;
48 const 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" 56 gnc_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,
82 lot_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);
95 lot_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 },
117 gnc_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);
155 dom_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);
181 gnc_lot_sixtp_parser_create (
void)
183 return sixtp_dom_parser_new (gnc_lot_end_handler, NULL, NULL);
#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
#define LEAVE(format, args...)
Print a function exit debugging message.