00001 /*! \file Module.h 00002 \brief Surcouche pour module. 00003 00004 Redéfinie tout un tas de fonctions système pour les rendre portables unix et windows. 00005 00006 \author aerith (www.aerith.fr) 00007 \version 1.0 00008 \date 18/03/2007 00009 */ 00010 00011 #ifndef INCLUDE_RSRC_PORTAGE_MODULE 00012 #define INCLUDE_RSRC_PORTAGE_MODULE 00013 00014 00015 //! Exécution de méthode 00016 /*! Exécute la méthode \a methode de la class \a class. */ 00017 #define CALL(class, methode) ((class).*(methode)) 00018 00019 #ifdef WIN32 00020 #include <windows.h> 00021 00022 typedef HINSTANCE MODULE; 00023 00024 #ifndef ROUTINE 00025 typedef LPTHREAD_START_ROUTINE ROUTINE; 00026 #endif 00027 00028 #else 00029 #include <dlfcn.h> 00030 00031 //! Un module dynamique 00032 /*! Crée un module dynamique (dll ou so). */ 00033 typedef void * MODULE; 00034 00035 #ifndef ROUTINE 00036 //! Nom de routine 00037 /*! Pointe sur une fonction. */ 00038 typedef void *(*ROUTINE)(void *); 00039 #endif 00040 00041 #endif 00042 00043 00044 //! Charge un module 00045 /*! Charge un module dynamique. 00046 \param pModule adresse mémoire du module chargé. 00047 \param pName fichier du module à charger. 00048 \return 1 si OK sinon 0 00049 \sa ModuleUnLoad() et ModuleImport() 00050 */ 00051 int ModuleLoad(MODULE *pModule, char *pName); 00052 00053 //! Decharge un module 00054 /*! Decharge un module dynamique. 00055 \param pModule pointeur sur le module à decharger. 00056 \return 00057 \sa ModuleLoad() et ModuleImport() 00058 */ 00059 int ModuleUnload(MODULE *pModule); 00060 00061 //! Importe une fonction 00062 /*! Importe une fonction depuis un module dynamique. 00063 \param Module pointeur sur module. 00064 \param pFonction adresse mémoir de la fonction importé. 00065 \param pName nom de la fonction à importer. 00066 \return 1 si OK sinon 0 00067 \sa ModuleLoad() et ModuleUnLoad() 00068 */ 00069 int ModuleImport(MODULE Module, ROUTINE *pFonction, char *pName); 00070 00071 00072 #endif