From a013b520ba151b9da3adec97d124676a96741b04 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Tue, 14 Sep 2004 04:47:41 -0400 Subject: python integrated both ways (see sample.dat), and initialized on-demand --- python.cc | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 python.cc (limited to 'python.cc') diff --git a/python.cc b/python.cc new file mode 100644 index 00000000..9699873c --- /dev/null +++ b/python.cc @@ -0,0 +1,78 @@ +#include "python.h" +#include "ledger.h" +#include "acconf.h" + +#include + +using namespace boost::python; + +void export_amount(); +void export_balance(); +void export_value(); +void export_journal(); +void export_parser(); +void export_textual(); +void export_binary(); +void export_qif(); +#ifdef READ_GNUCASH +void export_gnucash(); +#endif +void export_option(); +void export_walk(); +void export_format(); +void export_valexpr(); +void export_datetime(); + +namespace ledger { + +python_support * python_interpretor = NULL; + +static struct cleanup_python { + ~cleanup_python() { + if (python_interpretor) { + Py_Finalize(); + delete python_interpretor; + } + } +} _cleanup; + +void init_module() +{ + export_amount(); + export_balance(); + export_value(); + export_journal(); + export_parser(); + export_textual(); + export_binary(); + export_qif(); +#ifdef READ_GNUCASH + export_gnucash(); +#endif + export_option(); + export_walk(); + export_format(); + export_valexpr(); + export_datetime(); +} + +void init_python() +{ + assert(! python_interpretor); + + Py_Initialize(); + python_interpretor = new python_support; + +#if 1 + boost::python::detail::init_module("ledger", &init_module); +#else + object m_obj(python_interpretor->main_module); + scope current_module(m_obj); + + python_interpretor->main_namespace.attr("bar") = 10; + + handle_exception(init_module_main); +#endif +} + +} // namespace ledger -- cgit v1.2.3