diff options
Diffstat (limited to 'src/analysis/project.h')
-rw-r--r-- | src/analysis/project.h | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/analysis/project.h b/src/analysis/project.h new file mode 100644 index 0000000..05e7f12 --- /dev/null +++ b/src/analysis/project.h @@ -0,0 +1,106 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * project.h - prototypes pour la gestion d'un groupe de fichiers binaires + * + * Copyright (C) 2008-2014 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 _ANALYSIS_PROJECT_H +#define _ANALYSIS_PROJECT_H + + +#include <gtk/gtk.h> + + +#include "binary.h" +#include "../gtkext/gtkviewpanel.h" + + + +/* ------------------------- DEFINITION D'UN PROJET INTERNE ------------------------- */ + + +#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 */ |