Fixed problem with TagLib reading 1 byte fields in ID3v2 tags.

CCMAIL:Stefan Gehn <sgehn@gmx.net>
CCMAIL:Keith Brady <keith@funnelboy.org>


git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@288618 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
Scott Wheeler
2004-02-17 02:11:05 +00:00
parent 7fe6647435
commit bfd0be4c7d
2 changed files with 318 additions and 0 deletions

View File

@ -0,0 +1,88 @@
/***************************************************************************
copyright : (C) 2002, 2003 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 *
***************************************************************************/
#include "tbytevectorlist.h"
using namespace TagLib;
class ByteVectorListPrivate
{
};
////////////////////////////////////////////////////////////////////////////////
// static members
////////////////////////////////////////////////////////////////////////////////
ByteVectorList ByteVectorList::split(const ByteVector &v, const ByteVector &pattern,
int byteAlign)
{
ByteVectorList l;
uint previousOffset = 0;
for(int offset = v.find(pattern, 0, byteAlign);
offset != -1;
offset = v.find(pattern, offset + pattern.size(), byteAlign))
{
l.append(v.mid(previousOffset, offset - previousOffset));
previousOffset = offset + pattern.size();
}
if(previousOffset < v.size())
l.append(v.mid(previousOffset, v.size() - previousOffset));
return l;
}
////////////////////////////////////////////////////////////////////////////////
// public members
////////////////////////////////////////////////////////////////////////////////
ByteVectorList::ByteVectorList() : List<ByteVector>()
{
}
ByteVectorList::ByteVectorList(const ByteVectorList &l) : List<ByteVector>(l)
{
}
ByteVectorList::~ByteVectorList()
{
}
ByteVector ByteVectorList::toByteVector(const ByteVector &separator) const
{
ByteVector v;
ConstIterator it = begin();
while(it != end()) {
v.append(*it);
it++;
if(it != end())
v.append(separator);
}
return v;
}