00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 00002 /* 00003 * This file is part of the libetonyek project. 00004 * 00005 * This Source Code Form is subject to the terms of the Mozilla Public 00006 * License, v. 2.0. If a copy of the MPL was not distributed with this 00007 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 00008 */ 00009 00010 #ifndef IWORKPARSER_H_INCLUDED 00011 #define IWORKPARSER_H_INCLUDED 00012 00013 #include "libetonyek_utils.h" 00014 #include "IWORKXMLContext.h" 00015 00016 namespace libetonyek 00017 { 00018 00019 struct IWORKDictionary; 00020 class IWORKTokenizer; 00021 class IWORKXMLParserState; 00022 00023 class IWORKParser 00024 { 00025 // -Weffc++ 00026 IWORKParser(const IWORKParser &); 00027 IWORKParser &operator=(const IWORKParser &); 00028 00029 public: 00030 IWORKParser(const RVNGInputStreamPtr_t &input, const RVNGInputStreamPtr_t &package); 00031 virtual ~IWORKParser() = 0; 00032 bool parse(); 00033 00034 RVNGInputStreamPtr_t &getInput(); 00035 RVNGInputStreamPtr_t getInput() const; 00036 RVNGInputStreamPtr_t &getPackage(); 00037 RVNGInputStreamPtr_t getPackage() const; 00038 00039 virtual const IWORKTokenizer &getTokenizer() const = 0; 00040 00041 private: 00042 virtual IWORKXMLContextPtr_t createDocumentContext() = 0; 00043 virtual IWORKXMLContextPtr_t createDiscardContext() = 0; 00044 00045 private: 00046 RVNGInputStreamPtr_t m_input; 00047 RVNGInputStreamPtr_t m_package; 00048 }; 00049 00050 } // namespace libetonyek 00051 00052 #endif // IWORKPARSER_H_INCLUDED 00053 00054 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */