Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IDynamicLibraryLoader.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* IDynamicLibraryLoader.h (C) 2000-2019 */
9/* */
10/* Interface d'une chargeur dynamique de bibliothèque. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IDYNAMICLIBRARYLOADER_H
13#define ARCANE_IDYNAMICLIBRARYLOADER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Interface d'une bibliothèque dynamique.
29 */
30class ARCANE_UTILS_EXPORT IDynamicLibrary
31{
32 public:
33 virtual ~IDynamicLibrary(){} //!< Libère les ressources
34 public:
35 /*!
36 * \brief Ferme la bibliothèque dynamique.
37 *
38 * Elle ne doit plus être utilisée après fermeture et l'instance peut
39 * être détruite via l'opérateur delete.
40 */
41 virtual void close() =0;
42
43 /*!
44 * \brief Retourne l'adresse du symbol de nom \a symbol_name.
45 *
46 * Si \a is_found n'est pas nul, contient en retour le booléen indiquant
47 * si le symbol a été trouvé.
48 */
49 virtual void* getSymbolAddress(const String& symbol_name,bool* is_found) =0;
50};
51
52/*---------------------------------------------------------------------------*/
53/*---------------------------------------------------------------------------*/
54/*!
55 * \internal.
56 *
57 * \brief Interface d'une chargeur dynamique de bibliothèque.
58 */
59class ARCANE_UTILS_EXPORT IDynamicLibraryLoader
60{
61 public:
62
63 virtual ~IDynamicLibraryLoader(){} //!< Libère les ressources
64
65 public:
66
67 virtual void build() =0;
68
69 public:
70
71 /*!
72 * \brief Charge une bibliothèque dynamique.
73 *
74 * Charge la bibliothèque de nom \a name qui se trouve dans le répertoire
75 * \a directory. Retourne un pointeur nul si la bibliothèque ne peut
76 * pas être chargée. \a name doit être un nom sans préfixe et sans extension
77 * dépendant machine. Par exemple sous linux, si la bibliothèque est
78 * libtoto.so, \a name doit valoir \a toto.
79 */
80 virtual IDynamicLibrary* open(const String& directory,const String& name) =0;
81
82 //! Ferme toutes les bibliothèques ouvertes via \a open()
83 virtual void closeLibraries() =0;
84};
85
86/*---------------------------------------------------------------------------*/
87/*---------------------------------------------------------------------------*/
88
89} // End namespace Arcane
90
91/*---------------------------------------------------------------------------*/
92/*---------------------------------------------------------------------------*/
93
94#endif
95
Déclarations des types utilisés dans Arcane.
virtual IDynamicLibrary * open(const String &directory, const String &name)=0
Charge une bibliothèque dynamique.
virtual ~IDynamicLibraryLoader()
Libère les ressources.
virtual void closeLibraries()=0
Ferme toutes les bibliothèques ouvertes via open()
Interface d'une bibliothèque dynamique.
virtual ~IDynamicLibrary()
Libère les ressources.
virtual void close()=0
Ferme la bibliothèque dynamique.
virtual void * getSymbolAddress(const String &symbol_name, bool *is_found)=0
Retourne l'adresse du symbol de nom symbol_name.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-