00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 00002 /* 00003 * This file is part of the libabw 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 __ABWPARSER_H__ 00011 #define __ABWPARSER_H__ 00012 00013 #include <libwpd/libwpd.h> 00014 #include "ABWXMLHelper.h" 00015 00016 namespace libabw 00017 { 00018 00019 class ABWCollector; 00020 00021 class ABWParser 00022 { 00023 public: 00024 explicit ABWParser(WPXInputStream *input, WPXDocumentInterface *iface); 00025 virtual ~ABWParser(); 00026 bool parse(); 00027 00028 private: 00029 ABWParser(); 00030 ABWParser(const ABWParser &); 00031 ABWParser &operator=(const ABWParser &); 00032 00033 // Helper functions 00034 00035 int getElementToken(xmlTextReaderPtr reader); 00036 00037 // Functions to read the AWML document structure 00038 00039 bool processXmlDocument(WPXInputStream *input); 00040 void processXmlNode(xmlTextReaderPtr reader); 00041 00042 void readMetadata(xmlTextReaderPtr reader); 00043 void readHistory(xmlTextReaderPtr reader); 00044 void readRevisions(xmlTextReaderPtr reader); 00045 void readIgnoredWords(xmlTextReaderPtr reader); 00046 void readPageSize(xmlTextReaderPtr reader); 00047 void readSection(xmlTextReaderPtr reader); 00048 void readA(xmlTextReaderPtr reader); 00049 void readC(xmlTextReaderPtr reader); 00050 void readD(xmlTextReaderPtr reader); 00051 void readL(xmlTextReaderPtr reader); 00052 void readP(xmlTextReaderPtr reader); 00053 void readS(xmlTextReaderPtr reader); 00054 void readEndnote(xmlTextReaderPtr reader); 00055 void readFoot(xmlTextReaderPtr reader); 00056 void readImage(xmlTextReaderPtr reader); 00057 00058 void readTable(xmlTextReaderPtr reader); 00059 void readCell(xmlTextReaderPtr reader); 00060 00061 WPXInputStream *m_input; 00062 WPXDocumentInterface *m_iface; 00063 ABWCollector *m_collector; 00064 }; 00065 00066 } // namespace libabw 00067 00068 #endif // __ABWPARSER_H__ 00069 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */