From e1d0dbf220a5301f6125a1548a380492ad488515 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Wed, 9 Nov 2005 07:11:22 +0000 Subject: Restructed the code that it can build and be used as a shared library. The command-line version is still statically bound in the build process by default (for the sake of speed). --- startup.cc | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 startup.cc (limited to 'startup.cc') diff --git a/startup.cc b/startup.cc new file mode 100644 index 00000000..ad462e36 --- /dev/null +++ b/startup.cc @@ -0,0 +1,54 @@ +#include "ledger.h" + +using namespace ledger; + +namespace ledger { + parser_t * binary_parser_ptr = NULL; + parser_t * xml_parser_ptr = NULL; + parser_t * gnucash_parser_ptr = NULL; + parser_t * ofx_parser_ptr = NULL; + parser_t * qif_parser_ptr = NULL; + parser_t * textual_parser_ptr = NULL; +} + +namespace { + binary_parser_t binary_parser; +#if defined(HAVE_EXPAT) || defined(HAVE_XMLPARSE) + xml_parser_t xml_parser; + gnucash_parser_t gnucash_parser; +#endif +#ifdef HAVE_LIBOFX + ofx_parser_t ofx_parser; +#endif + qif_parser_t qif_parser; + textual_parser_t textual_parser; + + static class startup { + public: + startup(); + ~startup(); + } _startup; + + startup::startup() + { + std::ios::sync_with_stdio(false); + + initialize_parser_support(); + + register_parser(&binary_parser); binary_parser_ptr = &binary_parser; +#if defined(HAVE_EXPAT) || defined(HAVE_XMLPARSE) + register_parser(&xml_parser); xml_parser_ptr = &xml_parser; + register_parser(&gnucash_parser); gnucash_parser_ptr = &gnucash_parser; +#endif +#ifdef HAVE_LIBOFX + register_parser(&ofx_parser); ofx_parser_ptr = &ofx_parser; +#endif + register_parser(&qif_parser); qif_parser_ptr = &qif_parser; + register_parser(&textual_parser); textual_parser_ptr = &textual_parser; + } + + startup::~startup() + { + shutdown_parser_support(); + } +} -- cgit v1.2.3