summaryrefslogtreecommitdiff
path: root/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'parser.h')
-rw-r--r--parser.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/parser.h b/parser.h
new file mode 100644
index 00000000..515bf09b
--- /dev/null
+++ b/parser.h
@@ -0,0 +1,40 @@
+#ifndef _PARSER_H
+#define _PARSER_H
+
+#include <iostream>
+#include <string>
+
+namespace ledger {
+
+class account_t;
+class journal_t;
+
+class parser_t
+{
+ public:
+ virtual ~parser_t() {}
+
+ virtual bool test(std::istream& in) const = 0;
+
+ virtual unsigned int parse(std::istream& in,
+ journal_t * journal,
+ account_t * master = NULL,
+ const std::string * original_file = NULL) = 0;
+};
+
+bool register_parser(parser_t * parser);
+bool unregister_parser(parser_t * parser);
+
+unsigned int parse_journal(std::istream& in,
+ journal_t * journal,
+ account_t * master = NULL,
+ const std::string * original_file = NULL);
+
+unsigned int parse_journal_file(const std::string& path,
+ journal_t * journal,
+ account_t * master = NULL,
+ const std::string * original_file = NULL);
+
+} // namespace ledger
+
+#endif // _PARSER_H