summaryrefslogtreecommitdiff
path: root/src/format/symbol-int.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/format/symbol-int.h')
-rw-r--r--src/format/symbol-int.h60
1 files changed, 30 insertions, 30 deletions
diff --git a/src/format/symbol-int.h b/src/format/symbol-int.h
index 99cee88..7f5807c 100644
--- a/src/format/symbol-int.h
+++ b/src/format/symbol-int.h
@@ -35,32 +35,31 @@ typedef char * (* get_symbol_label_fc) (const GBinSymbol *);
/* Informations glissées dans la structure GObject de GBinSymbol */
-typedef union _sym_obj_extra
+typedef struct _sym_extra_data_t
{
- struct
- {
- SymbolType stype; /* Type du symbole */
- SymbolStatus status; /* Visibilité du symbole */
+ SymbolType stype; /* Type du symbole */
+ SymbolStatus status; /* Visibilité du symbole */
- char nm_prefix; /* Eventuel préfixe "nm" */
+ char nm_prefix; /* Eventuel préfixe "nm" */
- SymbolFlag flags; /* Informations complémentaires*/
+ SymbolFlag flags; /* Informations complémentaires*/
- };
+} sym_extra_data_t;
- gint lock; /* Gestion d'accès aux fanions */
+/* Encapsulation avec un verrou d'accès */
+typedef union _symbol_obj_extra_t
+{
+ sym_extra_data_t data; /* Données embarquées */
+ lockable_obj_extra_t lockable; /* Gestion d'accès aux fanions */
+
+} symbol_obj_extra_t;
-} sym_obj_extra;
/* Symbole d'exécutable (instance) */
struct _GBinSymbol
{
GObject parent; /* A laisser en premier */
- mrange_t range; /* Couverture mémoire */
-
- char *alt; /* Nom alternatif */
-
#if __SIZEOF_INT__ == __SIZEOF_LONG__
/**
@@ -70,39 +69,40 @@ struct _GBinSymbol
* ce dernier.
*/
- sym_obj_extra extra; /* Externalisation embarquée */
+ symbol_obj_extra_t extra; /* Externalisation embarquée */
#endif
+ mrange_t range; /* Couverture mémoire */
+
+ char *alt; /* Nom alternatif */
+
};
+/* Symbole d'exécutable (classe) */
+struct _GBinSymbolClass
+{
+ GObjectClass parent; /* A laisser en premier */
+
+ get_symbol_label_fc get_label; /* Obtention d'une étiquette */
+
+};
+
+
/**
* Accès aux informations éventuellement déportées.
*/
#if __SIZEOF_INT__ == __SIZEOF_LONG__
-# define INIT_BIN_SYMBOL_EXTRA(sym) sym->extra.lock = 0
-
-# define GET_BIN_SYMBOL_EXTRA(sym) &sym->extra
+# define GET_BIN_SYMBOL_EXTRA(sym) (sym_extra_data_t *)&sym->extra
#else
-# define INIT_BIN_SYMBOL_EXTRA(sym) INIT_GOBJECT_EXTRA(G_OBJECT(sym))
-
-# define GET_BIN_SYMBOL_EXTRA(sym) GET_GOBJECT_EXTRA(G_OBJECT(sym), sym_obj_extra)
+# define GET_BIN_SYMBOL_EXTRA(sym) GET_GOBJECT_EXTRA(G_OBJECT(sym), sym_extra_data_t)
#endif
-/* Symbole d'exécutable (classe) */
-struct _GBinSymbolClass
-{
- GObjectClass parent; /* A laisser en premier */
-
- get_symbol_label_fc get_label; /* Obtention d'une étiquette */
-
-};
-
#endif /* _FORMAT_SYMBOL_INT_H */