]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Config.h.in
Moved to version 1.0
[cpPlugins.git] / lib / cpPlugins / Config.h.in
index 4e58a1d334576b4d23ddd44844aac41787491f1b..71e0b03d3b6e7acc9cbf401e8458301eebdd14ba 100644 (file)
+// =========================================================================
+// @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
+// =========================================================================
 #ifndef __cpPlugins__Config__h__
 #define __cpPlugins__Config__h__
 
-#include <cpPlugins_Export.h>
+#include <iostream>
+#include <memory>
+#include <string>
+#include <sstream>
 #include <stdexcept>
-#include <cpPlugins/RealConfig.h>
+#include <cpPlugins_Export.h>
+
+// =========================================================================
+// Identify OS
+// =========================================================================
 
-/*
- * =========================================================================
- * Identify OS
- * =========================================================================
- */
 #define cpPlugins_OS_@CMAKE_SYSTEM_NAME@
-#ifdef cpPlugins_OS_Windows
-#  define cpPlugins_LIB_PREFIX     ""
-#  define cpPlugins_ENV_SEPARATOR  ";"
-#  define cpPlugins_PATH_SEPARATOR '\\'
-#  define cpPlugins_LIB_EXT        ".dll"
-#else // cpPlugins_OS_Windows
-#  define cpPlugins_LIB_PREFIX     "lib"
-#  define cpPlugins_ENV_SEPARATOR  ":"
-#  define cpPlugins_PATH_SEPARATOR '/'
-#  ifdef cpPlugins_OS_Linux
-#    define cpPlugins_LIB_EXT ".so"
-#  else // cpPlugins_OS_Linux
-#    define cpPlugins_LIB_EXT ".dylib"
-#  endif // cpPlugins_OS_Linux
-#endif // cpPlugins_OS_Windows
+#define cpPlugins_LIB_EXT    "@CMAKE_SHARED_LIBRARY_SUFFIX@"
+#define cpPlugins_LIB_PREFIX "@CMAKE_SHARED_LIBRARY_PREFIX@"
+#define cpPlugins_ENV        "cpPlugins_PATH"
+#define cpPlugins_EXT        ".plg"
 
 #ifdef cpPlugins_OS_Windows
+#  define cpPlugins_ENV_SEP ";"
 #  ifndef WIN32_LEAN_AND_MEAN
 #    define WIN32_LEAN_AND_MEAN
 #  endif // WIN32_LEAN_AND_MEAN
 #  define NOMINMAX
 #  include <windows.h>
 #  include <tchar.h>
+#else // cpPlugins_OS_Windows
+#  define cpPlugins_ENV_SEP ":"
 #endif // cpPlugins_OS_Windows
 
-/*
- * =========================================================================
- * Some global values
- * =========================================================================
- */
-#define cpPlugins_PATHS "cpPlugins_PATHS"
-#define cpPlugins_CONFIG "cpPlugins_Libraries.config"
-
-#define cpPlugins_QT4_@QT4_FOUND@
-#ifdef cpPlugins_QT4_TRUE
-#  ifndef cpPlugins_QT4
-#    define cpPlugins_QT4
-#  endif // cpPlugins_QT4
-#else // cpPlugins_QT4_TRUE
-#  undef cpPlugins_QT4
-#endif // cpPlugins_QT4_TRUE
-
-/*
- * =========================================================================
- * Version numbers and strings
- * =========================================================================
- */
-#define cpPlugins_MAJOR_VERSION   @prj_MAJ_VER@
-#define cpPlugins_MINOR_VERSION   @prj_MIN_VER@
-#define cpPlugins_RELEASE_VERSION @prj_REL_VER@
-#define cpPlugins_VERSION         "@prj_VERSION@"
-#define cpPlugins_SHORT_VERSION   "@prj_SHORT_VERSION@"
-#define cpPlugins_OpenGL_BackEnd_@VTK_RENDERING_BACKEND@
+// =========================================================================
+// Some generic macros
+// =========================================================================
 
