summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorljfa-ag <ljfa-ag@web.de>2015-07-03 16:43:40 +0200
committerljfa-ag <ljfa-ag@web.de>2015-07-03 16:43:40 +0200
commit33c26a33d1cf30f36c1d9c641f6ffc4dd77a5861 (patch)
tree0ead12e50f2c3f908b09dd8345a9b4259b5cc7be
parenta511f7fa197fa417646fa9852bf245b45fa17119 (diff)
downloadProject-Tick-33c26a33d1cf30f36c1d9c641f6ffc4dd77a5861.tar.gz
Project-Tick-33c26a33d1cf30f36c1d9c641f6ffc4dd77a5861.zip
Create and implement get/set with tag for value
-rw-r--r--include/value.h3
-rw-r--r--src/value.cpp27
2 files changed, 29 insertions, 1 deletions
diff --git a/include/value.h b/include/value.h
index 06f86e3a21..3b03cc0d43 100644
--- a/include/value.h
+++ b/include/value.h
@@ -55,10 +55,13 @@ public:
* of this value
*/
value& operator=(tag&& t);
+ void set(tag&& t);
//Conversion to tag
operator tag&();
operator const tag&() const;
+ tag& get();
+ const tag& get() const;
//Assignment of primitives and string
/**
diff --git a/src/value.cpp b/src/value.cpp
index 77358a9182..90a67b79f3 100644
--- a/src/value.cpp
+++ b/src/value.cpp
@@ -30,10 +30,35 @@ value::value(std::unique_ptr<tag>&& t):
value& value::operator=(tag&& t)
{
- tag_->assign(std::move(t));
+ set(std::move(t));
return *this;
}
+void value::set(tag&& t)
+{
+ tag_->assign(std::move(t));
+}
+
+value::operator tag&()
+{
+ return get();
+}
+
+value::operator const tag&() const
+{
+ return get();
+}
+
+tag& value::get()
+{
+ return *tag_;
+}
+
+const tag& value::get() const
+{
+ return *tag_;
+}
+
//Primitive assignment
//FIXME: Make this less copypaste!
value& value::operator=(int8_t val)