28 #include "Recurrence.h" 31 #include "gnc-xml-helper.h" 34 #include "sixtp-utils.h" 35 #include "sixtp-parsers.h" 36 #include "sixtp-utils.h" 37 #include "sixtp-dom-parsers.h" 38 #include "sixtp-dom-generators.h" 41 static QofLogModule log_module = GNC_MOD_IO;
43 const gchar* recurrence_version_string =
"1.0.0";
44 #define recurrence_root "gnc:recurrence" 45 #define recurrence_mult "recurrence:mult" 46 #define recurrence_period_type "recurrence:period_type" 47 #define recurrence_start "recurrence:start" 48 #define recurrence_weekend_adj "recurrence:weekend_adj" 53 recurrence_period_type_handler (xmlNodePtr node, gpointer d)
58 nodeTxt = dom_tree_to_text (node);
59 g_return_val_if_fail (nodeTxt, FALSE);
60 pt = recurrencePeriodTypeFromString (nodeTxt);
67 recurrence_start_date_handler (xmlNodePtr node, gpointer r)
71 d = dom_tree_to_gdate (node);
72 g_return_val_if_fail (d, FALSE);
73 g_return_val_if_fail (g_date_valid (d), FALSE);
80 recurrence_mult_handler (xmlNodePtr node, gpointer r)
82 return dom_tree_to_guint16 (node, & ((
Recurrence*)r)->mult);
86 recurrence_weekend_adj_handler (xmlNodePtr node, gpointer d)
91 nodeTxt = dom_tree_to_text (node);
92 g_return_val_if_fail (nodeTxt, FALSE);
93 wadj = recurrenceWeekendAdjustFromString (nodeTxt);
101 { recurrence_mult, recurrence_mult_handler, 1, 0 },
102 { recurrence_period_type, recurrence_period_type_handler, 1, 0 },
103 { recurrence_start, recurrence_start_date_handler, 1, 0 },
104 { recurrence_weekend_adj, recurrence_weekend_adj_handler, 0, 0 },
109 dom_tree_to_recurrence (xmlNodePtr node)
116 r->wadj = WEEKEND_ADJ_NONE;
117 successful = dom_tree_generic_parse (node, recurrence_dom_handlers, r);
120 PERR (
"failed to parse recurrence node");
121 xmlElemDump (stdout, NULL, node);
129 recurrence_to_dom_tree (
const gchar* tag,
const Recurrence* r)
136 n = xmlNewNode (NULL, BAD_CAST tag);
137 xmlSetProp (n, BAD_CAST
"version", BAD_CAST recurrence_version_string);
138 xmlAddChild (n, guint_to_dom_tree (recurrence_mult,
139 recurrenceGetMultiplier (r)));
140 pt = recurrenceGetPeriodType (r);
141 xmlAddChild (n, text_to_dom_tree (recurrence_period_type,
142 recurrencePeriodTypeToString (pt)));
143 d = recurrenceGetDate (r);
144 xmlAddChild (n, gdate_to_dom_tree (recurrence_start, &d));
145 wadj = recurrenceGetWeekendAdjust (r);
146 if (wadj != WEEKEND_ADJ_NONE)
154 xmlAddChild (n, text_to_dom_tree (recurrence_weekend_adj,
155 recurrenceWeekendAdjustToString (wadj)));
#define PERR(format, args...)
Log a serious error.
api for GnuCash version 2 XML-based file format