More data types and macro for wrapping primitives
This commit is contained in:
parent
29c85b58c7
commit
64e6ea4ed6
|
@ -3,8 +3,12 @@
|
|||
#include <variant>
|
||||
#include "datatypes/primitives.h"
|
||||
|
||||
typedef std::variant<StringData, IntData, FloatData> DataValue;
|
||||
typedef std::variant<VoidData, BoolData, StringData, IntData, FloatData> DataValue;
|
||||
|
||||
const uint DAT_STRING = 0;
|
||||
const uint DAT_INT = 1;
|
||||
const uint DAT_FLOAT = 2;
|
||||
enum class DataType {
|
||||
VOID = 0,
|
||||
BOOL = 1,
|
||||
STRING = 2,
|
||||
INT = 3,
|
||||
FLOAT = 4
|
||||
};
|
|
@ -1,11 +1,11 @@
|
|||
#include "primitives.h"
|
||||
|
||||
StringData::StringData(std::string str) : wrapped(str) {}
|
||||
StringData::operator std::string() { return wrapped; }
|
||||
#define IMPL_WRAPPER_CLASS(CLASS_NAME, WRAPPED_TYPE) CLASS_NAME::CLASS_NAME(WRAPPED_TYPE in) : wrapped(in) {}\
|
||||
CLASS_NAME::operator WRAPPED_TYPE() { return wrapped; }
|
||||
|
||||
IntData::IntData(int in) : wrapped(in) {}
|
||||
IntData::operator int() { return wrapped; }
|
||||
|
||||
FloatData::FloatData(float in) : wrapped(in) {}
|
||||
FloatData::operator float() { return wrapped; }
|
||||
VoidData::VoidData() {};
|
||||
|
||||
IMPL_WRAPPER_CLASS(BoolData, bool)
|
||||
IMPL_WRAPPER_CLASS(IntData, int)
|
||||
IMPL_WRAPPER_CLASS(FloatData, float)
|
||||
IMPL_WRAPPER_CLASS(StringData, std::string)
|
|
@ -2,23 +2,21 @@
|
|||
|
||||
#include <string>
|
||||
|
||||
class StringData {
|
||||
std::string wrapped;
|
||||
public:
|
||||
StringData(std::string);
|
||||
operator std::string();
|
||||
#define DEF_WRAPPER_CLASS(CLASS_NAME, WRAPPED_TYPE) class CLASS_NAME {\
|
||||
WRAPPED_TYPE wrapped;\
|
||||
public:\
|
||||
CLASS_NAME(WRAPPED_TYPE); \
|
||||
operator WRAPPED_TYPE(); \
|
||||
};
|
||||
|
||||
class IntData {
|
||||
int wrapped;
|
||||
class VoidData {
|
||||
public:
|
||||
IntData(int);
|
||||
operator int();
|
||||
VoidData();
|
||||
};
|
||||
|
||||
class FloatData {
|
||||
float wrapped;
|
||||
public:
|
||||
FloatData(float);
|
||||
operator float();
|
||||
};
|
||||
DEF_WRAPPER_CLASS(BoolData, bool)
|
||||
DEF_WRAPPER_CLASS(IntData, int)
|
||||
DEF_WRAPPER_CLASS(FloatData, float)
|
||||
DEF_WRAPPER_CLASS(StringData, std::string)
|
||||
|
||||
#undef DEF_WRAPPER_CLASS
|
Loading…
Reference in a new issue