diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2019-05-08 09:28:58 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2019-05-08 09:28:58 (GMT) |
commit | 86ba53836168bcc591f532f2419fa290de601572 (patch) | |
tree | 91c96614d6f7e3fd75800a52c0166c91c7f8ef31 /src/analysis/db/items/move.c | |
parent | 28e53c2498903090182ebeb128347fcd92896cd9 (diff) |
Updated the core functions dealing with SQLite databases.
Diffstat (limited to 'src/analysis/db/items/move.c')
-rw-r--r-- | src/analysis/db/items/move.c | 80 |
1 files changed, 46 insertions, 34 deletions
diff --git a/src/analysis/db/items/move.c b/src/analysis/db/items/move.c index 6929ec3..286215b 100644 --- a/src/analysis/db/items/move.c +++ b/src/analysis/db/items/move.c @@ -95,12 +95,12 @@ static bool g_db_move_apply(GDbMove *, GLoadedBinary *); /* Annule un déplacement au sein d'une zone de code. */ static bool g_db_move_cancel(GDbMove *, GLoadedBinary *); -/* Constitue les champs destinés à une insertion / modification. */ -static bool g_db_move_prepare_db_statement(const GDbMove *, bound_value **, size_t *); - /* Charge les valeurs utiles pour un déplacement dans du code. */ static bool g_db_move_load(GDbMove *, const bound_value *, size_t); +/* Constitue les champs destinés à une insertion / modification. */ +static bool g_db_move_store(const GDbMove *, bound_value **, size_t *); + /* ---------------------- DEFINITION DE LA COLLECTION ASSOCIEE ---------------------- */ @@ -188,8 +188,8 @@ static void g_db_move_class_init(GDbMoveClass *klass) item->apply = (run_item_fc)g_db_move_apply; item->cancel = (run_item_fc)g_db_move_cancel; - item->prepare_stmt = (prepare_db_statement)g_db_move_prepare_db_statement; item->load = (load_db_item_fc)g_db_move_load; + item->store = (store_db_item_fc)g_db_move_store; } @@ -455,7 +455,7 @@ static bool g_db_move_run(const GDbMove *move, GLineCursor *cursor) if (G_IS_LOADED_PANEL(panel)) { - params = (move_params *)calloc(1, sizeof(move_params)); + params = calloc(1, sizeof(move_params)); params->panel = panel; params->cursor = cursor; @@ -527,63 +527,75 @@ static bool g_db_move_cancel(GDbMove *move, GLoadedBinary *binary) /****************************************************************************** * * -* Paramètres : move = base d'éléments sur laquelle s'appuyer. * -* values = couples de champs et de valeurs à lier. [OUT] * -* count = nombre de ces couples. [OUT] * +* Paramètres : move = bascule d'affichage à charger depuis les réponses. * +* values = tableau d'éléments à consulter. * +* count = nombre de descriptions renseignées. * * * -* Description : Constitue les champs destinés à une insertion / modification.* +* Description : Charge les valeurs utiles pour un déplacement dans du code. * * * -* Retour : Etat du besoin en sauvegarde. * +* Retour : Bilan de l'opération. * * * * Remarques : - * * * ******************************************************************************/ -static bool g_db_move_prepare_db_statement(const GDbMove *move, bound_value **values, size_t *count) +static bool g_db_move_load(GDbMove *move, const bound_value *values, size_t count) { - bool status; /* Bilan d'opération initiale */ + bool result; /* Bilan à faire remonter */ - status = G_DB_ITEM_CLASS(g_db_move_parent_class)->prepare_stmt(G_DB_ITEM(move), values, count); - if (!status) return false; + result = G_DB_ITEM_CLASS(g_db_move_parent_class)->load(G_DB_ITEM(move), values, count); - status = g_line_cursor_prepare_db_statement(move->src, "src", values, count); - if (!status) return false; + if (result) + result = g_line_cursor_load(move->src, "src", values, count); - status = g_line_cursor_prepare_db_statement(move->src, "dest", values, count); - if (!status) return false; + if (result) + result = g_line_cursor_load(move->dest, "dest", values, count); - return true; + return result; } /****************************************************************************** * * -* Paramètres : move = bascule d'affichage à charger depuis les réponses. * -* values = tableau d'éléments à consulter. * -* count = nombre de descriptions renseignées. * +* Paramètres : move = base d'éléments sur laquelle s'appuyer. * +* values = couples de champs et de valeurs à lier. [OUT] * +* count = nombre de ces couples. [OUT] * * * -* Description : Charge les valeurs utiles pour un déplacement dans du code. * +* Description : Constitue les champs destinés à une insertion / modification.* * * -* Retour : Bilan de l'opération. * +* Retour : Etat du besoin en sauvegarde. * * * * Remarques : - * * * ******************************************************************************/ -static bool g_db_move_load(GDbMove *move, const bound_value *values, size_t count) +static bool g_db_move_store(const GDbMove *move, bound_value **values, size_t *count) { - bool result; /* Bilan à faire remonter */ + bool status; /* Bilan d'opération initiale */ - result = G_DB_ITEM_CLASS(g_db_move_parent_class)->load(G_DB_ITEM(move), values, count); + if (move == NULL) + status = G_DB_ITEM_CLASS(g_db_move_parent_class)->store(NULL, values, count); + else + status = G_DB_ITEM_CLASS(g_db_move_parent_class)->store(G_DB_ITEM(move), values, count); - if (result) - result = g_line_cursor_load(move->src, "src", values, count); + if (!status) return false; - if (result) - result = g_line_cursor_load(move->dest, "dest", values, count); + if (move == NULL) + status = g_line_cursor_setup_load(move->src, "src", values, count); + else + status = g_line_cursor_store(move->src, "src", values, count); - return result; + if (!status) return false; + + if (move == NULL) + status = g_line_cursor_setup_load(move->dest, "dest", values, count); + else + status = g_line_cursor_store(move->dest, "dest", values, count); + + if (!status) return false; + + return true; } @@ -783,10 +795,10 @@ static bool g_move_collection_setup_load(GMoveCollection *collec, bound_value ** values, count); if (!status) return false; - if (!g_binary_cursor_setup_load("src", values, count)) + if (!g_binary_cursor_store(NULL, "src", values, count)) return false; - if (!g_binary_cursor_setup_load("dest", values, count)) + if (!g_binary_cursor_store(NULL, "dest", values, count)) return false; return true; |