diff options
Diffstat (limited to 'src/gtkext/graph/node.h')
-rw-r--r-- | src/gtkext/graph/node.h | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/src/gtkext/graph/node.h b/src/gtkext/graph/node.h deleted file mode 100644 index 6d3589a..0000000 --- a/src/gtkext/graph/node.h +++ /dev/null @@ -1,174 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * node.h - prototypes pour les éléments de graphiques chez dot - * - * Copyright (C) 2009-2013 Cyrille Bagard - * - * This file is part of Chrysalide. - * - * OpenIDA 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. - * - * OpenIDA 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 Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#ifndef _GTKEXT_GRAPH_NODE_H -#define _GTKEXT_GRAPH_NODE_H - - -#include "params.h" -#include "ranks.h" -#include "../gtkbufferview.h" -#include "../gtkgraphview.h" -#include "../../arch/instruction.h" -#include "../../analysis/block.h" - - - -/* -------------------------- GESTION DES NOEUDS A L'UNITE -------------------------- */ - - -#define G_TYPE_GRAPH_NODE (g_graph_node_get_type()) -#define G_GRAPH_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_GRAPH_NODE, GGraphNode)) -#define G_GRAPH_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_GRAPH_NODE, GGraphNodeClass)) -#define G_IS_GRAPH_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_GRAPH_NODE)) -#define G_IS_GRAPH_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_GRAPH_NODE)) -#define G_GRAPH_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_GRAPH_NODE, GGraphNodeClass)) - - -/* Intermédiaire entre le noeud dot et la bribe de code (instance) */ -typedef struct _GGraphNode GGraphNode; - -/* Intermédiaire entre le noeud dot et la bribe de code (classe) */ -typedef struct _GGraphNodeClass GGraphNodeClass; - - -/* Indications sur l'abscisse idéale à adopter */ -typedef union _pending_position -{ - /* PPF_DIRECT_X, PPF_LEFT_MARGIN, PPF_RIGHT_MARGIN */ - struct - { - union - { - gint direct_x; /* Position strictement vert. */ - gint left_margin; /* Limite à ne pas dépasser #1 */ - gint right_margin; /* Limite à ne pas dépasser #2 */ - }; - GGraphNode *relative_ref; /* Eventuelle ref. relative */ - }; - - /* PPF_LEFT_NODE, PPF_RIGHT_NODE, PPF_MIDDLE_OF */ - struct - { - GGraphNode *left_node; /* Noeud de référence à droite */ - GGraphNode *right_node; /* Noeud de référence à gauche */ - }; - -} pending_position; - -/* Définition présente dans les indications */ -typedef enum _PendingPositionFlags -{ - PPF_NONE, /* Aucune -> centrage */ - PPF_DIRECT_X, /* Position strictement vert. */ - PPF_LEFT_MARGIN, /* Limite à ne pas dépasser #1 */ - PPF_RIGHT_MARGIN, /* Limite à ne pas dépasser #2 */ - PPF_LEFT_NODE, /* Noeud de référence à droite */ - PPF_RIGHT_NODE, /* Noeud de référence à gauche */ - PPF_MIDDLE_OF /* Centré entre deux noeuds */ - -} PendingPositionFlags; - -/* Détail sur une visite */ -typedef enum _GNodeVisitState -{ - GVS_ENTER, /* Entrée dans un groupe */ - GVS_NODE, /* Traitement d'une feuille */ - GVS_EXIT /* Sortie d'un groupe */ - -} GNodeVisitState; - -/* Rappel à chaque noeud visité */ -typedef bool (* graph_node_visitor_cb) (GGraphNode *, GNodeVisitState, void *); - - -/* Indique le type définit par la GLib pour le noeud. */ -GType g_graph_node_get_type(void); - -/* Fournit le rang du noeud dans le graphique. */ -unsigned int g_graph_node_get_rank(const GGraphNode *); - -/* Réinitialise la position d'un noeud de graphique. */ -void g_graph_node_reset_position(GGraphNode *); - -/* Définit les abscisses relatives du contenu d'un noeud. */ -void g_graph_node_prepare_x_line(GGraphNode *node, GGraphNode *nodes); - -/* Applique une position finale au noeud. */ -void g_graph_node_apply_position(GGraphNode *); - -/* Altère la position du noeud d'encapsulation. */ -void g_graph_node_set_x_position(GGraphNode *, gint); - -/* Prépare la position du noeud pour l'alignement des liens. */ -void g_graph_node_set_pending_position(GGraphNode *, PendingPositionFlags, pending_position); - -/* Indique la position du noeud pour l'alignement des liens. */ -void g_graph_node_get_pending_position(GGraphNode *, PendingPositionFlags *, pending_position *); - -/* Fournit la position du noeud d'encapsulation. */ -void g_graph_node_get_position(const GGraphNode *, gint *, gint *); - -#define g_graph_node_has_x_position(node) \ - ({ \ - gint _x; \ - g_graph_node_get_position(node, &_x, NULL); \ - _x != UNINITIALIZED_NODE_POS; \ - }) - -/* Espace constitué, entièrement ou non. */ -GtkAllocation g_graph_node_get_allocation(const GGraphNode *); - -/* Parcourt tous les noeuds graphiques dans un ordre donné. */ -bool g_graph_node_visit_nodes(GGraphNode *, graph_node_visitor_cb, void *); - -/* Recherche le noeud contenant un autre noeud. */ -GGraphNode *g_graph_node_find_container(GGraphNode *, GGraphNode *); - -/* Recherche le noeud contenant un autre noeud à un même niveau. */ -GGraphNode *g_graph_node_find_container_at_same_level(GGraphNode *, GGraphNode *, GGraphNode *); - - - -/* ----------------------- MANIPULATION D'ENSEMBLES DE NOEUDS ----------------------- */ - - -/* Recherche une vue donnée dans une série de vues. */ -GtkBufferView *find_graph_view_by_start_address(GtkBufferView **, size_t, const vmpa2t *); - -/* Réalise une conversion de blocs en noeuds. */ -GGraphNode *convert_blocks_into_nodes(GInstrBlock *, GtkBufferView **, size_t); - -/* Recherche le noeud contenant une instruction donnée. */ -GGraphNode *_find_node_for_instruction(GGraphNode *, GArchInstruction *, bool); - - -#define find_node_for_first_instruction(nds, ins) \ - _find_node_for_instruction(nds, ins, true) - -#define find_node_for_last_instruction(nds, ins) \ - _find_node_for_instruction(nds, ins, false) - - - -#endif /* _GRAPH_NODE_H */ |