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; + +} | 
