summaryrefslogtreecommitdiff
path: root/src/glibext/gbinarycursor.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-07-16 14:31:40 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-07-16 14:31:40 (GMT)
commite0d03e3eddb9d240cc21ac1b7a7ade915fd17942 (patch)
tree9543a9d1330262239f3943b8459bde1429a35dbb /src/glibext/gbinarycursor.c
parent7a009c76657478c9270acec0c2b236523bfd68eb (diff)
Updated the move entry from database items.
Diffstat (limited to 'src/glibext/gbinarycursor.c')
-rw-r--r--src/glibext/gbinarycursor.c257
1 files changed, 257 insertions, 0 deletions
diff --git a/src/glibext/gbinarycursor.c b/src/glibext/gbinarycursor.c
index c614058..0c2a197 100644
--- a/src/glibext/gbinarycursor.c
+++ b/src/glibext/gbinarycursor.c
@@ -28,6 +28,9 @@
+/* ----------------------- FONCTIONNALITES D'UN SUIVI DE BASE ----------------------- */
+
+
/* Suivi de positions dans un panneau de chargement (instance) */
struct _GBinaryCursor
{
@@ -57,12 +60,45 @@ static void g_binary_cursor_dispose(GBinaryCursor *);
/* Procède à la libération totale de la mémoire. */
static void g_binary_cursor_finalize(GBinaryCursor *);
+/* Réalise la copie d'un suivi d'emplacements. */
+static GLineCursor *g_binary_cursor_duplicate(const GBinaryCursor *);
+
/* Compare deux suivis d'emplacements. */
static int g_binary_cursor_compare(const GBinaryCursor *, const GBinaryCursor *);
/* Détermine si un suivi d'emplacement est valide ou non. */
static bool g_binary_cursor_is_valid(const GBinaryCursor *);
+/* Construit une étiquette de représentation d'un suivi. */
+static char *g_binary_cursor_build_label(const GBinaryCursor *);
+
+
+
+/* ---------------------- ENCADREMENT DES TRANSFERTS DE DONEES ---------------------- */
+
+
+/* Exporte la définition d'un emplacement dans un flux réseau. */
+static bool g_binary_cursor_serialize(const GBinaryCursor *, packed_buffer *);
+
+/* Importe la définition d'un emplacement depuis un flux réseau. */
+static bool g_binary_cursor_unserialize(GBinaryCursor *, packed_buffer *);
+
+
+
+/* ------------------------- LIENS AVEC UNE BASE DE DONNEES ------------------------- */
+
+
+/* Charge les valeurs utiles pour une localisation. */
+static bool g_binary_cursor_load(GBinaryCursor *, const char *, const bound_value *, size_t);
+
+/* Constitue les champs destinés à une insertion / modification. */
+static bool g_binary_cursor_prepare_db_statement(const GBinaryCursor *, const char *, bound_value **, size_t *);
+
+
+
+/* ---------------------------------------------------------------------------------- */
+/* FONCTIONNALITES D'UN SUIVI DE BASE */
+/* ---------------------------------------------------------------------------------- */
/* Détermine le type du gestionnaire de largeurs associées aux lignes. */
@@ -93,8 +129,18 @@ static void g_binary_cursor_class_init(GBinaryCursorClass *class)
line = G_LINE_CURSOR_CLASS(class);
+ line->duplicate = (duplicate_cursor_fc)g_binary_cursor_duplicate;
line->compare = (compare_cursor_fc)g_binary_cursor_compare;
line->is_valid = (is_cursor_valid_fc)g_binary_cursor_is_valid;
+ line->build_label = (build_cursor_label_fc)g_binary_cursor_build_label;
+
+ line->serialize = (serialize_cursor_fc)g_binary_cursor_serialize;
+ line->unserialize = (unserialize_cursor_fc)g_binary_cursor_unserialize;
+
+ line->create_db = (create_cursor_db_table_fc)g_binary_cursor_create_db_table;
+ line->setup_load = (setup_cursor_load_fc)g_binary_cursor_setup_load;
+ line->load = (load_cursor_fc)g_binary_cursor_load;
+ line->prepare = (prepare_cursor_db_statement_fc)g_binary_cursor_prepare_db_statement;
}
@@ -181,6 +227,31 @@ GLineCursor *g_binary_cursor_new(void)
/******************************************************************************
* *
+* Paramètres : cursor = suivi d'emplacement à dupliquer. *
+* *
+* Description : Réalise la copie d'un suivi d'emplacements. *
+* *
+* Retour : Nouvelle instance copiée. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static GLineCursor *g_binary_cursor_duplicate(const GBinaryCursor *cursor)
+{
+ GLineCursor *result; /* Instance à retourner */
+
+ result = g_binary_cursor_new();
+
+ g_binary_cursor_update(G_BINARY_CURSOR(cursor), &cursor->addr);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : cursor = premier suivi d'emplacement à comparer. *
* other = second suivi d'emplacement à comparer. *
* *
@@ -228,6 +299,32 @@ static bool g_binary_cursor_is_valid(const GBinaryCursor *cursor)
/******************************************************************************
* *
+* Paramètres : cursor = suivi d'emplacement à consulter. *
+* *
+* Description : Construit une étiquette de représentation d'un suivi. *
+* *
+* Retour : Etiquette à libérer de la mémoire après usage. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_binary_cursor_build_label(const GBinaryCursor *cursor)
+{
+ char *result; /* Etiquette à retourner */
+ VMPA_BUFFER(loc); /* Indication de position */
+
+ vmpa2_to_string(&cursor->addr, MDS_UNDEFINED, loc, NULL);
+
+ result = strdup(loc);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : cursor = suivi de positions à mettre à jour. *
* addr = emplacement dans le binaire visé. *
* *
@@ -264,3 +361,163 @@ void g_binary_cursor_get_info(GBinaryCursor *cursor, vmpa2t *addr)
copy_vmpa(addr, &cursor->addr);
}
+
+
+
+/* ---------------------------------------------------------------------------------- */
+/* ENCADREMENT DES TRANSFERTS DE DONEES */
+/* ---------------------------------------------------------------------------------- */
+
+
+/******************************************************************************
+* *
+* Paramètres : cursor = suivi de positions à sauvegarder. *
+* pbuf = paquet de données où venir inscrire les infos. *
+* *
+* Description : Exporte la définition d'un emplacement dans un flux réseau. *
+* *
+* Retour : Bilan de l'opération. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool g_binary_cursor_serialize(const GBinaryCursor *cursor, packed_buffer *pbuf)
+{
+ bool result; /* Bilan à retourner */
+
+ result = pack_vmpa(&cursor->addr, pbuf);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : cursor = suivi de positions à charger. [OUT] *
+* pbuf = paquet de données où venir inscrire les infos. *
+* *
+* Description : Importe la définition d'un emplacement depuis un flux réseau.*
+* *
+* Retour : Bilan de l'opération. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool g_binary_cursor_unserialize(GBinaryCursor *cursor, packed_buffer *pbuf)
+{
+ bool result; /* Bilan à retourner */
+
+ result = unpack_vmpa(&cursor->addr, pbuf);
+
+ return result;
+
+}
+
+
+
+/* ---------------------------------------------------------------------------------- */
+/* LIENS AVEC UNE BASE DE DONNEES */
+/* ---------------------------------------------------------------------------------- */
+
+
+/******************************************************************************
+* *
+* Paramètres : base = tronc commun pour les champs de la base de données. *
+* *
+* Description : Donne les éléments requis pour la construction d'une table. *
+* *
+* Retour : Partie de requête à insérer dans la requête globale. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+char *g_binary_cursor_create_db_table(const char *base)
+{
+ char *result; /* Requête à retourner */
+
+ result = create_vmpa_db_table(base);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : base = tronc commun pour les champs de la base de données. *
+* values = tableau d'éléments à compléter. [OUT] *
+* count = nombre de descriptions renseignées. [OUT] *
+* *
+* Description : Décrit les colonnes utiles à un chargement de données. *
+* *
+* Retour : Bilan de l'opération. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool g_binary_cursor_setup_load(const char *base, bound_value **values, size_t *count)
+{
+ bool result; /* Bilan à renvoyer */
+
+ result = setup_load_for_vmpa(base, values, count);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : cursor = suivi de positions dont la définition est à définir.*
+* base = tronc commun pour les champs de la base de données. *
+* values = tableau d'éléments à consulter. *
+* count = nombre de descriptions renseignées. *
+* *
+* Description : Charge les valeurs utiles pour une localisation. *
+* *
+* Retour : Bilan de l'opération. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool g_binary_cursor_load(GBinaryCursor *cursor, const char *base, const bound_value *values, size_t count)
+{
+ bool result; /* Bilan à renvoyer */
+
+ result = load_vmpa(&cursor->addr, base, values, count);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : cursor = suivi de positions à traiter. *
+* base = tronc commun pour les champs de la base de données. *
+* values = couples de champs et de valeurs à lier. [OUT] *
+* count = nombre de ces couples. [OUT] *
+* *
+* Description : Constitue les champs destinés à une insertion / modification.*
+* *
+* Retour : Bilan de l'opération : succès ou non. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool g_binary_cursor_prepare_db_statement(const GBinaryCursor *cursor, const char *base, bound_value **values, size_t *count)
+{
+ bool result; /* Bilan à renvoyer */
+
+ result = prepare_vmpa_db_statement(&cursor->addr, base, values, count);
+
+ return result;
+
+}