31 #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"
41 #include "Recurrence.h"
45 const gchar *recurrence_version_string =
"1.0.0";
46 #define recurrence_root "gnc:recurrence"
47 #define recurrence_mult "recurrence:mult"
48 #define recurrence_period_type "recurrence:period_type"
49 #define recurrence_start "recurrence:start"
50 #define recurrence_weekend_adj "recurrence:weekend_adj"
55 recurrence_period_type_handler(xmlNodePtr node, gpointer d)
60 nodeTxt = dom_tree_to_text(node);
61 g_return_val_if_fail(nodeTxt, FALSE);
62 pt = recurrencePeriodTypeFromString(nodeTxt);
69 recurrence_start_date_handler(xmlNodePtr node, gpointer r)
73 d = dom_tree_to_gdate(node);
74 g_return_val_if_fail(d, FALSE);
75 g_return_val_if_fail(g_date_valid(d), FALSE);
82 recurrence_mult_handler(xmlNodePtr node, gpointer r)
84 return dom_tree_to_guint16(node, &((
Recurrence *)r)->mult);
88 recurrence_weekend_adj_handler(xmlNodePtr node, gpointer d)
93 nodeTxt = dom_tree_to_text(node);
94 g_return_val_if_fail(nodeTxt, FALSE);
95 wadj = recurrenceWeekendAdjustFromString(nodeTxt);
103 { recurrence_mult, recurrence_mult_handler, 1, 0 },
104 { recurrence_period_type, recurrence_period_type_handler, 1, 0 },
105 { recurrence_start, recurrence_start_date_handler, 1, 0 },
106 { recurrence_weekend_adj, recurrence_weekend_adj_handler, 0, 0 },
111 dom_tree_to_recurrence(xmlNodePtr node)
118 r->wadj = WEEKEND_ADJ_NONE;
119 successful = dom_tree_generic_parse (node, recurrence_dom_handlers, r);
122 PERR (
"failed to parse recurrence node");
123 xmlElemDump(stdout, NULL, node);
131 recurrence_to_dom_tree(
const gchar *tag,
const Recurrence *r)
138 n = xmlNewNode(NULL, BAD_CAST tag);
139 xmlSetProp(n, BAD_CAST
"version", BAD_CAST recurrence_version_string);
140 xmlAddChild(n, guint_to_dom_tree(recurrence_mult,
141 recurrenceGetMultiplier(r)));
142 pt = recurrenceGetPeriodType(r);
143 xmlAddChild(n, text_to_dom_tree(recurrence_period_type,
144 recurrencePeriodTypeToString(pt)));
145 d = recurrenceGetDate(r);
146 xmlAddChild(n, gdate_to_dom_tree(recurrence_start, &d));
147 wadj = recurrenceGetWeekendAdjust(r);
148 if (wadj != WEEKEND_ADJ_NONE)
156 xmlAddChild(n, text_to_dom_tree(recurrence_weekend_adj,
157 recurrenceWeekendAdjustToString(wadj)));
#define PERR(format, args...)
api for GnuCash version 2 XML-based file format
const gchar * QofLogModule