Added TagLib (with AUTORS and COPYING files)
[someplayer] / src / taglib / toolkit / tbytevectorlist.h
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 #ifndef TAGLIB_BYTEVECTORLIST_H
27 #define TAGLIB_BYTEVECTORLIST_H
28
29 #include "taglib_export.h"
30 #include "tbytevector.h"
31 #include "tlist.h"
32
33 namespace 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