Syndication

node.h
1 /*
2  This file is part of the syndication library
3  SPDX-FileCopyrightText: 2006 Frank Osterfeld <[email protected]>
4 
5  SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7 
8 #ifndef SYNDICATION_RDF_NODE_H
9 #define SYNDICATION_RDF_NODE_H
10 
11 #include <QSharedPointer>
12 #include <QString>
13 #include <syndication_export.h>
14 
15 namespace Syndication
16 {
17 namespace RDF
18 {
19 class Model;
20 class Node;
21 class NodeVisitor;
22 //@cond PRIVATE
23 typedef QSharedPointer<Node> NodePtr;
24 //@endcond
25 
26 /**
27  * an RDF node, abstract baseclass for all RDF node types, like resources and
28  * literals
29  */
30 class SYNDICATION_EXPORT Node
31 {
32 public:
33  /**
34  * destructor
35  */
36  virtual ~Node();
37 
38  /**
39  * Used by visitors for double dispatch. See NodeVisitor
40  * for more information.
41  * @param visitor the visitor calling the method
42  * @param ptr a shared pointer object for this node
43  */
44  virtual void accept(NodeVisitor *visitor, NodePtr ptr);
45 
46  /**
47  * checks whether two nodes are equal. The meaning of equality
48  * is defined per subclass (e.g. equality of URIs, IDs etc.)
49  *
50  * @param other the node to compare to
51  */
52  virtual bool operator==(const Node &other) const = 0;
53 
54  /**
55  * returns a copy of the object. Must be implemented
56  * by subclasses to return a copy using the concrete
57  * type
58  */
59  virtual Node *clone() const = 0;
60 
61  /**
62  * returns whether this node is a null node
63  */
64  virtual bool isNull() const = 0;
65 
66  /**
67  * returns whether this node is a resource
68  */
69  virtual bool isResource() const = 0;
70 
71  /**
72  * returns whether this node is a property
73  */
74  virtual bool isProperty() const = 0;
75 
76  /**
77  * returns whether this node is a literal
78  */
79  virtual bool isLiteral() const = 0;
80 
81  /**
82  * returns whether this node is an RDF sequence
83  */
84  virtual bool isSequence() const = 0;
85 
86  /**
87  * returns whether this node is an anonymous resource
88  */
89  virtual bool isAnon() const = 0;
90 
91  /**
92  * the identifier of this node. the ID is unique per model
93  * and set by the associated model at creation time.
94  */
95  virtual unsigned int id() const = 0;
96 
97  /**
98  * returns a textual representation of the node.
99  * This is the literal string for literals, and a null string for other
100  * node types.
101  */
102  virtual QString text() const = 0;
103 
104  /**
105  * used in Model
106  * @internal
107  */
108  virtual void setModel(const Model &model) = 0;
109 
110  /**
111  * used in Model
112  * @internal
113  */
114  virtual void setId(unsigned int id) = 0;
115 
116 protected:
117  /**
118  * used to generate unique IDs for node objects
119  */
120  static unsigned int idCounter;
121 };
122 
123 } // namespace RDF
124 } // namespace Syndication
125 
126 #endif // SYNDICATION_RDF_NODE_H
An RDF model, a set of RDF statements.
Definition: model.h:36
an RDF node, abstract baseclass for all RDF node types, like resources and literals
Definition: node.h:30
Model
Definition: resource.h:38
Visitor interface, following the Visitor design pattern.
Definition: nodevisitor.h:41
static unsigned int idCounter
used to generate unique IDs for node objects
Definition: node.h:120
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Wed Dec 6 2023 03:51:45 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.