1 | /* |
2 | This file is part of the syndication library |
3 | SPDX-FileCopyrightText: 2005 Frank Osterfeld <osterfeld@kde.org> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-or-later |
6 | */ |
7 | |
8 | #ifndef SYNDICATION_SPECIFICDOCUMENT_H |
9 | #define SYNDICATION_SPECIFICDOCUMENT_H |
10 | |
11 | #include "syndication_export.h" |
12 | |
13 | #include <QSharedPointer> |
14 | |
15 | class QString; |
16 | |
17 | namespace Syndication |
18 | { |
19 | class DocumentVisitor; |
20 | class SpecificDocument; |
21 | |
22 | //@cond PRIVATE |
23 | typedef QSharedPointer<SpecificDocument> SpecificDocumentPtr; |
24 | //@endcond |
25 | |
26 | /** |
27 | * Document interface for format-specific feed documents as parsed from a |
28 | * document source (see DocumentSource). |
29 | * The Document classes from the several syndication formats must implement |
30 | * this interface. It's main purpose is to provide access for document visitors |
31 | * (see DocumentVisitor). |
32 | * Usually it is not necessary to access the format-specific document at all, |
33 | * use Feed for a format-agnostic interface to all feed documents supported by |
34 | * the library. |
35 | * |
36 | * @author Frank Osterfeld |
37 | */ |
38 | class SYNDICATION_EXPORT SpecificDocument |
39 | { |
40 | public: |
41 | /** |
42 | * virtual dtor |
43 | */ |
44 | virtual ~SpecificDocument(); |
45 | |
46 | /** |
47 | * This must be implemented for the double dispatch |
48 | * technique (Visitor pattern). |
49 | * |
50 | * The usual implementation is |
51 | * @code |
52 | * return visitor->visit(this); |
53 | * @endcode |
54 | * |
55 | * See also DocumentVisitor. |
56 | * |
57 | * @param visitor the visitor "visiting" this object |
58 | */ |
59 | virtual bool accept(DocumentVisitor *visitor) = 0; |
60 | |
61 | /** |
62 | * Returns whether this document is valid or not. |
63 | * Invalid documents do not contain any useful |
64 | * information. |
65 | */ |
66 | virtual bool isValid() const = 0; |
67 | |
68 | /** |
69 | * Returns a description of the document for debugging purposes. |
70 | * |
71 | * @return debug string |
72 | */ |
73 | virtual QString debugInfo() const = 0; |
74 | }; |
75 | |
76 | } // namespace Syndication |
77 | |
78 | #endif // SYNDICATION_SPECIFICDOCUMENT_H |
79 | |