Normalized the value() method for Python numerics

This commit is contained in:
John Wiegley 2009-11-20 17:40:15 -05:00
parent b00e7ac19a
commit aa086686ea
3 changed files with 37 additions and 27 deletions

View file

@ -44,13 +44,16 @@ using namespace boost::python;
namespace { namespace {
boost::optional<amount_t> boost::optional<amount_t> py_value_0(const amount_t& amount) {
py_value_1(const amount_t& amount, commodity_t& in_terms_of) { return amount.value(false, CURRENT_TIME());
}
boost::optional<amount_t> py_value_1(const amount_t& amount,
commodity_t& in_terms_of) {
return amount.value(false, CURRENT_TIME(), in_terms_of); return amount.value(false, CURRENT_TIME(), in_terms_of);
} }
boost::optional<amount_t> boost::optional<amount_t> py_value_2(const amount_t& amount,
py_value_2(const amount_t& amount, commodity_t& in_terms_of, commodity_t& in_terms_of,
datetime_t& moment) { datetime_t& moment) {
return amount.value(false, moment, in_terms_of); return amount.value(false, moment, in_terms_of);
} }
@ -226,7 +229,8 @@ internal precision."))
.def("in_place_unreduce", &amount_t::in_place_unreduce, .def("in_place_unreduce", &amount_t::in_place_unreduce,
return_internal_reference<>()) return_internal_reference<>())
.def("value", py_value_1, args("moment")) .def("value", py_value_0)
.def("value", py_value_1, args("in_terms_of"))
.def("value", py_value_2, args("in_terms_of", "moment")) .def("value", py_value_2, args("in_terms_of", "moment"))
.def("price", &amount_t::price) .def("price", &amount_t::price)

View file

@ -45,26 +45,16 @@ using namespace boost::python;
namespace { namespace {
boost::optional<balance_t> py_value_0(const balance_t& balance) { boost::optional<balance_t> py_value_0(const balance_t& balance) {
return balance.value(); return balance.value(false, CURRENT_TIME());
} }
boost::optional<balance_t> py_value_1(const balance_t& balance, boost::optional<balance_t> py_value_1(const balance_t& balance,
const bool primary_only) { commodity_t& in_terms_of) {
return balance.value(primary_only); return balance.value(false, CURRENT_TIME(), in_terms_of);
} }
boost::optional<balance_t> py_value_2(const balance_t& balance,
boost::optional<balance_t> commodity_t& in_terms_of,
py_value_2(const balance_t& balance, datetime_t& moment) {
const bool primary_only, return balance.value(false, moment, in_terms_of);
const boost::optional<datetime_t>& moment) {
return balance.value(primary_only, moment);
}
boost::optional<balance_t>
py_value_3(const balance_t& balance,
const bool primary_only,
const boost::optional<datetime_t>& moment,
const boost::optional<commodity_t&>& in_terms_of) {
return balance.value(primary_only, moment, in_terms_of);
} }
boost::optional<amount_t> boost::optional<amount_t>
@ -200,9 +190,8 @@ void export_balance()
return_internal_reference<>()) return_internal_reference<>())
.def("value", py_value_0) .def("value", py_value_0)
.def("value", py_value_1, args("primary_only")) .def("value", py_value_1, args("in_terms_of"))
.def("value", py_value_2, args("primary_only", "moment")) .def("value", py_value_2, args("in_terms_of", "moment"))
.def("value", py_value_3, args("primary_only", "moment", "in_terms_of"))
.def("price", &balance_t::price) .def("price", &balance_t::price)

View file

@ -47,6 +47,19 @@ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(set_string_overloads, set_string, 0, 2)
namespace { namespace {
boost::optional<value_t> py_value_0(const value_t& value) {
return value.value(false, CURRENT_TIME());
}
boost::optional<value_t> py_value_1(const value_t& value,
commodity_t& in_terms_of) {
return value.value(false, CURRENT_TIME(), in_terms_of);
}
boost::optional<value_t> py_value_2(const value_t& value,
commodity_t& in_terms_of,
datetime_t& moment) {
return value.value(false, moment, in_terms_of);
}
PyObject * py_base_type(value_t& value) PyObject * py_base_type(value_t& value)
{ {
if (value.is_boolean()) { if (value.is_boolean()) {
@ -244,6 +257,10 @@ void export_value()
.def("unreduced", &value_t::unreduced) .def("unreduced", &value_t::unreduced)
.def("in_place_unreduce", &value_t::in_place_unreduce) .def("in_place_unreduce", &value_t::in_place_unreduce)
.def("value", py_value_0)
.def("value", py_value_1, args("in_terms_of"))
.def("value", py_value_2, args("in_terms_of", "moment"))
.def("value", &value_t::value, value_overloads()) .def("value", &value_t::value, value_overloads())
.def("price", &value_t::price) .def("price", &value_t::price)
.def("exchange_commodities", &value_t::exchange_commodities, .def("exchange_commodities", &value_t::exchange_commodities,