diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-07-16 14:31:40 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-07-16 14:31:40 (GMT) |
commit | e0d03e3eddb9d240cc21ac1b7a7ade915fd17942 (patch) | |
tree | 9543a9d1330262239f3943b8459bde1429a35dbb /src/glibext/gbinarycursor.c | |
parent | 7a009c76657478c9270acec0c2b236523bfd68eb (diff) |
Updated the move entry from database items.
Diffstat (limited to 'src/glibext/gbinarycursor.c')
-rw-r--r-- | src/glibext/gbinarycursor.c | 257 |
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; + +} |