Config.h
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/plugin/Config.h
22 
23  \brief Configuration flags for the TerraLib Plugin module.
24 */
25 
26 #ifndef __TERRALIB_PLUGIN_INTERNAL_CONFIG_H
27 #define __TERRALIB_PLUGIN_INTERNAL_CONFIG_H
28 
29 /** @name Plugin Specific Macros
30  * Macros used by plugin module.
31  */
32 //@{
33 
34 /*!
35  \def TE_PLUGIN_MODULE_NAME
36 
37  \brief The module name (identifier).
38 */
39 #define TE_PLUGIN_MODULE_NAME "te.plugin"
40 
41 /*!
42  \def PLUGIN_CALL_BACK_DECLARATION
43 
44  \brief This macro should be used by C++ plugins in order to declare the exportable/callable DLL function.
45 */
46 #define PLUGIN_CALL_BACK_DECLARATION(PLUGIN_EXPORT_MACRO) \
47  extern "C" PLUGIN_EXPORT_MACRO te::plugin::Plugin* CppPluginGetInstance(const te::plugin::PluginInfo& info);
48 
49 /*!
50  \def PLUGIN_CALL_BACK_IMPL
51 
52  \brief This macro should be used by C++ plugins in order to declare the exportable/callable DLL function.
53 */
54 #define PLUGIN_CALL_BACK_IMPL(PLUGIN_CLASS_NAME) \
55  te::plugin::Plugin* CppPluginGetInstance(const te::plugin::PluginInfo& info) \
56  { \
57  return new PLUGIN_CLASS_NAME(info); \
58  }
59 
60 /*!
61  \def TE_CPPPLUGINENGINE_CODE
62 
63  \brief The plugin engine name for C++ plugins.
64 */
65 #define TE_CPPPLUGINENGINE_CODE "C++"
66 
67 /*!
68  \def TE_DEFAULT_PLUGINS_DIR
69 
70  \brief The default look up plugin dir.
71 */
72 #define TE_DEFAULT_PLUGINS_DIR "share/terralib/plugins"
73 
74 /*!
75  \def TE_DEFAULT_PLUGIN_EXTENSION
76 
77  \brief The default extension for plugins description files.
78 */
79 #define TE_DEFAULT_PLUGIN_EXTENSION ".teplg"
80 
81 /*!
82  \def TE_AUTOMATICALLY_LOAD_DEFAULT_XML_PLUGIN
83 
84  \brief If this flag is set to 1 the plugin module will start a default XML driver.
85  */
86 #define TE_AUTOMATICALLY_LOAD_DEFAULT_XML_PLUGIN 1
87 
88 //@}
89 
90 /** @name DLL/LIB Module
91  * Flags for building TerraLib as a DLL or as a Static Library
92  */
93 //@{
94 
95 /*!
96  \def TEPLUGINEXPORT
97 
98  \brief You can use this macro in order to export/import classes and functions from this module.
99 
100  \note If you want to compile TerraLib as DLL in Windows, remember to insert TEPLUGINDLL into the project's list of defines.
101 
102  \note If you want to compile TerraLib as an Static Library under Windows, remember to insert the TEPLUGINSTATIC flag into the project list of defines.
103 */
104 #ifdef WIN32
105 
106  #ifdef _MSC_VER
107  #pragma warning( disable : 4251 )
108  #pragma warning( disable : 4275 )
109  #pragma warning( disable : 4290 )
110  #endif
111 
112  #ifdef TEPLUGINSTATIC
113  #define TEPLUGINEXPORT // Don't need to export/import... it is a static library
114  #elif TEPLUGINDLL
115  #define TEPLUGINEXPORT __declspec(dllexport) // export DLL information
116  #else
117  #define TEPLUGINEXPORT __declspec(dllimport) // import DLL information
118  #endif
119 #else
120  #define TEPLUGINEXPORT
121 #endif
122 
123 //@}
124 
125 #endif // __TERRALIB_PLUGIN_INTERNAL_CONFIG_H
126