-/*
- * =========================================================================
- * Language related macros
- * =========================================================================
- */
-/* TODO
-   #if __cplusplus >= 201103L
-   #  define override override
-   #  define cpPlugins_DELETE_FUNCTION =delete
-   #  define cpPlugins_NULLPTR  nullptr
-   #  define cpPlugins_NOEXCEPT noexcept
-   #  define cpPlugins_HAS_CXX11_STATIC_ASSERT
-   #  define cpPlugins_HAS_CXX11_RVREF
-   #else // __cplusplus >= 201103L
-   #  define override
-   #  define cpPlugins_DELETE_FUNCTION
-   #  define cpPlugins_NULLPTR  NULL
-   #  define cpPlugins_NOEXCEPT throw()
-   #endif // __cplusplus >= 201103L
-*/
+#define _cpPluginsErrorMacro_2( CPPLUGINS_OBJECT, CPPLUGINS_MESSAGE )   \
+  {                                                                     \
+    std::stringstream _cpPlugins_error_message_;                        \
+    _cpPlugins_error_message_                                           \
+      << "Error in \"" << __FILE__                                      \
+      << "\", line \"" << __LINE__ << "\": ";                           \
+    if( CPPLUGINS_OBJECT != NULL )                                      \
+    {                                                                   \
+      const cpPlugins::ProcessObject* _cpPlugins_Object =               \
+        reinterpret_cast< const cpPlugins::ProcessObject* >(            \
+          CPPLUGINS_OBJECT                                              \
+          );                                                            \
+      _cpPlugins_error_message_                                         \
+        << "\""                                                         \
+        << _cpPlugins_Object->GetName( ) << "\"@\""                     \
+        << _cpPlugins_Object->GetClassName( ) << "\": ";                \
+    }                                                                   \
+    _cpPlugins_error_message_ CPPLUGINS_MESSAGE;                        \
+    throw std::runtime_error( _cpPlugins_error_message_.str( ) );       \
+  }
 
-/*
- * =========================================================================
- * Some macros
- * =========================================================================
- */
+#define _cpPluginsErrorMacro_1( CPPLUGINS_MESSAGE )                     \
+  {                                                                     \
+    std::stringstream _cpPlugins_error_message_;                        \
+    _cpPlugins_error_message_                                           \
+      << "Error in \"" << __FILE__                                      \
+      << "\", line \"" << __LINE__ << "\": ";                           \
+    _cpPlugins_error_message_ CPPLUGINS_MESSAGE;                        \
+    throw std::runtime_error( _cpPlugins_error_message_.str( ) );       \
+  }
 
-#define cpPlugins_Id_Macro( _class, _category )                         \
-  public:                                                               \
-  virtual const char* GetClassName( ) const override          \
-  { return( #_class ); }                                                \
-  virtual const char* GetClassCategory( ) const override      \
-  { return( #_category ); }
+#define _cpPluginsErrorMacro_0( )               \
+  _cpPluginsErrorMacro_1( << "Unknown error." )
 
-#define cpPluginsObject( _cls, _scls, _cat )                            \
-  public:                                                               \
-  typedef _cls                            Self;                         \
-  typedef _scls                           Superclass;                   \
-  typedef itk::SmartPointer< Self >       Pointer;                      \
-  typedef itk::SmartPointer< const Self > ConstPointer;                 \
-  public:                                                               \
-  itkNewMacro( Self );                                                  \
-  itkTypeMacro( _cls, _scls );                                          \
-  public:                                                               \
-  virtual const char* GetClassName( ) const override          \
-  { return( #_cls ); }                                                  \
-  virtual const char* GetClassCategory( ) const override      \
-  { return( #_cat ); }                                                  \
-  protected:                                                            \
-  _cls( );                                                              \
-  virtual ~_cls( );                                                     \
-  virtual void _GenerateData( ) override;                     \
-  private:                                                              \
-  _cls( const Self& );                                                  \
-  Self& operator=( const Self& )
+#define _cpPluginsErrorMacro_( x, A, B, FUNC, ... ) FUNC
 
-#define cpPlugins_Compatibility_Macro                           \
-  virtual bool IsCompatible(                                    \
-    const DataObject* other                                     \
-    ) const override                                  \
-  {                                                             \
-    return( dynamic_cast< const Self* >( other ) != NULL );     \
-  }
+#define cpPluginsErrorMacro( ... )                                      \
+  _cpPluginsErrorMacro_(, ##__VA_ARGS__,                                \
+                        _cpPluginsErrorMacro_2(__VA_ARGS__),            \
+                        _cpPluginsErrorMacro_1(__VA_ARGS__),            \
+                        _cpPluginsErrorMacro_0(__VA_ARGS__)             \
+    )
 
 #endif // __cpPlugins__Config__h__