FictionBook2TableContext.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 FICTIONBOOK2TABLECONTEXT_H_INCLUDED
11 #define FICTIONBOOK2TABLECONTEXT_H_INCLUDED
12 
13 #include <memory>
14 
16 
17 namespace libebook
18 {
19 
20 class FictionBook2TableModel;
21 
23 {
24  // disable copying
27 
28 public:
30  ~FictionBook2TableContext() override;
31 
32 private:
34  void startOfElement() override;
35  void endOfElement() override;
36  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
37 
38 private:
39  std::shared_ptr<FictionBook2TableModel> m_model;
40 };
41 
43 {
44  // disable copying
47 
48 public:
49  FictionBook2CellContext(FictionBook2ParserContext *parentContext, const std::shared_ptr<FictionBook2TableModel> &model, const FictionBook2BlockFormat &format, bool header);
50 
51 private:
52  void startOfElement() override;
53  void endOfElement() override;
54  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
55  void endOfAttributes() override;
56 
57  void openCell();
58 
59 private:
60  const std::shared_ptr<FictionBook2TableModel> m_model;
61  const bool m_header;
62  bool m_opened;
64  int m_rowSpan;
66 };
67 
69 {
70  // no copying
73 
74 public:
75  FictionBook2TrContext(FictionBook2ParserContext *parentContext, const std::shared_ptr<FictionBook2TableModel> &model, const FictionBook2BlockFormat &format);
76 
77 private:
79  void endOfElement() override;
80  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
81 
82  void openRow(bool header);
83 
84 private:
85  const std::shared_ptr<FictionBook2TableModel> m_model;
86  bool m_opened;
87 };
88 
89 }
90 
91 #endif // FICTIONBOOK2TABLECONTEXT_H_INCLUDED
92 
93 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
libebook::FictionBook2Token::rowspan
@ rowspan
Definition: FictionBook2Token.h:117
libebook::FictionBook2Token::style
@ style
Definition: FictionBook2Token.h:84
libebook::FictionBook2TrContext::m_opened
bool m_opened
Definition: FictionBook2TableContext.h:86
libebook::FictionBook2CellContext::operator=
FictionBook2CellContext & operator=(const FictionBook2CellContext &other)
libebook::FictionBook2Token::th
@ th
Definition: FictionBook2Token.h:92
libebook::FictionBook2TrContext::openRow
void openRow(bool header)
Definition: FictionBook2TableContext.cpp:291
libebook::FictionBook2TableContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2TableContext.cpp:162
libebook::FictionBook2TableContext::FictionBook2TableContext
FictionBook2TableContext(const FictionBook2TableContext &other)
libebook::FictionBook2Token::id
@ id
Definition: FictionBook2Token.h:59
libebook::FictionBook2TableModel::m_rows
size_t m_rows
Definition: FictionBook2TableContext.cpp:46
libebook::FictionBook2TableModel::Table_t
std::deque< Row_t > Table_t
Definition: FictionBook2TableContext.cpp:24
libebook::FictionBook2TrContext::FictionBook2TrContext
FictionBook2TrContext(const FictionBook2TrContext &)
libebook::FictionBook2BlockFormatContextBase::getBlockFormat
FictionBook2BlockFormat & getBlockFormat()
Definition: FictionBook2ParserContext.cpp:224
libebook::FictionBook2Collector::closeTableCell
virtual void closeTableCell()=0
libebook::FictionBook2CellContext::m_header
const bool m_header
Definition: FictionBook2TableContext.h:61
FictionBook2Token.h
libebook::FictionBook2TableModel::m_columns
size_t m_columns
Definition: FictionBook2TableContext.cpp:47
libebook::FictionBook2TableContext::element
FictionBook2XMLParserContext * element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2TableContext.cpp:136
libebook::FictionBook2TableModel::ensureColumns
void ensureColumns(Row_t &row)
Definition: FictionBook2TableContext.cpp:120
libebook::FictionBook2Collector::insertCoveredTableCell
virtual void insertCoveredTableCell()=0
libebook::FictionBook2CellContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2TableContext.cpp:206
libebook::FictionBook2CellContext::endOfAttributes
void endOfAttributes() override
Signalize the end of attributes.
Definition: FictionBook2TableContext.cpp:233
libebook::FictionBook2CellContext::startOfElement
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2TableContext.cpp:191
libebook
Definition: BBeBCollector.cpp:18
libebook::FictionBook2Collector::defineID
virtual void defineID(const char *id)=0
libebook::FictionBook2TableModel::FictionBook2TableModel
FictionBook2TableModel()
Definition: FictionBook2TableContext.cpp:52
libebook::FictionBook2StyleContextBase
Definition: FictionBook2ParserContext.h:132
libebook::FictionBook2Token::align
@ align
Definition: FictionBook2Token.h:102
libebook::FictionBook2TableContext::startOfElement
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2TableContext.cpp:152
value
qi::rule< Iterator, AttrValue_t, qi::space_type > value
Definition: TealDocParser.cpp:231
libebook::FictionBook2Collector::closeTableRow
virtual void closeTableRow()=0
libebook::FictionBook2TableModel::m_table
Table_t m_table
Definition: FictionBook2TableContext.cpp:45
libebook::FictionBook2Collector::openTable
virtual void openTable(const FictionBook2BlockFormat &format)=0
libebook::FictionBook2Token::NS_FICTIONBOOK
@ NS_FICTIONBOOK
Definition: FictionBook2Token.h:29
libebook::FictionBook2TableContext::operator=
FictionBook2TableContext & operator=(const FictionBook2TableContext &other)
libebook::FictionBook2BlockFormatContextBase
Definition: FictionBook2ParserContext.h:151
libebook::EBOOKHTMLToken::row
@ row
Definition: EBOOKHTMLToken.h:311
libebook::FictionBook2CellContext::m_model
const std::shared_ptr< FictionBook2TableModel > m_model
Definition: FictionBook2TableContext.h:60
libebook::FictionBook2TableModel::m_current_row
size_t m_current_row
Definition: FictionBook2TableContext.cpp:48
libebook::FictionBook2Token::tr
@ tr
Definition: FictionBook2Token.h:95
libebook::FictionBook2TrContext::element
FictionBook2XMLParserContext * element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2TableContext.cpp:253
libebook::FictionBook2TableContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2TableContext.cpp:157
libebook::FictionBook2TableModel::Row_t
std::deque< bool > Row_t
Definition: FictionBook2TableContext.cpp:23
FictionBook2ParserContext.h
libebook::FictionBook2ParserContext::getCollector
FictionBook2Collector * getCollector() const
Get the collector.
Definition: FictionBook2ParserContext.cpp:31
libebook::FictionBook2CellContext::m_columnSpan
int m_columnSpan
Definition: FictionBook2TableContext.h:63
libebook::FictionBook2TableModel::addCell
size_t addCell(size_t rowSpan, size_t columnSpan)
Add a cell spanning rowSpan rows and colSpan columns.
Definition: FictionBook2TableContext.cpp:81
libebook::FictionBook2BlockFormat::headerRow
bool headerRow
Definition: FictionBook2Style.h:42
FictionBook2TableContext.h
FictionBook2_NO_NAMESPACE
#define FictionBook2_NO_NAMESPACE(ns)
Definition: FictionBook2Token.h:18
libebook::FictionBook2TableModel
Definition: FictionBook2TableContext.cpp:21
libebook::FictionBook2TrContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2TableContext.cpp:283
libebook::FictionBook2Token::td
@ td
Definition: FictionBook2Token.h:90
libebook::FictionBook2TrContext::m_model
const std::shared_ptr< FictionBook2TableModel > m_model
Definition: FictionBook2TableContext.h:85
libebook::FictionBook2TrContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2TableContext.cpp:275
libebook::FictionBook2SkipElementContext
Context for skipping element hierarchies.
Definition: FictionBook2ParserContext.h:113
libebook::FictionBook2CellContext::m_coveredColumns
size_t m_coveredColumns
Definition: FictionBook2TableContext.h:65
libebook::FictionBook2XMLParserContext
Definition: FictionBook2XMLParserContext.h:18
libebook::FictionBook2TableContext::m_model
std::shared_ptr< FictionBook2TableModel > m_model
Definition: FictionBook2TableContext.h:39
libebook::FictionBook2TrContext
Definition: FictionBook2TableContext.h:68
libebook::FictionBook2TableContext
Definition: FictionBook2TableContext.h:22
libebook::FictionBook2ParserContext
Base class for all contexts.
Definition: FictionBook2ParserContext.h:23
libebook::FictionBook2Collector::openTableCell
virtual void openTableCell(int rowspan, int colspan)=0
libebook::FictionBook2TrContext::operator=
FictionBook2TrContext & operator=(const FictionBook2TrContext &)
libebook::FictionBook2Collector::openTableRow
virtual void openTableRow(const FictionBook2BlockFormat &format)=0
libebook::getFictionBook2TokenID
int getFictionBook2TokenID(const FictionBook2TokenData &token)
Definition: FictionBook2Token.cpp:50
libebook::FictionBook2CellContext::FictionBook2CellContext
FictionBook2CellContext(const FictionBook2CellContext &other)
libebook::FictionBook2Collector::closeTable
virtual void closeTable()=0
libebook::FictionBook2Token::colspan
@ colspan
Definition: FictionBook2Token.h:104
libebook::FictionBook2CellContext::openCell
void openCell()
Definition: FictionBook2TableContext.cpp:238
FictionBook2Collector.h
libebook::EBOOKHTMLToken::header
@ header
Definition: EBOOKHTMLToken.h:82
name
string name
Definition: HTMLHelpStream.cpp:80
libebook::FictionBook2Style
Definition: FictionBook2Style.h:55
libebook::FictionBook2CellContext
Definition: FictionBook2TableContext.h:42
libebook::EBOOKOPFToken::format
@ format
Definition: EBOOKOPFToken.h:54
libebook::FictionBook2TableContext::~FictionBook2TableContext
~FictionBook2TableContext() override
Definition: FictionBook2TableContext.cpp:132
libebook::FictionBook2TokenData
Definition: FictionBook2Token.h:133
libebook::FictionBook2CellContext::m_opened
bool m_opened
Definition: FictionBook2TableContext.h:62
libebook::FictionBook2CellContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2TableContext.cpp:195
libebook::FictionBook2BlockFormat
Definition: FictionBook2Style.h:35
libebook::FictionBook2CellContext::m_rowSpan
int m_rowSpan
Definition: FictionBook2TableContext.h:64
libebook::FictionBook2TableModel::addRow
size_t addRow()
Add a row.
Definition: FictionBook2TableContext.cpp:61
m_header
int m_header
Definition: EBOOKOutputElements.cpp:476
libebook::FictionBook2TableModel::m_current_column
size_t m_current_column
Definition: FictionBook2TableContext.cpp:49

Generated for libe-book by doxygen 1.8.17