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