Program Listing for File Version.hpp

Return to documentation for file (include/depthai/device/Version.hpp)

#pragma once

#include <cstdint>
#include <optional>
#include <string>

#include "depthai/utility/spimpl.h"
namespace dai {

struct Version {
    enum class PreReleaseType : uint16_t {
        ALPHA = 0,
        BETA = 1,
        RC = 2,
        NONE = 3,
    };
    explicit Version(const std::string& v);
    Version(unsigned major,
            unsigned minor,
            unsigned patch,
            const PreReleaseType& type = PreReleaseType::NONE,
            const std::optional<uint16_t>& preReleaseVersion = std::nullopt,
            const std::string& buildInfo = "");

    Version(unsigned major, unsigned minor, unsigned patch, const std::string& buildInfo)
        : Version(major, minor, patch, PreReleaseType::NONE, std::nullopt, buildInfo) {}
    bool operator==(const Version& other) const;
    bool operator<(const Version& other) const;
    inline bool operator!=(const Version& rhs) const {
        return !(*this == rhs);
    }
    inline bool operator>(const Version& rhs) const {
        return rhs < *this;
    }
    inline bool operator<=(const Version& rhs) const {
        return !(*this > rhs);
    }
    inline bool operator>=(const Version& rhs) const {
        return !(*this < rhs);
    }
    std::string toString() const;
    std::string toStringSemver() const;

    std::string getBuildInfo() const;

   private:
    class Impl;
    spimpl::impl_ptr<Impl> pimpl;
};

}  // namespace dai