diff options
Diffstat (limited to 'src/textual.h')
-rw-r--r-- | src/textual.h | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/src/textual.h b/src/textual.h deleted file mode 100644 index 3565579a..00000000 --- a/src/textual.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 2003-2009, John Wiegley. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * - Neither the name of New Artisans LLC nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @defgroup parse Parsers - */ - -/** - * @file textual.h - * @author John Wiegley - * - * @ingroup parse - * - * @brief Brief - * - * Long. - */ -#ifndef _TEXTUAL_H -#define _TEXTUAL_H - -#include "journal.h" -#include "account.h" - -namespace ledger { - -#define TIMELOG_SUPPORT 1 - -#if defined(TIMELOG_SUPPORT) -class time_log_t; -#endif - -/** - * @brief Brief - * - * Long. - */ -class textual_parser_t : public journal_t::parser_t -{ -public: -#if defined(TEST_FOR_PARSER) - virtual bool test(std::istream& in) const; -#endif - - virtual std::size_t parse(std::istream& in, - session_t& session, - journal_t& journal, - account_t * master = NULL, - const path * original_file = NULL); - -protected: - class instance_t : public noncopyable, public scope_t - { - static const std::size_t MAX_LINE = 1024; - - public: - std::list<account_t *>& account_stack; -#if defined(TIMELOG_SUPPORT) - time_log_t& timelog; -#endif - - instance_t * parent; - std::istream& in; - session_t& session; - journal_t& journal; - account_t * master; - const path * original_file; - accounts_map account_aliases; - - path pathname; - char linebuf[MAX_LINE + 1]; - std::size_t linenum; - istream_pos_type line_beg_pos; - istream_pos_type curr_pos; - std::size_t count; - std::size_t errors; - - scoped_ptr<auto_entry_finalizer_t> auto_entry_finalizer; - - instance_t(std::list<account_t *>& _account_stack, -#if defined(TIMELOG_SUPPORT) - time_log_t& _timelog, -#endif - std::istream& _in, - session_t& _session, - journal_t& _journal, - account_t * _master = NULL, - const path * _original_file = NULL, - instance_t * _parent = NULL); - - ~instance_t(); - - void parse(); - std::streamsize read_line(char *& line); - bool peek_whitespace_line() { - return (in.good() && ! in.eof() && - (in.peek() == ' ' || in.peek() == '\t')); - } - void read_next_directive(); - -#if defined(TIMELOG_SUPPORT) - void clock_in_directive(char * line, bool capitalized); - void clock_out_directive(char * line, bool capitalized); -#endif - - void default_commodity_directive(char * line); - void default_account_directive(char * line); - void price_conversion_directive(char * line); - void price_entry_directive(char * line); - void nomarket_directive(char * line); - void year_directive(char * line); - void option_directive(char * line); - void automated_entry_directive(char * line); - void period_entry_directive(char * line); - void entry_directive(char * line, std::streamsize len); - void include_directive(char * line); - void account_directive(char * line); - void end_directive(char * line); - void alias_directive(char * line); - void define_directive(char * line); - void general_directive(char * line); - - xact_t * parse_xact(char * line, - std::streamsize len, - account_t * account, - entry_t * entry); - - bool parse_xacts(account_t * account, - entry_base_t& entry, - const string& kind); - - entry_t * parse_entry(char * line, - std::streamsize len, - account_t * account); - - virtual expr_t::ptr_op_t lookup(const string& name); - }; - - friend class instance_t; -}; - -} // namespace ledger - -#endif // _TEXTUAL_H |