diff --git a/taglib/CMakeLists.txt b/taglib/CMakeLists.txt index 6d8e483f..361b8a79 100644 --- a/taglib/CMakeLists.txt +++ b/taglib/CMakeLists.txt @@ -321,6 +321,7 @@ set(matroska_SRCS ) set(toolkit_SRCS + toolkit/taglib.cpp toolkit/tstring.cpp toolkit/tstringlist.cpp toolkit/tstringhandler.cpp diff --git a/taglib/toolkit/taglib.cpp b/taglib/toolkit/taglib.cpp new file mode 100644 index 00000000..e65a6e77 --- /dev/null +++ b/taglib/toolkit/taglib.cpp @@ -0,0 +1,37 @@ +#include "taglib.h" +#include "tstring.h" +#include + +using namespace TagLib; + + +String TagLib::Version::string() +{ + return String::number(TAGLIB_MAJOR_VERSION) + + "." + String::number(TAGLIB_MINOR_VERSION) + + "." + String::number(TAGLIB_PATCH_VERSION); +} + +unsigned int TagLib::Version::combined() +{ + return (TAGLIB_MAJOR_VERSION << 16) + || (TAGLIB_MINOR_VERSION << 8) + || (TAGLIB_PATCH_VERSION << 4); +} + + +unsigned int (TagLib::Version::major)() +{ + return TAGLIB_MAJOR_VERSION; +} + +unsigned int (TagLib::Version::minor)() +{ + return TAGLIB_MINOR_VERSION; +} + +unsigned int TagLib::Version::patch() +{ + return TAGLIB_PATCH_VERSION; +} + diff --git a/taglib/toolkit/taglib.h b/taglib/toolkit/taglib.h index 2f4c5655..7cc3718c 100644 --- a/taglib/toolkit/taglib.h +++ b/taglib/toolkit/taglib.h @@ -53,6 +53,38 @@ namespace TagLib LittleEndian, BigEndian }; + class String; + namespace Version + { + /*! + * Returns the version as a string in the form + * (Major Version).(Minor Version).(Patch Version), e.g. "4.2.0". + */ + String string(); + + /*! + * Returns the version as an unsigned integer in the form + * (Major Version << 16) | (Minor Version << 8) | (Patch Version), e.g. 0x040200 + * Use this for simple and consistent version comparison, e.g. + * if (TagLib::GetVersion() <= ((1 << 16) | (11 << 8))) return false; + */ + unsigned int combined(); + + /*! + * Returns the major version, e.g. 4 + */ + unsigned int (major)(); + + /*! + * Returns the minor version, e.g. 2 + */ + unsigned int (minor)(); + + /*! + * Returns the patch version, e.g. 0 + */ + unsigned int patch(); + } } /*!