static gboolean taxtable_guid_handler (xmlNodePtr node, gpointer taxtable_pdata) { struct taxtable_pdata *pdata = taxtable_pdata; GncGUID *guid; GncTaxTable *table; guid = dom_tree_to_guid(node); g_return_val_if_fail (guid, FALSE); table = gncTaxTableLookup (pdata->book, guid); if (table) { gncTaxTableDestroy (pdata->table); pdata->table = table; gncTaxTableBeginEdit (table); } else { gncTaxTableSetGUID(pdata->table, guid); } g_free(guid); return TRUE; }
static gboolean set_parent_child (xmlNodePtr node, struct taxtable_pdata *pdata, void (*func)(GncTaxTable *, GncTaxTable *)) { GncGUID *guid; GncTaxTable *table; guid = dom_tree_to_guid(node); g_return_val_if_fail (guid, FALSE); table = gncTaxTableLookup (pdata->book, guid); /* Ignore pointers to self */ if (table == pdata->table) { PINFO ("found a self-referential parent/child; ignoring.\n"); return TRUE; } if (!table) { table = gncTaxTableCreate (pdata->book); gncTaxTableBeginEdit (table); gncTaxTableSetGUID (table, guid); gncTaxTableCommitEdit (table); } g_free (guid); g_return_val_if_fail (table, FALSE); func (pdata->table, table); return TRUE; }
static gboolean customer_taxtable_handler (xmlNodePtr node, gpointer cust_pdata) { struct customer_pdata *pdata = cust_pdata; GncGUID *guid; GncTaxTable *taxtable; guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); taxtable = gncTaxTableLookup (pdata->book, guid); if (!taxtable) { taxtable = gncTaxTableCreate (pdata->book); gncTaxTableBeginEdit (taxtable); gncTaxTableSetGUID (taxtable, guid); gncTaxTableCommitEdit (taxtable); } else gncTaxTableDecRef (taxtable); gncCustomerSetTaxTable (pdata->customer, taxtable); g_free(guid); return TRUE; }
static inline gboolean set_taxtable (xmlNodePtr node, struct entry_pdata *pdata, void (*func)(GncEntry *entry, GncTaxTable *taxtable)) { GncGUID *guid; GncTaxTable *taxtable; guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); taxtable = gncTaxTableLookup (pdata->book, guid); if (!taxtable) { taxtable = gncTaxTableCreate (pdata->book); gncTaxTableBeginEdit (taxtable); gncTaxTableSetGUID (taxtable, guid); gncTaxTableCommitEdit (taxtable); } else gncTaxTableDecRef (taxtable); func (pdata->entry, taxtable); g_free(guid); return TRUE; }
static gboolean vendor_taxtable_handler (xmlNodePtr node, gpointer vendor_pdata) { struct vendor_pdata* pdata = static_cast<decltype (pdata)> (vendor_pdata); GncGUID* guid; GncTaxTable* taxtable; guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); taxtable = gncTaxTableLookup (pdata->book, guid); if (!taxtable) { taxtable = gncTaxTableCreate (pdata->book); gncTaxTableBeginEdit (taxtable); gncTaxTableSetGUID (taxtable, guid); gncTaxTableCommitEdit (taxtable); } else gncTaxTableDecRef (taxtable); gncVendorSetTaxTable (pdata->vendor, taxtable); g_free (guid); return TRUE; }