# The Mangrove TDS Library (The Quick User's Guide)

### David Canino

Both the stable versions of the Mangrove TDS Library (SourceForge.net) and the experimental Mangrove TDS Library (GitHub) are rooted in the same theoretical basis. In any case, the experimental versions are currently unstable, and we do not provide their official documentation. It can be generated by using the Doxygen.

Here, there are some quick instructions regarding how exploiting the Mangrove TDS Library (SourceForge.net) in the applications. The use of the experimental version is (basically) very similar. An interested user finds more details in the Official Documentation and/or in the Literature Section.

[ Back ]

#### Getting the Mangrove TDS Library

All versions of the Mangrove TDS Library (SourceForge.net) are hosted on the SourceForce.net website, and are also available via a public read-only svn repository:
svn checkout svn://svn.code.sf.net/p/mangrovetds/code/trunk mangrovetds-code
You can download a compressed version of the last (stable) version for this library from here (Sourceforge.net), i.e., from:
http://sourceforge.net/projects/mangrovetds/files/

The experimental versions of ths library are hosted on the GitHub website, in particular on this Git repository, i.e.,:

git clone http://github.com/davidcanino/mangrovetdslib.git

We provide the complete source code of the library, plus the unit tests programs for retrieving the statistics, and for manipulating the non-manifold shapes of any dimension.

You can find more information in the Getting Started Section of the Official Documentation.

[ Back ]

#### Getting the Documentation

The Official Documentation of the stable Mangrove TDS Library 2.0 can be:

[ Back ]

#### Exporting the Official Documentation

The Official Documentation of the stable Mangrove TDS Library 2.0 (but not only, even the documentation of the experimental version) can be also generated and exported by exploiting the Doxygen program:
doxygen mangrove_doc.conf
from the 'doc/' folder.

The Doxygen program has the built-in support to generate the inheritance diagrams for the C++ classes. In particular, it can use the "dot" tool from the Graphviz suite in order to generate more advanced diagrams and graphs. This latter is an open-source and cross-platform graph drawing toolkit, and can be found at http://www.graphviz.org/. If you have the "dot" tool in the path, you can set the HAVE_DOT macro to YES in the 'mangrove_doc.conf' configuration file to let doxygen use it. Otherwise, you set the HAVE_DOT macro to NO.

[ Back ]

#### The Requirements and the Supported Platforms

All versions of this library are written in the C++ language, and are based on the metaprogramming template-based techniques. More precisely:
Generally speaking, this library is mostly an header-only library, except small parts of code, that must be built properly. Its building system is based (for all versions) on the well-known QT Library, a famous and platform-independent library for devoloping the GUIs and the servers.

All versions of this library have been successfully compiled and tested using the following operating configurations:

• several GNU/Linux distribution (up to the recent Ubuntu 16.0.4 LTS, with several versions of the GCC, up to 6.0 svn-experimental version);
• the MacOSX 10.11.* with the Clang 7.0 (tags/Apple/clang-700.1.6 and based on the LLVM 7.0.76);
• the MacOSX 10.7.2 with the Clang 3.1 (tags/Apple/clang-318.0.61 and based on the LLVM 3.1svn);
• the MacOSX 10.7.2 with the GCC 4.8.3 (the MacPorts gcc48 4.8.3_4);
• the MacOSX 10.7.2 with the GCC 4.2.1 (Based on the Apple Inc. build 5658 and the LLVM build 2336.9.00);
• the Microsoft Windows 10 (only with the MinGW compiler, up to version 4.9);
• the Microsoft Windows Vista (only with the MinGW compiler, up to version 4.9);
• the QT Library (up to the version 5.7 Community Edition);

The experimental versions have been also tested with:

[ Back ]

#### Building the Mangrove TDS Library

As mentioned above, this library is written in the C++ language, and deeply exploits the generic programming. Specifically, there are a few source files to be compiled and built. You can build the code either in the debug or the release mode. In the debug mode, several checks are performed through the assertions, that are enabled (by construction). In the release mode, no check is performed, and the assertions are disabled.

Basically, we exploit the building infrastructure, which is provided by the QT Library. An interested user finds more details in the Official Documentation of the QT Library.

The main QT project file of interest is given by the 'mangrove.pro' file, while the header and the source files of the library are stored in the 'include/' and the 'src/' folders, respectively. Once built, you will obtain a dynamic library file MangroveTDS.(so, dll, or dylib) in the 'bin/' folder, plus the executables of all unit tests.

We encourage the use of the QT Creator program, which is a cross-platform integrated development environment (IDE), tailored to the needs of the QT Library. In any case, also the command-line procedure is supported.

In particular, if you prefer to build the library with the QT Creator:

open the 'mangrove.pro' file
choose Debug or Release mode (according to your need)
press Build All
If you prefer the command-line procedure, then you must run at your terminal:
qmake [-spec qmake_spec] mangrove.pro
make clean (only on some GNU/Linux platforms)
make debug or make release (according to your need)
In any case, the qmake program must be configured properly in order to generate the makefile properly through the correct 'qmake_spec' (to be replaced with the correct value, see also the QMAKESPEC variable). For more details (depending on your platform and your compiler), please refer to the Official Documentation of the QT Library.

These instructions are valid for the Mangrove TDS Library (SourceForge.net). Instead, the experimental Mangrove TDS Library (GitHub) requires the further customization of the paths, containing the header and the libraries files for the Boost Library and the SparseHash Library. These operations must be performed on the QT projects files of interest.

[ Back ]