/* Chrysalide - Outil d'analyse de fichiers binaires * formats.h - prototypes pour l'enregistrement et la fourniture des formats de binaires supportés * * Copyright (C) 2015 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 Foobar. If not, see . */ #ifndef _CORE_FORMATS_H #define _CORE_FORMATS_H #include #include #include "../format/format.h" #include "../format/executable.h" #include "../gtkext/gtkstatusstack.h" /* Conclusion d'une opération de reconnaissance */ typedef enum _FormatMatchStatus { FMS_MATCHED, /* Correspondance établie */ FMS_FORWARDED, /* Sous-formats détectés */ FMS_UNKNOWN, /* Aucun format reconnu */ FMS_COUNT } FormatMatchStatus; /* Indication à propos du support d'un format */ typedef FormatMatchStatus (* format_match_fc) (GBinContent *, GExeFormat *, void *, char **); /* Méthode de chargement d'un format */ typedef GBinFormat * (* format_load_fc) (GBinContent *, GExeFormat *, GtkStatusStack *); /* Enregistre un détection de format(s) binaire(s). */ bool register_format_matcher(format_match_fc, void *); /* Enregistre un format de contenu binaire donné. */ bool register_format_loader(const char *, const char *, format_load_fc); /* Charge les définitions de formats "natifs". */ bool load_hard_coded_formats_definitions(void); /* Décharge toutes les définitions de formats. */ void unload_formats_definitions(void); /* Fournit le nom humain du format binaire visé. */ const char *get_binary_format_name(const char *); /* Identifie un format binaire par son contenu. */ FormatMatchStatus find_matching_format(GBinContent *, GExeFormat *, char **); /* Charge le format binaire correspondant à un type. */ GBinFormat *load_new_named_format(const char *, GBinContent *, GExeFormat *); #endif /* _CORE_FORMATS_H */