1 /*************************************************************************** 2 copyright : (C) 2002 - 2008 by Scott Wheeler 3 email : [email protected] 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 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 92