00001 /*! \file SurcoucheModule.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 #include <stdio.h> 00020 00021 #ifdef WIN32 00022 #include <windows.h> 00023 00024 typedef HINSTANCE MODULE; 00025 00026 #ifndef ROUTINE 00027 typedef LPTHREAD_START_ROUTINE ROUTINE; 00028 #endif 00029 00030 #else 00031 #include <dlfcn.h> 00032 00033 //! Un module dynamique 00034 /*! Crée un module dynamique (dll ou so). */ 00035 typedef void * MODULE; 00036 00037 #ifndef ROUTINE 00038 //! Nom de routine 00039 /*! Pointe sur une fonction. */ 00040 typedef void *(*ROUTINE)(void *); 00041 #endif 00042 00043 #endif 00044 00045 00046 //! Charge un module 00047 /*! Charge un module dynamique. 00048 \param pModule adresse mémoire du module chargé. 00049 \param pName fichier du module à charger. 00050 \return 1 si OK sinon 0 00051 \sa ModuleUnLoad() et ModuleImport() 00052 */ 00053 int ModuleLoad(MODULE *pModule, char *pName); 00054 00055 //! Decharge un module 00056 /*! Decharge un module dynamique. 00057 \param pModule pointeur sur le module à decharger. 00058 \return 00059 \sa ModuleLoad() et ModuleImport() 00060 */ 00061 int ModuleUnload(MODULE *pModule); 00062 00063 //! Importe une fonction 00064 /*! Importe une fonction depuis un module dynamique. 00065 \param Module pointeur sur module. 00066 \param pFonction adresse mémoir de la fonction importé. 00067 \param pName nom de la fonction à importer. 00068 \return 1 si OK sinon 0 00069 \sa ModuleLoad() et ModuleUnLoad() 00070 */ 00071 int ModuleImport(MODULE Module, ROUTINE *pFonction, char *pName); 00072 00073 00074 #endif