libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
variant.h File Reference
#include <variant>
#include <cstdint>
#include <promeki/core/namespace.h>
#include <promeki/core/util.h>
#include <promeki/core/string.h>
#include <promeki/core/timestamp.h>
#include <promeki/core/datetime.h>
#include <promeki/core/size2d.h>
#include <promeki/core/uuid.h>
#include <promeki/core/timecode.h>
#include <promeki/core/rational.h>
#include <promeki/core/list.h>
#include <promeki/thirdparty/nlohmann/json.hpp>
Include dependency graph for variant.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  detail::VariantEnd
 Sentinel type used to absorb the trailing comma from X-macro expansion. More...
 
class  VariantImpl< Types >
 Type-safe tagged union that can hold any of the types listed in PROMEKI_VARIANT_TYPES. More...
 

Macros

#define PROMEKI_VARIANT_TYPES
 X-macro that defines all supported Variant types.
 
#define X(name, type)   name,
 
#define X(name, type)   PROMEKI_STRINGIFY(type),
 
#define X(name, type)   type,
 

Typedefs

using Variant = VariantImpl< std::monostate, bool, uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, String, DateTime, TimeStamp, Size2Du32, UUID, Timecode, Rational< int >, detail::VariantEnd >
 Concrete variant type instantiated with every type from PROMEKI_VARIANT_TYPES.
 
using VariantList = List< Variant >
 Convenience alias for a List of Variant values.
 

Detailed Description

See LICENSE file in the project root folder for license information.