Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

GFilterUtils.h

00001 #ifndef GFILTER_UTILS_H
00002 #define GFILTER_UTILS_H
00003 
00004 /*
00005 #if defined(_DEBUG) && defined(WIN32)
00006 #define BreakPoint  _asm { int 3 }
00007 #else
00008 #define BreakPoint  LgiAssert(0);
00009 #endif
00010 */
00011 
00012 #define BreakPoint  LgiAssert(0);
00013 
00014 
00015 #define CALL_TYPE           // __stdcall
00016 
00017 #define DynFunc0(ret, func)                             \
00018     ret func()                                          \
00019     {                                                   \
00020         typedef ret (CALL_TYPE *p_##func)();                        \
00021         p_##func p = (p_##func) GetAddress(#func);      \
00022         if (p)                                          \
00023         {                                               \
00024             return p();                                 \
00025         }                                               \
00026         BreakPoint                                      \
00027         return 0;                                       \
00028     }
00029 
00030 #define DynFunc1(ret, func, argtype, argname)           \
00031     ret func(argtype argname)                           \
00032     {                                                   \
00033         typedef ret (CALL_TYPE *p_##func)(argtype);             \
00034         p_##func p = (p_##func) GetAddress(#func);      \
00035         if (p)                                          \
00036         {                                               \
00037             return p(argname);                          \
00038         }                                               \
00039         BreakPoint                                      \
00040         return 0;                                       \
00041     }
00042 
00043 #define DynFunc2(ret, func, argtype1, argname1, argtype2, argname2) \
00044     ret func(argtype1 argname1, argtype2 argname2)      \
00045     {                                                   \
00046         typedef ret (CALL_TYPE *p_##func)(argtype1, argtype2);  \
00047         p_##func p = (p_##func) GetAddress(#func);      \
00048         if (p)                                          \
00049         {                                               \
00050             return p(argname1, argname2);               \
00051         }                                               \
00052         BreakPoint                                      \
00053         return 0;                                       \
00054     }
00055 
00056 #define DynFunc3(ret, func, argtype1, argname1,         \
00057                             argtype2, argname2,         \
00058                             argtype3, argname3)         \
00059     ret func(argtype1 argname1,                         \
00060              argtype2 argname2,                         \
00061              argtype3 argname3)                         \
00062     {                                                   \
00063         typedef ret (CALL_TYPE *p_##func)(argtype1,             \
00064                                 argtype2,               \
00065                                 argtype3);              \
00066         p_##func p = (p_##func) GetAddress(#func);      \
00067         if (p)                                          \
00068         {                                               \
00069             return p(argname1, argname2, argname3);     \
00070         }                                               \
00071         BreakPoint                                      \
00072         return 0;                                       \
00073     }
00074 
00075 #define DynFunc4(ret, func, argtype1, argname1,         \
00076                             argtype2, argname2,         \
00077                             argtype3, argname3,         \
00078                             argtype4, argname4)         \
00079     ret func(argtype1 argname1,                         \
00080              argtype2 argname2,                         \
00081              argtype3 argname3,                         \
00082              argtype4 argname4)                         \
00083     {                                                   \
00084         typedef ret (CALL_TYPE *p_##func)(argtype1,             \
00085                                 argtype2,               \
00086                                 argtype3,               \
00087                                 argtype4);              \
00088         p_##func p = (p_##func) GetAddress(#func);      \
00089         if (p)                                          \
00090         {                                               \
00091             return p(argname1, argname2,                \
00092                      argname3, argname4);               \
00093         }                                               \
00094         BreakPoint                                      \
00095         return 0;                                       \
00096     }
00097 
00098 #define DynFunc5(ret, func, argtype1, argname1,         \
00099                             argtype2, argname2,         \
00100                             argtype3, argname3,         \
00101                             argtype4, argname4,         \
00102                             argtype5, argname5)         \
00103     ret func(argtype1 argname1,                         \
00104              argtype2 argname2,                         \
00105              argtype3 argname3,                         \
00106              argtype4 argname4,                         \
00107              argtype5 argname5)                         \
00108     {                                                   \
00109         typedef ret (CALL_TYPE *p_##func)(argtype1,             \
00110                                 argtype2,               \
00111                                 argtype3,               \
00112                                 argtype4,               \
00113                                 argtype5);              \
00114         p_##func p = (p_##func) GetAddress(#func);      \
00115         if (p)                                          \
00116         {                                               \
00117             return p(argname1, argname2,                \
00118                      argname3, argname4,                \
00119                      argname5);                         \
00120         }                                               \
00121         BreakPoint                                      \
00122         return 0;                                       \
00123     }
00124 
00125 #define DynFunc6(ret, func, argtype1, argname1,         \
00126                             argtype2, argname2,         \
00127                             argtype3, argname3,         \
00128                             argtype4, argname4,         \
00129                             argtype5, argname5,         \
00130                             argtype6, argname6)         \
00131     ret func(argtype1 argname1,                         \
00132              argtype2 argname2,                         \
00133              argtype3 argname3,                         \
00134              argtype4 argname4,                         \
00135              argtype5 argname5,                         \
00136              argtype6 argname6)                         \
00137     {                                                   \
00138         typedef ret (CALL_TYPE *p_##func)(argtype1,     \
00139                                 argtype2,               \
00140                                 argtype3,               \
00141                                 argtype4,               \
00142                                 argtype5,               \
00143                                 argtype6);              \
00144         p_##func p = (p_##func) GetAddress(#func);      \
00145         if (p)                                          \
00146         {                                               \
00147             return p(argname1, argname2,                \
00148                      argname3, argname4,                \
00149                      argname5, argname6);               \
00150         }                                               \
00151         BreakPoint                                      \
00152         return 0;                                       \
00153     }
00154 
00155 
00156 #endif

Generated on Wed Oct 26 14:46:48 2005 for Lgi by  doxygen 1.4.1