File indexing completed on 2024-04-14 03:58:30

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_PERSON_H
0009 #define SYNDICATION_PERSON_H
0010 
0011 #include <QSharedPointer>
0012 #include <QString>
0013 
0014 #include "syndication_export.h"
0015 
0016 namespace Syndication
0017 {
0018 class Person;
0019 
0020 //@cond PRIVATE
0021 typedef QSharedPointer<Person> PersonPtr;
0022 //@endcond
0023 
0024 /**
0025  * Person objects hold information about a person, such as the author of
0026  * the content syndicated in the feed. Depending on the feed format, different
0027  * information is available.
0028  * While according to the RSS2 spec, RSS2 author elements must contain only an
0029  * e-mail address, Atom requires the person's name and the e-mail address is
0030  * optional. Also, in reality, feeds often contain other information than what
0031  * is specified in the specs. Syndication tries to find out what author
0032  * information is contained and maps it to this representation.
0033  *
0034  * @author Frank Osterfeld
0035  */
0036 class SYNDICATION_EXPORT Person
0037 {
0038 public:
0039     /**
0040      * destructor
0041      */
0042     virtual ~Person();
0043 
0044     /**
0045      * returns whether this object is a null person
0046      */
0047     virtual bool isNull() const = 0;
0048 
0049     /**
0050      * the name of the person (optional)
0051      *
0052      * @return the name of the person as plain text,
0053      * or a null string if not specified
0054      */
0055     virtual QString name() const = 0;
0056 
0057     /**
0058      * a URI associated with the person. (optional)
0059      * This is usually the URL of the
0060      * person's homepage.
0061      *
0062      * @return URI of the person, or a null string if not specified
0063      */
0064     virtual QString uri() const = 0;
0065 
0066     /**
0067      * e-mail address of the person (optional)
0068      *
0069      * @return email address, or a null string if not specified
0070      */
0071     virtual QString email() const = 0;
0072 
0073     /**
0074      * description of the person for debugging purposes.
0075      *
0076      * @return debug string
0077      */
0078     virtual QString debugInfo() const;
0079 
0080     /**
0081      * compares two person instances. Persons are equal if and only if
0082      * their respective name(), uri() and email() values are equal.
0083      * @param other another person instance
0084      */
0085     virtual bool operator==(const Person &other) const;
0086 };
0087 
0088 } // namespace Syndication
0089 
0090 #endif // SYNDICATION_PERSON_H