diff --git a/src/datatype.h b/src/datatype.h new file mode 100644 index 0000000..d568c91 --- /dev/null +++ b/src/datatype.h @@ -0,0 +1,10 @@ +#pragma once + +#include <variant> +#include "datatypes/primitives.h" + +typedef std::variant<StringData, IntData, FloatData> DataValue; + +const uint DAT_STRING = 0; +const uint DAT_INT = 1; +const uint DAT_FLOAT = 2; \ No newline at end of file diff --git a/src/datatypes/primitives.cpp b/src/datatypes/primitives.cpp new file mode 100644 index 0000000..2170d4a --- /dev/null +++ b/src/datatypes/primitives.cpp @@ -0,0 +1,11 @@ +#include "primitives.h" + +StringData::StringData(std::string str) : wrapped(str) {} +StringData::operator std::string() { return wrapped; } + +IntData::IntData(int in) : wrapped(in) {} +IntData::operator int() { return wrapped; } + +FloatData::FloatData(float in) : wrapped(in) {} +FloatData::operator float() { return wrapped; } + diff --git a/src/datatypes/primitives.h b/src/datatypes/primitives.h new file mode 100644 index 0000000..169d5e6 --- /dev/null +++ b/src/datatypes/primitives.h @@ -0,0 +1,24 @@ +#pragma once + +#include <string> + +class StringData { + std::string wrapped; +public: + StringData(std::string); + operator std::string(); +}; + +class IntData { + int wrapped; +public: + IntData(int); + operator int(); +}; + +class FloatData { + float wrapped; +public: + FloatData(float); + operator float(); +}; \ No newline at end of file