FB2MetadataContext.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 FB2METADATACONTEXT_H_INCLUDED
00018 #define FB2METADATACONTEXT_H_INCLUDED
00019 
00020 #include "FB2ParserContext.h"
00021 
00022 namespace libebook
00023 {
00024 
00025 class FB2Authors;
00026 
00027 class FB2AnnotationContext : public FB2BlockFormatContextBase
00028 {
00029 public:
00030   FB2AnnotationContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
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   virtual void text(const char *value);
00038 };
00039 
00040 class FB2AuthorContext : public FB2ParserContext
00041 {
00042 public:
00043   FB2AuthorContext(FB2ParserContext *parentContext, FB2Authors &authors);
00044 
00045 private:
00046   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00047   virtual void startOfElement();
00048   virtual void endOfElement();
00049   virtual void endOfAttributes() {}
00050   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00051   virtual void text(const char *value);
00052 
00053 private:
00054   FB2Authors &m_authors;
00055 };
00056 
00057 class FB2BookNameContext : public FB2ParserContext
00058 {
00059 public:
00060   explicit FB2BookNameContext(FB2ParserContext *parentContext);
00061 
00062 private:
00063   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00064   virtual void startOfElement();
00065   virtual void endOfElement();
00066   virtual void endOfAttributes() {}
00067   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00068   virtual void text(const char *value);
00069 };
00070 
00071 class FB2BookTitleContext : public FB2ParserContext
00072 {
00073 public:
00074   explicit FB2BookTitleContext(FB2ParserContext *parentContext);
00075 
00076 private:
00077   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00078   virtual void startOfElement();
00079   virtual void endOfElement();
00080   virtual void endOfAttributes() {}
00081   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00082   virtual void text(const char *value);
00083 };
00084 
00085 class FB2CityContext : public FB2ParserContext
00086 {
00087 public:
00088   explicit FB2CityContext(FB2ParserContext *parentContext);
00089 
00090 private:
00091   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00092   virtual void startOfElement();
00093   virtual void endOfElement();
00094   virtual void endOfAttributes() {}
00095   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00096   virtual void text(const char *value);
00097 };
00098 
00099 class FB2CoverpageContext : public FB2ParserContext
00100 {
00101 public:
00102   explicit FB2CoverpageContext(FB2ParserContext *parentContext);
00103 
00104 private:
00105   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00106   virtual void startOfElement();
00107   virtual void endOfElement();
00108   virtual void endOfAttributes() {}
00109   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00110   virtual void text(const char *value);
00111 };
00112 
00113 class FB2CustomInfoContext : public FB2ParserContext
00114 {
00115 public:
00116   explicit FB2CustomInfoContext(FB2ParserContext *parentContext);
00117 
00118 private:
00119   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00120   virtual void startOfElement();
00121   virtual void endOfElement();
00122   virtual void endOfAttributes() {}
00123   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00124   virtual void text(const char *value);
00125 
00126 private:
00127   WPXString m_type;
00128   WPXString m_text;
00129 };
00130 
00131 class FB2DateContext : public FB2ParserContext
00132 {
00133   // no copying
00134   FB2DateContext(const FB2DateContext &);
00135   FB2DateContext &operator=(const FB2DateContext &);
00136 
00137 public:
00138   FB2DateContext(FB2ParserContext *parentContext, const char *name);
00139 
00140 private:
00141   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00142   virtual void startOfElement();
00143   virtual void endOfElement();
00144   virtual void endOfAttributes() {}
00145   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00146   virtual void text(const char *value);
00147 
00148 private:
00149   const char *const m_name;
00150 };
00151 
00152 class FB2DescriptionContext : public FB2ParserContext
00153 {
00154 public:
00155   FB2DescriptionContext(FB2ParserContext *parentContext, FB2Collector *collector);
00156 
00157 private:
00158   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00159   virtual void startOfElement();
00160   virtual void endOfElement();
00161   virtual void endOfAttributes() {}
00162   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00163   virtual void text(const char *value);
00164 };
00165 
00166 class DocumentInfoContext : public FB2ParserContext
00167 {
00168   // no copying
00169   DocumentInfoContext(const DocumentInfoContext &other);
00170   DocumentInfoContext &operator=(const DocumentInfoContext &other);
00171 
00172 public:
00173   DocumentInfoContext(FB2ParserContext *parentContext);
00174 
00175 private:
00176   virtual ~DocumentInfoContext();
00177 
00178   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00179   virtual void startOfElement();
00180   virtual void endOfElement();
00181   virtual void endOfAttributes() {}
00182   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00183   virtual void text(const char *value);
00184 
00185 private:
00186   FB2Authors *m_authors;
00187 };
00188 
00189 class FB2EmailContext : public FB2ParserContext
00190 {
00191 public:
00192   explicit FB2EmailContext(FB2ParserContext *parentContext);
00193 
00194 private:
00195   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00196   virtual void startOfElement();
00197   virtual void endOfElement();
00198   virtual void endOfAttributes() {}
00199   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00200   virtual void text(const char *value);
00201 };
00202 
00203 class FB2FirstNameContext : public FB2ParserContext
00204 {
00205 public:
00206   FB2FirstNameContext(FB2ParserContext *parentContext, FB2Authors &authors);
00207 
00208 private:
00209   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00210   virtual void startOfElement();
00211   virtual void endOfElement();
00212   virtual void endOfAttributes() {}
00213   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00214   virtual void text(const char *value);
00215 
00216 private:
00217   FB2Authors &m_authors;
00218 };
00219 
00220 class FB2GenreContext : public FB2ParserContext
00221 {
00222 public:
00223   explicit FB2GenreContext(FB2ParserContext *parentContext);
00224 
00225 private:
00226   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00227   virtual void startOfElement();
00228   virtual void endOfElement();
00229   virtual void endOfAttributes() {}
00230   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00231   virtual void text(const char *value);
00232 };
00233 
00234 class FB2HistoryContext : public FB2ParserContext
00235 {
00236 public:
00237   explicit FB2HistoryContext(FB2ParserContext *parentContext);
00238 
00239 private:
00240   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00241   virtual void startOfElement();
00242   virtual void endOfElement();
00243   virtual void endOfAttributes() {}
00244   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00245   virtual void text(const char *value);
00246 };
00247 
00248 class FB2HomePageContext : public FB2ParserContext
00249 {
00250 public:
00251   explicit FB2HomePageContext(FB2ParserContext *parentContext);
00252 
00253 private:
00254   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00255   virtual void startOfElement();
00256   virtual void endOfElement();
00257   virtual void endOfAttributes() {}
00258   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00259   virtual void text(const char *value);
00260 };
00261 
00262 class FB2IdContext : public FB2ParserContext
00263 {
00264 public:
00265   explicit FB2IdContext(FB2ParserContext *parentContext);
00266 
00267 private:
00268   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00269   virtual void startOfElement();
00270   virtual void endOfElement();
00271   virtual void endOfAttributes() {}
00272   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00273   virtual void text(const char *value);
00274 };
00275 
00276 class FB2IsbnContext : public FB2ParserContext
00277 {
00278 public:
00279   explicit FB2IsbnContext(FB2ParserContext *parentContext);
00280 
00281 private:
00282   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00283   virtual void startOfElement();
00284   virtual void endOfElement();
00285   virtual void endOfAttributes() {}
00286   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00287   virtual void text(const char *value);
00288 };
00289 
00290 class FB2KeywordsContext : public FB2ParserContext
00291 {
00292 public:
00293   explicit FB2KeywordsContext(FB2ParserContext *parentContext);
00294 
00295 private:
00296   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00297   virtual void startOfElement();
00298   virtual void endOfElement();
00299   virtual void endOfAttributes() {}
00300   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00301   virtual void text(const char *value);
00302 };
00303 
00304 class FB2LangContext : public FB2ParserContext
00305 {
00306 public:
00307   explicit FB2LangContext(FB2ParserContext *parentContext);
00308 
00309 private:
00310   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00311   virtual void startOfElement();
00312   virtual void endOfElement();
00313   virtual void endOfAttributes() {}
00314   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00315   virtual void text(const char *value);
00316 };
00317 
00318 class FB2LastNameContext : public FB2ParserContext
00319 {
00320 public:
00321   FB2LastNameContext(FB2ParserContext *parentContext, FB2Authors &authors);
00322 
00323 private:
00324   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00325   virtual void startOfElement();
00326   virtual void endOfElement();
00327   virtual void endOfAttributes() {}
00328   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00329   virtual void text(const char *value);
00330 
00331 private:
00332   FB2Authors &m_authors;
00333 };
00334 
00335 class FB2MiddleNameContext : public FB2ParserContext
00336 {
00337 public:
00338   FB2MiddleNameContext(FB2ParserContext *parentContext, FB2Authors &authors);
00339 
00340 private:
00341   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00342   virtual void startOfElement();
00343   virtual void endOfElement();
00344   virtual void endOfAttributes() {}
00345   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00346   virtual void text(const char *value);
00347 
00348 private:
00349   FB2Authors &m_authors;
00350 };
00351 
00352 class FB2NicknameContext : public FB2ParserContext
00353 {
00354 public:
00355   FB2NicknameContext(FB2ParserContext *parentContext, FB2Authors &authors);
00356 
00357 private:
00358   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00359   virtual void startOfElement();
00360   virtual void endOfElement();
00361   virtual void endOfAttributes() {}
00362   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00363   virtual void text(const char *value);
00364 
00365 private:
00366   FB2Authors &m_authors;
00367 };
00368 
00369 class FB2OutputContext : public FB2ParserContext
00370 {
00371 public:
00372   explicit FB2OutputContext(FB2ParserContext *parentContext);
00373 
00374 private:
00375   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00376   virtual void startOfElement();
00377   virtual void endOfElement();
00378   virtual void endOfAttributes() {}
00379   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00380   virtual void text(const char *value);
00381 };
00382 
00383 class FB2OutputDocumentClassContext : public FB2ParserContext
00384 {
00385 public:
00386   explicit FB2OutputDocumentClassContext(FB2ParserContext *parentContext);
00387 
00388 private:
00389   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00390   virtual void startOfElement();
00391   virtual void endOfElement();
00392   virtual void endOfAttributes() {}
00393   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00394   virtual void text(const char *value);
00395 };
00396 
00397 class FB2PartContext : public FB2ParserContext
00398 {
00399 public:
00400   explicit FB2PartContext(FB2ParserContext *parentContext);
00401 
00402 private:
00403   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00404   virtual void startOfElement();
00405   virtual void endOfElement();
00406   virtual void endOfAttributes() {}
00407   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00408   virtual void text(const char *value);
00409 };
00410 
00411 class FB2ProgramUsedContext : public FB2ParserContext
00412 {
00413 public:
00414   explicit FB2ProgramUsedContext(FB2ParserContext *parentContext);
00415 
00416 private:
00417   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00418   virtual void startOfElement();
00419   virtual void endOfElement();
00420   virtual void endOfAttributes() {}
00421   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00422   virtual void text(const char *value);
00423 };
00424 
00425 class FB2PublisherContext : public FB2ParserContext
00426 {
00427 public:
00428   explicit FB2PublisherContext(FB2ParserContext *parentContext);
00429 
00430 private:
00431   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00432   virtual void startOfElement();
00433   virtual void endOfElement();
00434   virtual void endOfAttributes() {}
00435   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00436   virtual void text(const char *value);
00437 };
00438 
00439 class FB2PublishInfoContext : public FB2ParserContext
00440 {
00441 public:
00442   explicit FB2PublishInfoContext(FB2ParserContext *parentContext);
00443 
00444 private:
00445   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00446   virtual void startOfElement();
00447   virtual void endOfElement();
00448   virtual void endOfAttributes() {}
00449   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00450   virtual void text(const char *value);
00451 };
00452 
00453 class FB2SequenceContext : public FB2ParserContext
00454 {
00455 public:
00456   explicit FB2SequenceContext(FB2ParserContext *parentContext);
00457 
00458 private:
00459   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00460   virtual void startOfElement();
00461   virtual void endOfElement();
00462   virtual void endOfAttributes() {}
00463   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00464   virtual void text(const char *value);
00465 };
00466 
00467 class FB2SrcLangContext : public FB2ParserContext
00468 {
00469 public:
00470   explicit FB2SrcLangContext(FB2ParserContext *parentContext);
00471 
00472 private:
00473   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00474   virtual void startOfElement();
00475   virtual void endOfElement();
00476   virtual void endOfAttributes() {}
00477   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00478   virtual void text(const char *value);
00479 };
00480 
00481 class FB2SrcOcrContext : public FB2ParserContext
00482 {
00483 public:
00484   explicit FB2SrcOcrContext(FB2ParserContext *parentContext);
00485 
00486 private:
00487   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00488   virtual void startOfElement();
00489   virtual void endOfElement();
00490   virtual void endOfAttributes() {}
00491   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00492   virtual void text(const char *value);
00493 };
00494 
00495 class FB2SrcTitleInfoContext : public FB2ParserContext
00496 {
00497 public:
00498   explicit FB2SrcTitleInfoContext(FB2ParserContext *parentContext);
00499 
00500 private:
00501   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00502   virtual void startOfElement();
00503   virtual void endOfElement();
00504   virtual void endOfAttributes() {}
00505   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00506   virtual void text(const char *value);
00507 };
00508 
00509 class FB2SrcUrlContext : public FB2ParserContext
00510 {
00511 public:
00512   explicit FB2SrcUrlContext(FB2ParserContext *parentContext);
00513 
00514 private:
00515   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00516   virtual void startOfElement();
00517   virtual void endOfElement();
00518   virtual void endOfAttributes() {}
00519   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00520   virtual void text(const char *value);
00521 };
00522 
00523 class FB2TitleInfoContext : public FB2ParserContext
00524 {
00525   // no copying
00526   FB2TitleInfoContext(const FB2TitleInfoContext &other);
00527   FB2TitleInfoContext &operator=(const FB2TitleInfoContext &other);
00528 
00529 public:
00530   explicit FB2TitleInfoContext(FB2ParserContext *parentContext);
00531 
00532 private:
00533   virtual ~FB2TitleInfoContext();
00534 
00535   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00536   virtual void startOfElement();
00537   virtual void endOfElement();
00538   virtual void endOfAttributes() {}
00539   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00540   virtual void text(const char *value);
00541 
00542 private:
00543   FB2Authors *m_authors;
00544 };
00545 
00546 class FB2TranslatorContext : public FB2ParserContext
00547 {
00548 public:
00549   explicit FB2TranslatorContext(FB2ParserContext *parentContext);
00550 
00551 private:
00552   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00553   virtual void startOfElement();
00554   virtual void endOfElement();
00555   virtual void endOfAttributes() {}
00556   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00557   virtual void text(const char *value);
00558 };
00559 
00560 class FB2VersionContext : public FB2ParserContext
00561 {
00562 public:
00563   explicit FB2VersionContext(FB2ParserContext *parentContext);
00564 
00565 private:
00566   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00567   virtual void startOfElement();
00568   virtual void endOfElement();
00569   virtual void endOfAttributes() {}
00570   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00571   virtual void text(const char *value);
00572 };
00573 
00574 class FB2YearContext : public FB2ParserContext
00575 {
00576 public:
00577   explicit FB2YearContext(FB2ParserContext *parentContext);
00578 
00579 private:
00580   virtual FB2XMLParserContext *element(const EBOOKToken &name, const EBOOKToken &ns);
00581   virtual void startOfElement();
00582   virtual void endOfElement();
00583   virtual void endOfAttributes() {}
00584   virtual void attribute(const EBOOKToken &name, const EBOOKToken *ns, const char *value);
00585   virtual void text(const char *value);
00586 };
00587 
00588 }
00589 
00590 #endif // FB2METADATACONTEXT_H_INCLUDED
00591 
00592 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */