summaryrefslogtreecommitdiff
path: root/src/analysis/db/misc
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/db/misc')
-rw-r--r--src/analysis/db/misc/rlestr.c101
-rw-r--r--src/analysis/db/misc/rlestr.h9
-rw-r--r--src/analysis/db/misc/timestamp.c69
-rw-r--r--src/analysis/db/misc/timestamp.h9
4 files changed, 67 insertions, 121 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;
diff --git a/src/analysis/db/misc/rlestr.h b/src/analysis/db/misc/rlestr.h
index 7b317b6..eb71582 100644
--- a/src/analysis/db/misc/rlestr.h
+++ b/src/analysis/db/misc/rlestr.h
@@ -94,15 +94,12 @@ bool pack_rle_string(const rle_string *, packed_buffer *);
#define SQLITE_RLESTR_CREATE(n) \
n " TEXT"
-/* Constitue les champs destinés à une insertion / modification. */
-bool prepare_db_statement_for_rle_string(const rle_string *, const char *, bound_value **, size_t *);
-
-/* Décrit les colonnes utiles à une chaîne de caractères. */
-bool setup_load_of_rle_string(const rle_string *, const char *, bound_value **, size_t *);
-
/* Charge les valeurs utiles pour une chaîne de caractères. */
bool load_rle_string(rle_string *, const char *, const bound_value *, size_t);
+/* Constitue les champs destinés à une insertion / modification. */
+bool store_rle_string(const rle_string *, const char *, bound_value **, size_t *);
+
#endif /* _ANALYSIS_DB_MISC_RLESTR_H */
diff --git a/src/analysis/db/misc/timestamp.c b/src/analysis/db/misc/timestamp.c
index 5302c60..1d2fcd9 100644
--- a/src/analysis/db/misc/timestamp.c
+++ b/src/analysis/db/misc/timestamp.c
@@ -166,30 +166,28 @@ bool pack_timestamp(const timestamp_t *timestamp, packed_buffer *pbuf)
/******************************************************************************
* *
-* Paramètres : timestamp = horodatage aux informations inutiles. *
+* Paramètres : timestamp = horodatage à 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 un horodatage. *
* *
-* Retour : Bilan de l'opération : succès ou non. *
+* Retour : Bilan de l'opération. *
* *
* Remarques : - *
* *
******************************************************************************/
-bool prepare_db_statement_for_timestamp(const timestamp_t *timestamp, const char *name, bound_value **values, size_t *count)
+bool load_timestamp(timestamp_t *timestamp, 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;
+ if (value->type != SQLITE_INT64) return false;
- value->cname = name;
- value->built_name = false;
- value->type = SQLITE_INT64;
- value->integer64 = *timestamp;
+ *timestamp = value->integer64;
return true;
@@ -200,58 +198,33 @@ bool prepare_db_statement_for_timestamp(const timestamp_t *timestamp, const char
* *
* Paramètres : timestamp = horodatage 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 à un horodatage. *
+* 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_timestamp(const timestamp_t *timestamp, const char *name, bound_value **values, size_t *count)
+bool store_timestamp(const timestamp_t *timestamp, 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_INT64;
- return true;
-
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : timestamp = horodatage à 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 un horodatage. *
-* *
-* Retour : Bilan de l'opération. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool load_timestamp(timestamp_t *timestamp, 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;
- if (value->type != SQLITE_INT64) return false;
+ value->has_value = (timestamp != NULL);
- *timestamp = value->integer64;
+ if (value->has_value)
+ value->integer64 = *timestamp;
return true;
diff --git a/src/analysis/db/misc/timestamp.h b/src/analysis/db/misc/timestamp.h
index 076a4e0..eba0fa7 100644
--- a/src/analysis/db/misc/timestamp.h
+++ b/src/analysis/db/misc/timestamp.h
@@ -67,15 +67,12 @@ bool pack_timestamp(const timestamp_t *, packed_buffer *);
#define SQLITE_TIMESTAMP_CREATE(n) \
n " INTEGER"
-/* Constitue les champs destinés à une insertion / modification. */
-bool prepare_db_statement_for_timestamp(const timestamp_t *, const char *, bound_value **, size_t *);
-
-/* Décrit les colonnes utiles à un horodatage. */
-bool setup_load_of_timestamp(const timestamp_t *, const char *, bound_value **, size_t *);
-
/* Charge les valeurs utiles pour un horodatage. */
bool load_timestamp(timestamp_t *, const char *, const bound_value *, size_t);
+/* Constitue les champs destinés à une insertion / modification. */
+bool store_timestamp(const timestamp_t *, const char *, bound_value **, size_t *);
+
#endif /* _ANALYSIS_DB_MISC_TIMESTAMP_H */