diff options
Diffstat (limited to 'src/glibext')
-rw-r--r-- | src/glibext/Makefile.am | 2 | ||||
-rw-r--r-- | src/glibext/named-int.h | 55 | ||||
-rw-r--r-- | src/glibext/named.c | 108 | ||||
-rw-r--r-- | src/glibext/named.h | 60 |
4 files changed, 225 insertions, 0 deletions
diff --git a/src/glibext/Makefile.am b/src/glibext/Makefile.am index 118ca39..df05de3 100644 --- a/src/glibext/Makefile.am +++ b/src/glibext/Makefile.am @@ -25,6 +25,8 @@ libglibext_la_SOURCES = \ linegen-int.h \ linegen.h linegen.c \ linesegment.h linesegment.c \ + named-int.h \ + named.h named.c \ objhole.h \ proto.h \ seq.h seq.c \ diff --git a/src/glibext/named-int.h b/src/glibext/named-int.h new file mode 100644 index 0000000..4019c3b --- /dev/null +++ b/src/glibext/named-int.h @@ -0,0 +1,55 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * named-int.h - définitions internes propres aux manipulations de composants nommés + * + * Copyright (C) 2020 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +#ifndef _GLIBEXT_NAMED_INT_H +#define _GLIBEXT_NAMED_INT_H + + +#include "named.h" + + + +/* Fournit le désignation associée à un composant nommé. */ +typedef char * (* get_named_widget_name_fc) (const GNamedWidget *, bool); + +/* Fournit le composant associé à un composant nommé. */ +typedef GtkWidget * (* get_named_widget_widget_fc) (const GNamedWidget *); + + +/* Manipulation d'un composant avec ses noms (interface) */ +struct _GNamedWidgetIface +{ + GTypeInterface base_iface; /* A laisser en premier */ + + get_named_widget_name_fc get_name; /* Obtention d'un nom (long ?) */ + get_named_widget_widget_fc get_widget; /* Fourniture du composant */ + +}; + + +/* Redéfinition */ +typedef GNamedWidgetIface GNamedWidgetInterface; + + + +#endif /* _GLIBEXT_NAMED_INT_H */ diff --git a/src/glibext/named.c b/src/glibext/named.c new file mode 100644 index 0000000..b31c58a --- /dev/null +++ b/src/glibext/named.c @@ -0,0 +1,108 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * named.c - manipulation de composants nommés + * + * Copyright (C) 2020 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +#include "named.h" + + +#include "named-int.h" + + + +/* Procède à l'initialisation de l'interface de génération. */ +static void g_named_widget_default_init(GNamedWidgetInterface *); + + + +/* Détermine le type d'une interface pour les composants nommés. */ +G_DEFINE_INTERFACE(GNamedWidget, g_named_widget, G_TYPE_OBJECT) + + +/****************************************************************************** +* * +* Paramètres : iface = interface GLib à initialiser. * +* * +* Description : Procède à l'initialisation de l'interface de génération. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_named_widget_default_init(GNamedWidgetInterface *iface) +{ + +} + + +/****************************************************************************** +* * +* Paramètres : widget = composant nommé à consulter. * +* lname = précise s'il s'agit d'une version longue ou non. * +* * +* Description : Fournit le désignation associée à un composant nommé. * +* * +* Retour : Description courante. * +* * +* Remarques : - * +* * +******************************************************************************/ + +char *g_named_widget_get_name(const GNamedWidget *widget, bool lname) +{ + char *result; /* Désignation à retourner */ + GNamedWidgetIface *iface; /* Interface utilisée */ + + iface = G_NAMED_WIDGET_GET_IFACE(widget); + + result = iface->get_name(widget, lname); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : widget = composant nommé à consulter. * +* * +* Description : Fournit le composant associé à un composant nommé. * +* * +* Retour : Composant graphique GTK. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *g_named_widget_get_widget(const GNamedWidget *widget) +{ + GtkWidget *result; /* Composant GTK à renvoyer */ + GNamedWidgetIface *iface; /* Interface utilisée */ + + iface = G_NAMED_WIDGET_GET_IFACE(widget); + + result = iface->get_widget(widget); + + return result; + +} diff --git a/src/glibext/named.h b/src/glibext/named.h new file mode 100644 index 0000000..ae172d8 --- /dev/null +++ b/src/glibext/named.h @@ -0,0 +1,60 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * named.h - prototypes pour la manipulation de composants nommés + * + * Copyright (C) 2020 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Chrysalide is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>. + */ + + +#ifndef _GLIBEXT_NAMED_H +#define _GLIBEXT_NAMED_H + + +#include <glib-object.h> +#include <stdbool.h> +#include <gtk/gtk.h> + + + +#define G_TYPE_NAMED_WIDGET g_named_widget_get_type() +#define G_NAMED_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_NAMED_WIDGET, GNamedWidget)) +#define G_NAMED_WIDGET_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST((vtable), G_TYPE_NAMED_WIDGET, GNamedWidgetIface)) +#define GTK_IS_NAMED_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_NAMED_WIDGET)) +#define GTK_IS_NAMED_WIDGET_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE((vtable), G_TYPE_NAMED_WIDGET)) +#define G_NAMED_WIDGET_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), G_TYPE_NAMED_WIDGET, GNamedWidgetIface)) + + +/* Manipulation d'un composant avec ses noms (coquille vide) */ +typedef struct _GNamedWidget GNamedWidget; + +/* Manipulation d'un composant avec ses noms (interface) */ +typedef struct _GNamedWidgetIface GNamedWidgetIface; + + +/* Détermine le type d'une interface pour les composants nommés. */ +GType g_named_widget_get_type(void) G_GNUC_CONST; + +/* Fournit le désignation associée à un composant nommé. */ +char *g_named_widget_get_name(const GNamedWidget *, bool); + +/* Fournit le composant associé à un composant nommé. */ +GtkWidget *g_named_widget_get_widget(const GNamedWidget *); + + + +#endif /* _GLIBEXT_NAMED_H */ |