Page principale | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier | Pages associées

ModuleDynamiqueModule.h

Aller à la documentation de ce fichier.
00001 /*! \file ModuleDynamiqueModule.h
00002     \brief Gestion de module dynamique.
00003 
00004     Gestion d'un module. \n
00005 
00006     \author     aerith (www.aerith.fr)
00007     \version    1.0
00008     \date       01/11/2007
00009 */
00010 
00011 #ifndef INCLUDE_RSRC_MODULEDYNAMIQUEMODULE
00012 #define INCLUDE_RSRC_MODULDYNAMIQUEMODULE
00013 
00014 #include    "../Surcouche/SurcoucheModule.h"
00015 #include    "../Surcouche/SurcoucheMultitache.h"
00016 #include    "../Tools/Tools.h"
00017 #include    "../Error/Error.h"
00018 #include    <vector>
00019 
00020 #define MODULE_FILE     256
00021 #define MODULE_NAME     128
00022 #define MODULE_VERSION  16
00023 #define MODULE_AUTOR    128
00024 #define MODULE_DESC     256
00025 
00026 
00027 //! Liste des Options
00028 /*! Liste des options d'un module
00029 */
00030 typedef struct _ModuleFonction
00031 {
00032     char        Name[MODULE_NAME];          /*!< Nom de la fonction.                                */
00033     ROUTINE     Fonction;                   /*!< Adresse mémoire de la fonction.                    */
00034 } ModuleFonction;
00035 
00036 //! Gestion de module dynamique.
00037 /*! Permet l'utilisation de module dynamique comme simple classe.
00038 */
00039 class ModuleDynamiqueModule
00040 {
00041 private :
00042     char                            File[MODULE_FILE];      /*!< Fichier du module.                                 */
00043     char                            Name[MODULE_NAME];      /*!< Nom donné au module.                               */
00044     char                            Realname[MODULE_NAME];  /*!< Nom réel du module.                                */
00045     char                            Version[MODULE_VERSION];/*!< Version du module.                                 */
00046     char                            Autor[MODULE_AUTOR];    /*!< Auteur du module.                                  */
00047     char                            Desc[MODULE_DESC];      /*!< Description du module.                             */
00048     ROUTINE                         Fonction;               /*!< Liste des fonctions à importées.                   */
00049     MODULE                          ModuleAdr;              /*!< Adresse mémoire du module.                         */
00050     int                             NbFonction;             /*!< Nombre de fonction importées.                      */
00051     std::vector<ModuleFonction *>   Fonctions;              /*!< Chaque lignes est une fonction importer.           */
00052     int                             Loaded;                 /*!< A 1 si le module a été charger, sinon 0.           */
00053 
00054 public  :
00055     /*! Initialise avec des valeurs par defaut.
00056     */
00057     ModuleDynamiqueModule();
00058 
00059     /*! Libere proprement la mémoire.
00060     */
00061     ~ModuleDynamiqueModule();
00062 
00063     //! Charge le module.
00064     /*! Charge le module de fichier \a pFile .
00065         \param pName nom du module
00066         \param pFile nom du fichier du module
00067         \return code d'erreur.
00068         \sa UnLoad().
00069     */
00070     int     Load(char *pName, char *pFile);
00071 
00072     //! Decharge le module.
00073     /*! Decharge le module.
00074         \return code d'erreur.
00075         \sa Load().
00076     */
00077     int     UnLoad();
00078 
00079     //! Importe une fonction.
00080     /*! Importe la fonction de nom \a pName .
00081         \param pName nom de la fonction
00082         \return code d'erreur.
00083         \sa DelFonction(), GetFonction() et GetNbFonction().
00084     */
00085     int     AddFonction(char *pName);
00086 
00087     //! Supprime une fonction.
00088     /*! Supprime la fonction étant à la position \a iPos.
00089         \param iPos position de la fonction.
00090         \return code d'erreur.
00091         \sa AddFonction(), GetFonction() et GetNbFonction().
00092     */
00093     int     DelFonction(int iPos);
00094 
00095     //! Supprime une fonction.
00096     /*! Supprime la fonction de nom \a pName.
00097         \param pName nom de la fonction.
00098         \return code d'erreur.
00099         \sa AddFonction(), GetFonction() et GetNbFonction().
00100     */
00101     inline int      DelFonction(char *pName)
00102     {
00103         for(int i = 0; i < NbFonction; i++)
00104         {
00105             if(!strcmp(Fonctions[i]->Name, pName))
00106                 return DelFonction(i);
00107         }
00108     };
00109 
00110     //! Retourne une fonction par sa position.
00111     /*! Permet l'acces à la fonction étant à la position \a iPos.
00112         \param iPos position de la fonction.
00113         \return pointeur sur la fonction.
00114         \sa AddFonction(), DelFonction() et GetNbFonction().
00115     */
00116     inline ROUTINE      GetFonction(int iPos)
00117     {
00118         if(iPos < NbFonction)
00119             return Fonctions[iPos]->Fonction;
00120 
00121         return NULL;
00122     };
00123 
00124     //! Retourne une fonction par son nom.
00125     /*! Permet l'acces à la fonction ayant le nom \a pName.
00126         \param pName nom de la fonction.
00127         \return pointeur sur la fonction.
00128         \sa AddFonction(), DelFonction() et GetNbFonction().
00129     */
00130     inline ROUTINE      GetFonction(char *pName)
00131     {
00132         for(int i = 0; i < NbFonction; i++)
00133         {
00134             if(!strcmp(Fonctions[i]->Name, pName))
00135                 return Fonctions[i]->Fonction;
00136         }
00137 
00138         return NULL;
00139     };
00140 
00141     //! Retourne le nombre de fonction.
00142     /*! Retourne le nombre de fonction importée.
00143         \return nombre de fonction importée.
00144         \sa AddFonction(), DelFonction() et GetFonction().
00145     */
00146     inline int      GetNbFonction()
00147     {
00148         return NbFonction;
00149     };
00150 
00151     //! Retourne le fichier.
00152     /*! Retourne le nom du fichier du module.
00153         \return pointeur sur \a File.
00154     */
00155     inline char     *GetFile()
00156     {
00157         return File;
00158     };
00159 
00160     //! Retourne le nom.
00161     /*! Retourne le nom donné au module.
00162         \return pointeur sur \a Name.
00163     */
00164     inline char     *GetName()
00165     {
00166         return Name;
00167     };
00168 
00169     //! Retourne le nom réel.
00170     /*! Retourne le nom réel du module.
00171         \return pointeur sur \a Realname.
00172     */
00173     inline char     *GetRealname()
00174     {
00175         return Realname;
00176     };
00177 
00178     //! Retourne la version.
00179     /*! Retourne la version du module.
00180         \return pointeur sur \a Version.
00181     */
00182     inline char     *GetVersion()
00183     {
00184         return Version;
00185     };
00186 
00187     //! Retourne l'auteur.
00188     /*! Retourne l'auteur du module.
00189         \return pointeur sur \a Autor.
00190     */
00191     inline char     *GetAutor()
00192     {
00193         return Autor;
00194     };
00195 
00196     //! Retourne la description.
00197     /*! Retourne la description du module.
00198         \return pointeur sur \a Desc.
00199     */
00200     inline char     *GetDesc()
00201     {
00202         return Desc;
00203     };
00204 };
00205 
00206 #endif
00207 

Généré le Thu Jun 12 09:12:29 2008 pour A.I.F. par  doxygen 1.3.9.1