summaryrefslogtreecommitdiff
path: root/src/analysis/db/misc/rlestr.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-05-08 09:28:58 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-05-08 09:28:58 (GMT)
commit86ba53836168bcc591f532f2419fa290de601572 (patch)
tree91c96614d6f7e3fd75800a52c0166c91c7f8ef31 /src/analysis/db/misc/rlestr.c
parent28e53c2498903090182ebeb128347fcd92896cd9 (diff)
Updated the core functions dealing with SQLite databases.
Diffstat (limited to 'src/analysis/db/misc/rlestr.c')
-rw-r--r--src/analysis/db/misc/rlestr.c101
1 files changed, 40 insertions, 61 deletions
diff --git a/src/analysis/db/misc/rlestr.c b/src/analysis/db/misc/rlestr.c
index 196b934..f26c146 100644
--- a/src/analysis/db/misc/rlestr.c
+++ b/src/analysis/db/misc/rlestr.c
@@ -326,31 +326,42 @@ bool pack_rle_string(const rle_string *str, packed_buffer *pbuf)
/******************************************************************************
* *
-* Paramètres : str = chaîne de caractères aux informations inutiles. *
+* Paramètres : str = chaîne de caractères à compléter. *
* name = désignation personnalisée du champ dans la BD. *
-* values = couples de champs et de valeurs à lier. [OUT] *
-* count = nombre de ces couples. [OUT] *
+* 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 une chaîne de caractères. *
* *
-* Retour : Bilan de l'opération : succès ou non. *
+* Retour : Bilan de l'opération. *
* *
* Remarques : - *
* *
******************************************************************************/
-bool prepare_db_statement_for_rle_string(const rle_string *str, const char *name, bound_value **values, size_t *count)
+bool load_rle_string(rle_string *str, const char *name, const bound_value *values, size_t count)
{
- bound_value *value; /* Valeur à éditer / définir */
+ const bound_value *value; /* Valeur à intégrer */
- *values = (bound_value *)realloc(*values, ++(*count) * sizeof(bound_value));
- value = &(*values)[*count - 1];
+ value = find_bound_value(values, count, name);
+ if (value == NULL) return false;
- value->cname = name;
- value->built_name = false;
- value->type = (get_rle_string(str) != NULL ? SQLITE_TEXT : SQLITE_NULL);
- value->cstring = get_rle_string(str);
- value->delete = SQLITE_STATIC;
+ switch (value->type)
+ {
+ case SQLITE_TEXT:
+ unset_rle_string(str);
+ dup_into_rle_string(str, value->cstring);
+ break;
+
+ case SQLITE_NULL:
+ unset_rle_string(str);
+ break;
+
+ default:
+ return false;
+ break;
+
+ }
return true;
@@ -361,71 +372,39 @@ bool prepare_db_statement_for_rle_string(const rle_string *str, const char *name
* *
* Paramètres : str = chaîne de caractères aux informations inutiles. *
* name = désignation personnalisée du champ dans la BD. *
-* values = tableau d'éléments à compléter. [OUT] *
-* count = nombre de descriptions renseignées. [OUT] *
+* values = couples de champs et de valeurs à lier. [OUT] *
+* count = nombre de ces couples. [OUT] *
* *
-* Description : Décrit les colonnes utiles à une chaîne de caractères. *
+* Description : Constitue les champs destinés à une insertion / modification.*
* *
-* Retour : Bilan de l'opération. *
+* Retour : Bilan de l'opération : succès ou non. *
* *
* Remarques : - *
* *
******************************************************************************/
-bool setup_load_of_rle_string(const rle_string *str, const char *name, bound_value **values, size_t *count)
+bool store_rle_string(const rle_string *str, const char *name, bound_value **values, size_t *count)
{
bound_value *value; /* Valeur à éditer / définir */
- *values = (bound_value *)realloc(*values, ++(*count) * sizeof(bound_value));
+ *values = realloc(*values, ++(*count) * sizeof(bound_value));
+
value = &(*values)[*count - 1];
value->cname = name;
value->built_name = false;
- value->type = SQLITE_NATIVE;
- return true;
+ value->has_value = (str != NULL);
+ if (value->has_value)
+ value->type = (get_rle_string(str) != NULL ? SQLITE_TEXT : SQLITE_NULL);
+ else
+ value->type = SQLITE_NATIVE;
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : str = chaîne de caractères à compléter. *
-* name = désignation personnalisée du champ dans la BD. *
-* values = tableau d'éléments à consulter. *
-* count = nombre de descriptions renseignées. *
-* *
-* Description : Charge les valeurs utiles pour une chaîne de caractères. *
-* *
-* Retour : Bilan de l'opération. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool load_rle_string(rle_string *str, const char *name, const bound_value *values, size_t count)
-{
- const bound_value *value; /* Valeur à intégrer */
-
- value = find_bound_value(values, count, name);
- if (value == NULL) return false;
-
- switch (value->type)
+ if (value->has_value)
{
- case SQLITE_TEXT:
- unset_rle_string(str);
- dup_into_rle_string(str, value->cstring);
- break;
-
- case SQLITE_NULL:
- unset_rle_string(str);
- break;
-
- default:
- return false;
- break;
-
+ value->cstring = get_rle_string(str);
+ value->delete = SQLITE_STATIC;
}
return true;