summaryrefslogtreecommitdiff
path: root/libs/taglib/taglib/tagunion.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-09-17 08:44:51 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-09-17 08:44:51 +0000
commit1c299d5a5c493986ca4a19bd55a69281dabada86 (patch)
treedae18913a2261a157ba32308ef804050e1232542 /libs/taglib/taglib/tagunion.h
parent8e9a83dfdc233898e7c470667c7c9b797c83fe8b (diff)
merge Sakari's (sbergen) branch back into 3.0, removing libsndfile and adding taglib
git-svn-id: svn://localhost/ardour2/branches/3.0@3736 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/taglib/taglib/tagunion.h')
-rw-r--r--libs/taglib/taglib/tagunion.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/libs/taglib/taglib/tagunion.h b/libs/taglib/taglib/tagunion.h
new file mode 100644
index 0000000000..76d407ce32
--- /dev/null
+++ b/libs/taglib/taglib/tagunion.h
@@ -0,0 +1,95 @@
+/***************************************************************************
+ copyright : (C) 2002 - 2008 by Scott Wheeler
+ email : wheeler@kde.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
+ * USA *
+ * *
+ * Alternatively, this file is available under the Mozilla Public *
+ * License Version 1.1. You may obtain a copy of the License at *
+ * http://www.mozilla.org/MPL/ *
+ ***************************************************************************/
+
+#ifndef TAGLIB_TAGUNION_H
+#define TAGLIB_TAGUNION_H
+
+#include "tag.h"
+
+#ifndef DO_NOT_DOCUMENT
+
+namespace TagLib {
+
+ /*!
+ * \internal
+ */
+
+ class TagUnion : public Tag
+ {
+ public:
+
+ enum AccessType { Read, Write };
+
+ /*!
+ * Creates a TagLib::Tag that is the union of \a first, \a second, and
+ * \a third. The TagUnion takes ownership of these tags and will handle
+ * their deletion.
+ */
+ TagUnion(Tag *first = 0, Tag *second = 0, Tag *third = 0);
+
+ virtual ~TagUnion();
+
+ Tag *operator[](int index) const;
+ Tag *tag(int index) const;
+
+ void set(int index, Tag *tag);
+
+ virtual String title() const;
+ virtual String artist() const;
+ virtual String album() const;
+ virtual String comment() const;
+ virtual String genre() const;
+ virtual uint year() const;
+ virtual uint track() const;
+
+ virtual void setTitle(const String &s);
+ virtual void setArtist(const String &s);
+ virtual void setAlbum(const String &s);
+ virtual void setComment(const String &s);
+ virtual void setGenre(const String &s);
+ virtual void setYear(uint i);
+ virtual void setTrack(uint i);
+ virtual bool isEmpty() const;
+
+ template <class T> T *access(int index, bool create)
+ {
+ if(!create || tag(index))
+ return static_cast<T *>(tag(index));
+
+ set(index, new T);
+ return static_cast<T *>(tag(index));
+ }
+
+ private:
+ TagUnion(const Tag &);
+ TagUnion &operator=(const Tag &);
+
+ class TagUnionPrivate;
+ TagUnionPrivate *d;
+ };
+}
+
+#endif
+#endif