ABWParser.h
Go to the documentation of this file.
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 <boost/scoped_ptr.hpp>
00014 
00015 #include <librevenge/librevenge.h>
00016 #include "ABWXMLHelper.h"
00017 
00018 namespace libabw
00019 {
00020 
00021 class ABWCollector;
00022 struct ABWParserState;
00023 
00024 class ABWParser
00025 {
00026 public:
00027   explicit ABWParser(librevenge::RVNGInputStream *input, librevenge::RVNGTextInterface *iface);
00028   virtual ~ABWParser();
00029   bool parse();
00030 
00031 private:
00032   ABWParser();
00033   ABWParser(const ABWParser &);
00034   ABWParser &operator=(const ABWParser &);
00035 
00036   // Helper functions
00037 
00038   int getElementToken(xmlTextReaderPtr reader);
00039 
00040   // Functions to read the AWML document structure
00041 
00042   bool processXmlDocument(librevenge::RVNGInputStream *input);
00043   void processXmlNode(xmlTextReaderPtr reader);
00044 
00045   void readAbiword(xmlTextReaderPtr reader);
00046   void readM(xmlTextReaderPtr reader);
00047   void readHistory(xmlTextReaderPtr reader);
00048   void readRevisions(xmlTextReaderPtr reader);
00049   void readIgnoredWords(xmlTextReaderPtr reader);
00050   void readPageSize(xmlTextReaderPtr reader);
00051   void readSection(xmlTextReaderPtr reader);
00052   void readA(xmlTextReaderPtr reader);
00053   void readC(xmlTextReaderPtr reader);
00054   void readD(xmlTextReaderPtr reader);
00055   void readL(xmlTextReaderPtr reader);
00056   void readP(xmlTextReaderPtr reader);
00057   void readS(xmlTextReaderPtr reader);
00058   void readEndnote(xmlTextReaderPtr reader);
00059   void readFoot(xmlTextReaderPtr reader);
00060   void readImage(xmlTextReaderPtr reader);
00061 
00062   void readTable(xmlTextReaderPtr reader);
00063   void readCell(xmlTextReaderPtr reader);
00064 
00065   librevenge::RVNGInputStream *m_input;
00066   librevenge::RVNGTextInterface *m_iface;
00067   ABWCollector *m_collector;
00068   boost::scoped_ptr<ABWParserState> m_state;
00069 };
00070 
00071 } // namespace libabw
00072 
00073 #endif // __ABWPARSER_H__
00074 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */