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., 51 Franklin Street, Fifth Floor, Boston, MA *
19 * 02110-1301 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#ifndef TAGLIB_BYTEVECTORLIST_H
27#define TAGLIB_BYTEVECTORLIST_H
28
29#include "taglib_export.h"
30#include "tbytevector.h"
31#include "tlist.h"
32
33namespace TagLib {
34
35 //! A list of ByteVectors
36
37 /*!
38 * A List specialization with some handy features useful for ByteVectors.
39 */
40
41 class TAGLIB_EXPORT ByteVectorList : public List<ByteVector>
42 {
43 public:
44
45 /*!
46 * Construct an empty ByteVectorList.
47 */
48 ByteVectorList();
49
50 /*!
51 * Destroys this ByteVectorList instance.
52 */
53 virtual ~ByteVectorList();
54
55 /*!
56 * Make a shallow, implicitly shared, copy of \a l. Because this is
57 * implicitly shared, this method is lightweight and suitable for
58 * pass-by-value usage.
59 */
60 ByteVectorList(const ByteVectorList &l);
61
62 /*!
63 * Convert the ByteVectorList to a ByteVector separated by \a separator. By
64 * default a space is used.
65 */
66 ByteVector toByteVector(const ByteVector &separator = " ") const;
67
68 /*!
69 * Splits the ByteVector \a v into several strings at \a pattern. This will
70 * not include the pattern in the returned ByteVectors.
71 */
72 static ByteVectorList split(const ByteVector &v, const ByteVector &pattern,
73 int byteAlign = 1);
74 /*!
75 * Splits the ByteVector \a v into several strings at \a pattern. This will
76 * not include the pattern in the returned ByteVectors. \a max is the
77 * maximum number of entries that will be separated. If \a max for instance
78 * is 2 then a maximum of 1 match will be found and the vector will be split
79 * on that match.
80 */
81 // BIC: merge with the function above
82 static ByteVectorList split(const ByteVector &v, const ByteVector &pattern,
83 int byteAlign, int max);
84 private:
85 class ByteVectorListPrivate;
86 ByteVectorListPrivate *d;
87 };
88
89}
90
91#endif
92