4#ifndef _Stroika_Foundation_Common_GUID_h_
5#define _Stroika_Foundation_Common_GUID_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
11#if qStroika_Foundation_Common_Platform_Windows
17#include "Stroika/Foundation/Common/Common.h"
18#include "Stroika/Foundation/Common/Concepts.h"
23namespace Stroika::Foundation::Memory {
43 static GUID mk_ (
const string& src);
56 constexpr GUID () noexcept = default;
57#if qStroika_Foundation_Common_Platform_Windows
58 constexpr GUID (const ::GUID& src)
noexcept;
60 template <Characters::IConvertibleToString STRISH_TYPE>
61 GUID (STRISH_TYPE&& src);
63 GUID (
const array<byte, 16>& src)
noexcept;
64 GUID (
const array<uint8_t, 16>& src)
noexcept;
73 using value_type = byte;
79 nonvirtual
const byte*
begin () const noexcept;
85 nonvirtual const
byte*
end () const noexcept;
90 constexpr
size_t size () const noexcept;
95 nonvirtual explicit operator Memory::BLOB () const;
106 nonvirtual strong_ordering operator<=> (const
GUID&) const noexcept = default;
111 nonvirtual const uint8_t* data () const noexcept;
121 template <IAnyOf<Characters::String,
std::
string, Memory::BLOB, array<
byte, 16>, array<uint8_t, 16>> T>
122 nonvirtual T
As () const;
130 static_assert (sizeof (
GUID) == 16);
131 static_assert (ranges::range<
GUID>);
132 static_assert (regular<
GUID>);
133 static_assert (totally_ordered<
GUID>);
142struct qStroika_Foundation_Characters_FMT_PREFIX_::formatter<Stroika::Foundation::Common::
GUID,
wchar_t>
143 : qStroika_Foundation_Characters_FMT_PREFIX_::formatter<
std::wstring,
wchar_t> {
144 using inherited = qStroika_Foundation_Characters_FMT_PREFIX_::formatter<std::wstring, wchar_t>;
145 template <
class FmtContext>
150 : qStroika_Foundation_Characters_FMT_PREFIX_::formatter<std::string, char> {
151 using inherited = qStroika_Foundation_Characters_FMT_PREFIX_::formatter<std::string, char>;
152 template <
class FmtContext>
157 template <
typename T>
158 struct DefaultSerializer;
String is like std::u32string, except it is much easier to use, often much more space efficient,...
static GUID GenerateNew() noexcept
constexpr GUID() noexcept=default
nonvirtual const byte * end() const noexcept
nonvirtual const byte * begin() const noexcept
nonvirtual Characters::String ToString() const