void gncOwnerCommitEdit (GncOwner *owner) { if (!owner) return; switch (owner->type) { case GNC_OWNER_NONE : case GNC_OWNER_UNDEFINED : break; case GNC_OWNER_CUSTOMER : { gncCustomerCommitEdit(owner->owner.customer); break; } case GNC_OWNER_JOB : { gncJobCommitEdit(owner->owner.job); break; } case GNC_OWNER_VENDOR : { gncVendorCommitEdit(owner->owner.vendor); break; } case GNC_OWNER_EMPLOYEE : { gncEmployeeCommitEdit(owner->owner.employee); break; } } }
static void test_bool_fcn (QofBook *book, const char *message, void (*set) (GncVendor *, gboolean), gboolean (*get) (const GncVendor *)) { GncVendor *vendor = gncVendorCreate (book); gboolean num = get_random_boolean (); do_test (!gncVendorIsDirty (vendor), "test if start dirty"); gncVendorBeginEdit (vendor); set (vendor, FALSE); set (vendor, TRUE); set (vendor, num); /* Vendor record should be dirty */ do_test (gncVendorIsDirty (vendor), "test dirty later"); gncVendorCommitEdit (vendor); /* Vendor record should be not dirty */ /* Skip, because will always fail without a backend. * It's not possible to load a backend in the engine code * without having circular dependencies. */ // do_test (!gncVendorIsDirty (vendor), "test dirty after commit"); do_test (get (vendor) == num, message); gncVendorSetActive (vendor, FALSE); count++; }
static GncVendor* dom_tree_to_vendor (xmlNodePtr node, QofBook* book) { struct vendor_pdata vendor_pdata; gboolean successful; vendor_pdata.vendor = gncVendorCreate (book); vendor_pdata.book = book; gncVendorBeginEdit (vendor_pdata.vendor); successful = dom_tree_generic_parse (node, vendor_handlers_v2, &vendor_pdata); if (successful) gncVendorCommitEdit (vendor_pdata.vendor); else { PERR ("failed to parse vendor tree"); gncVendorDestroy (vendor_pdata.vendor); vendor_pdata.vendor = NULL; } return vendor_pdata.vendor; }