/usr/include/musicbrainz3/entity.h is in libmusicbrainz3-dev 3.0.2-2.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | /*
* MusicBrainz -- The Internet music metadatabase
*
* Copyright (C) 2006 Lukas Lalinsky
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* $Id: entity.h 9216 2007-06-25 19:42:20Z luks $
*/
#ifndef __MUSICBRAINZ3_ENTITY_H__
#define __MUSICBRAINZ3_ENTITY_H__
#include <string>
#include <musicbrainz3/musicbrainz.h>
#include <musicbrainz3/lists.h>
#include <musicbrainz3/relation.h>
#include <musicbrainz3/tag.h>
namespace MusicBrainz
{
/**
* A first-level MusicBrainz class.
*
* All entities in MusicBrainz have unique IDs (which are absolute URIs)
* and may have any number of relations (Relation) to other entities.
* This class is abstract and should not be instantiated.
*
* Relations are differentiated by their \e target \e type, that means,
* where they link to. MusicBrainz currently supports four target types
* (artists, releases, tracks, and URLs) each identified using a URI.
* To get all relations with a specific target type, you can use
* getRelations and pass one of the following constants as the
* parameter:
*
* - Relation::TO_ARTIST
* - Relation::TO_RELEASE
* - Relation::TO_TRACK
* - Relation::TO_URL
*
* @see Relation
*/
class MB_API Entity
{
protected:
/**
* Constructor.
*
* This should only used by derived classes.
*
* @param id a string containing an absolute URI
*/
Entity(const std::string &id);
public:
/**
* Destructor.
*/
virtual ~Entity();
/**
* Returns a MusicBrainz ID.
*
* @return a string containing a URI
*/
virtual std::string getId() const;
/**
* Sets a MusicBrainz ID.
*
* @param value a string containing an absolute URI
*/
virtual void setId(const std::string &value);
/**
* Returns a list of relations.
*
* If \a targetType is given, only relations of that target
* type are returned. For MusicBrainz, the following target
* types are defined:
*
* - Relation::TO_ARTIST
* - Relation::TO_RELEASE
* - Relation::TO_TRACK
* - Relation::TO_URL
*
* If \a targetType is Relation::TO_ARTIST, for example,
* this method returns all relations between this Entity and
* artists.
*
* You may use the \a relationType parameter to further restrict
* the selection. If it is set, only relations with the given
* relation type are returned.
*
* @param targetType a string containing an absolute URI
* @param relationType a string containing an absolute URI
*
* @return a list of pointers to Relation objects
*
* @see Entity
*/
RelationList getRelations(const std::string &targetType = std::string(),
const std::string &relationType = std::string()) const;
/**
* Adds a relation.
*
* This method adds \a relation to the list of relations. The
* given relation has to be initialized, at least the target
* type has to be set.
*
* @param relation a pointer to Relation object to add
*/
void addRelation(Relation *relation);
/**
* Returns number of relations.
*
* This is equivalent to \c getRelations().size()
*
* @return an int containing number of relations
*
* @see getRelations
*/
int getNumRelations() const;
/**
* Returns an relation specified by index.
*
* This is equivalent to \c getRelations()[index]
*
* @return a pointer to Relation instance
*
* @see getRelations
*/
Relation *getRelation(int index);
TagList &getTags();
int getNumTags() const;
Tag *getTag(int index);
private:
class EntityPrivate;
EntityPrivate *d;
};
}
#endif
|