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
16namespace libebook
17{
18
19class FictionBook2Collector;
20
23class FictionBook2ParserContext : public FictionBook2XMLParserContext, public std::enable_shared_from_this<FictionBook2ParserContext>
24{
25 // no copying
28
29public:
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
53private:
55 std::shared_ptr<FictionBook2ParserContext> const m_parentContext;
56};
57
64{
65public:
66 explicit FictionBook2NodeContextBase(std::shared_ptr<FictionBook2ParserContext> parentContext, FictionBook2Collector *collector = nullptr);
67
68private:
69 void startOfElement() override;
70 void endOfAttributes() override;
71 void text(const char *value) override;
72};
73
84{
85public:
86 explicit FictionBook2DataContextBase(std::shared_ptr<FictionBook2ParserContext> parentContext);
87
88private:
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{
102public:
103 explicit FictionBook2TextContextBase(std::shared_ptr<FictionBook2ParserContext> parentContext);
104
105private:
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{
117public:
118 explicit FictionBook2SkipElementContext(std::shared_ptr<FictionBook2ParserContext> parentContext);
119
120private:
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
130private:
131 unsigned m_level;
132};
133
135{
136public:
137 FictionBook2StyleContextBase(std::shared_ptr<FictionBook2ParserContext> parentContext, const FictionBook2Style &style);
138
139protected:
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
149private:
151};
152
154{
155public:
156 FictionBook2BlockFormatContextBase(std::shared_ptr<FictionBook2ParserContext> parentContext, const FictionBook2BlockFormat &format);
157
160
161 void setLang(const char *lang);
162
163private:
165};
166
167}
168
169#endif // FICTIONBOOK2PARSERCONTEXT_H_INCLUDED
170
171/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
string name
Definition: HTMLHelpStream.cpp:80
optional< Style > style
Definition: TealDocParser.cpp:105
qi::rule< Iterator, AttrValue_t, qi::space_type > value
Definition: TealDocParser.cpp:231
qi::rule< Iterator, AttrValue_t, qi::space_type > text
Definition: TealDocParser.cpp:232
Definition: FictionBook2ParserContext.h:154
FictionBook2BlockFormat m_format
Definition: FictionBook2ParserContext.h:164
FictionBook2BlockFormat & getBlockFormat()
Definition: FictionBook2ParserContext.cpp:223
void setLang(const char *lang)
Definition: FictionBook2ParserContext.cpp:233
Definition: FictionBook2Collector.h:23
Base class for leaf data element contexts.
Definition: FictionBook2ParserContext.h:84
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:74
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2ParserContext.cpp:70
Base class for non-leaf element contexts.
Definition: FictionBook2ParserContext.h:64
void endOfAttributes() override
Signalize the end of attributes.
Definition: FictionBook2ParserContext.cpp:52
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2ParserContext.cpp:48
Base class for all contexts.
Definition: FictionBook2ParserContext.h:24
virtual ~FictionBook2ParserContext()
Definition: FictionBook2ParserContext.cpp:24
FictionBook2Collector * getCollector() const
Get the collector.
Definition: FictionBook2ParserContext.cpp:33
std::shared_ptr< FictionBook2ParserContext > const m_parentContext
Definition: FictionBook2ParserContext.h:55
FictionBook2ParserContext(const FictionBook2ParserContext &other)
FictionBook2Collector *const m_collector
Definition: FictionBook2ParserContext.h:54
FictionBook2ParserContext & operator=(const FictionBook2ParserContext &other)
std::shared_ptr< FictionBook2ParserContext > getParentContext() const
Get the parent context.
Definition: FictionBook2ParserContext.cpp:38
std::shared_ptr< FictionBook2XMLParserContext > leaveContext() const override
Destroy this context and return parent.
Definition: FictionBook2ParserContext.cpp:28
Context for skipping element hierarchies.
Definition: FictionBook2ParserContext.h:116
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2ParserContext.cpp:136
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2ParserContext.cpp:131
void endOfAttributes() override
Signalize the end of attributes.
Definition: FictionBook2ParserContext.cpp:140
std::shared_ptr< FictionBook2XMLParserContext > leaveContext() const override
Destroy this context and return parent.
Definition: FictionBook2ParserContext.cpp:114
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2ParserContext.cpp:127
unsigned m_level
Definition: FictionBook2ParserContext.h:131
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2ParserContext.cpp:121
Definition: FictionBook2ParserContext.h:135
FictionBook2Style & getStyle()
Definition: FictionBook2ParserContext.cpp:154
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2ParserContext.cpp:196
FictionBook2Style m_style
Definition: FictionBook2ParserContext.h:150
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2ParserContext.cpp:164
FictionBook2TextFormat & getTextFormat()
Definition: FictionBook2ParserContext.cpp:159
void endOfAttributes() override
Signalize the end of attributes.
Definition: FictionBook2ParserContext.cpp:200
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2ParserContext.cpp:204
Definition: FictionBook2Style.h:56
Base class for leaf textual element contexts.
Definition: FictionBook2ParserContext.h:101
void endOfAttributes() override
Signalize the end of attributes.
Definition: FictionBook2ParserContext.cpp:104
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2ParserContext.cpp:92
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2ParserContext.cpp:87
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2ParserContext.cpp:96
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2ParserContext.cpp:100
Definition: FictionBook2XMLParserContext.h:21
Definition: BBeBCollector.cpp:20
Definition: FictionBook2Style.h:36
Definition: FictionBook2Style.h:22
Definition: FictionBook2Token.h:134

Generated for libe-book by doxygen 1.9.6