FictionBook2ParserContext.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 FICTIONBOOK2PARSERCONTEXT_H_INCLUDED
11 #define FICTIONBOOK2PARSERCONTEXT_H_INCLUDED
12 
14 #include "FictionBook2Style.h"
15 
16 namespace libebook
17 {
18 
19 class FictionBook2Collector;
20 
23 class FictionBook2ParserContext : public FictionBook2XMLParserContext, public std::enable_shared_from_this<FictionBook2ParserContext>
24 {
25  // no copying
28 
29 public:
35  explicit FictionBook2ParserContext(std::shared_ptr<FictionBook2ParserContext> parentContext, FictionBook2Collector *collector = nullptr);
36 
38 
39  std::shared_ptr<FictionBook2XMLParserContext> leaveContext() const override;
40 
46 
51  std::shared_ptr<FictionBook2ParserContext> getParentContext() const;
52 
53 private:
55  std::shared_ptr<FictionBook2ParserContext> const m_parentContext;
56 };
57 
64 {
65 public:
66  explicit FictionBook2NodeContextBase(std::shared_ptr<FictionBook2ParserContext> parentContext, FictionBook2Collector *collector = nullptr);
67 
68 private:
69  void startOfElement() override;
70  void endOfAttributes() override;
71  void text(const char *value) override;
72 };
73 
84 {
85 public:
86  explicit FictionBook2DataContextBase(std::shared_ptr<FictionBook2ParserContext> parentContext);
87 
88 private:
89  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
90  void startOfElement() override;
91  void endOfAttributes() override;
92  void text(const char *value) override;
93 };
94 
101 {
102 public:
103  explicit FictionBook2TextContextBase(std::shared_ptr<FictionBook2ParserContext> parentContext);
104 
105 private:
106  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
107  void startOfElement() override;
108  void endOfElement() override;
109  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
110  void endOfAttributes() override;
111 };
112 
116 {
117 public:
118  explicit FictionBook2SkipElementContext(std::shared_ptr<FictionBook2ParserContext> parentContext);
119 
120 private:
121  std::shared_ptr<FictionBook2XMLParserContext> leaveContext() const override;
122 
123  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
124  void startOfElement() override;
125  void endOfElement() override;
126  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
127  void endOfAttributes() override;
128  void text(const char *value) override;
129 
130 private:
131  unsigned m_level;
132 };
133 
135 {
136 public:
137  FictionBook2StyleContextBase(std::shared_ptr<FictionBook2ParserContext> parentContext, const FictionBook2Style &style);
138 
139 protected:
142 
143  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
144  void endOfElement() override;
145  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
146  void endOfAttributes() override;
147  void text(const char *value) override;
148 
149 private:
151 };
152 
154 {
155 public:
156  FictionBook2BlockFormatContextBase(std::shared_ptr<FictionBook2ParserContext> parentContext, const FictionBook2BlockFormat &format);
157 
160 
161  void setLang(const char *lang);
162 
163 private:
165 };
166 
167 }
168 
169 #endif // FICTIONBOOK2PARSERCONTEXT_H_INCLUDED
170 
171 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
FictionBook2BlockFormat & getBlockFormat()
Definition: FictionBook2ParserContext.cpp:223
unsigned m_level
Definition: FictionBook2ParserContext.h:131
void endOfAttributes() override
Signalize the end of attributes.
Definition: FictionBook2ParserContext.cpp:104
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2ParserContext.cpp:196
FictionBook2Collector *const m_collector
Definition: FictionBook2ParserContext.h:54
FictionBook2BlockFormatContextBase(std::shared_ptr< FictionBook2ParserContext > parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2ParserContext.cpp:217
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2ParserContext.cpp:65
void endOfAttributes() override
Signalize the end of attributes.
Definition: FictionBook2ParserContext.cpp:200
FictionBook2SkipElementContext(std::shared_ptr< FictionBook2ParserContext > parentContext)
Definition: FictionBook2ParserContext.cpp:108
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2ParserContext.cpp:121
virtual ~FictionBook2ParserContext()
Definition: FictionBook2ParserContext.cpp:24
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2ParserContext.cpp:48
Definition: FictionBook2Style.h:55
Definition: FictionBook2ParserContext.h:134
FictionBook2Style & getStyle()
Definition: FictionBook2ParserContext.cpp:154
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2ParserContext.cpp:131
Definition: EBOOKHTMLToken.h:205
Definition: FictionBook2XMLParserContext.h:20
FictionBook2BlockFormat m_format
Definition: FictionBook2ParserContext.h:164
std::shared_ptr< FictionBook2ParserContext > const m_parentContext
Definition: FictionBook2ParserContext.h:55
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2ParserContext.cpp:136
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2ParserContext.cpp:164
void text(const char *value) override
Process textual content of an element.
Definition: FictionBook2ParserContext.cpp:144
void text(const char *value) override
Process textual content of an element.
Definition: FictionBook2ParserContext.cpp:78
Definition: FictionBook2ParserContext.h:153
void endOfAttributes() override
Signalize the end of attributes.
Definition: FictionBook2ParserContext.cpp:74
Definition: FictionBook2Style.h:35
FictionBook2NodeContextBase(std::shared_ptr< FictionBook2ParserContext > parentContext, FictionBook2Collector *collector=nullptr)
Definition: FictionBook2ParserContext.cpp:43
FictionBook2TextContextBase(std::shared_ptr< FictionBook2ParserContext > parentContext)
Definition: FictionBook2ParserContext.cpp:82
FictionBook2StyleContextBase(std::shared_ptr< FictionBook2ParserContext > parentContext, const FictionBook2Style &style)
Definition: FictionBook2ParserContext.cpp:148
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2ParserContext.cpp:87
Definition: FictionBook2Token.h:133
std::shared_ptr< FictionBook2XMLParserContext > leaveContext() const override
Destroy this context and return parent.
Definition: FictionBook2ParserContext.cpp:114
Context for skipping element hierarchies.
Definition: FictionBook2ParserContext.h:115
FictionBook2TextFormat & getTextFormat()
Definition: FictionBook2ParserContext.cpp:159
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2ParserContext.cpp:70
const char * name
Definition: EBOOKHTMLToken.cpp:44
void text(const char *value) override
Process textual content of an element.
Definition: FictionBook2ParserContext.cpp:210
FictionBook2Collector * getCollector() const
Get the collector.
Definition: FictionBook2ParserContext.cpp:33
void setLang(const char *lang)
Definition: FictionBook2ParserContext.cpp:233
Base class for leaf textual element contexts.
Definition: FictionBook2ParserContext.h:100
Base class for non-leaf element contexts.
Definition: FictionBook2ParserContext.h:63
FictionBook2Style m_style
Definition: FictionBook2ParserContext.h:150
Base class for all contexts.
Definition: FictionBook2ParserContext.h:23
void endOfAttributes() override
Signalize the end of attributes.
Definition: FictionBook2ParserContext.cpp:140
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2ParserContext.cpp:100
Definition: EBOOKOPFToken.h:54
FictionBook2ParserContext & operator=(const FictionBook2ParserContext &other)
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2ParserContext.cpp:92
std::shared_ptr< FictionBook2ParserContext > getParentContext() const
Get the parent context.
Definition: FictionBook2ParserContext.cpp:38
Definition: FictionBook2Collector.h:22
Definition: BBeBCollector.cpp:19
qi::rule< Iterator, AttrValue_t, qi::space_type > value
Definition: TealDocParser.cpp:231
FictionBook2ParserContext(const FictionBook2ParserContext &other)
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2ParserContext.cpp:96
optional< Style > style
Definition: TealDocParser.cpp:105
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2ParserContext.cpp:204
FictionBook2DataContextBase(std::shared_ptr< FictionBook2ParserContext > parentContext)
Definition: FictionBook2ParserContext.cpp:60
void text(const char *value) override
Process textual content of an element.
Definition: FictionBook2ParserContext.cpp:56
Definition: FictionBook2Style.h:21
Base class for leaf data element contexts.
Definition: FictionBook2ParserContext.h:83
std::shared_ptr< FictionBook2XMLParserContext > leaveContext() const override
Destroy this context and return parent.
Definition: FictionBook2ParserContext.cpp:28
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2ParserContext.cpp:127
void endOfAttributes() override
Signalize the end of attributes.
Definition: FictionBook2ParserContext.cpp:52

Generated for libe-book by doxygen 1.8.10