MCPcopy Create free account
hub / github.com/ChaiScript/ChaiScript / Any

Class Any

include/chaiscript/dispatchkit/any.hpp:42–157  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40
41
42 class Any {
43 private:
44 struct Data
45 {
46 explicit Data(const std::type_info &t_type)
47 : m_type(t_type)
48 {
49 }
50
51 Data &operator=(const Data &) = delete;
52
53 virtual ~Data() = default;
54
55 virtual void *data() = 0;
56
57 const std::type_info &type() const
58 {
59 return m_type;
60 }
61
62 virtual std::unique_ptr<Data> clone() const = 0;
63 const std::type_info &m_type;
64 };
65
66 template<typename T>
67 struct Data_Impl : Data
68 {
69 explicit Data_Impl(T t_type)
70 : Data(typeid(T)),
71 m_data(std::move(t_type))
72 {
73 }
74
75 void *data() override
76 {
77 return &m_data;
78 }
79
80 std::unique_ptr<Data> clone() const override
81 {
82 return std::unique_ptr<Data>(new Data_Impl<T>(m_data));
83 }
84
85 Data_Impl &operator=(const Data_Impl&) = delete;
86
87 T m_data;
88 };
89
90 std::unique_ptr<Data> m_data;
91
92 public:
93 // construct/copy/destruct
94 Any() = default;
95 Any(Any &&) = default;
96 Any &operator=(Any &&t_any) = default;
97
98 Any(const Any &t_any)
99 {

Callers 1

getMethod · 0.85

Calls 4

swapFunction · 0.85
dataMethod · 0.80
bad_any_castClass · 0.70
typeMethod · 0.45

Tested by

no test coverage detected