/* OpenIDA - Outil d'analyse de fichiers binaires * project.h - prototypes pour la gestion d'un groupe de fichiers binaires * * Copyright (C) 2008-2012 Cyrille Bagard * * This file is part of OpenIDA. * * 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 . */ #ifndef _PROJECT_H #define _PROJECT_H #include #include #include "analysis/binary.h" #include "gtkext/gtkviewpanel.h" /* ------------------------- DEFINITION D'UN PROJET INTERNE ------------------------- */ /* Type de représentations */ typedef enum _BinaryView { BVW_BLOCK, /* Version basique */ BVW_GRAPH, /* Affichage en graphique */ BVW_SOURCE, /* Code décompilé */ BVW_COUNT } BinaryView; #define G_TYPE_STUDY_PROJECT g_study_project_get_type() #define G_STUDY_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_study_project_get_type(), GStudyProject)) #define G_IS_STUDY_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_study_project_get_type())) #define G_STUDY_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_STUDY_PROJECT, GStudyProjectClass)) #define G_IS_STUDY_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_STUDY_PROJECT)) #define G_STUDY_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_STUDY_PROJECT, GStudyProjectClass)) /* Projet d'étude regroupant les binaires analysés (instance) */ typedef struct _GStudyProject GStudyProject; /* Projet d'étude regroupant les binaires analysés (classe) */ typedef struct _GStudyProjectClass GStudyProjectClass; /* Indique le type défini pour un projet d'étude. */ GType g_study_project_get_type(void); /* Crée un nouveau projet vierge. */ GStudyProject *g_study_project_new(GObject *); /* Crée un projet à partir du contenu XML d'un fichier. */ GStudyProject *g_study_project_open(GObject *, const char *); /* Procède à l'enregistrement d'un projet donné. */ bool g_study_project_save(GStudyProject *, const char *); /* Indique le chemin du fichier destiné à la sauvegarde. */ const char *g_study_project_get_filename(const GStudyProject *); /* Assure l'intégration d'un élément binaire dans un projet. */ void g_study_project_add_loaded_binary(GLoadedBinary *, GStudyProject *); /* Attache un fichier donné à un projet donné. */ size_t g_study_project_attach_binary(GStudyProject *, GLoadedBinary *); /* Détache un fichier donné à un projet donné. */ void g_study_project_detach_binary(GStudyProject *, GLoadedBinary *); /* Fournit un support d'affichage donné pour un binaire chargé. */ GtkWidget *g_study_project_get_view_for_binary(const GStudyProject *, const GLoadedBinary *, BinaryView, GtkViewPanel **); /* Met en place un projet à l'écran. */ void g_study_project_display(const GStudyProject *); /* Fournit l'ensemble des binaires associés à un projet. */ GLoadedBinary **g_study_project_get_binaries(const GStudyProject *, size_t *); /* ------------------------- GESTION GLOBALISEE DES PROJETS ------------------------- */ /* Fournit l'adresse du projet courant. */ GStudyProject *_get_current_study_project(GStudyProject *); #define set_current_project(prj) _get_current_study_project(prj) #define get_current_project() _get_current_study_project(NULL) /* Fournit le gestionnaire des projets connus. */ GtkRecentManager *get_projects_manager(void); /* Place un projet au sommet de la pile des projets récents. */ void push_project_into_recent_list(const GStudyProject *); #endif /* _PROJECT_H */