diff options
author | John Wiegley <johnw@newartisans.com> | 2009-02-07 04:27:28 -0400 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2009-02-07 04:27:28 -0400 |
commit | 011f35b730817034168369be1a7bd62b31146b64 (patch) | |
tree | ad5c85c5417278cbb6dd4b1e544e36f6ebc304e0 | |
parent | 19694cf2a2986849048ab01fbbfda7f0b9ee102a (diff) | |
download | fork-ledger-011f35b730817034168369be1a7bd62b31146b64.tar.gz fork-ledger-011f35b730817034168369be1a7bd62b31146b64.tar.bz2 fork-ledger-011f35b730817034168369be1a7bd62b31146b64.zip |
Implemented expr_context.
-rw-r--r-- | src/expr.cc | 5 | ||||
-rw-r--r-- | src/expr.h | 7 | ||||
-rw-r--r-- | src/op.cc | 3 | ||||
-rw-r--r-- | src/op.h | 3 |
4 files changed, 12 insertions, 6 deletions
diff --git a/src/expr.cc b/src/expr.cc index ee06187a..69319105 100644 --- a/src/expr.cc +++ b/src/expr.cc @@ -190,4 +190,9 @@ std::ostream& operator<<(std::ostream& out, const expr_t& expr) { return out; } +string expr_context(const expr_t& expr) +{ + return expr ? op_context(expr.ptr) : "<empty expression>"; +} + } // namespace ledger @@ -70,6 +70,8 @@ class expr_t struct token_t; class parser_t; + friend string expr_context(const expr_t& expr); + public: class op_t; typedef intrusive_ptr<op_t> ptr_op_t; @@ -141,10 +143,7 @@ public: std::ostream& operator<<(std::ostream& out, const expr_t& expr); -inline string expr_context(const expr_t& expr) { - // jww (2009-02-01): NYI - return "EXPR"; -} +string expr_context(const expr_t& expr); } // namespace ledger @@ -490,7 +490,8 @@ void expr_t::op_t::dump(std::ostream& out, const int depth) const } } -string op_context(const expr_t::ptr_op_t op, const expr_t::ptr_op_t goal) +string op_context(const expr_t::ptr_op_t op, + const expr_t::ptr_op_t goal) { ostream_pos_type start_pos, end_pos; expr_t::op_t::context_t context(op, goal, &start_pos, &end_pos); @@ -328,7 +328,8 @@ inline expr_t::ptr_op_t expr_t::op_t::wrap_functor(const function_t& fobj) { #define MAKE_FUNCTOR(x) expr_t::op_t::wrap_functor(bind(&x, this, _1)) #define WRAP_FUNCTOR(x) expr_t::op_t::wrap_functor(x) -string op_context(const expr_t::ptr_op_t op, const expr_t::ptr_op_t goal); +string op_context(const expr_t::ptr_op_t op, + const expr_t::ptr_op_t goal = NULL); } // namespace ledger |