IMP  2.3.1
The Integrative Modeling Platform
kernel_config.h
1 /*
2  * \file IMP/kernel/kernel_config.h
3  * \brief Provide macros to mark functions and classes as exported
4  * from a DLL/.so, and to set up namespaces
5  *
6  * When building the module, IMPKERNEL_EXPORTS should be defined, and when
7  * using the module externally, it should not be. Classes and functions
8  * declared in the module's headers should then be marked with
9  * IMPKERNELEXPORT if they are intended to be part of the API and
10  * they are not defined entirely in a header.
11  *
12  * The Windows build environment requires applications to mark exports in
13  * this way; we use the same markings to set the visibility of ELF symbols
14  * if we have compiler support.
15  *
16  * All code in this module should live in the IMP::kernel namespace.
17  * This is simply achieved by wrapping things with the
18  * IMPKERNEL_BEGIN_NAMESPACE and IMPKERNEL_END_NAMESPACE macros.
19  * There are similar macros for module code that is designed to be for
20  * internal use only.
21  *
22  * This header is auto-generated by tools/build/setup_module.py;
23  * it should not be edited manually.
24  *
25  * Copyright 2007-2014 IMP Inventors. All rights reserved.
26  *
27  */
28 
29 #ifndef IMPKERNEL_CONFIG_H
30 #define IMPKERNEL_CONFIG_H
31 
32 #include <IMP/base/base_config.h>
33 #include <string>
34 
35 #ifdef _MSC_VER
36 
37 #ifdef IMPKERNEL_EXPORTS
38 #define IMPKERNELEXPORT __declspec(dllexport)
39 #else // EXPORTS
40 #define IMPKERNELEXPORT __declspec(dllimport)
41 #endif // EXPORTS
42 
43 #else // _MSC_VER
44 
45 #ifdef GCC_VISIBILITY
46 #define IMPKERNELEXPORT __attribute__((visibility("default")))
47 #else // GCC_VISIBILITY
48 #define IMPKERNELEXPORT
49 #endif // GCC_VISIBILITY
50 
51 #endif // _MSC_VER
52 
53 #if defined(_MSC_VER) && !defined(SWIG)
54 #ifdef IMPKERNEL_EXPORTS
55 
56 #define IMPKERNEL_EXPORT_TEMPLATE(name) \
57  template class __declspec(dllexport) name
58 
59 #else //EXPORTS
60 
61 #define IMPKERNEL_EXPORT_TEMPLATE(name) \
62  template class __declspec(dllimport) name
63 
64 #endif // EXPORTS
65 
66 #else // MSC and SWIG
67 #define IMPKERNEL_EXPORT_TEMPLATE(name) IMP_REQUIRE_SEMICOLON_NAMESPACE
68 
69 #endif // MSC and SWIG
70 
71 #if !defined(SWIG) && !defined(IMP_DOXYGEN)
72 
73 #define IMPKERNEL_BEGIN_NAMESPACE \
74  IMP_COMPILER_ENABLE_WARNINGS namespace IMP{namespace kernel {
75 
76 #define IMPKERNEL_END_NAMESPACE } } \
77 IMP_COMPILER_DISABLE_WARNINGS
78 
79 #define IMPKERNEL_BEGIN_INTERNAL_NAMESPACE IMPKERNEL_BEGIN_NAMESPACE \
80  namespace internal {
81 
82 #define IMPKERNEL_END_INTERNAL_NAMESPACE } IMPKERNEL_END_NAMESPACE
83 
84 #else // SWIG and DOXYGEN
85 #define IMPKERNEL_BEGIN_NAMESPACE namespace IMP{namespace kernel {
86 
87 #define IMPKERNEL_END_NAMESPACE } }
88 
89 #define IMPKERNEL_BEGIN_INTERNAL_NAMESPACE IMPKERNEL_BEGIN_NAMESPACE\
90  namespace internal {
91 
92 #define IMPKERNEL_END_INTERNAL_NAMESPACE } IMPKERNEL_END_NAMESPACE
93 
94 #endif // SWIG AND DOXYGEN
95 
96 #define IMP_KERNEL_USE_IMP_CGAL
97 #define IMP_KERNEL_HAS_IMP_CGAL 1
98 #define IMP_KERNEL_USE_BOOST_PROGRAMOPTIONS
99 #define IMP_KERNEL_HAS_BOOST_PROGRAMOPTIONS 1
100 #define IMP_KERNEL_USE_BOOST_RANDOM
101 #define IMP_KERNEL_HAS_BOOST_RANDOM 1
102 #define IMP_KERNEL_USE_BOOST_SYSTEM
103 #define IMP_KERNEL_HAS_BOOST_SYSTEM 1
104 #define IMP_KERNEL_USE_CGAL
105 #define IMP_KERNEL_HAS_CGAL 1
106 
107 // functions are defined explicitly for SWIG
108 namespace IMP {
109  namespace kernel {
110 /** \name Standard module functions
111  All \imp modules have a set of standard functions to help get information
112  about the module and about files associated with the module.
113  @{
114  */
115 #if !defined(SWIG)
116  IMPKERNELEXPORT std::string get_module_version();
117 #endif
118 
119 #if !defined(SWIG)
120  // SWIG will whine about duplicate definitions of function
121  inline std::string get_module_name() { return "IMP::kernel"; }
122 #endif
123 
124  //! Return the full path to installed data
125  /** Each module has its own data directory, so be sure to use
126  the version of this function in the correct module. To read
127  the data file "data_library" that was placed in the \c data
128  directory of module "mymodule", do something like
129  \code
130  std::ifstream in(IMP::mymodule::get_data_path("data_library"));
131  \endcode
132  This will ensure that the code works when \imp is installed or
133  used via the \c setup_environment.sh script.
134  */
135 #if !defined(SWIG)
136  IMPKERNELEXPORT std::string get_data_path(std::string file_name);
137 #endif
138 
139  //! Return the path to installed example data for this module
140  /** Each module has its own example directory, so be sure to use
141  the version of this function in the correct module. For example
142  to read the file \c example_protein.pdb located in the
143  \c examples directory of the IMP::atom module, do
144  \code
145  IMP::atom::read_pdb(IMP::atom::get_example_path("example_protein.pdb",
146  model));
147  \endcode
148  This will ensure that the code works when \imp is installed or
149  used via the \c setup_environment.sh script.
150  */
151 #if !defined(SWIG)
152  IMPKERNELEXPORT std::string get_example_path(std::string file_name);
153 #endif
154  /** @} */
155 
156 
157  }
158 } //namespace
159 
160 #if !defined(IMP_DOXYGEN) && !defined(SWIG)
161 
162 #include <IMP/base/Showable.h>
163 #include <IMP/base/hash.h>
164 
165 namespace IMP { namespace kernel {
166 using ::IMP::base::Showable;
167 using ::IMP::base::operator<<;
168 using ::IMP::base::hash_value;
169 } } // namespace
170 namespace IMP { namespace kernel { namespace internal {
171 using ::IMP::base::Showable;
172 using ::IMP::base::operator<<;
173 using ::IMP::base::hash_value;
174 } } } // namespace
175 
176 #endif // !defined(SWIG) && !defined(IMP_DOXYGEN)
177 
178 
180 
181 #endif /* IMPKERNEL_CONFIG_H */
182 
183 // Here so it is always parsed
184 
185 #ifdef IMPKERNEL_DEPRECATED_HEADER
186 #undef IMPKERNEL_DEPRECATED_HEADER
187 #undef IMPKERNEL_DEPRECATED_VALUE_DEF
188 #undef IMPKERNEL_DEPRECATED_VALUE_DECL
189 #undef IMPKERNEL_DEPRECATED_OBJECT_DEF
190 #undef IMPKERNEL_DEPRECATED_OBJECT_DECL
191 #undef IMPKERNEL_DEPRECATED_FUNCTION_DEF
192 #undef IMPKERNEL_DEPRECATED_FUNCTION_DECL
193 #undef IMPKERNEL_DEPRECATED_METHOD_DEF
194 #undef IMPKERNEL_DEPRECATED_METHOD_DECL
195 #undef IMPKERNEL_DEPRECATED_MACRO
196 #undef IMPKERNEL_SHOW_WARNINGS
197 #endif
198 
199 // the central modules we can update easily, so don't warn in them
200 #if defined( IMPKERNEL_COMPILATION) \
201  || defined(SWIG) || defined(IMP_SWIG_WRAPPER) \
202  || defined( IMPKERNEL_ALL) || defined(IMP_DOXYGEN) \
203  || defined(IMPBASE_COMPILATION) || defined(IMPKERNEL_COMPILATION) \
204  || defined(IMPCORE_COMPILATION) || defined(IMPATOM_COMPILATION) \
205  || defined(IMPSTATISTICS_COMPILATION) || defined(IMPDOMINO_COMPILATION) \
206  || defined(IMPCONTAINER_COMPILATION) || defined(IMPDISPLAY_COMPILATION) \
207  || defined(IMPSCOREFUNCTOR_COMPILATION) || defined(IMPRMF_COMPILATION) \
208  || defined(IMPGSL_COMPILATION)
209 #define IMPKERNEL_SHOW_WARNINGS 0
210 #else
211 #define IMPKERNEL_SHOW_WARNINGS 1
212 #endif
213 
214 // suppress header warnings with all header, SWIG wrapper and in the module
215 #if IMPKERNEL_SHOW_WARNINGS
216 #define IMPKERNEL_DEPRECATED_HEADER(version, help_message) \
217  IMP_PRAGMA(message(__FILE__ " is deprecated: " help_message))
218 #define IMPKERNEL_DEPRECATED_VALUE_DECL(version) \
219  IMP_DEPRECATED_ATTRIBUTE
220 #define IMPKERNEL_DEPRECATED_OBJECT_DECL(version) \
221  IMP_DEPRECATED_ATTRIBUTE
222 #define IMPKERNEL_DEPRECATED_FUNCTION_DECL(version) \
223  IMP_DEPRECATED_ATTRIBUTE
224 #define IMPKERNEL_DEPRECATED_METHOD_DECL(version) \
225  IMP_DEPRECATED_ATTRIBUTE
226 
227 #else //IMPKERNEL_SHOW_WARNINGS
228 /** See [deprecation support](https://github.com/salilab/imp/wiki/Deprecation). */
229 #define IMPKERNEL_DEPRECATED_HEADER(version, help_message) \
230 /** See [deprecation support](https://github.com/salilab/imp/wiki/Deprecation). */
231 #define IMPKERNEL_DEPRECATED_VALUE_DECL(version)
232 /** See [deprecation support](https://github.com/salilab/imp/wiki/Deprecation). */
233 #define IMPKERNEL_DEPRECATED_OBJECT_DECL(version)
234 /** See [deprecation support](https://github.com/salilab/imp/wiki/Deprecation). */
235 #define IMPKERNEL_DEPRECATED_FUNCTION_DECL(version)
236 /** See [deprecation support](https://github.com/salilab/imp/wiki/Deprecation). */
237 #define IMPKERNEL_DEPRECATED_METHOD_DECL(version)
238 
239 #endif // IMPKERNEL_SHOW_WARNINGS
240 
241 // only warn about it in the all inclusion to cut down on copies
242 #if !defined(IMP_ALL) || defined(SWIG) || defined(IMP_DOXYGEN) \
243  || defined(IMPBASE_COMPILATION) || defined(IMPKERNEL_COMPILATION) \
244  || defined(IMPCORE_COMPILATION) || defined(IMPATOM_COMPILATION) \
245  || defined(IMPSTATISTICS_COMPILATION) || defined(IMPDOMINO_COMPILATION) \
246  || defined(IMPCONTAINER_COMPILATION) || defined(IMPDISPLAY_COMPILATION) \
247  || defined(IMPSCOREFUNCTOR_COMPILATION)
248 /** See [deprecation support](https://github.com/salilab/imp/wiki/Deprecation). */
249 #define IMPKERNEL_DEPRECATED_MACRO(version, message)
250 
251 #else
252 #define IMPKERNEL_DEPRECATED_MACRO(version, message) \
253  IMP_DEPRECATED_MACRO(version, message)
254 #endif
255 
256 /** See [deprecation support](https://github.com/salilab/imp/wiki/Deprecation). */
257 #define IMPKERNEL_DEPRECATED_VALUE_DEF(version, message) \
258  IMP_DEPRECATED_VALUE_RUNTIME_WARNING(version, message)
259 
260 /** See [deprecation support](https://github.com/salilab/imp/wiki/Deprecation). */
261 #define IMPKERNEL_DEPRECATED_OBJECT_DEF(version, message) \
262  IMP_DEPRECATED_OBJECT_RUNTIME_WARNING(version, message)
263 
264 /** See [deprecation support](https://github.com/salilab/imp/wiki/Deprecation). */
265 #define IMPKERNEL_DEPRECATED_FUNCTION_DEF(version, message) \
266  IMP_DEPRECATED_FUNCTION_RUNTIME_WARNING(version, message)
267 
268 /** See [deprecation support](https://github.com/salilab/imp/wiki/Deprecation). */
269 #define IMPKERNEL_DEPRECATED_METHOD_DEF(version, message) \
270  IMP_DEPRECATED_METHOD_RUNTIME_WARNING(version, message)
271 
272 
274 
275 #if defined(IMP_EXECUTABLE) && !defined(IMP_EXECUTABLE_WARNINGS)
276 IMP_COMPILER_ENABLE_WARNINGS
277 #define IMP_EXECUTABLE_WARNINGS
278 #endif
IO support.
IO support.
std::string get_data_path(std::string file_name)
Return the full path to installed data.
std::string get_example_path(std::string file_name)
Return the path to installed example data for this module.
Various compiler workarounds.