/* Chrysalide - Outil d'analyse de fichiers binaires * native-int.h - prototypes pour les structures internes des greffons natifs * * Copyright (C) 2025 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 Chrysalide. If not, see . */ #ifndef _PLUGINS_NATIVE_INT_H #define _PLUGINS_NATIVE_INT_H #include "native.h" #include "plugin-int.h" /* Marqueur identifiable */ #define CHRYSALIDE_PLUGIN_MAGIC 0xdeadc0de /* Greffon natif pour Chrysalide (instance) */ struct _GNativePlugin { GPluginModule parent; /* A laisser en premier */ /** * Le module porte le code et les données en mémoire. * * Les fonctions *_dispose() et *_finalize() accompagnant la libération des * greffons de la mémoire ne peuvent donc pas libérer ce module car elles * scieraient la branche sur laquelle elles se trouvent. * * Par ailleurs, même s'ils sont conservés dans chaque greffon, les modules * sont mis en place dans le code principal. C'est donc ce dernier qui les * libère, dans la fonction on_plugin_ref_toggle(). */ GModule *module; /* Structure de chargement GLib*/ }; /* Greffon natif pour Chrysalide (classe) */ struct _GNativePluginClass { GPluginModuleClass parent; /* A laisser en premier */ }; /* Met en place un greffon natif. */ bool g_native_plugin_create(GNativePlugin *, const char *, const char *, const char *, const char *, const char * const *, size_t, GModule *); #endif /* _PLUGINS_NATIVE_INT_H */