29#include "gnc-xml-helper.h"
31#include "sixtp-utils.h"
32#include "sixtp-parsers.h"
33#include "sixtp-utils.h"
34#include "sixtp-dom-parsers.h"
35#include "sixtp-dom-generators.h"
38#include "io-gncxml-gen.h"
41static QofLogModule log_module = GNC_MOD_IO;
43const gchar* budget_version_string =
"2.0.0";
46#define gnc_budget_string "gnc:budget"
47#define bgt_id_string "bgt:id"
48#define bgt_name_string "bgt:name"
49#define bgt_description_string "bgt:description"
50#define bgt_num_periods_string "bgt:num-periods"
51#define bgt_recurrence_string "bgt:recurrence"
52#define bgt_slots_string "bgt:slots"
55gnc_budget_dom_tree_create (GncBudget* bgt)
59 ENTER (
"(budget=%p)", bgt);
61 ret = xmlNewNode (NULL, BAD_CAST gnc_budget_string);
62 xmlSetProp (ret, BAD_CAST
"version", BAD_CAST budget_version_string);
65 xmlAddChild (ret, guid_to_dom_tree (bgt_id_string,
66 gnc_budget_get_guid (bgt)));
68 xmlAddChild (ret, text_to_dom_tree (bgt_name_string,
69 gnc_budget_get_name (bgt)));
71 xmlAddChild (ret, text_to_dom_tree (bgt_description_string,
72 gnc_budget_get_description (bgt)));
74 xmlAddChild (ret, guint_to_dom_tree (bgt_num_periods_string,
75 gnc_budget_get_num_periods (bgt)));
77 xmlAddChild (ret, recurrence_to_dom_tree (bgt_recurrence_string,
78 gnc_budget_get_recurrence (bgt)));
80 xmlAddChild (ret, qof_instance_slots_to_dom_tree (bgt_slots_string,
90budget_id_handler (xmlNodePtr node, gpointer bgt)
92 auto guid = dom_tree_to_guid (node);
93 g_return_val_if_fail (guid, FALSE);
94 qof_instance_set_guid (QOF_INSTANCE (bgt), &*guid);
99budget_name_handler (xmlNodePtr node, gpointer bgt)
105budget_description_handler (xmlNodePtr node, gpointer bgt)
111budget_num_periods_handler (xmlNodePtr node, gpointer bgt)
115 if (dom_tree_to_guint (node, &num_periods))
125budget_recurrence_handler (xmlNodePtr node, gpointer bgt)
129 if ((r = dom_tree_to_recurrence (node)) == NULL)
132 gnc_budget_set_recurrence (GNC_BUDGET (bgt), r);
138budget_slots_handler (xmlNodePtr node, gpointer bgt)
140 return dom_tree_create_instance_slots (node, QOF_INSTANCE (bgt));
145 { bgt_id_string, budget_id_handler, 1, 0 },
146 { bgt_name_string, budget_name_handler, 0, 0 },
147 { bgt_description_string, budget_description_handler, 0, 0 },
148 { bgt_num_periods_string, budget_num_periods_handler, 1, 0 },
149 { bgt_recurrence_string, budget_recurrence_handler, 1, 0 },
150 { bgt_slots_string, budget_slots_handler, 0, 0},
155gnc_budget_end_handler (gpointer data_for_children,
156 GSList* data_from_children, GSList* sibling_data,
157 gpointer parent_data, gpointer global_data,
158 gpointer* result,
const gchar* tag)
161 xmlNodePtr tree = (xmlNodePtr)data_for_children;
162 gxpf_data* gdata = (gxpf_data*)global_data;
163 QofBook* book =
static_cast<decltype (book)
> (gdata->bookdata);
177 g_return_val_if_fail (tree, FALSE);
179 bgt = dom_tree_to_budget (tree, book);
184 gdata->cb (tag, gdata->parsedata, bgt);
192dom_tree_to_budget (xmlNodePtr node,
QofBook* book)
197 if (!dom_tree_generic_parse (node, budget_handlers, bgt))
199 PERR (
"failed to parse budget tree");
207gnc_budget_sixtp_parser_create (
void)
209 return sixtp_dom_parser_new (gnc_budget_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.
void gnc_budget_set_num_periods(GncBudget *budget, guint num_periods)
Set/Get the number of periods in the Budget.
GncBudget * gnc_budget_new(QofBook *book)
Creates and initializes a Budget.
void gnc_budget_destroy(GncBudget *budget)
Deletes the given budget object.
void gnc_budget_set_description(GncBudget *budget, const gchar *description)
Set/Get the description of the Budget.
void gnc_budget_set_name(GncBudget *budget, const gchar *name)
Set/Get the name of the Budget.
api for GnuCash version 2 XML-based file format