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