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..ffae16eb --- /dev/null +++ b/taglib/toolkit/taglib.cpp @@ -0,0 +1,34 @@ +#include "taglib.h" +#include "tstring.h" +#include + +using namespace TagLib; + +String TagLib::GetVersionString() +{ + return String::number(TAGLIB_MAJOR_VERSION) + + "." + String::number(TAGLIB_MINOR_VERSION) + + "." + String::number(TAGLIB_PATCH_VERSION); +} + +unsigned int TagLib::GetMajorVersion() +{ + return TAGLIB_MAJOR_VERSION; +} + +unsigned int TagLib::GetMinorVersion() +{ + return TAGLIB_MINOR_VERSION; +} + +unsigned int TagLib::GetPatchVersion() +{ + return TAGLIB_PATCH_VERSION; +} + +unsigned int TagLib::GetVersion() +{ + return (TAGLIB_MAJOR_VERSION << 16) + || (TAGLIB_MINOR_VERSION << 8) + || (TAGLIB_PATCH_VERSION << 4); +} diff --git a/taglib/toolkit/taglib.h b/taglib/toolkit/taglib.h index 18f6b270..3a5ca016 100644 --- a/taglib/toolkit/taglib.h +++ b/taglib/toolkit/taglib.h @@ -46,8 +46,6 @@ * \endcode */ -#include - namespace TagLib { enum ByteOrder @@ -55,13 +53,35 @@ namespace TagLib LittleEndian, BigEndian }; + class String; /*! - * Returns the library's version information as 3-tuple of ints (for major, minor, patch version). + * Returns the version as a string in the form + * (Major Version).(Minor Version).(Patch Version), e.g. "4.2.0". */ - std::tuple version() - { - return std::make_tuple(TAGLIB_MAJOR_VERSION, TAGLIB_MINOR_VERSION, TAGLIB_PATCH_VERSION); - } + String GetVersionString(); + + /*! + * 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 GetVersion(); + + /*! + * Returns the major version, e.g. 4 + */ + unsigned int GetMajorVersion(); + + /*! + * Returns the minor version, e.g. 2 + */ + unsigned int GetMinorVersion(); + + /*! + * Returns the patch version, e.g. 0 + */ + unsigned int GetPatchVersion(); } /*!