]> granicus.if.org Git - taglib/commitdiff
Add MPEG::FILE::Has*Tag functions
authorTsuda Kageyu <tsuda.kageyu@gmail.com>
Sat, 8 Sep 2012 05:13:20 +0000 (14:13 +0900)
committerTsuda Kageyu <tsuda.kageyu@gmail.com>
Sat, 8 Sep 2012 05:13:20 +0000 (14:13 +0900)
taglib/mpeg/mpegfile.cpp
taglib/mpeg/mpegfile.h
tests/test_mpeg.cpp

index 6ebff897aa8fccb0d073c3f9a4926bfab06b9c97..ec094cdc3098dedb45033d42286543df405f7fa0 100644 (file)
@@ -437,6 +437,21 @@ long MPEG::File::lastFrameOffset()
   return previousFrameOffset(ID3v1Tag() ? d->ID3v1Location - 1 : length());
 }
 
+bool MPEG::File::hasID3v1Tag() const
+{
+  return d->hasID3v1;
+}
+
+bool MPEG::File::hasID3v2Tag() const
+{
+  return d->hasID3v2;
+}
+
+bool MPEG::File::hasAPETag() const
+{
+  return d->hasAPE;
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 // private members
 ////////////////////////////////////////////////////////////////////////////////
index 9967a99125f494444144a688233b5a1b1be393be..f7b98364f34a05f1a243b96a094ef91240a6f828 100644 (file)
@@ -301,6 +301,21 @@ namespace TagLib {
        */
       long lastFrameOffset();
 
+      /*!
+       * Returns whether or not the file on disk contains ID3v1 tag.
+       */
+      bool hasID3v1Tag() const;
+
+      /*!
+       * Returns whether or not the file on disk contains ID3v2 tag.
+       */
+      bool hasID3v2Tag() const;
+
+      /*!
+       * Returns whether or not the file on disk contains APE tag.
+       */
+      bool hasAPETag() const;
+
     private:
       File(const File &);
       File &operator=(const File &);
index 973803f908d78b9597ef87098a7f079507f26508..18724728ade5de09da6a375450173337640e954e 100644 (file)
@@ -32,9 +32,12 @@ public:
 
     String xxx = ByteVector(254, 'X');
     MPEG::File f(newname.c_str());
+    CPPUNIT_ASSERT_EQUAL(false, f.hasID3v2Tag());
+
     f.tag()->setTitle(xxx);
     f.tag()->setArtist("Artist A");
     f.save(MPEG::File::AllTags, true, 4);
+    CPPUNIT_ASSERT_EQUAL(true, f.hasID3v2Tag());
 
     MPEG::File f2(newname.c_str());
     CPPUNIT_ASSERT_EQUAL(TagLib::uint(4), f2.ID3v2Tag()->header()->majorVersion());
@@ -66,9 +69,12 @@ public:
 
     String xxx = ByteVector(254, 'X');
     MPEG::File f(newname.c_str());
+    CPPUNIT_ASSERT_EQUAL(false, f.hasID3v2Tag());
+
     f.tag()->setTitle(xxx);
     f.tag()->setArtist("Artist A");
     f.save(MPEG::File::AllTags, true, 3);
+    CPPUNIT_ASSERT_EQUAL(true, f.hasID3v2Tag());
 
     MPEG::File f2(newname.c_str());
     CPPUNIT_ASSERT_EQUAL(TagLib::uint(3), f2.ID3v2Tag()->header()->majorVersion());