Open Graph Drawing Framework
current version:
v.2015.05 (Baobab)
     

Compiler Defines

The following table contains a list of preprocessor defines that are used by OGDF. It is currently work in progress and based on the current release v.2010.10 (Sassafras).

Defines that influence the generated code

Define Where defined ? Description
OGDF_DEBUG Compiler Must be defined when compiling OGDF as debug version, or code that will be linked against an OGDF debug build.
OGDF_DLL Compiler Must be defined when building or using OGDF as DLL.
OGDF_INSTALL Compiler Must be defined when building OGDF as DLL; do not define when using OGDF as DLL!
USE_COIN Compiler Must be defined if Osi Coin is used.
COIN_OSI_CPX Compiler Must be defined if Coin is used with CPLEX as LP-solver.
COIN_OSI_CLP Compiler Must be defined if Coin is used with Coin's CLP as LP-solver.
COIN_OSI_SYM Compiler Must be defined if Coin is used with Coin's Symphony as LP-solver.
USE_ABACUS Compiler Must be defined if Abacus is used.
OGDF_MEMORY_POOL_TS Compiler Selects the thread-safe pool allocator as OGDF's memory manager (usually the default; see basic/memory.h).
OGDF_MEMORY_POOL_NTS Compiler Selects the non-thread-safe pool allocator as OGDF's memory manager.
OGDF_MEMORY_MALLOC_TS Compiler Selects ordinary malloc/free as OGDF's memory manager.
OGDF_USE_SSE2 Compiler If set SSE2 code will be generated for x86 platforms (without checking at runtime if supported by processor).
OGDF_THROW_WITH_INFO basic/exceptions.h If set OGDF's THROW macros pass file name and line number of their occurrence in source code; automatically set in debug builds.

Be careful when setting these parameters. Some parameters must be set to the same values when building OGDF and compiling code that links against OGDF to guarantee proper execution, i.e., OGDF_DEBUG, OGDF_MEMORY_POOL_xxx, and all defines regarding LP-solvers (USE_COIN, COIN_OSI_xxx, USE_ABACUS).

Defines set by OGDF

Define Where set ? Description
OGDF_SYSTEM_UNIX basic/basic.h Compiling for a UNIX/Linux/Mac OS X system.
OGDF_SYSTEM_WINDOWS basic/basic.h Compiling for a Windows system.
OGDF_SYSTEM_OSX basic/basic.h Compiling for a Mac OS X system; in this case OGDF_SYSTEM_UNIX is also defined.
OGDF_ARCH_X86 basic/System.h Compiling for a 32-bit x86 (Intel/AMD) architecture.
OGDF_ARCH_X64 basic/System.h Compiling for a 64-bit x64 (Intel/AMD) architecture.
OGDF_ARCH_IA64 basic/System.h Compiling for a 64-bit ia64 (Itanium) architecture.
OGDF_ARCH_PPC basic/System.h Compiling for a PowerPC architecture.
OGDF_ARCH_SPARC basic/System.h Compiling for a SUN SPARC architecture.
OGDF_ARCH_SPARC_V9 basic/System.h Compiling for a SUN SPARC V9 architecture.
OGDF_EXPORT basic/basic.h Specifies that a function or class is exported by the OGDF DLL. Set according to the definition of OGDF_INSTALL (OGDF is build as DLL) and OGDF_DLL (OGDF is used as DLL); if none of these is defined (OGDF is build or used as static library), the define expands to an empty string.

Note that not all detected architectures are currently supported and/or tested!

Useful macros

