diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/core.c | 76 | ||||
| -rw-r--r-- | src/core/core.h | 14 | 
2 files changed, 90 insertions, 0 deletions
diff --git a/src/core/core.c b/src/core/core.c index 7e48662..636e41e 100644 --- a/src/core/core.c +++ b/src/core/core.c @@ -179,3 +179,79 @@ void unload_all_core_components(bool cs)      ERR_free_strings();  } + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : selected = liste d'éléments à décharger.                     * +*                                                                             * +*  Description : Charge une sélection d'éléments de base du programme.        * +*                                                                             * +*  Retour      : Bilan de l'opération.                                        * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +bool load_core_components(AvailableCoreComponent flags) +{ +    static bool result = false;             /* Bilan à retourner           */ +    static bool done = false;               /* Mémorisation des passages   */ +    GScanNamespace *root_ns;                /* Espace de noms ROST racine  */ + +    /** +     * On mémorise les passages réussis. +     */ +    if (!done) +    { +        done = true; +        result = true; + +        if (flags & ACC_SCAN_FEATURES) +        { +#ifdef INCLUDE_MAGIC_SUPPORT +            if (result) result = init_magic_cookie(); +#endif + +            root_ns = g_scan_namespace_new(NULL); +            set_rost_root_namespace(root_ns); +            g_object_unref(G_OBJECT(root_ns)); + +            if (result) result = populate_main_scan_namespace(root_ns); +            if (result) result = load_all_known_scan_token_modifiers(); + +        } + +    } + +    return result; + +} + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : selected = liste d'éléments à décharger.                     * +*                                                                             * +*  Description : Décharge une sélection d'éléments de base du programme.      * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +void unload_core_components(AvailableCoreComponent flags) +{ +    if (flags & ACC_SCAN_FEATURES) +    { +        unload_all_scan_token_modifiers(); +        set_rost_root_namespace(NULL); + +#ifdef INCLUDE_MAGIC_SUPPORT +        exit_magic_cookie(); +#endif + +    } + +} diff --git a/src/core/core.h b/src/core/core.h index 0221f56..def2813 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -36,5 +36,19 @@ bool load_all_core_components(bool);  void unload_all_core_components(bool); +/* Eléments à (dé)charger disponibles */ +typedef enum _AvailableCoreComponent +{ +    ACC_SCAN_FEATURES = (1 << 0),           /* Espace de noms pour scan    */ + +} AvailableCoreComponent; + +/* Charge une sélection d'éléments de base du programme. */ +bool load_core_components(AvailableCoreComponent); + +/* Décharge une sélection d'éléments de base du programme. */ +void unload_core_components(AvailableCoreComponent); + +  #endif  /* _CORE_CORE_H */  | 
