/* This file is part of Magnum. Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Vladimír Vondruš Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ namespace Magnum { /** @page singles Single-header libraries @brief Magnum functionality exposed in easy-to-integrate single-header libraries @m_footernavigation Selected Magnum functionality is also available as single-header libraries, with the goal of providing significantly smaller, faster-compiling and generally better alternatives to commonly available implementations while being as easy as possible to integrate into existing projects. The general rule is having preprocessed size not not exceeding 10k lines --- to put this in perspective, not even the `` header can fit there. So far, the following classes and libraries are provided as single-header libs, all of them available for download through the [magnum-singles](https://github.com/mosra/magnum-singles) repository. Each of them is automatically generated from unmodified Magnum sources using the builtin @ref acme "single-header generator tool". @m_class{m-fullwidth m-flat} Class or library | Single-header version --------------------------- | ---------------------------- @ref Math, \n @ref EigenIntegration, \n @ref GlmIntegration | [MagnumMath.hpp](https://github.com/mosra/magnum-singles/tree/master/MagnumMath.hpp) There are also @ref corrade-singles "single-header libraries for Corrade APIs". @section singles-behavior Behavior To keep file size small, the single-header versions have all the comments and documentation stripped away, except for a short description and a single top-level license block, containing also credit information for all contributors. Documentation is meant to be retrieved online, the wrapping namespaces and all API naming stay completely the same as when using Magnum directly. The files retain their own include guards, which makes it possible to mix them together. However, when combining more than one, make sure to have all files from the same revision to avoid API mismatches. The concrete revision that was used to generate each library is printed in its header comment. There are two kinds of libraries, distinguished with file extension: @section singles-customization Customization points All headers above are created with @ref CORRADE_STANDARD_ASSERT enabled to avoid dragging the whole @ref Corrade::Utility::Debug class along. Apart from that, every header includes only the assertion macros it actually needs and it's possible to override them by providing e.g. your own @cpp #define CORRADE_ASSERT @ce before including the file. See the @ref Corrade/Utility/Assert.h file documentation for more information. Some files contain additional disabled-by-default functionality (for example integration with GLM and Eigen for @ref Math types), see documentation of each library for detailed library-specific behavior. */ }