Program Listing for File version.cpp

Return to documentation for file (natnet_bridge/src/version.cpp)

//
// Created by yuan on 2021/5/23.
//

#include "natnet_bridge/version.h"

#include <sstream>
#include <string>

namespace natnet_bridge
{

    Version::Version()
    {
        setVersion(0, 0, 0, 0);
    }

    Version::Version(int major, int minor, int revision, int build)
    {
        setVersion(major, minor, revision, build);
    }

    Version::Version(const std::string& version)
            : v_string(version)
    {
        int major = 0, minor = 0, revision = 0, build = 0;
        std::sscanf(version.c_str(), "%d.%d.%d.%d", &major, &minor, &revision, &build);
        setVersion(major, minor, revision, build);
    }

    Version::~Version()
    {
    }
    void Version::setVersion(int major, int minor, int revision, int build)
    {
        v_major = major;
        v_minor = minor;
        v_revision = revision;
        v_build = build;

        std::stringstream sstr;
        sstr << v_major << "." << v_minor << "." << v_revision << "." << v_build;
        v_string  = sstr.str();
    }

    std::string const& Version::getVersionString() const
    {
        return v_string;
    }

    bool Version::operator > (const Version& comparison) const
    {
        if (v_major > comparison.v_major)
            return true;
        if (v_minor > comparison.v_minor)
            return true;
        if (v_revision > comparison.v_revision)
            return true;
        if (v_build > comparison.v_build)
            return true;
        return false;
    }

    bool Version::operator >= (const Version& comparison) const
    {
        return ((*this > comparison) || (*this == comparison));
    }

    bool Version::operator < (const Version& comparison) const
    {
        if (v_major < comparison.v_major)
            return true;
        if (v_minor < comparison.v_minor)
            return true;
        if (v_revision < comparison.v_revision)
            return true;
        if (v_build < comparison.v_build)
            return true;
        return false;
    }

    bool Version::operator <= (const Version& comparison) const
    {
        return ((*this < comparison) || (*this == comparison));
    }

    bool Version::operator == (const Version& comparison) const
    {
        return v_major == comparison.v_major
               && v_minor == comparison.v_minor
               && v_revision == comparison.v_revision
               && v_build == comparison.v_build;
    }

}  // namespace