Version bump
[someplayer] / src / taglib / mp4 / mp4item.cpp
1 /**************************************************************************
2     copyright            : (C) 2007 by Lukáš Lalinský
3     email                : lalinsky@gmail.com
4  **************************************************************************/
5
6 /***************************************************************************
7  *   This library is free software; you can redistribute it and/or modify  *
8  *   it under the terms of the GNU Lesser General Public License version   *
9  *   2.1 as published by the Free Software Foundation.                     *
10  *                                                                         *
11  *   This library is distributed in the hope that it will be useful, but   *
12  *   WITHOUT ANY WARRANTY; without even the implied warranty of            *
13  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
14  *   Lesser General Public License for more details.                       *
15  *                                                                         *
16  *   You should have received a copy of the GNU Lesser General Public      *
17  *   License along with this library; if not, write to the Free Software   *
18  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
19  *   USA                                                                   *
20  *                                                                         *
21  *   Alternatively, this file is available under the Mozilla Public        *
22  *   License Version 1.1.  You may obtain a copy of the License at         *
23  *   http://www.mozilla.org/MPL/                                           *
24  ***************************************************************************/
25
26 #ifdef HAVE_CONFIG_H
27 #include <config.h>
28 #endif
29
30 #include <taglib.h>
31 #include <tdebug.h>
32 #include "mp4item.h"
33
34 using namespace TagLib;
35
36 class MP4::Item::ItemPrivate : public RefCounter
37 {
38 public:
39   ItemPrivate() : RefCounter(), valid(true) {}
40
41   bool valid;
42   union {
43     bool m_bool;
44     int m_int;
45     IntPair m_intPair;
46   };
47   StringList m_stringList;
48   MP4::CoverArtList m_coverArtList;
49 };
50
51 MP4::Item::Item()
52 {
53   d = new ItemPrivate;
54   d->valid = false;
55 }
56
57 MP4::Item::Item(const Item &item) : d(item.d)
58 {
59   d->ref();
60 }
61
62 MP4::Item &
63 MP4::Item::operator=(const Item &item)
64 {
65   if(d->deref()) {
66     delete d;
67   }
68   d = item.d;
69   d->ref();
70   return *this;
71 }
72
73 MP4::Item::~Item()
74 {
75   if(d->deref()) {
76     delete d;
77   }
78 }
79
80 MP4::Item::Item(bool value)
81 {
82   d = new ItemPrivate;
83   d->m_bool = value;
84 }
85
86 MP4::Item::Item(int value)
87 {
88   d = new ItemPrivate;
89   d->m_int = value;
90 }
91
92 MP4::Item::Item(int value1, int value2)
93 {
94   d = new ItemPrivate;
95   d->m_intPair.first = value1;
96   d->m_intPair.second = value2;
97 }
98
99 MP4::Item::Item(const StringList &value)
100 {
101   d = new ItemPrivate;
102   d->m_stringList = value;
103 }
104
105 MP4::Item::Item(const MP4::CoverArtList &value)
106 {
107   d = new ItemPrivate;
108   d->m_coverArtList = value;
109 }
110
111 bool
112 MP4::Item::toBool() const
113 {
114   return d->m_bool;
115 }
116
117 int
118 MP4::Item::toInt() const
119 {
120   return d->m_int;
121 }
122
123 MP4::Item::IntPair
124 MP4::Item::toIntPair() const
125 {
126   return d->m_intPair;
127 }
128
129 StringList
130 MP4::Item::toStringList() const
131 {
132   return d->m_stringList;
133 }
134
135 MP4::CoverArtList
136 MP4::Item::toCoverArtList() const
137 {
138   return d->m_coverArtList;
139 }
140
141 bool
142 MP4::Item::isValid() const
143 {
144   return d->valid;
145 }
146