1 // =========================================================================
2 // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3 // =========================================================================
4 #ifndef __cpPlugins__Config__h__
5 #define __cpPlugins__Config__h__
12 #include <cpPlugins_Export.h>
14 // =========================================================================
16 // =========================================================================
18 #define cpPlugins_OS_@CMAKE_SYSTEM_NAME@
19 #define cpPlugins_LIB_EXT "@CMAKE_SHARED_LIBRARY_SUFFIX@"
20 #define cpPlugins_LIB_PREFIX "@CMAKE_SHARED_LIBRARY_PREFIX@"
21 #define cpPlugins_ENV "cpPlugins_PATH"
22 #define cpPlugins_EXT ".plg"
24 #ifdef cpPlugins_OS_Windows
25 # define cpPlugins_ENV_SEP ";"
26 # ifndef WIN32_LEAN_AND_MEAN
27 # define WIN32_LEAN_AND_MEAN
28 # endif // WIN32_LEAN_AND_MEAN
32 #else // cpPlugins_OS_Windows
33 # define cpPlugins_ENV_SEP ":"
34 #endif // cpPlugins_OS_Windows
36 // =========================================================================
37 // Some generic macros
38 // =========================================================================
40 #define _cpPluginsErrorMacro_2( CPPLUGINS_OBJECT, CPPLUGINS_MESSAGE ) \
42 std::stringstream _cpPlugins_error_message_; \
43 _cpPlugins_error_message_ \
44 << "Error in \"" << __FILE__ \
45 << "\", line \"" << __LINE__ << "\": "; \
46 if( CPPLUGINS_OBJECT != NULL ) \
48 const cpPlugins::ProcessObject* _cpPlugins_Object = \
49 reinterpret_cast< const cpPlugins::ProcessObject* >( \
52 _cpPlugins_error_message_ \
54 << _cpPlugins_Object->GetName( ) << "\"@\"" \
55 << _cpPlugins_Object->GetClassName( ) << "\": "; \
57 _cpPlugins_error_message_ CPPLUGINS_MESSAGE; \
58 throw std::runtime_error( _cpPlugins_error_message_.str( ) ); \
61 #define _cpPluginsErrorMacro_1( CPPLUGINS_MESSAGE ) \
63 std::stringstream _cpPlugins_error_message_; \
64 _cpPlugins_error_message_ \
65 << "Error in \"" << __FILE__ \
66 << "\", line \"" << __LINE__ << "\": "; \
67 _cpPlugins_error_message_ CPPLUGINS_MESSAGE; \
68 throw std::runtime_error( _cpPlugins_error_message_.str( ) ); \
71 #define _cpPluginsErrorMacro_0( ) \
72 _cpPluginsErrorMacro_1( << "Unknown error." )
74 #define _cpPluginsErrorMacro_( x, A, B, FUNC, ... ) FUNC
76 #define cpPluginsErrorMacro( ... ) \
77 _cpPluginsErrorMacro_(, ##__VA_ARGS__, \
78 _cpPluginsErrorMacro_2(__VA_ARGS__), \
79 _cpPluginsErrorMacro_1(__VA_ARGS__), \
80 _cpPluginsErrorMacro_0(__VA_ARGS__) \
83 #endif // __cpPlugins__Config__h__