Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef FB2PARSERCONTEXT_H_INCLUDED
00011 #define FB2PARSERCONTEXT_H_INCLUDED
00012
00013 #include "FB2XMLParserContext.h"
00014 #include "FB2Style.h"
00015
00016 namespace libebook
00017 {
00018
00019 class FB2Collector;
00020
00023 class FB2ParserContext : public FB2XMLParserContext
00024 {
00025
00026 FB2ParserContext(const FB2ParserContext &other);
00027 FB2ParserContext &operator=(const FB2ParserContext &other);
00028
00029 public:
00035 explicit FB2ParserContext(FB2ParserContext *parentContext, FB2Collector *collector = 0);
00036
00037 virtual FB2XMLParserContext *leaveContext() const;
00038
00043 FB2Collector *getCollector() const;
00044
00049 FB2ParserContext *getParentContext() const;
00050
00051 private:
00052 FB2Collector *const m_collector;
00053 FB2ParserContext *const m_parentContext;
00054 };
00055
00061 class FB2NodeContextBase : public FB2ParserContext
00062 {
00063 public:
00064 explicit FB2NodeContextBase(FB2ParserContext *parentContext, FB2Collector *collector = 0);
00065
00066 private:
00067 virtual void startOfElement();
00068 virtual void endOfAttributes();
00069 virtual void text(const char *value);
00070 };
00071
00081 class FB2DataContextBase : public FB2ParserContext
00082 {
00083 public:
00084 explicit FB2DataContextBase(FB2ParserContext *parentContext);
00085
00086 private:
00087 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00088 virtual void startOfElement();
00089 virtual void endOfAttributes();
00090 virtual void text(const char *value);
00091 };
00092
00098 class FB2TextContextBase : public FB2ParserContext
00099 {
00100 public:
00101 explicit FB2TextContextBase(FB2ParserContext *parentContext);
00102
00103 private:
00104 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00105 virtual void startOfElement();
00106 virtual void endOfElement();
00107 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00108 virtual void endOfAttributes();
00109 };
00110
00113 class FB2SkipElementContext : public FB2ParserContext
00114 {
00115 public:
00116 explicit FB2SkipElementContext(FB2ParserContext *parentContext);
00117
00118 private:
00119 virtual FB2XMLParserContext *leaveContext() const;
00120
00121 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00122 virtual void startOfElement();
00123 virtual void endOfElement();
00124 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00125 virtual void endOfAttributes();
00126 virtual void text(const char *value);
00127
00128 private:
00129 unsigned m_level;
00130 };
00131
00132 class FB2StyleContextBase : public FB2ParserContext
00133 {
00134 public:
00135 FB2StyleContextBase(FB2ParserContext *parentContext, const FB2Style &style);
00136
00137 protected:
00138 FB2Style &getStyle();
00139 FB2TextFormat &getTextFormat();
00140
00141 virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
00142 virtual void endOfElement();
00143 virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
00144 virtual void endOfAttributes();
00145 virtual void text(const char *value);
00146
00147 private:
00148 FB2Style m_style;
00149 };
00150
00151 class FB2BlockFormatContextBase : public FB2NodeContextBase
00152 {
00153 public:
00154 FB2BlockFormatContextBase(FB2ParserContext *parentContext, const FB2BlockFormat &format);
00155
00156 FB2BlockFormat &getBlockFormat();
00157 const FB2BlockFormat &getBlockFormat() const;
00158
00159 void setLang(const char *lang);
00160
00161 private:
00162 FB2BlockFormat m_format;
00163 };
00164
00165 }
00166
00167 #endif // FB2PARSERCONTEXT_H_INCLUDED
00168
00169