File indexing completed on 2024-12-01 03:45:43
0001 /* 0002 This file is part of the syndication library 0003 SPDX-FileCopyrightText: 2006 Frank Osterfeld <osterfeld@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef SYNDICATION_RDF_RESOURCEWRAPPER_H 0009 #define SYNDICATION_RDF_RESOURCEWRAPPER_H 0010 0011 #include <QSharedPointer> 0012 0013 #include "../syndication_export.h" 0014 0015 namespace Syndication 0016 { 0017 namespace RDF 0018 { 0019 class Resource; 0020 typedef QSharedPointer<Resource> ResourcePtr; 0021 0022 /** 0023 * A wrapper for RDF resources. Base class for convenience wrappers 0024 * such as Document, Item etc. 0025 * 0026 * @author Frank Osterfeld 0027 */ 0028 class ResourceWrapper 0029 { 0030 public: 0031 /** 0032 * creates a wrapper wrapping a null resource, isNull() will be 0033 * @p true. 0034 */ 0035 ResourceWrapper(); 0036 0037 /** 0038 * Copy constructor. 0039 * Due to the shared d pointer, this is a cheap operation. 0040 * 0041 * @param other resource wrapper to copy 0042 */ 0043 ResourceWrapper(const ResourceWrapper &other); 0044 0045 /** 0046 * creates a resource wrapper for a given resource. 0047 * If a null pointer is passed, a null resource is 0048 * created internally (resource() will _not_ return a null 0049 * pointer!) 0050 * @param resource a resource wrapper instance 0051 */ 0052 explicit ResourceWrapper(ResourcePtr resource); 0053 0054 /** 0055 * destructor 0056 */ 0057 virtual ~ResourceWrapper(); 0058 0059 /** 0060 * Assignment oeprator 0061 * Due to the shared d pointer, this is a cheap operation. 0062 * 0063 * @param other resource wrapper to assign. 0064 */ 0065 ResourceWrapper &operator=(const ResourceWrapper &other); 0066 0067 /** 0068 * compares two resource wrapper instances. 0069 * Two resource wrappers are equal when the wrapped resources 0070 * are equal, i.e. they have the same URI. 0071 * @see Resource::uri() 0072 * @param other resource wrapper instance to compare to 0073 */ 0074 bool operator==(const ResourceWrapper &other) const; 0075 0076 /** 0077 * returns the wrapped resource. Whether a null resource or 0078 * not, the returned pointer itself is never a null 0079 * _pointer_! 0080 */ 0081 ResourcePtr resource() const; 0082 0083 /** 0084 * returns whether the wrapped resource is a null resource 0085 * @return @c true if isNull() is true for the wrapped resource, 0086 * @c false otherwise 0087 */ 0088 bool isNull() const; 0089 0090 private: 0091 class ResourceWrapperPrivate; 0092 QSharedPointer<ResourceWrapperPrivate> d; 0093 }; 0094 0095 } // namespace RDF 0096 } // namespace Syndication 0097 0098 #endif // SYNDICATION_RDF_RESOURCEWRAPPER_H