IMP  2.0.1
The Integrative Modeling Platform
kernel_config.h
1 
2 /*
3  * \file IMP/kernel/kernel_config.h
4  * \brief Provide macros to mark functions and classes as exported
5  * from a DLL/.so, and to set up namespaces
6  *
7  * When building the module, IMPKERNEL_EXPORTS should be defined, and when
8  * using the module externally, it should not be. Classes and functions
9  * declared in the module's headers should then be marked with
10  * IMPKERNELEXPORT if they are intended to be part of the API and
11  * they are not defined entirely in a header.
12  *
13  * The Windows build environment requires applications to mark exports in
14  * this way; we use the same markings to set the visibility of ELF symbols
15  * if we have compiler support.
16  *
17  * All code in this module should live in the IMP::kernel namespace.
18  * This is simply achieved by wrapping things with the
19  * IMPKERNEL_BEGIN_NAMESPACE and IMPKERNEL_END_NAMESPACE macros.
20  * There are similar macros for module code that is designed to be for
21  * internal use only.
22  *
23  * This header is auto-generated by tools/build/setup_module.py;
24  * it should not be edited manually.
25  *
26  * Copyright 2007-2013 IMP Inventors. All rights reserved.
27  *
28  */
29 
30 #ifndef IMPKERNEL_CONFIG_H
31 #define IMPKERNEL_CONFIG_H
32 
33 #include <IMP/base/base_config.h>
34 #include <string>
35 
36 
37 #ifdef _MSC_VER
38 
39 #ifdef IMPKERNEL_EXPORTS
40 #define IMPKERNELEXPORT __declspec(dllexport)
41 #else // EXPORTS
42 #define IMPKERNELEXPORT __declspec(dllimport)
43 #endif // EXPORTS
44 
45 #else // _MSC_VER
46 
47 #ifdef GCC_VISIBILITY
48 #define IMPKERNELEXPORT __attribute__ ((visibility("default")))
49 #else // GCC_VISIBILITY
50 #define IMPKERNELEXPORT
51 #endif // GCC_VISIBILITY
52 #endif // _MSC_VER
53 
54 #if defined(_MSC_VER) && !defined(SWIG)
55 #ifdef IMPKERNEL_EXPORTS
56 
57 #define IMPKERNEL_EXPORT_TEMPLATE(name) template class __declspec(dllexport) name
58 
59 #else //EXPORTS
60 
61 #define IMPKERNEL_EXPORT_TEMPLATE(name) template class __declspec(dllimport) name
62 
63 #endif // EXPORTS
64 
65 #else // MSC and SWIG
66 #define IMPKERNEL_EXPORT_TEMPLATE(name) IMP_REQUIRE_SEMICOLON_NAMESPACE
67 
68 #endif // MSC and SWIG
69 
70 #if !defined(SWIG) && !defined(IMP_DOXYGEN)
71 
72 #define IMPKERNEL_BEGIN_NAMESPACE \
73 IMP_COMPILER_ENABLE_WARNINGS \
74 namespace IMP { namespace kernel { \
75 
76 #define IMPKERNEL_END_NAMESPACE \
77 } } \
78 IMP_COMPILER_DISABLE_WARNINGS
79 
80 #define IMPKERNEL_BEGIN_INTERNAL_NAMESPACE \
81 IMPKERNEL_BEGIN_NAMESPACE namespace internal {
82 
83 
84 #define IMPKERNEL_END_INTERNAL_NAMESPACE \
85 } IMPKERNEL_END_NAMESPACE
86 
87 #else
88 #define IMPKERNEL_BEGIN_NAMESPACE \
89 namespace IMP { namespace kernel {
90 
91 #define IMPKERNEL_END_NAMESPACE \
92 } }
93 
94 #define IMPKERNEL_BEGIN_INTERNAL_NAMESPACE \
95 IMPKERNEL_BEGIN_NAMESPACE namespace internal {
96 
97 
98 #define IMPKERNEL_END_INTERNAL_NAMESPACE \
99 } IMPKERNEL_END_NAMESPACE
100 
101 #endif
102 
103 #define IMP_KERNEL_USE_IMP_CGAL
104 #define IMP_KERNEL_HAS_IMP_CGAL 1
105 #define IMP_KERNEL_USE_BOOST_PROGRAMOPTIONS
106 #define IMP_KERNEL_HAS_BOOST_PROGRAMOPTIONS 1
107 #define IMP_KERNEL_USE_BOOST_RANDOM
108 #define IMP_KERNEL_HAS_BOOST_RANDOM 1
109 #define IMP_KERNEL_USE_BOOST_SYSTEM
110 #define IMP_KERNEL_HAS_BOOST_SYSTEM 1
111 #define IMP_KERNEL_USE_CGAL
112 #define IMP_KERNEL_HAS_CGAL 1
113 
114 // functions are defined explicitly for swig
115 
116 namespace IMP { namespace kernel {
117 /** \name Standard module methods
118  All \imp modules have a set of standard methods to help get information
119  about the module and about files associated with the module.
120  @{
121  */
122 #if !defined(SWIG)
123 IMPKERNELEXPORT std::string get_module_version();
124 #endif
125 
126 #if !defined(SWIG)
127 // swig will whine about duplicate definitions of function
128 inline std::string get_module_name() {
129  return "IMP::kernel";
130 }
131 #endif
132 
133 } } //namespace
134 
135 #if !defined(IMP_DOXYGEN) && !defined(SWIG)
136 
137 #include <IMP/base/Showable.h>
138 #include <IMP/base/hash.h>
139 
140 namespace IMP { namespace kernel {
141 using ::IMP::base::Showable;
142 using ::IMP::base::operator<<;
143 using ::IMP::base::hash_value;
144 } } // namespace
145 namespace IMP { namespace kernel { namespace internal {
146 using ::IMP::base::Showable;
147 using ::IMP::base::operator<<;
148 using ::IMP::base::hash_value;
149 } } } // namespace
150 
151 #endif // !defined(SWIG) && !defined(IMP_DOXYGEN)
152 
153 
154 #if !defined(SWIG)
155 
156 namespace IMP { namespace kernel {
157 
158 //! Return the full path to installed data
159 /** Each module has its own data directory, so be sure to use
160  the version of this function in the correct module. To read
161  the data file "data_library" that was placed in the \c data
162  directory of module "mymodule", do something like
163  \code
164  std::ifstream in(IMP::mymodule::get_data_path("data_library"));
165  \endcode
166  This will ensure that the code works when \imp is installed or
167  used via the \c tools/imppy.sh script.
168 */
169 IMPKERNELEXPORT std::string get_data_path(std::string file_name);
170 
171 //! Return the path to installed example data for this module
172 /** Each module has its own example directory, so be sure to use
173  the version of this function in the correct module. For example
174  to read the file \c example_protein.pdb located in the
175  \c examples directory of the IMP::atom module, do
176  \code
177  IMP::atom::read_pdb(IMP::atom::get_example_path("example_protein.pdb", model));
178  \endcode
179  This will ensure that the code works when \imp is installed or
180  used via the \c tools/imppy.sh script.
181 */
182 IMPKERNELEXPORT std::string get_example_path(std::string file_name);
183 /** @} */
184 
185 
186 } } // namespace
187 
188 #endif // SWIG
189 
191 
192 #ifdef IMP_DOXYGEN
193 /** \namespace IMP::kernel
194  \brief See \ref IMP_kernel_overview "IMP.kernel Overview" for more information.
195  */
196 #endif
197 
198 #endif /* IMPKERNEL_CONFIG_H */