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