summaryrefslogtreecommitdiff
path: root/src/value.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/value.cpp')
-rw-r--r--src/value.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/value.cpp b/src/value.cpp
index a5f8e3c894..f062e08a09 100644
--- a/src/value.cpp
+++ b/src/value.cpp
@@ -28,16 +28,30 @@ value::value(std::unique_ptr<tag>&& t):
tag_(std::move(t))
{}
-value& value::operator=(std::unique_ptr<tag>&& t)
+value& value::operator=(tag&& t)
{
- tag_ = std::move(t);
+ tag_->assign(std::move(t));
return *this;
}
-value& value::operator=(tag&& t)
+value::operator bool() const
{
- tag_->assign(std::move(t));
- return *this;
+ return tag_ != nullptr;
+}
+
+std::unique_ptr<tag>& value::get_ptr()
+{
+ return tag_;
+}
+
+const std::unique_ptr<tag>& value::get_ptr() const
+{
+ return tag_;
+}
+
+void value::set_ptr(std::unique_ptr<tag>&& t)
+{
+ tag_ = std::move(t);
}
tag_type value::get_type() const