7#include "Strings/ToString.h"
8#include "Strings/FromString.h"
27 std::type_index DataType;
30 void (*CopyFunc)(
void*& dst,
void* src) =
nullptr;
33 void (*DeleteFunc)(
void*& ptrToDelete) =
nullptr;
36 std::string (*ToStringFunc)(
void* ptrToPrint) =
nullptr;
39 void (*CustomDeleteFunc)(
const void* ptr) =
nullptr;
42 bool (*SetDataFromStringFunc)(
void* ptrToStoreDataFromString,
const std::string& str) =
nullptr;
70 explicit DataSaver(
const T& data) noexcept : DataType(
typeid(
void))
87 template <
class T,
class F>
88 DataSaver(
const T& data, F&& customDeleteFunc) noexcept : DataType(
typeid(
void))
90 SetData(data, customDeleteFunc);
138 template <
class T,
class F>
139 void SetData(
const T& data, F&& customDeleteFunc)
noexcept
146 Ptr =
static_cast<void*
>(
new T(data));
149 DataType =
typeid(data);
152 CopyFunc = [](
void*& dst,
void* src)
157 dst =
static_cast<void*
>(
new T(*
reinterpret_cast<T*
>(src)));
161 DeleteFunc = [](
void*& ptrToDelete)
163 delete static_cast<T*
>(ptrToDelete);
167 ToStringFunc = [](
void* ptrToPrint)
169 return ToString(*
static_cast<T*
>(ptrToPrint));
173 CustomDeleteFunc = customDeleteFunc;
176 SetDataFromStringFunc = [](
void* ptrToStoreDataFromString,
const std::string& str)
178 return FromString(str, *
static_cast<T*
>(ptrToStoreDataFromString));
196 if (DataType !=
typeid(data))
198 std::cerr <<
"Wrong type! Was: " + std::string(DataType.name()) +
" Requested: " +
typeid(data).name() <<
"\n";
207 data = *
static_cast<T*
>(Ptr);
232 std::
string Str() const noexcept;
A class for storing any type of data.
Definition DataSaver.h:21
std::type_index GetDataType() const noexcept
A method for getting the type of saved data.
Definition DataSaver.cpp:92
DataSaver() noexcept
Default constructor.
Definition DataSaver.cpp:5
void Swap(DataSaver &other) noexcept
Swap data between 2 DataSavers.
Definition DataSaver.cpp:80
bool GetData(T &data) const noexcept
Template method to get data from DataSaver.
Definition DataSaver.h:193
void ResetData() noexcept
Resets the object to its initial state.
Definition DataSaver.cpp:60
DataSaver & operator=(const DataSaver &other) noexcept
Assignment operator.
Definition DataSaver.cpp:13
bool SetDataFromString(const std::string &data) noexcept
A method for saving data from a string to a DataSaver.
Definition DataSaver.cpp:55
DataSaver & operator=(DataSaver &&other) noexcept=delete
Deleted assignment operator.
DataSaver(DataSaver &&other) noexcept=delete
Deleted move constructor.
void SetData(const T &data, F &&customDeleteFunc) noexcept
Template method to save data and custom delete function inside DataSaver.
Definition DataSaver.h:139
DataSaver(const T &data) noexcept
A template constructor that accepts a variable to store inside DataSaver.
Definition DataSaver.h:70
std::string Str() const noexcept
A method for getting a string that represents data inside a class object.
Definition DataSaver.cpp:87
DataSaver(const T &data, F &&customDeleteFunc) noexcept
A template constructor that accepts a variable and a function to delete a variable.
Definition DataSaver.h:88
void SetData(const T &data) noexcept
Template method to save data inside DataSaver.
Definition DataSaver.h:117
bool FromString(const std::string &stringToCopyDataFrom, T &data) noexcept
A template method for providing an interface converting string to a any type.
Definition FromString.h:31
std::string ToString(const T &data) noexcept
A template method for providing an interface converting any type to a string.
Definition ToString.h:76