 |
Open Graph Drawing Framework |
v. 2023.09 (Elderberry)
|
|
|
Go to the documentation of this file.
40 #if defined(OGDF_DEBUG) && defined(NDEBUG)
41 # error "Contradicting configuration: Macros OGDF_DEBUG and NDEBUG are defined."
52 #if defined(unix) || defined(__unix__) || defined(__unix) || defined(_AIX) || defined(__APPLE__)
53 # define OGDF_SYSTEM_UNIX
56 #if defined(__WIN32__) || defined(_WIN32) || defined(__NT__)
57 # define OGDF_SYSTEM_WINDOWS
61 #if defined(__APPLE__)
62 # define OGDF_SYSTEM_OSX
67 #if __cplusplus < 201103
69 # if defined(_MSC_VER)
71 # error "Compiling OGDF requires Visual C++ 11 (Visual Studio 2012) or higher!"
74 # elif defined(__GNUC__)
75 # ifndef __GXX_EXPERIMENTAL_CXX0X__
76 # error "No C++11 support activated for g++ (compile with -std=c++0x or -std=c++11)!"
80 # error "Compiling OGDF requires a C++11 compliant compiler!"
85 #ifdef __has_cpp_attribute
86 # define OGDF_HAS_CPP_ATTRIBUTE(x) \
87 (__has_cpp_attribute(x) && __cplusplus >= __has_cpp_attribute(x))
89 # define OGDF_HAS_CPP_ATTRIBUTE(x) 0
161 #define OGDF_EXPORT_TEMPL_DECL OGDF_EXPORT
169 #define OGDF_EXPORT_TEMPL_INST
180 #ifdef OGDF_SYSTEM_WINDOWS
184 # define OGDF_EXPORT __declspec(dllexport)
185 # undef OGDF_EXPORT_TEMPL_DECL
186 # undef OGDF_EXPORT_TEMPL_INST
187 # define OGDF_EXPORT_TEMPL_DECL
188 # define OGDF_EXPORT_TEMPL_INST OGDF_EXPORT
190 # define OGDF_EXPORT __declspec(dllimport)
196 # define OGDF_EXPORT __attribute__((visibility("default")))
197 # define OGDF_LOCAL __attribute__((visibility("hidden")))
206 #define OGDF_DEPRECATED(reason)
208 #if OGDF_HAS_CPP_ATTRIBUTE(deprecated)
209 # undef OGDF_DEPRECATED
210 # define OGDF_DEPRECATED(reason) [[deprecated(reason)]]
211 #elif defined(_MSC_VER)
212 # undef OGDF_DEPRECATED
213 # define OGDF_DEPRECATED(reason) __declspec(deprecated(reason))
214 #elif defined(__GNUC__)
215 # undef OGDF_DEPRECATED
216 # define OGDF_DEPRECATED(reason) __attribute__((deprecated(reason)))
225 #define OGDF_DISABLE_WARNING_PUSH
229 #define OGDF_DISABLE_WARNING_POP
233 #define OGDF_DISABLE_WARNING(warningNumber)
237 #define OGDF_DISABLE_WARNING_THROW_TERMINATE
241 #define OGDF_DISABLE_WARNING_UNUSED
245 #define OGDF_DISABLE_WARNING_DEPRECATED
247 #if defined(_MSC_VER)
248 # undef OGDF_DISABLE_WARNING_PUSH
249 # undef OGDF_DISABLE_WARNING_POP
250 # undef OGDF_DISABLE_WARNING
252 # define OGDF_DISABLE_WARNING_PUSH __pragma(warning(push))
253 # define OGDF_DISABLE_WARNING_POP __pragma(warning(pop))
254 # define OGDF_DISABLE_WARNING(warningNumber) __pragma(warning(disable : warningNumber))
255 #elif defined(__GNUC__) || defined(__clang__)
256 # undef OGDF_DISABLE_WARNING_PUSH
257 # undef OGDF_DISABLE_WARNING_POP
258 # undef OGDF_DISABLE_WARNING
260 # define OGDF_DO_PRAGMA(X) _Pragma(#X)
261 # define OGDF_DISABLE_WARNING_PUSH OGDF_DO_PRAGMA(GCC diagnostic push)
262 # define OGDF_DISABLE_WARNING_POP OGDF_DO_PRAGMA(GCC diagnostic pop)
263 # define OGDF_DISABLE_WARNING(warningName) OGDF_DO_PRAGMA(GCC diagnostic ignored warningName)
266 #if defined(__GNUC__)
267 # if defined(__clang__)
268 # undef OGDF_DISABLE_WARNING_THROW_TERMINATE
269 # define OGDF_DISABLE_WARNING_THROW_TERMINATE OGDF_DISABLE_WARNING("-Wexceptions")
271 # undef OGDF_DISABLE_WARNING_THROW_TERMINATE
272 # define OGDF_DISABLE_WARNING_THROW_TERMINATE OGDF_DISABLE_WARNING("-Wterminate")
274 # undef OGDF_DISABLE_WARNING_UNUSED
275 # define OGDF_DISABLE_WARNING_UNUSED OGDF_DISABLE_WARNING("-Wunused")
276 # undef OGDF_DISABLE_WARNING_DEPRECATED
277 # define OGDF_DISABLE_WARNING_DEPRECATED OGDF_DISABLE_WARNING("-Wdeprecated-declarations")
278 #elif defined(_MSC_VER)
279 # undef OGDF_DISABLE_WARNING_THROW_TERMINATE
280 # define OGDF_DISABLE_WARNING_THROW_TERMINATE OGDF_DISABLE_WARNING(4297)
289 #define OGDF_NODISCARD
291 #if OGDF_HAS_CPP_ATTRIBUTE(nodiscard)
292 # undef OGDF_NODISCARD
293 # define OGDF_NODISCARD [[nodiscard]]
294 #elif defined(__GNUC__)
295 # undef OGDF_NODISCARD
296 # define OGDF_NODISCARD __attribute__((warn_unused_result))
309 #define OGDF_LIKELY(x) (x)
316 #define OGDF_UNLIKELY(x) (x)
320 #define OGDF_DECL_ALIGN(b)
322 #ifdef _MSC_VER // Visual C++ compiler
323 # undef OGDF_DECL_ALIGN
324 # define OGDF_DECL_ALIGN(b) __declspec(align(b))
325 #elif defined(__GNUC__) // GNU gcc compiler (also Intel compiler)
327 # define OGDF_LIKELY(x) __builtin_expect((x), 1)
328 # undef OGDF_UNLIKELY
329 # define OGDF_UNLIKELY(x) __builtin_expect((x), 0)
330 # undef OGDF_DECL_ALIGN
331 # define OGDF_DECL_ALIGN(b) __attribute__((aligned(b)))
337 #define OGDF_CASE_FALLTHROUGH
338 #if OGDF_HAS_CPP_ATTRIBUTE(fallthrough)
339 # undef OGDF_CASE_FALLTHROUGH
340 # define OGDF_CASE_FALLTHROUGH [[fallthrough]]
341 #elif defined(__GNUC__) && __GNUC__ >= 7
342 # undef OGDF_CASE_FALLTHROUGH
343 # define OGDF_CASE_FALLTHROUGH __attribute__((fallthrough))
400 #ifdef OGDF_SYSTEM_WINDOWS
401 return System::Windows;
402 #elif defined(OGDF_SYSTEM_OSX)
404 #elif defined(OGDF_SYSTEM_UNIX)
407 return System::Unknown
418 static constexpr
bool haveLPSolver() {
return true; }
422 #if defined(COIN_OSI_CLP)
423 return LPSolver::Clp;
424 #elif defined(COIN_OSI_SYM)
425 return LPSolver::Symphony;
426 #elif defined(COIN_OSI_CPX)
427 return LPSolver::CPLEX;
428 #elif defined(COIN_OSI_GRB)
429 return LPSolver::Gurobi;
431 # error "OGDF is compiled without LP solver. Check your build configuration."
444 static constexpr
bool haveCoin() {
return true; }
455 static constexpr
bool haveAbacus() {
return true; }
467 #if defined(OGDF_MEMORY_POOL_TS)
468 return MemoryManager::PoolTS;
469 #elif defined(OGDF_MEMORY_POOL_NTS)
470 return MemoryManager::PoolNTS;
471 #elif defined(OGDF_MEMORY_MALLOC_TS)
472 return MemoryManager::Malloc;
474 # error "OGDF is compiled without memory manager. Check your build configuration."
485 static const string&
toString(MemoryManager mm);
The namespace for all OGDF objects.
LPSolver
Specifies the LP-solver used by OGDF.
static const string & toString(System sys)
Converts sys to a (readable) string.
#define OGDF_DEPRECATED(reason)
Mark a class / member / function as deprecated.
MemoryManager
Specifies the memory-manager used by OGDF.
System
Specifies the operating system for which OGDF has been configured/built.
static constexpr LPSolver whichLPSolver()
Returns the LP-solver used by OGDF.
Provides information about how OGDF has been configured.
#define OGDF_DISABLE_WARNING(warningNumber)
Disable the warning with the given number of MSVC or name of g++/clang.
std::ostream & operator<<(std::ostream &os, const ogdf::Array< E, INDEX > &a)
Prints array a to output stream os.
static constexpr MemoryManager whichMemoryManager()
Returns the memory manager used by OGDF.
string toString(FromClass key)
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
System specific functionality.
@ None
Two geometric objects do not intersect.
std::string to_string(const std::function< std::ostream &(std::ostream &)> &func)
static constexpr System whichSystem()
Returns the operating system for which OGDF has been configured.