Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef FB2BLOCKCONTEXT_H_INCLUDED
00011 #define FB2BLOCKCONTEXT_H_INCLUDED
00012
00013 #include <string>
00014
00015 #include <boost/optional.hpp>
00016
00017 #include "FB2ParserContext.h"
00018
00019 namespace libebook
00020 {
00021
00022 class FB2BodyContext : public FB2NodeContextBase
00023 {
00024 public:
00025 FB2BodyContext(FB2ParserContext *parentContext, FB2Collector *collector, bool collectHeadings);
00026
00027 private:
00028 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00029 virtual void startOfElement();
00030 virtual void endOfElement();
00031 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00032
00033 private:
00034 const bool m_collectHeadings;
00035 boost::optional<std::string> m_lang;
00036 };
00037
00038 class FB2CiteContext : public FB2BlockFormatContextBase
00039 {
00040 public:
00041 FB2CiteContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
00042
00043 private:
00044 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00045 virtual void endOfElement();
00046 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00047 };
00048
00049 class FB2EmptyLineContext : public FB2DataContextBase
00050 {
00051 public:
00052 explicit FB2EmptyLineContext(FB2ParserContext *parentContext);
00053
00054 private:
00055 virtual void endOfElement();
00056 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00057 };
00058
00059 class FB2EpigraphContext : public FB2BlockFormatContextBase
00060 {
00061 public:
00062 FB2EpigraphContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
00063
00064 private:
00065 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00066 virtual void endOfElement();
00067 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00068 };
00069
00070 class FB2ImageContext : public FB2NodeContextBase
00071 {
00072 public:
00073 FB2ImageContext(FB2ParserContext *parentContext);
00074
00075 private:
00076 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00077 virtual void endOfElement();
00078 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00079
00080 private:
00081 std::string m_href;
00082 std::string m_altText;
00083 bool m_valid;
00084 };
00085
00086 class FB2PoemContext : public FB2BlockFormatContextBase
00087 {
00088 public:
00089 FB2PoemContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
00090
00091 private:
00092 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00093 virtual void startOfElement();
00094 virtual void endOfElement();
00095 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00096 };
00097
00098 class FB2SectionContext : public FB2NodeContextBase
00099 {
00100 public:
00101 FB2SectionContext(FB2ParserContext *parentContext, const boost::optional<std::string> &lang);
00102 FB2SectionContext(FB2ParserContext *parentContext, uint8_t level, const boost::optional<std::string> &lang);
00103
00104 private:
00105 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00106 virtual void endOfElement();
00107 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00108
00109 FB2BlockFormat makeBlockFormat() const;
00110
00111 private:
00112
00113 boost::optional<uint8_t> m_level;
00114 boost::optional<std::string> m_lang;
00115 };
00116
00117 class FB2StanzaContext : public FB2BlockFormatContextBase
00118 {
00119 public:
00120 FB2StanzaContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
00121
00122 private:
00123 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00124 virtual void endOfElement();
00125 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00126 };
00127
00128 class FB2TitleContext : public FB2BlockFormatContextBase
00129 {
00130 public:
00131 FB2TitleContext(FB2ParserContext *const parentContext, const FB2BlockFormat &format);
00132
00133 private:
00134 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00135 virtual void endOfElement();
00136 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00137 };
00138
00139 }
00140
00141 #endif // FB2BLOCKCONTEXT_H_INCLUDED
00142
00143