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

ModuleModule.h

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

Généré le Thu Oct 12 01:00:43 2006 pour GestionAsso par  doxygen 1.3.9.1