4#ifndef _Stroika_Frameworks_UPnP_DataTypes_h_
5#define _Stroika_Frameworks_UPnP_DataTypes_h_ 1
7#include "Stroika/Frameworks/StroikaPreComp.h"
15#include "Stroika/Foundation/Common/Concepts.h"
17#include "Stroika/Foundation/Common/GUID.h"
109 using Value = variant<bool, uint8_t, uint16_t, uint32_t, uint64_t, int8_t, int16_t, int32_t, int64_t, float, double,
116 template <
typename T>
118 Foundation::Common::IAnyOf<T, bool, uint8_t, uint16_t, uint32_t, uint64_t, int8_t, int16_t, int32_t, int64_t, float, double,
119 Foundation::Characters::Character, String, Foundation::Time::Date, Foundation::Time::DateTime,
120 Foundation::Time::TimeOfDay, Foundation::Memory::BLOB, Foundation::IO::Network::URI, Foundation::Common::GUID>;
141 String
ToText (
const T& v);
152 optional<T>
FromText (
const String& text);
164#include "DataTypes.inl"
#define Stroika_Define_Enum_Bounds(FIRST_ITEM, LAST_ITEM)
String is like std::u32string, except it is much easier to use, often much more space efficient,...
Concept: trivial shorthand for variadic same_as A or same_as B, or ...
The C++ types of UPnP's data types: Value's.
variant< bool, uint8_t, uint16_t, uint32_t, uint64_t, int8_t, int16_t, int32_t, int64_t, float, double, Foundation::Characters::Character, String, Foundation::Time::Date, Foundation::Time::DateTime, Foundation::Time::TimeOfDay, Foundation::Memory::BLOB, Foundation::IO::Network::URI, Foundation::Common::GUID > Value
A value of any of UPnP's data types, as its C++ type (the table above) - for code that learns a value...
constexpr bool IsTypeOf(DataType t)
Whether T is t's C++ type (the table above)
DataType
UPnP's data types - each named, as a service's description names it (Common::DefaultNames): ui2,...
optional< T > FromText(const String &text)
text read as UPnP reads it: as t, if given, else as T's default data type (the table above) - nullopt...
String ToText(const T &v)
v, as UPnP writes it: as t, if given, else as its C++ type's default data type (the table above)
constexpr DataType DefaultDataType()
The data type a T is written as, given none: its default (marked * in the table above)