#pragma once namespace glbinding { GLBINDING_CONSTEXPR Version::Version() : m_major(0) , m_minor(0) { } GLBINDING_CONSTEXPR Version::Version(unsigned char majorVersion, unsigned char minorVersion) : m_major(majorVersion) , m_minor(minorVersion) { } GLBINDING_CONSTEXPR Version::Version(const Version & version) : Version(version.m_major, version.m_minor) { } Version::Version(Version && version) : Version(std::move(version.m_major), std::move(version.m_minor)) { } GLBINDING_CONSTEXPR unsigned char Version::majorVersion() const { return m_major; } GLBINDING_CONSTEXPR unsigned char Version::minorVersion() const { return m_minor; } Version::operator std::pair() const { return std::pair(m_major, m_minor); } Version::operator std::pair() const { return std::pair(m_major, m_minor); } Version::operator std::pair() const { return std::pair(m_major, m_minor); } std::string Version::toString() const { if (isNull()) { return "-.-"; } return std::to_string(static_cast(m_major)) + '.' + std::to_string(static_cast(m_minor)); } GLBINDING_CONSTEXPR bool Version::isNull() const { return m_major == 0; } Version & Version::operator=(const Version & version) { m_major = version.m_major; m_minor = version.m_minor; return *this; } Version & Version::operator=(Version && version) { m_major = std::move(version.m_major); m_minor = std::move(version.m_minor); return *this; } GLBINDING_CONSTEXPR bool Version::operator<(const Version & version) const { return m_major < version.m_major || (m_major == version.m_major && m_minor < version.m_minor); } GLBINDING_CONSTEXPR bool Version::operator>(const Version & version) const { return m_major > version.m_major || (m_major == version.m_major && m_minor > version.m_minor); } GLBINDING_CONSTEXPR bool Version::operator==(const Version & version) const { return m_major == version.m_major && m_minor == version.m_minor; } GLBINDING_CONSTEXPR bool Version::operator!=(const Version & version) const { return m_major != version.m_major || m_minor != version.m_minor; } GLBINDING_CONSTEXPR bool Version::operator>=(const Version & version) const { return *this > version || *this == version; } GLBINDING_CONSTEXPR bool Version::operator<=(const Version & version) const { return *this < version || *this == version; } } // namespace glbinding