• Stars
    star
    111
  • Rank 314,510 (Top 7 %)
  • Language
    C++
  • License
    Other
  • Created almost 6 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Single-header libraries from the Magnum engine

This repository contains single-header libraries from the Magnum engine.

Join the chat at https://gitter.im/mosra/magnum Build Status MIT License

LIBRARIES

There are the following single-header libraries at the moment. This list will grow with more Magnum features being exposed this way.

Library LoC PpLoC[1] Description
CorradeArrayView.h 828 2023 Containers::ArrayView and Containers::StaticArrayView, lightweight alternatives to std::span
CorradeStridedArrayView.h 1280[2] 2855 Containers::StridedArrayView, multi-dimensional strided array view. Depends on CorradeArrayView.h.
CorradeArray.h 890[2] 2669 Containers::Array and Containers::StaticArray, lightweight alternatives to std::vector and std::array. Depends on CorradeArrayView.h.
CorradeEnumSet.h 260 1705 Containers::EnumSet, a type-safe set of bits
CorradeOptional.h 434 1877 Containers::Optional, a lightweight alternative to std::optional
CorradePair.h 284 1721 Containers::Pair, a lightweight alternative to std::pair
CorradePointer.h 338 1771 Containers::Pointer, a lightweight alternative to std::unique_ptr
CorradeReference.h 119 1627 Containers::Reference, a lightweight alternative to std::reference_wrapper
CorradeScopeGuard.h 233 1702 Containers::ScopeGuard, a lightweight alternative to std::unique_ptr with a custom deleter
CorradeTriple.h 318 1738 Containers::Triple, a lightweight alternative to a three-component std::tuple
CorradeCpu.hpp 1717 1993 Cpu library, compile-time and runtime CPU feature detection and dispatch
CorradeStlForwardArray.h 88 2003[3] Corrade's forward declaration for std::array, a lightweight alternative to the full <array> (15k PpLOC[1]) where supported
CorradeStlForwardString.h 89 68 Corrade's forward declaration for std::string, a lightweight alternative to the full <string> (11k PpLOC[1]) where supported
CorradeStlForwardTuple.h 102 2228 Corrade's forward declaration for std::tuple, a lightweight alternative to the full <tuple> (13k PpLOC[1]) where supported
CorradeStlForwardVector.h 77 481[3] Corrade's forward declaration for std::vector, a lightweight alternative to the full <vector> (9k PpLOC[1]) where supported
CorradeStlMath.h 73 3222[4] Corrade's optimized <cmath>, without the heavy C++17 additions (which is otherwise 11k PpLOC[4])
MagnumMath.hpp 7939 10094 Math namespace, a full-featured graphics-oriented linear algebra library

[1] โ€” lines of code after a preprocessor run, with system includes expanded. Gathered using GCC 13.2 and libstdc++, unless said otherwise.

[2] โ€” not a total size due to inter-library dependencies

[3] โ€” gathered using Clang 15.0 and libc++, since libstdc++ doesn't have a forward declaration for std::array / std::vector

[4] โ€” gathered using GCC 13.2, libstdc++ and -std=c++17

Where is the documentation?

Single-header libraries provided here are generated from multi-file sources in the Magnum project. This is done for two reasons โ€” first, documentation and test coverage is much easier to maintain in the setting of a bigger project, avoiding any redundancy or duplicated efforts. Second, because the resulting files are generated with non-essential parts stripped away, there's no need to worry about bloating them due to original implementations having extensive documentation or rarely used features.

With the goal being easy integration, the files are deliberately free of all comments and documentation blocks to keep their size small. Documentation for each library is provided in the official Magnum documentation, linked from the table above. Each library file contains the same documentation link, together with a concrete Git revision it was generated from and a changelog for a few versions back for easier overview when updating.

For more information read the single-header library docs. The libraries are generated using acme.py, which is a part of Corrade. See its documentation, if you are interested. Particular libraries are introduced on the Magnum blog:

What about test coverage?

Testing done in this repository is mainly to ensure the libraries are generated correctly. Extensive testing on variety of compilers and OSes with > 99% test coverage is done in the Magnum Project itself. See the Build Status page for more information.

Reporting bugs and contributing

As always, bug reports, feature requests and code contributions are very welcome. However again please note the files in this repository are generated from original sources in the corrade and magnum repositories, meaning that ideally all PRs should go there instead, as there's a better infrastructure for documentation and testing. We don't enforce this rule though โ€” if you have an important bugfix, it's better if you submit it here than not at all ๐Ÿ˜‰

SUPPORTED PLATFORMS

All libraries are tested on these platforms:

And on these compilers:

  • GCC 4.8.1 and newer (and equivalent MinGW-w64 version)
  • Clang 6.0 and newer (or AppleClang 10.0 and newer), both libstdc++ and libc++
  • MSVC 2015 and newer

CONTACT & SUPPORT

See also the Magnum Project Contact & Support page for further information.

Credits

Libraries presented here are a result of a dedicated work by many community members. List of all contributors to the Magnum Project can be found in the documentation.

License

Magnum is licensed under the MIT/Expat license, see the COPYING file for details.

More Repositories

1

magnum

Lightweight and modular C++11 graphics middleware for games and data visualization
C++
4,787
star
2

corrade

C++11 multiplatform utility library
C++
484
star
3

m.css

A no-nonsense, no-JavaScript CSS framework, site and documentation theme for content-oriented websites
Python
406
star
4

magnum-examples

Examples for the Magnum C++11 graphics engine
C++
279
star
5

flextgl

OpenGL and Vulkan header and loader generator.
C
204
star
6

magnum-integration

Integration libraries for the Magnum C++11 graphics engine
C++
99
star
7

magnum-plugins

Plugins for the Magnum C++11 graphics engine
C++
98
star
8

magnum-bootstrap

Bootstrap projects for the Magnum C++11 graphics engine
Shell
91
star
9

toolchains

Toolchains for crosscompiling with CMake.
CMake
91
star
10

magnum-extras

Extras for the Magnum C++11 graphics engine
C++
26
star
11

magnum-bindings

Bindings of the Magnum C++11 graphics engine into other languages
C++
19
star
12

magnum-website

Website for the Magnum C++11 graphics engine
C++
16
star
13

archlinux

My ArchLinux packages.
C
5
star
14

kompas

Kompas navigation software
Shell
3
star
15

magnum-ci

Various CI jobs for building Magnum and its dependencies.
2
star
16

heytrack

Shows current track in internet radio stream
C++
2
star
17

kompas-artwork

Graphics and icons for Kompas navigation software
Shell
1
star
18

kompas-core

Core library for Kompas navigation software
C++
1
star
19

kompas-qt

Qt GUI for Kompas navigation software
C++
1
star
20

kompas-sdl

SDL GUI for Kompas navigation software
C++
1
star
21

kompas-plugins-nonfree

Non-free plugins for Kompas navigation software
C++
1
star
22

homebrew-magnum

macOS Homebrew packages for Magnum and related projects
Ruby
1
star
23

absencoid

And old project to prevent problems when intentionally not going to school.
C++
1
star
24

kotel

Tunnel racing game
C++
1
star