TealDocParser.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is part of the libe-book project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  */
9 
10 #ifndef TEALDOCPARSER_H_INCLUDED
11 #define TEALDOCPARSER_H_INCLUDED
12 
13 #include <memory>
14 #include <vector>
15 
16 #include "PDBParser.h"
17 
18 
19 namespace libebook
20 {
21 
22 class EBOOKCharsetConverter;
23 
24 class TealDocTextParser;
25 
26 class TealDocParser : public PDBParser
27 {
28  // disable copying
31 
32 public:
33  explicit TealDocParser(librevenge::RVNGInputStream *input, librevenge::RVNGTextInterface *document = nullptr);
34  ~TealDocParser() override;
35 
36  static bool checkType(unsigned type, unsigned creator);
37 
38 private:
39  void readAppInfoRecord(librevenge::RVNGInputStream *record) override;
40  void readSortInfoRecord(librevenge::RVNGInputStream *record) override;
41  void readIndexRecord(librevenge::RVNGInputStream *record) override;
42  void readDataRecord(librevenge::RVNGInputStream *record, bool last) override;
43 
44  void createConverter(const std::vector<char> &text);
45 
46  void openDocument();
47  void closeDocument();
48 
49 private:
51  unsigned m_textLength;
52  unsigned m_recordCount;
53  unsigned m_recordSize;
54  unsigned m_read;
55 
57 
58  std::unique_ptr<EBOOKCharsetConverter> m_converter;
59  std::unique_ptr<TealDocTextParser> m_textParser;
60 };
61 
62 }
63 
64 #endif // TEALDOCPARSER_H_INCLUDED
65 
66 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
unsigned m_textLength
Definition: TealDocParser.h:51
Definition: EBOOKHTMLToken.h:89
void closeDocument()
Definition: TealDocParser.cpp:668
~TealDocParser() override
Definition: TealDocParser.cpp:556
TealDocParser(const TealDocParser &)
bool m_compressed
Definition: TealDocParser.h:50
void readAppInfoRecord(librevenge::RVNGInputStream *record) override
Definition: TealDocParser.cpp:565
Definition: EBOOKOPFToken.h:50
static bool checkType(unsigned type, unsigned creator)
Definition: TealDocParser.cpp:560
void readDataRecord(librevenge::RVNGInputStream *record, bool last) override
Definition: TealDocParser.cpp:590
TealDocParser & operator=(const TealDocParser &)
std::unique_ptr< EBOOKCharsetConverter > m_converter
Definition: TealDocParser.h:58
EBOOKDocument::Type type
Definition: EBOOKDocument.cpp:325
Definition: PDBParser.h:25
void createConverter(const std::vector< char > &text)
Definition: TealDocParser.cpp:628
unsigned m_read
Definition: TealDocParser.h:54
unsigned m_recordSize
Definition: TealDocParser.h:53
std::unique_ptr< TealDocTextParser > m_textParser
Definition: TealDocParser.h:59
Definition: TealDocParser.h:26
XMLTreeNodePtr_t document
Definition: EBOOKHTMLParser.cpp:163
void readIndexRecord(librevenge::RVNGInputStream *record) override
Definition: TealDocParser.cpp:575
Definition: BBeBCollector.cpp:18
void readSortInfoRecord(librevenge::RVNGInputStream *record) override
Definition: TealDocParser.cpp:570
qi::rule< Iterator, AttrValue_t, qi::space_type > text
Definition: TealDocParser.cpp:232
void openDocument()
Definition: TealDocParser.cpp:644
bool m_openedDocument
Definition: TealDocParser.h:56
unsigned m_recordCount
Definition: TealDocParser.h:52

Generated for libe-book by doxygen 1.8.14