Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef FB2PARSERCONTEXT_H_INCLUDED
00018 #define FB2PARSERCONTEXT_H_INCLUDED
00019
00020 #include "FB2XMLParserContext.h"
00021 #include "FB2Style.h"
00022
00023 namespace libebook
00024 {
00025
00026 class FB2Collector;
00027
00030 class FB2ParserContext : public FB2XMLParserContext
00031 {
00032
00033 FB2ParserContext(const FB2ParserContext &other);
00034 FB2ParserContext &operator=(const FB2ParserContext &other);
00035
00036 public:
00042 explicit FB2ParserContext(FB2ParserContext *parentContext, FB2Collector *collector = 0);
00043
00044 virtual FB2XMLParserContext *leaveContext() const;
00045
00050 FB2Collector *getCollector() const;
00051
00056 FB2ParserContext *getParentContext() const;
00057
00058 private:
00059 FB2Collector *const m_collector;
00060 FB2ParserContext *const m_parentContext;
00061 };
00062
00068 class FB2NodeContextBase : public FB2ParserContext
00069 {
00070 public:
00071 explicit FB2NodeContextBase(FB2ParserContext *parentContext, FB2Collector *collector = 0);
00072
00073 private:
00074 virtual void startOfElement();
00075 virtual void endOfAttributes();
00076 virtual void text(const char *value);
00077 };
00078
00088 class FB2DataContextBase : public FB2ParserContext
00089 {
00090 public:
00091 explicit FB2DataContextBase(FB2ParserContext *parentContext);
00092
00093 private:
00094 virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00095 virtual void startOfElement();
00096 virtual void endOfAttributes();
00097 virtual void text(const char *value);
00098 };
00099
00105 class FB2TextContextBase : public FB2ParserContext
00106 {
00107 public:
00108 explicit FB2TextContextBase(FB2ParserContext *parentContext);
00109
00110 private:
00111 virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00112 virtual void startOfElement();
00113 virtual void endOfElement();
00114 virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00115 virtual void endOfAttributes();
00116 };
00117
00120 class FB2SkipElementContext : public FB2ParserContext
00121 {
00122 public:
00123 explicit FB2SkipElementContext(FB2ParserContext *parentContext);
00124
00125 private:
00126 virtual FB2XMLParserContext *leaveContext() const;
00127
00128 virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00129 virtual void startOfElement();
00130 virtual void endOfElement();
00131 virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00132 virtual void endOfAttributes();
00133 virtual void text(const char *value);
00134
00135 private:
00136 unsigned m_level;
00137 };
00138
00139 class FB2StyleContextBase : public FB2ParserContext
00140 {
00141 public:
00142 FB2StyleContextBase(FB2ParserContext *parentContext, const FB2Style &style);
00143
00144 protected:
00145 FB2Style &getStyle();
00146 FB2TextFormat &getTextFormat();
00147
00148 private:
00149 virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00150 virtual void endOfElement();
00151 virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00152 virtual void endOfAttributes();
00153 virtual void text(const char *value);
00154
00155 private:
00156 FB2Style m_style;
00157 };
00158
00159 class FB2BlockFormatContextBase : public FB2NodeContextBase
00160 {
00161 public:
00162 FB2BlockFormatContextBase(FB2ParserContext *parentContext, const FB2BlockFormat &format);
00163
00164 FB2BlockFormat &getBlockFormat();
00165 const FB2BlockFormat &getBlockFormat() const;
00166
00167 private:
00168 FB2BlockFormat m_format;
00169 };
00170
00171 }
00172
00173 #endif // FB2PARSERCONTEXT_H_INCLUDED
00174
00175