diff options
author | John Wiegley <johnw@newartisans.com> | 2012-03-09 14:47:11 -0600 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2012-03-09 14:47:11 -0600 |
commit | 3886428d1db0a103a050b7394c133abb793eba06 (patch) | |
tree | ec0e389bb5c683444c79e3deb6154a0eaf88f4d4 /src/expr.cc | |
parent | 77e9e3bfb9b7342fb367723d18073200c311d420 (diff) | |
download | fork-ledger-3886428d1db0a103a050b7394c133abb793eba06.tar.gz fork-ledger-3886428d1db0a103a050b7394c133abb793eba06.tar.bz2 fork-ledger-3886428d1db0a103a050b7394c133abb793eba06.zip |
Move expr_t's ctor/dtors into expr.cc
Fixes #672
Diffstat (limited to 'src/expr.cc')
-rw-r--r-- | src/expr.cc | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/expr.cc b/src/expr.cc index 8c8e995a..b22572f8 100644 --- a/src/expr.cc +++ b/src/expr.cc @@ -37,6 +37,59 @@ namespace ledger { +expr_t::expr_t() : base_type() +{ + TRACE_CTOR(expr_t, ""); +} + +expr_t::expr_t(const expr_t& other) : base_type(other), ptr(other.ptr) +{ + TRACE_CTOR(expr_t, "copy"); +} +expr_t::expr_t(ptr_op_t _ptr, scope_t * _context) + : base_type(_context), ptr(_ptr) +{ + TRACE_CTOR(expr_t, "const ptr_op_t&, scope_t *"); +} + +expr_t::expr_t(const string& _str, const parse_flags_t& flags) + : base_type() +{ + TRACE_CTOR(expr_t, "string, parse_flags_t"); + if (! _str.empty()) + parse(_str, flags); +} + +expr_t::expr_t(std::istream& in, const parse_flags_t& flags) + : base_type() +{ + TRACE_CTOR(expr_t, "std::istream&, parse_flags_t"); + parse(in, flags); +} + +expr_t::~expr_t() { + TRACE_DTOR(expr_t); +} + +expr_t& expr_t::operator=(const expr_t& _expr) +{ + if (this != &_expr) { + base_type::operator=(_expr); + ptr = _expr.ptr; + } + return *this; +} + +expr_t::operator bool() const throw() +{ + return ptr.get() != NULL; +} + +expr_t::ptr_op_t expr_t::get_op() throw() +{ + return ptr; +} + void expr_t::parse(std::istream& in, const parse_flags_t& flags, const optional<string>& original_string) { @@ -204,6 +257,24 @@ void merged_expr_t::compile(scope_t& scope) expr_t::compile(scope); } +expr_t::ptr_op_t as_expr(const value_t& val) +{ + VERIFY(val.is_any()); + return val.as_any<expr_t::ptr_op_t>(); +} + +void set_expr(value_t& val, expr_t::ptr_op_t op) +{ + val.set_any(op); +} + +value_t expr_value(expr_t::ptr_op_t op) +{ + value_t temp; + temp.set_any(op); + return temp; +} + value_t source_command(call_scope_t& args) { std::istream * in = NULL; |