Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

kore.h

Go to the documentation of this file.
00001 
00002 #ifndef KORE_H
00003 #define KORE_H
00004 
00005 #if defined( WIN32 )
00006 #define KORE_WIN32
00007 #include <windows.h>
00008 #ifdef KORE_EXPORTS
00009 #define KORE_API __declspec(dllexport)
00010 #else // !KORE_EXPORTS
00011 #define KORE_API __declspec(dllimport)
00012 #endif // KORE_EXPORTS
00013 #elif defined( __BEOS__ )
00014 #define KORE_BEOS
00015 #include <image.h>
00016 #ifdef KORE_EXPORTS
00017 #define KORE_API __declspec(dllexport)
00018 #else // !KORE_EXPORTS
00019 #define KORE_API __declspec(dllimport)
00020 #endif // KORE_EXPORTS
00021 #define HMODULE image_id
00022 #elif defined( __ATHEOS__ )
00023 #define KORE_ATHEOS
00024 #define KORE_API
00025 #define HMODULE int
00026 #else
00027 #define KORE_UNIX
00028 #define KORE_LINUX
00029 #define KORE_FREEBSD
00030 #define KORE_API
00031 #define HMODULE const void*
00032 #endif
00033 
00037 #define KORE_CALLBACK( name, param_list ) \
00038 public: \
00039     typedef void (* name##CallbackType) param_list; \
00040     void name##Call param_list \
00041     { \
00042         if( name param_list ) \
00043         { \
00044             int n = _##name##Callbacks.size(); \
00045             for( int i=0; i < n; i++ ) \
00046                 _##name##Callbacks[i] param_list; \
00047         } \
00048     } \
00049     void name##Connect(name##CallbackType cb) \
00050     { \
00051         _##name##Callbacks.push_back( cb ); \
00052     } \
00053     void name##Disconnect(name##CallbackType cb) \
00054     { \
00055         _##name##Callbacks.erase( &cb ); \
00056     } \
00057 protected: \
00058     virtual bool name param_list \
00059     { \
00060         return true; \
00061     } \
00062 private: \
00063     vector< name##CallbackType > _##name##Callbacks;
00064 
00065 #define KORE_CALL( name, param_list ) name##Call param_list
00066 #define KORE_CONNECT( name, cb ) name##Connect( cb )
00067 #define KORE_DISCONNECT( name, cb ) name##Diconnect( cb )
00068 
00072 namespace kore
00073 {
00074 };
00075 
00076 using namespace std;
00077 
00078 #endif // KORE_H

Generated on Sat Feb 16 05:44:09 2002 for Korelib by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001