From 72d9bbcc3154142af79fb686d9dc7e4d1fa1badb Mon Sep 17 00:00:00 2001 From: dtrendafilov Date: Thu, 29 Nov 2018 09:13:12 +0200 Subject: Feature/strings (#75) * The assembler supports string opcode * disabled the string test until implmented * strings can be printed --- spasm/src/string.hpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 spasm/src/string.hpp (limited to 'spasm/src/string.hpp') diff --git a/spasm/src/string.hpp b/spasm/src/string.hpp new file mode 100644 index 0000000..8ffb214 --- /dev/null +++ b/spasm/src/string.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include + +namespace SpasmImpl +{ +typedef std::string SPString; + +class SPStringValue +{ + public: + explicit SPStringValue(SPString s) : m_Value(std::move(s)) {} + + SPStringValue(const SPStringValue&) = delete; + SPStringValue(SPStringValue&&) = default; + SPStringValue& operator=(const SPStringValue&) = delete; + SPStringValue& operator=(SPStringValue&&) = default; + + const SPString& GetValue() const { return m_Value; } + + bool operator==(const SPStringValue& rhs) const + { + return m_Value == rhs.m_Value; + } + + bool operator==(const SPString& rhs) const { return m_Value == rhs; } + + private: + SPString m_Value; +}; +} // namespace SpasmImpl + +namespace std +{ +template <> +struct hash +{ + size_t operator()(const SpasmImpl::SPStringValue& v) const + { + return std::hash{}(v.GetValue()); + } +}; +} // namespace std \ No newline at end of file -- cgit v1.3.1-23-gd82d