Syndication

documentvisitor.h
1 /*
2  This file is part of the syndication library
3  SPDX-FileCopyrightText: 2005 Frank Osterfeld <[email protected]>
4 
5  SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7 
8 #ifndef SYNDICATION_DOCUMENTVISITOR_H
9 #define SYNDICATION_DOCUMENTVISITOR_H
10 
11 #include "syndication_export.h"
12 
13 namespace Syndication
14 {
15 class SpecificDocument;
16 
17 namespace Atom
18 {
19 class EntryDocument;
20 class FeedDocument;
21 }
22 
23 namespace RDF
24 {
25 class Document;
26 }
27 
28 namespace RSS2
29 {
30 class Document;
31 }
32 
33 /**
34  * Visitor interface, following the Visitor design pattern. Use this if you
35  * want to process documents and the way how to handle the document depends
36  * on it's concrete type (e.g. RSS2::Document, RDF::Document...).
37  *
38  * TODO: insert code example
39  *
40  * @author Frank Osterfeld
41  */
42 class SYNDICATION_EXPORT DocumentVisitor // krazy:exclude=dpointer
43 {
44 public:
45  /**
46  * destructor
47  */
48  virtual ~DocumentVisitor();
49 
50  /**
51  * call this method to handle a document. Depending on the concrete type
52  * of the document, a specialized visit method is called.
53  *
54  * @param document the document to process
55  * @return whether this visitor handles the type of the document.
56  */
57  virtual bool visit(SpecificDocument *document);
58 
59  /**
60  * reimplement this method to handle RSS2-like (RSS 0.9x, 2.0) documents.
61  *
62  * @param document the RSS2 document to visit
63  * @return whether the visitor handled the document.
64  * Reimplementations of this method must return @c true.
65  */
66  virtual bool visitRSS2Document(Syndication::RSS2::Document *document);
67 
68  /**
69  * reimplement this method to handle RDF (i.e. RSS 1.0) documents.
70  *
71  * @param document the RDF document to visit
72  * @return whether the visitor handled the document.
73  * Reimplementations of this method must return @c true.
74  */
75  virtual bool visitRDFDocument(Syndication::RDF::Document *document);
76 
77  /**
78  * reimplement this method to handle Atom feed documents (most Atom
79  * feeds are of this type).
80  *
81  * @param document the atom feed document to visit
82  * @return whether the visitor handled the document.
83  * Reimplementations of this method must return @c true.
84  */
85  virtual bool visitAtomFeedDocument(Syndication::Atom::FeedDocument *document);
86 
87  /**
88  * reimplement this method to handle Atom entry documents.
89  *
90  * @param document the atom entry document to visit
91  * @return whether the visitor handled the document.
92  * Reimplementations of this method must return @c true.
93  */
94  virtual bool visitAtomEntryDocument(Syndication::Atom::EntryDocument *document);
95 };
96 
97 } // namespace Syndication
98 
99 #endif // SYNDICATION_DOCUMENTVISITOR_H
An Atom 1.0 Feed Document, containing metadata describing the feed and a number of entries.
Definition: atom/document.h:43
An Atom 1.0 Entry Document, containing a single Atom entry outside of the context of a feed.
Visitor interface, following the Visitor design pattern.
Document interface for format-specific feed documents as parsed from a document source (see DocumentS...
document implementation, representing an RSS feed from the 0.91-0.94/2.0 family.
Definition: rss2/document.h:43
Document implementation for RDF, representing an RSS 1.0 feed.
Definition: rdf/document.h:38
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Sun Aug 14 2022 04:09:27 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.