Macro Where defined Description
OGDF_ASSERT(expr) basic/basic.h Assert condition expr in debug builds.
OGDF_ASSERT_IF(minLevel,expr) basic/basic.h Assert condition expr in debug builds if debug level is at least minLevel.
OGDF_SET_DEBUG_LEVEL(level) basic/basic.h Set debug level to level.
THROW_PARAM(class,param) basic/exceptions.h Throws an exception of type class and passes parameters param; also passes file name and line number of occurrence in source code if OGDF_THROW_WITH_INFO is set.
THROW(class) basic/exceptions.h Throws an exception of type class; also passes file name and line number of occurrence in source code if OGDF_THROW_WITH_INFO is set.
OGDF_NEW basic/memory.h Should be used to allocated new objects of classes managed by OGDF's memory manager.
OGDF_NEW_DELETE basic/memory.h Adding this macro in a class declaration makes this class managed by OGDF's memory manager.
OGDF_MALLOC_NEW_DELETE basic/memory.h Adding this macro in a class declaration makes this class managed by malloc (as usual), but throws an InsufficientMemoryException when memory allocation failed.
OGDF_CHECK_SSE2 basic/System.h Evaluates to true if the current architecture supports SSE2 extensions.
THROW_NO_ABACUS_EXCEPTION external/abacus.h Throws a LibraryNotSupportedException exception.
THROW_NO_COIN_EXCEPTION external/coin.h Throws a LibraryNotSupportedException exception.
THROW_NO_CALLBACK_EXCEPTION external/coin.h This should not be used by developers. The according exception is called when one tries to register a (e.g. cut-) callback at the COIN LP-solver. Currently such callbacks are only supported for CPLEX. For other solvers one hat to write a wrapper which calls OGDF-callbacks in the correct solver's context. We could clear reference to that macro from this list (mch)

Iteration macros

Macro Where defined Description
forall_arrayindices(i,A) basic/Array.h Iterates over all indices i of array A.
forall_rev_arrayindices(i,A) basic/Array.h Iterates over all indices i of array A in reverse order.
forall_faces(f,E) basic/CombinatorialEmbedding.h Iterates over all faces f of embedding C.
forall_rev_faces(f,E) basic/CombinatorialEmbedding.h Iterates over all faces f of embedding C in reverse order.
forall_face_adj(adj,f) basic/CombinatorialEmbedding.h Iterates over all adjacency entries adj of face f.
forall_nodes(v,G) basic/Graph.h Iterates over all nodes v of graph G.
forall_rev_nodes(v,G) basic/Graph.h Iterates over all nodes v of graph G in reverse order.
forall_edges(e,G) basic/Graph.h Iterates over all edges e of graph G.
forall_rev_edges(e,G) basic/Graph.h Iterates over all edges e of graph G in reverse order.
forall_adj(adj,v) basic/Graph.h Iterates over all adjacency entries adj in the adjacency list of node v.
forall_rev_adj(adj,v) basic/Graph.h Iterates over all adjacency entries adj in the adjacency list of node v in reverse order.
forall_adj_edges(e,v) basic/Graph.h Iterates over all edges e incident to node v (incoming and outgoing).
forall_listiterators(type,it,L) basic/List.h Iterates over all list iterators it of list L containing elements of type type (const iterators).
forall_rev_listiterators(type,it,L) basic/List.h Iterates over all list iterators it of list L containing elements of type type in reverse order (const iterators).
forall_nonconst_listiterators(type,it,L) basic/List.h Iterates over all list iterators it of list L containing elements of type type (non-const iterators).
forall_rev_nonconst_listiterators(type,it,L) basic/List.h Iterates over all list iterators it of list L containing elements of type type in reverse order (non-const iterators).
forall_cluster_adj(adj,c) cluster/ClusterGraph.h Iterates over all adjacency entries adj of edges leaving cluster c.
forall_cluster_rev_adj(adj,c) cluster/ClusterGraph.h Iterates over all adjacency entries adj of edges leaving cluster c (in reverse order).
forall_cluster_adj_edges(e,c) cluster/ClusterGraph.h Iterates over all edges e leaving cluster c.
forall_clusters(c,C) cluster/ClusterGraph.h Iterates over all clusters c of cluster graph C.
forall_postOrderClusters(c,C) cluster/ClusterGraph.h Iterates over all clusters c of cluster graph C in post-order.
 
tech/defines.txt · Last modified: 2014/12/16 12:20 (external edit)
This page is driven by DokuWiki