summaryrefslogtreecommitdiff
path: root/src/gnucash.h
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2007-04-30 06:26:38 +0000
committerJohn Wiegley <johnw@newartisans.com>2008-04-13 03:38:33 -0400
commitc8899addfd2deed3d84be2de234681db64987722 (patch)
tree07f9a5eb603ff4ec83fe18c83083575d2b7a439a /src/gnucash.h
parentaa9cc125796711afcaa459898e95527fdae8e912 (diff)
downloadfork-ledger-c8899addfd2deed3d84be2de234681db64987722.tar.gz
fork-ledger-c8899addfd2deed3d84be2de234681db64987722.tar.bz2
fork-ledger-c8899addfd2deed3d84be2de234681db64987722.zip
Rearranged the sources a bit.
Diffstat (limited to 'src/gnucash.h')
-rw-r--r--src/gnucash.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/gnucash.h b/src/gnucash.h
new file mode 100644
index 00000000..a0d9fb18
--- /dev/null
+++ b/src/gnucash.h
@@ -0,0 +1,75 @@
+#ifndef _GNUCASH_H
+#define _GNUCASH_H
+
+#include "parser.h"
+#include "journal.h"
+
+namespace ledger {
+
+struct gnucash_parser_t : public parser_t
+{
+ typedef std::map<const string, account_t *> accounts_map;
+ typedef std::pair<const string, account_t *> accounts_pair;
+
+ typedef std::map<account_t *, commodity_t *> account_comm_map;
+ typedef std::pair<account_t *, commodity_t *> account_comm_pair;
+
+ journal_t * curr_journal;
+ account_t * master_account;
+ account_t * curr_account;
+ string curr_account_id;
+ entry_t * curr_entry;
+ commodity_t * entry_comm;
+ commodity_t * curr_comm;
+ amount_t curr_value;
+ amount_t curr_quant;
+ XML_Parser expat_parser;
+ accounts_map accounts_by_id;
+ account_comm_map account_comms;
+ unsigned int count;
+ string have_error;
+
+ std::istream * instreamp;
+ unsigned int offset;
+ XML_Parser parser;
+ string path;
+ unsigned int src_idx;
+ unsigned long beg_pos;
+ unsigned long beg_line;
+
+ transaction_t::state_t curr_state;
+
+ enum action_t {
+ NO_ACTION,
+ ACCOUNT_NAME,
+ ACCOUNT_ID,
+ ACCOUNT_PARENT,
+ COMM_SYM,
+ COMM_NAME,
+ COMM_PREC,
+ ENTRY_NUM,
+ ALMOST_ENTRY_DATE,
+ ENTRY_DATE,
+ ENTRY_DESC,
+ XACT_STATE,
+ XACT_AMOUNT,
+ XACT_VALUE,
+ XACT_QUANTITY,
+ XACT_ACCOUNT,
+ XACT_NOTE
+ } action;
+
+ public:
+ virtual bool test(std::istream& in) const;
+
+ virtual unsigned int parse(std::istream& in,
+ journal_t * journal,
+ account_t * master = NULL,
+ const string * original_file = NULL);
+
+ amount_t convert_number(const string& number, int * precision = NULL);
+};
+
+} // namespace ledger
+
+#endif // _GNUCASH_H