diff options
author | John Wiegley <johnw@newartisans.com> | 2009-02-06 14:31:38 -0400 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2009-02-06 14:31:38 -0400 |
commit | 68d5bc1f32af2109a830d93a03ded305ed7061c2 (patch) | |
tree | 53835fdec1a67022c2e82488cb687283369c4c6e /python/py_expr.cc | |
parent | ff2f3d23d4edf588dd153cc71a613e596594757e (diff) | |
download | ledger-68d5bc1f32af2109a830d93a03ded305ed7061c2.tar.gz ledger-68d5bc1f32af2109a830d93a03ded305ed7061c2.tar.bz2 ledger-68d5bc1f32af2109a830d93a03ded305ed7061c2.zip |
Added #if 0'd Python stub code from 2.x days. It needs to be ported.
Diffstat (limited to 'python/py_expr.cc')
-rw-r--r-- | python/py_expr.cc | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/python/py_expr.cc b/python/py_expr.cc index e4230377..07f390af 100644 --- a/python/py_expr.cc +++ b/python/py_expr.cc @@ -64,3 +64,82 @@ void export_expr() } } // namespace ledger + +#if 0 +value_t py_calc_1(xpath_t::op_t& xpath_t, const details_t& item) +{ + value_t result; + xpath_t.calc(result, item); + return result; +} + +template <typename T> +value_t py_calc(xpath_t::op_t& xpath_t, const T& item) +{ + value_t result; + xpath_t.calc(result, details_t(item)); + return result; +} + +xpath_t::op_t * py_parse_xpath_t_1(const string& str) +{ + return parse_xpath_t(str); +} + +#define EXC_TRANSLATOR(type) \ + void exc_translate_ ## type(const type& err) { \ + PyErr_SetString(PyExc_RuntimeError, err.what()); \ + } + +EXC_TRANSLATOR(xpath_t_error) +EXC_TRANSLATOR(calc_error) +#if 0 +EXC_TRANSLATOR(mask_error) +#endif + +void export_xpath() +{ + class_< details_t > ("Details", init<const entry_t&>()) + .def(init<const transaction_t&>()) + .def(init<const account_t&>()) + .add_property("entry", + make_getter(&details_t::entry, + return_value_policy<reference_existing_object>())) + .add_property("xact", + make_getter(&details_t::xact, + return_value_policy<reference_existing_object>())) + .add_property("account", + make_getter(&details_t::account, + return_value_policy<reference_existing_object>())) + ; + + class_< xpath_t::op_t > ("ValueExpr", init<xpath_t::op_t::kind_t>()) + .def("calc", py_calc_1) + .def("calc", py_calc<account_t>) + .def("calc", py_calc<entry_t>) + .def("calc", py_calc<transaction_t>) + ; + + def("parse_xpath_t", py_parse_xpath_t_1, + return_value_policy<manage_new_object>()); + + class_< item_predicate<transaction_t> > + ("TransactionPredicate", init<string>()) + .def("__call__", &item_predicate<transaction_t>::operator()) + ; + + class_< item_predicate<account_t> > + ("AccountPredicate", init<string>()) + .def("__call__", &item_predicate<account_t>::operator()) + ; + +#define EXC_TRANSLATE(type) \ + register_error_translator<type>(&exc_translate_ ## type); + + EXC_TRANSLATE(xpath_t_error); + EXC_TRANSLATE(calc_error); +#if 0 + EXC_TRANSLATE(mask_error); +#endif +} +#endif |