~ubuntu-branches/ubuntu/utopic/ardour3/utopic

« back to all changes in this revision

Viewing changes to libs/taglib/taglib/toolkit/tbytevectorlist.cpp

  • Committer: Package Import Robot
  • Author(s): Felipe Sateler
  • Date: 2013-09-21 19:05:02 UTC
  • Revision ID: package-import@ubuntu.com-20130921190502-8gsftrku6jnzhd7v
Tags: upstream-3.4~dfsg
ImportĀ upstreamĀ versionĀ 3.4~dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
    copyright            : (C) 2002 - 2008 by Scott Wheeler
 
3
    email                : wheeler@kde.org
 
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
#include "tbytevectorlist.h"
 
27
 
 
28
using namespace TagLib;
 
29
 
 
30
class ByteVectorListPrivate
 
31
{
 
32
 
 
33
};
 
34
 
 
35
////////////////////////////////////////////////////////////////////////////////
 
36
// static members
 
37
////////////////////////////////////////////////////////////////////////////////
 
38
 
 
39
ByteVectorList ByteVectorList::split(const ByteVector &v, const ByteVector &pattern,
 
40
                                     int byteAlign)
 
41
{
 
42
  return split(v, pattern, byteAlign, 0);
 
43
}
 
44
 
 
45
ByteVectorList ByteVectorList::split(const ByteVector &v, const ByteVector &pattern,
 
46
                                     int byteAlign, int max)
 
47
{
 
48
  ByteVectorList l;
 
49
 
 
50
  uint previousOffset = 0;
 
51
  for(int offset = v.find(pattern, 0, byteAlign);
 
52
      offset != -1 && (max == 0 || max > int(l.size()) + 1);
 
53
      offset = v.find(pattern, offset + pattern.size(), byteAlign))
 
54
  {
 
55
    if(offset - previousOffset > 1)
 
56
      l.append(v.mid(previousOffset, offset - previousOffset));
 
57
    else
 
58
      l.append(ByteVector::null);
 
59
 
 
60
    previousOffset = offset + pattern.size();
 
61
  }
 
62
 
 
63
  if(previousOffset < v.size())
 
64
    l.append(v.mid(previousOffset, v.size() - previousOffset));
 
65
 
 
66
  return l;
 
67
}
 
68
 
 
69
////////////////////////////////////////////////////////////////////////////////
 
70
// public members
 
71
////////////////////////////////////////////////////////////////////////////////
 
72
 
 
73
ByteVectorList::ByteVectorList() : List<ByteVector>()
 
74
{
 
75
 
 
76
}
 
77
 
 
78
ByteVectorList::ByteVectorList(const ByteVectorList &l) : List<ByteVector>(l)
 
79
{
 
80
 
 
81
}
 
82
 
 
83
ByteVectorList::~ByteVectorList()
 
84
{
 
85
 
 
86
}
 
87
 
 
88
ByteVector ByteVectorList::toByteVector(const ByteVector &separator) const
 
89
{
 
90
  ByteVector v;
 
91
 
 
92
  ConstIterator it = begin();
 
93
 
 
94
  while(it != end()) {
 
95
    v.append(*it);
 
96
    it++;
 
97
    if(it != end())
 
98
      v.append(separator);
 
99
  }
 
100
 
 
101
  return v;
 
102
}