Avara3D 0.2.0
C++ API reference
BuildInfo.h
1//
2// BuildInfo.h
3// avara3d
4//
5// Created by Morgan Davis on 1/19/24.
6// Copyright © 2026 Morgan K Davis. All rights reserved.
7//
8
9#ifndef AVARA3D_BUILDINFO_H
10#define AVARA3D_BUILDINFO_H
11
12#include <ctime>
13#include <iomanip>
14#include <string>
15
16namespace a3d {
17
19 class BuildInfo {
20
21 public:
22 // [Public Types]
23
31 struct Version {
32 int major;
33 int minor;
34 int patch;
35 };
36
38 enum class Type {
39 Debug,
40 Release,
41 RelWithDebInfo,
42 MinSizeRel,
43 Unknown
44 };
45
47 enum class Origin {
48 CI,
49 AdHoc
50 };
51
52 // [Public Static Member Functions]
53
55 static const BuildInfo& Info();
56
58 static std::string VersionString(const Version& version);
59
61 static std::string TypeString(Type type);
62
64 static std::string OriginString(Origin origin);
65
66 // [Public Member Functions]
67
69 unsigned number() const;
70
72 const Version& version() const;
73
75 Type type() const;
76
78 Origin origin() const;
79
86 const std::tm& time() const;
87
88 private:
89 // [Private Lifecycle Functions]
90
91 BuildInfo();
92
93 BuildInfo(const BuildInfo&) = delete;
94 BuildInfo& operator=(const BuildInfo&) = delete;
95
96 BuildInfo(BuildInfo&&) = delete;
97 BuildInfo& operator=(BuildInfo&&) = delete;
98
99 // [Private Member Variables]
100
101 unsigned _number;
102 Version _version;
103 Type _type;
104 Origin _origin;
105 std::tm _time;
106 };
107
108}
109
110#endif // AVARA3D_BUILDINFO_H
Exposes version and build metadata compiled into the A3D library.
Definition: BuildInfo.h:19
unsigned number() const
Returns the CI build number, or zero for an ad-hoc build.
const std::tm & time() const
Returns the recorded build time as calendar components.
static const BuildInfo & Info()
Returns the process-wide BuildInfo for the linked A3D library.
Origin
Origin of the build metadata.
Definition: BuildInfo.h:47
static std::string VersionString(const Version &version)
Formats version as a dotted major.minor.patch string.
static std::string TypeString(Type type)
Returns the canonical string for type.
const Version & version() const
Returns the semantic version compiled into the library.
Type
Build configuration used to compile the library.
Definition: BuildInfo.h:38
Type type() const
Returns the build configuration.
static std::string OriginString(Origin origin)
Returns the canonical string for origin.
Origin origin() const
Returns whether the build metadata originated from CI or an ad-hoc build.
Major, minor, and patch components of an A3D version.
Definition: BuildInfo.h:31
int minor
Minor version component.
Definition: BuildInfo.h:33
int major
Major version component.
Definition: BuildInfo.h:32
int patch
Patch version component.
Definition: BuildInfo.h:34