Fixes to the Python bindings for amount_t

This commit is contained in:
John Wiegley 2009-11-02 04:41:07 -05:00
parent f9b833b685
commit 4e78dcff3f

View file

@ -42,6 +42,8 @@ namespace ledger {
using namespace boost::python; using namespace boost::python;
namespace {
boost::optional<amount_t> py_value_0(const amount_t& amount) { boost::optional<amount_t> py_value_0(const amount_t& amount) {
return amount.value(); return amount.value();
} }
@ -49,12 +51,16 @@ boost::optional<amount_t> py_value_1(const amount_t& amount,
const bool primary_only) { const bool primary_only) {
return amount.value(primary_only); return amount.value(primary_only);
} }
boost::optional<amount_t> py_value_2(const amount_t& amount,
boost::optional<amount_t>
py_value_2(const amount_t& amount,
const bool primary_only, const bool primary_only,
const boost::optional<datetime_t>& moment) { const boost::optional<datetime_t>& moment) {
return amount.value(primary_only, moment); return amount.value(primary_only, moment);
} }
boost::optional<amount_t> py_value_3(const amount_t& amount,
boost::optional<amount_t>
py_value_3(const amount_t& amount,
const bool primary_only, const bool primary_only,
const boost::optional<datetime_t>& moment, const boost::optional<datetime_t>& moment,
const boost::optional<commodity_t&>& in_terms_of) { const boost::optional<commodity_t&>& in_terms_of) {
@ -81,8 +87,7 @@ void py_parse_str_2(amount_t& amount, const string& str, unsigned char flags) {
amount.parse(str, flags); amount.parse(str, flags);
} }
void py_print(amount_t& amount, object out) void py_print(amount_t& amount, object out) {
{
if (PyFile_Check(out.ptr())) { if (PyFile_Check(out.ptr())) {
pyofstream outstr(reinterpret_cast<PyFileObject *>(out.ptr())); pyofstream outstr(reinterpret_cast<PyFileObject *>(out.ptr()));
amount.print(outstr); amount.print(outstr);
@ -96,6 +101,8 @@ void py_amount_initialize() {
amount_t::initialize(); amount_t::initialize();
} }
} // unnamed namespace
#define EXC_TRANSLATOR(type) \ #define EXC_TRANSLATOR(type) \
void exc_translate_ ## type(const type& err) { \ void exc_translate_ ## type(const type& err) { \
PyErr_SetString(PyExc_ArithmeticError, err.what()); \ PyErr_SetString(PyExc_ArithmeticError, err.what()); \
@ -276,7 +283,6 @@ internal precision."))
.staticmethod("parse_conversion") .staticmethod("parse_conversion")
.def("print_", py_print) .def("print_", py_print)
.def("dump", &amount_t::dump) .def("dump", &amount_t::dump)
.def("valid", &amount_t::valid) .def("valid", &amount_t::valid)