opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
variant.h
Go to the documentation of this file.
1#pragma once
2
8
9#include <cstddef>
10#include <iosfwd>
11#include <string_view>
12#include <string>
13#include <variant>
14#include <vector>
15
16namespace osc
17{
18 class Variant final {
19 public:
27 explicit Variant(std::string);
28 explicit Variant(std::string_view);
29 explicit Variant(const char* ptr) : Variant{std::string_view{ptr}} {}
30 explicit Variant(std::nullopt_t) = delete;
31 explicit Variant(CStringView cstring_view) : Variant{std::string_view{cstring_view}} {}
32 explicit Variant(const StringName&);
33 explicit Variant(Vector2);
34 explicit Variant(Vector3);
35 explicit Variant(std::vector<Variant>);
36
38
41
43
44 // implicit conversions
49 explicit operator std::string() const;
54
57
58 private:
59 friend struct std::hash<Variant>;
60
61 std::variant<
62 std::monostate,
63 bool,
64 Color,
65 float,
66 int,
67 std::string,
69 Vector2,
70 Vector3,
71 std::vector<Variant>
72 > data_;
73 };
74
77 std::ostream& operator<<(std::ostream&, const Variant&);
78}
79
81struct std::hash<osc::Variant> final {
82 size_t operator()(const osc::Variant&) const;
83};
Definition c_string_view.h:12
Definition string_name.h:14
Definition variant.h:18
Variant(std::nullopt_t)=delete
VariantType type() const
Variant(Vector2)
Variant(const StringName &)
Variant(Vector3)
Variant(std::vector< Variant >)
Variant(CStringView cstring_view)
Definition variant.h:31
Variant(Variant &&) noexcept
~Variant() noexcept
Variant(const Variant &)
friend void swap(Variant &, Variant &) noexcept
Definition custom_decoration_generator.h:5
constexpr U to(T &&value)
Definition conversion.h:56
VariantType
Definition variant_type.h:7
size_t operator()(const osc::Variant &) const