FB2BlockContext.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* libe-book
00003  * Version: MPL 2.0 / LGPLv2.1+
00004  *
00005  * This Source Code Form is subject to the terms of the Mozilla Public
00006  * License, v. 2.0. If a copy of the MPL was not distributed with this
00007  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
00008  *
00009  * Alternatively, the contents of this file may be used under the terms
00010  * of the GNU Lesser General Public License Version 2.1 or later
00011  * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
00012  * applicable instead of those above.
00013  *
00014  * For further information visit http://libebook.sourceforge.net
00015  */
00016 
00017 #ifndef FB2BLOCKCONTEXT_H_INCLUDED
00018 #define FB2BLOCKCONTEXT_H_INCLUDED
00019 
00020 #include <string>
00021 
00022 #include "FB2ParserContext.h"
00023 
00024 namespace libebook
00025 {
00026 
00027 class FB2BodyContext : public FB2NodeContextBase
00028 {
00029 public:
00030   FB2BodyContext(FB2ParserContext *parentContext, FB2Collector *collector);
00031 
00032 private:
00033   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00034   virtual void startOfElement();
00035   virtual void endOfElement();
00036   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00037 };
00038 
00039 class FB2CiteContext : public FB2BlockFormatContextBase
00040 {
00041 public:
00042   FB2CiteContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
00043 
00044 private:
00045   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00046   virtual void endOfElement();
00047   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00048 };
00049 
00050 class FB2EmptyLineContext : public FB2DataContextBase
00051 {
00052 public:
00053   explicit FB2EmptyLineContext(FB2ParserContext *parentContext);
00054 
00055 private:
00056   virtual void endOfElement();
00057   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00058 };
00059 
00060 class FB2EpigraphContext : public FB2BlockFormatContextBase
00061 {
00062 public:
00063   FB2EpigraphContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
00064 
00065 private:
00066   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00067   virtual void endOfElement();
00068   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00069 };
00070 
00071 class FB2ImageContext : public FB2NodeContextBase
00072 {
00073 public:
00074   FB2ImageContext(FB2ParserContext *parentContext);
00075 
00076 private:
00077   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00078   virtual void endOfElement();
00079   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00080 
00081 private:
00082   std::string m_href;
00083   std::string m_altText;
00084   bool m_valid;
00085 };
00086 
00087 class FB2PoemContext : public FB2BlockFormatContextBase
00088 {
00089 public:
00090   FB2PoemContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
00091 
00092 private:
00093   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00094   virtual void startOfElement();
00095   virtual void endOfElement();
00096   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00097 };
00098 
00099 class FB2SectionContext : public FB2NodeContextBase
00100 {
00101 public:
00102   FB2SectionContext(FB2ParserContext *parentContext);
00103 
00104 private:
00105   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00106   virtual void endOfElement();
00107   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00108 };
00109 
00110 class FB2StanzaContext : public FB2BlockFormatContextBase
00111 {
00112 public:
00113   FB2StanzaContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
00114 
00115 private:
00116   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00117   virtual void endOfElement();
00118   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00119 };
00120 
00121 class FB2TitleContext : public FB2BlockFormatContextBase
00122 {
00123 public:
00124   FB2TitleContext(FB2ParserContext *const parentContext, const FB2BlockFormat &format);
00125 
00126 private:
00127   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00128   virtual void endOfElement();
00129   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00130 };
00131 
00132 }
00133 
00134 #endif // FB2BLOCKCONTEXT_H_INCLUDED
00135 
00136 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */