static void test_address (void) { QofInstance *ent; GncAddress *address; QofBook *book = qof_book_new (); ent = g_object_new(QOF_TYPE_INSTANCE, "guid", guid_null(), NULL); ent->e_type = "asdf"; /* Test creation/destruction */ { do_test (gncAddressCreate (NULL, NULL) == NULL, "address create NULL"); address = gncAddressCreate (book, ent); do_test (address != NULL, "address create"); gncAddressBeginEdit (address); gncAddressDestroy (address); success ("create/destroy"); } /* Test setting routines */ { address = gncAddressCreate (book, ent); test_string_fcn (address, "Name", gncAddressSetName, gncAddressGetName); test_string_fcn (address, "Addr1", gncAddressSetAddr1, gncAddressGetAddr1); test_string_fcn (address, "Addr2", gncAddressSetAddr2, gncAddressGetAddr2); test_string_fcn (address, "Addr3", gncAddressSetAddr3, gncAddressGetAddr3); test_string_fcn (address, "Addr4", gncAddressSetAddr4, gncAddressGetAddr4); test_string_fcn (address, "Phone", gncAddressSetPhone, gncAddressGetPhone); test_string_fcn (address, "Fax", gncAddressSetFax, gncAddressGetFax); test_string_fcn (address, "Email", gncAddressSetEmail, gncAddressGetEmail); } }
/* Create/Destroy Functions */ GncCustomer *gncCustomerCreate (QofBook *book) { GncCustomer *cust; if (!book) return NULL; cust = g_object_new (GNC_TYPE_CUSTOMER, NULL); qof_instance_init_data (&cust->inst, _GNC_MOD_NAME, book); cust->id = CACHE_INSERT (""); cust->name = CACHE_INSERT (""); cust->notes = CACHE_INSERT (""); cust->addr = gncAddressCreate (book, &cust->inst); cust->taxincluded = GNC_TAXINCLUDED_USEGLOBAL; cust->active = TRUE; cust->jobs = NULL; cust->discount = gnc_numeric_zero(); cust->credit = gnc_numeric_zero(); cust->shipaddr = gncAddressCreate (book, &cust->inst); if (gs_address_event_handler_id == 0) { gs_address_event_handler_id = qof_event_register_handler(listen_for_address_events, NULL); } qof_event_gen (&cust->inst, QOF_EVENT_CREATE, NULL); return cust; }
/* Create/Destroy Functions */ GncEmployee *gncEmployeeCreate (QofBook *book) { GncEmployee *employee; if (!book) return NULL; employee = g_object_new (GNC_TYPE_EMPLOYEE, NULL); qof_instance_init_data (&employee->inst, _GNC_MOD_NAME, book); employee->id = CACHE_INSERT (""); employee->username = CACHE_INSERT (""); employee->language = CACHE_INSERT (""); employee->acl = CACHE_INSERT (""); employee->addr = gncAddressCreate (book, &employee->inst); employee->workday = gnc_numeric_zero(); employee->rate = gnc_numeric_zero(); employee->active = TRUE; if (gs_address_event_handler_id == 0) { gs_address_event_handler_id = qof_event_register_handler(listen_for_address_events, NULL); } qof_event_gen (&employee->inst, QOF_EVENT_CREATE, NULL); return employee; }
template<> void GncSqlColumnTableEntryImpl<CT_ADDRESS>::load (const GncSqlBackend* sql_be, GncSqlRow& row, QofIdTypeConst obj_name, gpointer pObject) const noexcept { const gchar* s; g_return_if_fail (sql_be != NULL); g_return_if_fail (pObject != NULL); auto addr = gncAddressCreate (sql_be->book(), QOF_INSTANCE(pObject)); for (auto const& subtable_row : col_table) { auto buf = std::string{m_col_name} + "_" + subtable_row->m_col_name; try { auto val = row.get_string_at_col (buf.c_str()); auto sub_setter = subtable_row->get_setter(GNC_ID_ADDRESS); set_parameter (addr, val.c_str(), sub_setter, subtable_row->m_gobj_param_name); } catch (std::invalid_argument) { return; } } set_parameter (pObject, addr, reinterpret_cast<AddressSetterFunc>(get_setter(obj_name)), m_gobj_param_name); }
static GncAddress * qofAddressCreate (QofBook *book) { /* The address will get set later by another function */ return gncAddressCreate(book, NULL); }