Go to the
documentation of this file.
00001 #ifndef _KAYDARA_LIB_H_
00002 #define _KAYDARA_LIB_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #include <kaydara.h>
00040 #include <kaydaradef.h>
00041
00042 enum kFBDllOperation { kFBDllLoad, kFBDllUnLoad };
00043
00044 #define FB_MANUAL_DLL_INIT(Name) \
00045 extern void EntryPoint##Name(kFBDllOperation STARTUP); \
00046 EntryPoint##Name(kFBDllLoad); \
00047
00048 #if defined(K_NODLL)
00049 #ifndef FB_KERNEL
00050 #define FB_DLL_INIT(DLLNAME,STARTUP)\
00051 int DummyEntryPoint##DLLNAME();\
00052 static int StatEntryPoint##DLLNAME = DummyEntryPoint##DLLNAME();\
00053 void EntryPoint##DLLNAME(kFBDllOperation STARTUP);\
00054 int DummyEntryPoint##DLLNAME()\
00055 { \
00056 EntryPoint##DLLNAME(kFBDllLoad);\
00057 return 0; \
00058 } \
00059 void EntryPoint##DLLNAME(kFBDllOperation STARTUP)
00060 #else
00061 #define FB_DLL_INIT(DLLNAME,STARTUP)\
00062 void EntryPoint##DLLNAME(kFBDllOperation STARTUP)
00063 #endif
00064 #else
00065 #if defined(KARCH_ENV_WIN32)
00066 #define FB_DLL_INIT(DLLNAME,STARTUP)\
00067 __declspec(dllexport) void EntryPoint##DLLNAME(kFBDllOperation STARTUP);\
00068 BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved )\
00069 { \
00070 switch (fdwReason) \
00071 { \
00072 case DLL_PROCESS_ATTACH: EntryPoint##DLLNAME(kFBDllLoad); break; \
00073 case DLL_PROCESS_DETACH: EntryPoint##DLLNAME(kFBDllUnLoad); break; \
00074 } \
00075 return TRUE; \
00076 }\
00077 void EntryPoint##DLLNAME(kFBDllOperation STARTUP)
00078 #elif defined (KARCH_ENV_LINUX)
00079 #define FB_DLL_INIT( DllName,Startup ) \
00080 void EntryPoint##DllName(kFBDllOperation Startup); \
00081 extern "C" void KdsoInit##DllName ( void ) \
00082 { \
00083 EntryPoint##DllName(kFBDllLoad);\
00084 }\
00085 class Init##DllName { public: Init##DllName () {KdsoInit##DllName (); } }; \
00086 static Init##DllName Flakel##DllName; \
00087 extern "C" void KdsoDone( void ) \
00088 { \
00089 EntryPoint##DllName(kFBDllUnLoad);\
00090 }\
00091 void EntryPoint##DllName(kFBDllOperation Startup)
00092 #elif defined(KARCH_ENV_MACOSX)
00093 #define FB_DLL_INIT( DllName,Startup ) \
00094 void EntryPoint##DllName(kFBDllOperation Startup); \
00095 extern "C" void KdsoInit##DllName( void ) \
00096 { \
00097 EntryPoint##DllName(kFBDllLoad);\
00098 }\
00099 extern "C" void KdsoDone##DllName( void ) \
00100 { \
00101 EntryPoint##DllName(kFBDllUnLoad);\
00102 }\
00103 void EntryPoint##DllName(kFBDllOperation Startup)
00104
00105 #endif
00106 #endif
00107
00108 #define KO_MODULE_CALL( Name ) \
00109 extern void KModule##Name( ); \
00110 KModule##Name( );
00111
00112 #ifdef KARCH_ENV_MACOSX
00113 #define FB_EXT_INIT(libname)\
00114 {\
00115 void KdsoInit##libname( void ); \
00116 KdsoInit##libname();\
00117 }
00118 #else
00119 #define FB_EXT_INIT(libname)
00120 #endif
00121
00122 #endif