summaryrefslogtreecommitdiff
path: root/src/administration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/administration.cpp')
-rw-r--r--src/administration.cpp119
1 files changed, 58 insertions, 61 deletions
diff --git a/src/administration.cpp b/src/administration.cpp
index a3d3c2f..9790281 100644
--- a/src/administration.cpp
+++ b/src/administration.cpp
@@ -14,13 +14,10 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#define _CRT_SECURE_NO_WARNINGS
-
-#include <stdlib.h>
#include <assert.h>
#include <time.h>
-#include <stdio.h>
+#include "memops.hpp"
#include "logger.hpp"
#include "strops.hpp"
#include "administration.hpp"
@@ -59,11 +56,11 @@ static void create_default_tax_rates()
{
#define ADD_BRACKET(_country, _rate, _code)\
{\
- tax_rate* tb = (tax_rate*)malloc(sizeof(tax_rate));\
+ tax_rate* tb = (tax_rate*)memops::alloc(sizeof(tax_rate));\
strops::format(tb->id, sizeof(tb->id), "T/%d", create_id());\
- memcpy(tb->country_code, _country, sizeof(tb->country_code));\
+ memops::copy(tb->country_code, _country, sizeof(tb->country_code));\
tb->rate = _rate;\
- memcpy(tb->category_code, _code, sizeof(tb->category_code));\
+ memops::copy(tb->category_code, _code, sizeof(tb->category_code));\
list_append(&g_administration.tax_rates, tb);\
g_administration.next_id++;\
if (taxrate_changed_event_callback) taxrate_changed_event_callback(tb);\
@@ -222,10 +219,10 @@ static void create_default_cost_centers()
{
#define ADD_COSTCENTER(_description, _code)\
{\
- cost_center* tb = (cost_center*)malloc(sizeof(cost_center));\
+ cost_center* tb = (cost_center*)memops::alloc(sizeof(cost_center));\
strops::format(tb->id, sizeof(tb->id), "E/%d", create_id());\
- memcpy(tb->description, _description, sizeof(tb->description));\
- memcpy(tb->code, _code, sizeof(tb->code));\
+ memops::copy(tb->description, _description, sizeof(tb->description));\
+ memops::copy(tb->code, _code, sizeof(tb->code));\
list_append(&g_administration.cost_centers, tb);\
g_administration.next_id++;\
if (costcenter_changed_event_callback) costcenter_changed_event_callback(tb);\
@@ -314,7 +311,7 @@ static void administration_destroy_list(list_t *list)
list_iterator_start(list);
while (list_iterator_hasnext(list)) {
void* c = (void *)list_iterator_next(list);
- free(c);
+ memops::unalloc(c);
}
list_iterator_stop(list);
list_destroy(list);
@@ -487,7 +484,7 @@ void administration::create_income_statement(income_statement* statement)
u32 invoice_count = administration::invoice_count();
if (invoice_count == 0) return;
- invoice* invoice_buffer = (invoice*)malloc(sizeof(invoice)*invoice_count);
+ invoice* invoice_buffer = (invoice*)memops::alloc(sizeof(invoice)*invoice_count);
invoice_count = administration::invoice_get_all(invoice_buffer);
// Find oldest and youngest invoice.
@@ -531,12 +528,12 @@ void administration::create_income_statement(income_statement* statement)
strops::format(quarter.quarter_str, MAX_LEN_SHORT_DESC, "%dQ%d", quarter.quarter+1, quarter.year);
project_count = administration::project_count();
- project* project_buffer = (project*)malloc(sizeof(project)*project_count);
+ project* project_buffer = (project*)memops::alloc(sizeof(project)*project_count);
project_count = administration::project_get_all(project_buffer);
assert(project_count <= MAX_LEN_QUARTERLY_REPORT_PROJECTS);
costcenter_count = administration::cost_center_count();
- cost_center* costcenter_buffer = (cost_center*)malloc(sizeof(cost_center)*costcenter_count);
+ cost_center* costcenter_buffer = (cost_center*)memops::alloc(sizeof(cost_center)*costcenter_count);
costcenter_count = administration::cost_center_get_all(costcenter_buffer);
assert(costcenter_count <= MAX_LEN_PROJECT_REPORT_COSTCENTERS);
@@ -565,8 +562,8 @@ void administration::create_income_statement(income_statement* statement)
statement->quarters[statement->quarter_count++] = quarter;
- free(costcenter_buffer);
- free(project_buffer);
+ memops::unalloc(costcenter_buffer);
+ memops::unalloc(project_buffer);
}
// Fill quarters.
@@ -665,7 +662,7 @@ void administration::create_income_statement(income_statement* statement)
//administration_debug_print_income_statement(statement);
- free(invoice_buffer);
+ memops::unalloc(invoice_buffer);
logger::info("Created income statement in %.3fms.", STOPWATCH_TIME);
}
@@ -714,10 +711,10 @@ a_err administration::contact_import(contact data)
return A_ERR_SUCCESS;
}
- contact* new_contact = (contact*)malloc(sizeof(contact));
+ contact* new_contact = (contact*)memops::alloc(sizeof(contact));
if (!new_contact) return A_ERR_GENERIC;
- memcpy((void*)new_contact, (void*)&data, sizeof(contact));
+ memops::copy((void*)new_contact, (void*)&data, sizeof(contact));
if (!list_append(&g_administration.contacts, new_contact)) {
return A_ERR_GENERIC;
}
@@ -730,10 +727,10 @@ a_err administration::contact_add(contact data)
a_err result = administration::contact_is_valid(data);
if (result != A_ERR_SUCCESS) return result;
- contact* new_contact = (contact*)malloc(sizeof(contact));
+ contact* new_contact = (contact*)memops::alloc(sizeof(contact));
if (!new_contact) return A_ERR_GENERIC;
- memcpy((void*)new_contact, (void*)&data, sizeof(contact));
+ memops::copy((void*)new_contact, (void*)&data, sizeof(contact));
if (!list_append(&g_administration.contacts, new_contact)) {
return A_ERR_GENERIC;
}
@@ -756,7 +753,7 @@ a_err administration::contact_update(contact data)
contact* c = (contact *)list_iterator_next(&g_administration.contacts);
if (strcmp(c->id, data.id) == 0) {
- memcpy(c, &data, sizeof(data));
+ memops::copy(c, &data, sizeof(data));
if (contact_changed_event_callback) contact_changed_event_callback(c);
if (data_changed_event_callback) data_changed_event_callback();
@@ -782,7 +779,7 @@ a_err administration::contact_remove(contact data)
if (data_deleted_event_callback) data_deleted_event_callback(c->id);
- free(c);
+ memops::unalloc(c);
return A_ERR_SUCCESS;
}
}
@@ -1013,10 +1010,10 @@ a_err administration::project_import(project data)
a_err result = administration::project_is_valid(data);
if (result != A_ERR_SUCCESS) return result;
- project* new_project = (project*)malloc(sizeof(project));
+ project* new_project = (project*)memops::alloc(sizeof(project));
if (!new_project) return A_ERR_GENERIC;
- memcpy((void*)new_project, (void*)&data, sizeof(project));
+ memops::copy((void*)new_project, (void*)&data, sizeof(project));
if (!list_append(&g_administration.projects, new_project)) {
return A_ERR_GENERIC;
}
@@ -1029,10 +1026,10 @@ a_err administration::project_add(project data)
a_err result = administration::project_is_valid(data);
if (result != A_ERR_SUCCESS) return result;
- project* new_project = (project*)malloc(sizeof(project));
+ project* new_project = (project*)memops::alloc(sizeof(project));
if (!new_project) return A_ERR_GENERIC;
- memcpy((void*)new_project, (void*)&data, sizeof(project));
+ memops::copy((void*)new_project, (void*)&data, sizeof(project));
if (!list_append(&g_administration.projects, new_project)) {
return A_ERR_GENERIC;
@@ -1056,7 +1053,7 @@ a_err administration::project_update(project data)
project* c = (project *)list_iterator_next(&g_administration.projects);
if (strcmp(c->id, data.id) == 0) {
- memcpy(c, &data, sizeof(data));
+ memops::copy(c, &data, sizeof(data));
list_iterator_stop(&g_administration.projects);
if (project_changed_event_callback) project_changed_event_callback(c);
@@ -1082,7 +1079,7 @@ a_err administration::project_remove(project data)
if (data_deleted_event_callback) data_deleted_event_callback(c->id);
- free(c);
+ memops::unalloc(c);
return A_ERR_SUCCESS;
}
}
@@ -1163,10 +1160,10 @@ u32 administration::tax_rate_count()
a_err administration::tax_rate_import(tax_rate data)
{
- tax_rate* tb = (tax_rate*)malloc(sizeof(tax_rate));
+ tax_rate* tb = (tax_rate*)memops::alloc(sizeof(tax_rate));
if (!tb) return A_ERR_GENERIC;
- memcpy((void*)tb, (void*)&data, sizeof(tax_rate));
+ memops::copy((void*)tb, (void*)&data, sizeof(tax_rate));
if (!list_append(&g_administration.tax_rates, tb)) {
return A_ERR_GENERIC;
}
@@ -1178,10 +1175,10 @@ a_err administration::tax_rate_import(tax_rate data)
a_err administration::tax_rate_add(tax_rate data)
{
- tax_rate* tb = (tax_rate*)malloc(sizeof(tax_rate));
+ tax_rate* tb = (tax_rate*)memops::alloc(sizeof(tax_rate));
if (!tb) return A_ERR_GENERIC;
- memcpy((void*)tb, (void*)&data, sizeof(tax_rate));
+ memops::copy((void*)tb, (void*)&data, sizeof(tax_rate));
if (!list_append(&g_administration.tax_rates, tb)) {
return A_ERR_GENERIC;
}
@@ -1247,7 +1244,7 @@ a_err administration::tax_rate_update(tax_rate data)
tax_rate* c = (tax_rate *)list_iterator_next(&g_administration.tax_rates);
if (strcmp(c->id, data.id) == 0) {
- memcpy(c, &data, sizeof(data));
+ memops::copy(c, &data, sizeof(data));
list_iterator_stop(&g_administration.tax_rates);
if (taxrate_changed_event_callback) taxrate_changed_event_callback(c);
@@ -1345,10 +1342,10 @@ a_err administration::cost_center_import(cost_center data)
a_err result = administration::cost_center_is_valid(data);
if (result != A_ERR_SUCCESS) return result;
- cost_center* tb = (cost_center*)malloc(sizeof(cost_center));
+ cost_center* tb = (cost_center*)memops::alloc(sizeof(cost_center));
if (!tb) return A_ERR_GENERIC;
- memcpy(tb, &data, sizeof(cost_center));
+ memops::copy(tb, &data, sizeof(cost_center));
if (!list_append(&g_administration.cost_centers, tb)) {
return A_ERR_GENERIC;
}
@@ -1360,10 +1357,10 @@ a_err administration::cost_center_add(cost_center data)
a_err result = administration::cost_center_is_valid(data);
if (result != A_ERR_SUCCESS) return result;
- cost_center* tb = (cost_center*)malloc(sizeof(cost_center));
+ cost_center* tb = (cost_center*)memops::alloc(sizeof(cost_center));
if (!tb) return A_ERR_GENERIC;
- memcpy((void*)tb, (void*)&data, sizeof(cost_center));
+ memops::copy((void*)tb, (void*)&data, sizeof(cost_center));
if (!list_append(&g_administration.cost_centers, tb)) {
return A_ERR_GENERIC;
}
@@ -1386,7 +1383,7 @@ a_err administration::cost_center_update(cost_center data)
cost_center* c = (cost_center *)list_iterator_next(&g_administration.cost_centers);
if (strcmp(c->id, data.id) == 0) {
- memcpy(c, &data, sizeof(data));
+ memops::copy(c, &data, sizeof(data));
list_iterator_stop(&g_administration.cost_centers);
if (costcenter_changed_event_callback) costcenter_changed_event_callback(c);
@@ -1532,7 +1529,7 @@ a_err administration::invoice_remove(invoice* inv)
if (inv->is_outgoing) g_administration.invoice_count--;
else g_administration.expense_count--;
- free(c);
+ memops::unalloc(c);
return A_ERR_SUCCESS;
}
}
@@ -1542,13 +1539,13 @@ a_err administration::invoice_remove(invoice* inv)
static void invoice_set_addressee(invoice* inv, contact contact)
{
- memcpy(&inv->addressee.name, &contact.name, sizeof(inv->addressee.name));
- memcpy(&inv->addressee.address.address1, &contact.address.address1, sizeof(inv->addressee.address.address1));
- memcpy(&inv->addressee.address.address2, &contact.address.address2, sizeof(inv->addressee.address.address2));
- memcpy(&inv->addressee.address.city, &contact.address.city, sizeof(inv->addressee.address.city));
- memcpy(&inv->addressee.address.postal, &contact.address.postal, sizeof(inv->addressee.address.postal));
- memcpy(&inv->addressee.address.region, &contact.address.region, sizeof(inv->addressee.address.region));
- memcpy(&inv->addressee.address.country_code, &contact.address.country_code, sizeof(inv->addressee.address.country_code));
+ memops::copy(&inv->addressee.name, &contact.name, sizeof(inv->addressee.name));
+ memops::copy(&inv->addressee.address.address1, &contact.address.address1, sizeof(inv->addressee.address.address1));
+ memops::copy(&inv->addressee.address.address2, &contact.address.address2, sizeof(inv->addressee.address.address2));
+ memops::copy(&inv->addressee.address.city, &contact.address.city, sizeof(inv->addressee.address.city));
+ memops::copy(&inv->addressee.address.postal, &contact.address.postal, sizeof(inv->addressee.address.postal));
+ memops::copy(&inv->addressee.address.region, &contact.address.region, sizeof(inv->addressee.address.region));
+ memops::copy(&inv->addressee.address.country_code, &contact.address.country_code, sizeof(inv->addressee.address.country_code));
}
a_err administration::invoice_update(invoice* inv)
@@ -1565,7 +1562,7 @@ a_err administration::invoice_update(invoice* inv)
if (strcmp(c->id, inv->id) == 0)
{
- memcpy(c, inv, sizeof(invoice));
+ memops::copy(c, inv, sizeof(invoice));
list_iterator_stop(&g_administration.invoices);
if (invoice_changed_event_callback) invoice_changed_event_callback(c);
@@ -1591,10 +1588,10 @@ a_err administration::invoice_import(invoice* inv)
inv->is_outgoing = strcmp(inv->supplier.id, MY_COMPANY_ID) == 0;
invoice copy = administration::invoice_create_copy(inv); // Create copy to make copy of billing item list.
- invoice* new_inv = (invoice*)malloc(sizeof(invoice));
+ invoice* new_inv = (invoice*)memops::alloc(sizeof(invoice));
if (!new_inv) return A_ERR_GENERIC;
- memcpy(new_inv, &copy, sizeof(invoice));
+ memops::copy(new_inv, &copy, sizeof(invoice));
if (!list_append(&g_administration.invoices, new_inv)) {
return A_ERR_GENERIC;
@@ -1622,10 +1619,10 @@ a_err administration::invoice_add(invoice* inv)
strops::copy(inv->payment_means.payer_bank_account, inv->customer.bank_account, sizeof(inv->payment_means.payer_bank_account));
invoice copy = administration::invoice_create_copy(inv); // Create copy to make copy of billing item list.
- invoice* new_inv = (invoice*)malloc(sizeof(invoice));
+ invoice* new_inv = (invoice*)memops::alloc(sizeof(invoice));
if (!new_inv) return A_ERR_GENERIC;
- memcpy(new_inv, &copy, sizeof(invoice));
+ memops::copy(new_inv, &copy, sizeof(invoice));
if (!list_append(&g_administration.invoices, new_inv)) {
return A_ERR_GENERIC;
@@ -1648,15 +1645,15 @@ invoice administration::invoice_create_copy(invoice* inv)
invoice new_inv = administration::invoice_create_empty();
list_t billing_items = new_inv.billing_items;
- memcpy((void*)&new_inv, (void*)inv, sizeof(invoice));
+ memops::copy((void*)&new_inv, (void*)inv, sizeof(invoice));
new_inv.billing_items = billing_items;
list_iterator_start(&inv->billing_items);
while (list_iterator_hasnext(&inv->billing_items)) {
billing_item* c = (billing_item *)list_iterator_next(&inv->billing_items);
- billing_item* item_copy = (billing_item*)malloc(sizeof(billing_item));
- memcpy(item_copy, c, sizeof(billing_item));
+ billing_item* item_copy = (billing_item*)memops::alloc(sizeof(billing_item));
+ memops::copy(item_copy, c, sizeof(billing_item));
list_append(&new_inv.billing_items, item_copy);
}
list_iterator_stop(&inv->billing_items);
@@ -1886,7 +1883,7 @@ a_err administration::billing_item_remove_from_invoice(invoice* invoice, billing
if (strcmp(c->id, item.id) == 0) {
list_iterator_stop(&invoice->billing_items);
if (list_delete(&invoice->billing_items, c) != 0) return A_ERR_GENERIC;
- free(c);
+ memops::unalloc(c);
return A_ERR_SUCCESS;
}
}
@@ -1902,7 +1899,7 @@ a_err administration::billing_item_update_in_invoice(invoice* invoice, billing_i
billing_item* c = (billing_item *)list_iterator_next(&invoice->billing_items);
if (strcmp(c->id, item.id) == 0) {
- memcpy(c, &item, sizeof(billing_item));
+ memops::copy(c, &item, sizeof(billing_item));
list_iterator_stop(&invoice->billing_items);
administration_recalculate_billing_item_totals(c);
@@ -1928,10 +1925,10 @@ a_err administration::billing_item_import_to_invoice(invoice* invoice, billing_i
{
if (administration::billing_item_count(invoice) >= MAX_BILLING_ITEMS) return A_ERR_MAX_ITEMS_REACHED;
- billing_item* tb = (billing_item*)malloc(sizeof(billing_item));
+ billing_item* tb = (billing_item*)memops::alloc(sizeof(billing_item));
if (!tb) return A_ERR_GENERIC;
- memcpy(tb, &item, sizeof(billing_item));
+ memops::copy(tb, &item, sizeof(billing_item));
administration_recalculate_billing_item_totals(tb);
if (!list_append(&invoice->billing_items, tb)) {
@@ -1946,10 +1943,10 @@ a_err administration::billing_item_add_to_invoice(invoice* invoice, billing_item
{
if (administration::billing_item_count(invoice) >= MAX_BILLING_ITEMS) return A_ERR_MAX_ITEMS_REACHED;
- billing_item* tb = (billing_item*)malloc(sizeof(billing_item));
+ billing_item* tb = (billing_item*)memops::alloc(sizeof(billing_item));
if (!tb) return A_ERR_GENERIC;
- memcpy(tb, &item, sizeof(billing_item));
+ memops::copy(tb, &item, sizeof(billing_item));
strops::format(tb->id, sizeof(tb->id), "B/%d", create_id());
strops::copy(tb->currency, invoice->currency, MAX_LEN_CURRENCY); // Set billing item currency to invoice currency.