IMP  2.0.1
The Integrative Modeling Platform
em_config.h
1 
2 /*
3  * \file IMP/em/em_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, IMPEM_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  * IMPEMEXPORT 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::em namespace.
18  * This is simply achieved by wrapping things with the
19  * IMPEM_BEGIN_NAMESPACE and IMPEM_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 IMPEM_CONFIG_H
31 #define IMPEM_CONFIG_H
32 
33 #include <IMP/base/base_config.h>
34 #include <string>
35 
36 
37 #ifdef _MSC_VER
38 
39 #ifdef IMPEM_EXPORTS
40 #define IMPEMEXPORT __declspec(dllexport)
41 #else // EXPORTS
42 #define IMPEMEXPORT __declspec(dllimport)
43 #endif // EXPORTS
44 
45 #else // _MSC_VER
46 
47 #ifdef GCC_VISIBILITY
48 #define IMPEMEXPORT __attribute__ ((visibility("default")))
49 #else // GCC_VISIBILITY
50 #define IMPEMEXPORT
51 #endif // GCC_VISIBILITY
52 #endif // _MSC_VER
53 
54 #if defined(_MSC_VER) && !defined(SWIG)
55 #ifdef IMPEM_EXPORTS
56 
57 #define IMPEM_EXPORT_TEMPLATE(name) template class __declspec(dllexport) name
58 
59 #else //EXPORTS
60 
61 #define IMPEM_EXPORT_TEMPLATE(name) template class __declspec(dllimport) name
62 
63 #endif // EXPORTS
64 
65 #else // MSC and SWIG
66 #define IMPEM_EXPORT_TEMPLATE(name) IMP_REQUIRE_SEMICOLON_NAMESPACE
67 
68 #endif // MSC and SWIG
69 
70 #if !defined(SWIG) && !defined(IMP_DOXYGEN)
71 
72 #define IMPEM_BEGIN_NAMESPACE \
73 IMP_COMPILER_ENABLE_WARNINGS \
74 namespace IMP { namespace em { \
75 
76 #define IMPEM_END_NAMESPACE \
77 } } \
78 IMP_COMPILER_DISABLE_WARNINGS
79 
80 #define IMPEM_BEGIN_INTERNAL_NAMESPACE \
81 IMPEM_BEGIN_NAMESPACE namespace internal {
82 
83 
84 #define IMPEM_END_INTERNAL_NAMESPACE \
85 } IMPEM_END_NAMESPACE
86 
87 #else
88 #define IMPEM_BEGIN_NAMESPACE \
89 namespace IMP { namespace em {
90 
91 #define IMPEM_END_NAMESPACE \
92 } }
93 
94 #define IMPEM_BEGIN_INTERNAL_NAMESPACE \
95 IMPEM_BEGIN_NAMESPACE namespace internal {
96 
97 
98 #define IMPEM_END_INTERNAL_NAMESPACE \
99 } IMPEM_END_NAMESPACE
100 
101 #endif
102 
103 #define IMP_EM_USE_IMP_CGAL
104 #define IMP_EM_HAS_IMP_CGAL 1
105 #define IMP_EM_USE_IMP_CONTAINER
106 #define IMP_EM_HAS_IMP_CONTAINER 1
107 #define IMP_EM_USE_IMP_DISPLAY
108 #define IMP_EM_HAS_IMP_DISPLAY 1
109 #define IMP_EM_USE_IMP_KERNEL
110 #define IMP_EM_HAS_IMP_KERNEL 1
111 #define IMP_EM_USE_IMP_SCORE_FUNCTOR
112 #define IMP_EM_HAS_IMP_SCORE_FUNCTOR 1
113 #define IMP_EM_USE_BOOST_FILESYSTEM
114 #define IMP_EM_HAS_BOOST_FILESYSTEM 1
115 #define IMP_EM_USE_BOOST_PROGRAMOPTIONS
116 #define IMP_EM_HAS_BOOST_PROGRAMOPTIONS 1
117 #define IMP_EM_USE_BOOST_RANDOM
118 #define IMP_EM_HAS_BOOST_RANDOM 1
119 #define IMP_EM_USE_BOOST_REGEX
120 #define IMP_EM_HAS_BOOST_REGEX 1
121 #define IMP_EM_USE_BOOST_SYSTEM
122 #define IMP_EM_HAS_BOOST_SYSTEM 1
123 #define IMP_EM_USE_CGAL
124 #define IMP_EM_HAS_CGAL 1
125 
126 // functions are defined explicitly for swig
127 
128 namespace IMP { namespace em {
129 /** \name Standard module methods
130  All \imp modules have a set of standard methods to help get information
131  about the module and about files associated with the module.
132  @{
133  */
134 #if !defined(SWIG)
135 IMPEMEXPORT std::string get_module_version();
136 #endif
137 
138 #if !defined(SWIG)
139 // swig will whine about duplicate definitions of function
140 inline std::string get_module_name() {
141  return "IMP::em";
142 }
143 #endif
144 
145 } } //namespace
146 
147 #if !defined(IMP_DOXYGEN) && !defined(SWIG)
148 
149 #include <IMP/base/Showable.h>
150 #include <IMP/base/hash.h>
151 
152 namespace IMP { namespace em {
153 using ::IMP::base::Showable;
154 using ::IMP::base::operator<<;
155 using ::IMP::base::hash_value;
156 } } // namespace
157 namespace IMP { namespace em { namespace internal {
158 using ::IMP::base::Showable;
159 using ::IMP::base::operator<<;
160 using ::IMP::base::hash_value;
161 } } } // namespace
162 
163 #endif // !defined(SWIG) && !defined(IMP_DOXYGEN)
164 
165 
166 #if !defined(SWIG)
167 
168 namespace IMP { namespace em {
169 
170 //! Return the full path to installed data
171 /** Each module has its own data directory, so be sure to use
172  the version of this function in the correct module. To read
173  the data file "data_library" that was placed in the \c data
174  directory of module "mymodule", do something like
175  \code
176  std::ifstream in(IMP::mymodule::get_data_path("data_library"));
177  \endcode
178  This will ensure that the code works when \imp is installed or
179  used via the \c tools/imppy.sh script.
180 */
181 IMPEMEXPORT std::string get_data_path(std::string file_name);
182 
183 //! Return the path to installed example data for this module
184 /** Each module has its own example directory, so be sure to use
185  the version of this function in the correct module. For example
186  to read the file \c example_protein.pdb located in the
187  \c examples directory of the IMP::atom module, do
188  \code
189  IMP::atom::read_pdb(IMP::atom::get_example_path("example_protein.pdb", model));
190  \endcode
191  This will ensure that the code works when \imp is installed or
192  used via the \c tools/imppy.sh script.
193 */
194 IMPEMEXPORT std::string get_example_path(std::string file_name);
195 /** @} */
196 
197 
198 } } // namespace
199 
200 #endif // SWIG
201 
203 
204 #ifdef IMP_DOXYGEN
205 /** \namespace IMP::em
206  \brief See \ref IMP_em_overview "IMP.em Overview" for more information.
207  */
208 #endif
209 
210 #endif /* IMPEM_CONFIG_H */