ppc-lang/include/lang/version.hh

41 lines
1.5 KiB
C++
Raw Permalink Normal View History

2022-09-19 07:34:19 +00:00
#pragma once
#include <cstdint>
namespace ppc {
// A structure, representing all versions, used troughout the ++C language. 64 bits
struct version_t {
/* The major component of the version
Used to indicate breaking changes.
If -1 (65535), then is ignored
Must match target version in order to be usable */
std::uint16_t major;
/* The minor component of the version
Used to indicate non-breaking changes (added features).
If -1 (65535), then is ignored
Target version's minor version must be bigger or equals to this in order to be usable */
std::uint16_t minor;
/* The revision component of the version
Used to indicate minor fixes and changes that don't affect the API in any capacity
If -1 (4 294 967 295), then is ignored
Ignored when testing for compliancy */
std::uint32_t revision;
bool is_compliant(version_t dependency) const;
// Checks whether or not two versions equal each other (ignoring -1 components)
bool operator ==(version_t other) const;
inline bool operator !=(version_t other) const { return !(*this == other); }
version_t(uint16_t major, uint16_t minor, uint32_t revision) : major(major), minor(minor), revision(revision) { }
version_t(uint16_t major, uint16_t minor) : version_t(major, minor, -1) { }
version_t(uint16_t major) : version_t(major, -1, -1) { }
2022-09-19 07:34:19 +00:00
};
}