00001
00002
00003
00004
00005
00006
00007
00008
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
00028
00029
00030 typedef struct _ModuleFonction
00031 {
00032 char Name[MODULE_NAME];
00033 ROUTINE Fonction;
00034 } ModuleFonction;
00035
00036
00037
00038
00039 class ModuleDynamiqueModule
00040 {
00041 private :
00042 char File[MODULE_FILE];
00043 char Name[MODULE_NAME];
00044 char Realname[MODULE_NAME];
00045 char Version[MODULE_VERSION];
00046 char Autor[MODULE_AUTOR];
00047 char Desc[MODULE_DESC];
00048 ROUTINE Fonction;
00049 MODULE ModuleAdr;
00050 int NbFonction;
00051 std::vector<ModuleFonction *> Fonctions;
00052 int Loaded;
00053
00054 public :
00055
00056
00057 ModuleDynamiqueModule();
00058
00059
00060
00061 ~ModuleDynamiqueModule();
00062
00063
00064
00065
00066
00067
00068
00069
00070 int Load(char *pName, char *pFile);
00071
00072
00073
00074
00075
00076
00077 int UnLoad();
00078
00079
00080
00081
00082
00083
00084
00085 int AddFonction(char *pName);
00086
00087
00088
00089
00090
00091
00092
00093 int DelFonction(int iPos);
00094
00095
00096
00097
00098
00099
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
00111
00112
00113
00114
00115
00116 inline ROUTINE GetFonction(int iPos)
00117 {
00118 if(iPos < NbFonction)
00119 return Fonctions[iPos]->Fonction;
00120
00121 return NULL;
00122 };
00123
00124
00125
00126
00127
00128
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
00142
00143
00144
00145
00146 inline int GetNbFonction()
00147 {
00148 return NbFonction;
00149 };
00150
00151
00152
00153
00154
00155 inline char *GetFile()
00156 {
00157 return File;
00158 };
00159
00160
00161
00162
00163
00164 inline char *GetName()
00165 {
00166 return Name;
00167 };
00168
00169
00170
00171
00172
00173 inline char *GetRealname()
00174 {
00175 return Realname;
00176 };
00177
00178
00179
00180
00181
00182 inline char *GetVersion()
00183 {
00184 return Version;
00185 };
00186
00187
00188
00189
00190
00191 inline char *GetAutor()
00192 {
00193 return Autor;
00194 };
00195
00196
00197
00198
00199
00200 inline char *GetDesc()
00201 {
00202 return Desc;
00203 };
00204 };
00205
00206 #endif
00207