]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Config.h.in
Moved to version 1.0
[cpPlugins.git] / lib / cpPlugins / Config.h.in
1 // =========================================================================
2 // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3 // =========================================================================
4 #ifndef __cpPlugins__Config__h__
5 #define __cpPlugins__Config__h__
6
7 #include <iostream>
8 #include <memory>
9 #include <string>
10 #include <sstream>
11 #include <stdexcept>
12 #include <cpPlugins_Export.h>
13
14 // =========================================================================
15 // Identify OS
16 // =========================================================================
17
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"
23
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
29 #  define NOMINMAX
30 #  include <windows.h>
31 #  include <tchar.h>
32 #else // cpPlugins_OS_Windows
33 #  define cpPlugins_ENV_SEP ":"
34 #endif // cpPlugins_OS_Windows
35
36 // =========================================================================
37 // Some generic macros
38 // =========================================================================
39
40 #define _cpPluginsErrorMacro_2( CPPLUGINS_OBJECT, CPPLUGINS_MESSAGE )   \
41   {                                                                     \
42     std::stringstream _cpPlugins_error_message_;                        \
43     _cpPlugins_error_message_                                           \
44       << "Error in \"" << __FILE__                                      \
45       << "\", line \"" << __LINE__ << "\": ";                           \
46     if( CPPLUGINS_OBJECT != NULL )                                      \
47     {                                                                   \
48       const cpPlugins::ProcessObject* _cpPlugins_Object =               \
49         reinterpret_cast< const cpPlugins::ProcessObject* >(            \
50           CPPLUGINS_OBJECT                                              \
51           );                                                            \
52       _cpPlugins_error_message_                                         \
53         << "\""                                                         \
54         << _cpPlugins_Object->GetName( ) << "\"@\""                     \
55         << _cpPlugins_Object->GetClassName( ) << "\": ";                \
56     }                                                                   \
57     _cpPlugins_error_message_ CPPLUGINS_MESSAGE;                        \
58     throw std::runtime_error( _cpPlugins_error_message_.str( ) );       \
59   }
60
61 #define _cpPluginsErrorMacro_1( CPPLUGINS_MESSAGE )                     \
62   {                                                                     \
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( ) );       \
69   }
70
71 #define _cpPluginsErrorMacro_0( )               \
72   _cpPluginsErrorMacro_1( << "Unknown error." )
73
74 #define _cpPluginsErrorMacro_( x, A, B, FUNC, ... ) FUNC
75
76 #define cpPluginsErrorMacro( ... )                                      \
77   _cpPluginsErrorMacro_(, ##__VA_ARGS__,                                \
78                         _cpPluginsErrorMacro_2(__VA_ARGS__),            \
79                         _cpPluginsErrorMacro_1(__VA_ARGS__),            \
80                         _cpPluginsErrorMacro_0(__VA_ARGS__)             \
81     )
82
83 #endif // __cpPlugins__Config__h__
84
85 // eof - $RCSfile$