summaryrefslogtreecommitdiff
path: root/src/ast/expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/expr.cpp')
-rw-r--r--src/ast/expr.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/ast/expr.cpp b/src/ast/expr.cpp
index 780b480c..ecd60def 100644
--- a/src/ast/expr.cpp
+++ b/src/ast/expr.cpp
@@ -5,6 +5,19 @@
namespace AST {
+
+Expr::Expr(unique_ptr<ExprNode> node):
+ m_node(node.release())
+{
+}
+Expr::Expr(ExprNode* node):
+ m_node(node)
+{
+}
+Expr::Expr():
+ m_node(nullptr)
+{
+}
void Expr::visit_nodes(NodeVisitor& v)
{
if( m_node )
@@ -21,6 +34,17 @@ void Expr::visit_nodes(NodeVisitor& v) const
m_node->visit(v);
}
}
+
+Expr Expr::clone() const
+{
+ if( m_node ) {
+ return Expr( m_node->clone() );
+ }
+ else {
+ return Expr();
+ }
+}
+
::std::ostream& operator<<(::std::ostream& os, const Expr& pat)
{
if( pat.m_node.get() )