Lumi 0.1.0-dev
A modular C++ framework library that streamlines cross-platform desktop application development, cutting boilerplate and empowering developers with deep control.
Loading...
Searching...
No Matches
info.cpp
Go to the documentation of this file.
1// Copyright (c) 2025.
2// Distributed under the Boost Software License, Version 1.0
3
4//
5// Created by Mono on 18/6/2025.
6//
7
8module;
9
10#include <cstdint>
11#include <string_view>
12
13module lumi.core;
14import :metadata;
15
16namespace lumi::info {
17std::string_view GetVersion(const bool include_tag) noexcept {
18 return include_tag ? kVersionFull : kVersion;
19}
20uint8_t GetVersionMajor() noexcept { return kVersionNumbers.major_; }
21uint8_t GetVersionMinor() noexcept { return kVersionNumbers.minor_; }
22uint8_t GetVersionPatch() noexcept { return kVersionNumbers.patch_; }
23
25 if constexpr (kVersionTag.empty()) {
26 return VERSION_TAG::NONE;
27 }
28 if constexpr (kVersionTag == "dev") {
29 return VERSION_TAG::DEV;
30 } else if constexpr (kVersionTag == "alpha") {
31 return VERSION_TAG::ALPHA;
32 } else if constexpr (kVersionTag == "beta") {
33 return VERSION_TAG::BETA;
34 } else if constexpr (kVersionTag == "rc") {
36 } else if constexpr (kVersionTag == "release") {
38 }
39 return VERSION_TAG::NONE;
40}
41uint8_t GetVersionReleaseCandidate() noexcept {
42 return kVersionReleaseCandidate;
43}
44
46 if constexpr (kBuildType == "Debug") {
47 return BUILD_TYPE::DEBUG;
48 } else if constexpr (kBuildType == "Release") {
50 } else if constexpr (kBuildType == "RelWithDebInfo") {
52 } else if constexpr (kBuildType == "MinSizeRel") {
54 }
56}
57
58bool IsDebugMode() noexcept {
59 if (const auto k_build_type_enum = GetBuildType();
60 k_build_type_enum == BUILD_TYPE::DEBUG ||
61 k_build_type_enum == BUILD_TYPE::REL_WITH_DEB_INFO) {
62 return true;
63 }
64 return false;
65}
66
67std::string_view GetCommitHash() noexcept { return kCommitHash; }
69 if constexpr (kPlatform == "Linux") {
70 return PLATFORM::LINUX;
71 } else if constexpr (kPlatform == "Windows") {
72 return PLATFORM::WINDOWS;
73 } else if constexpr (kPlatform == "Darwin") {
74 return PLATFORM::MACOS;
75 }
76}
78 if constexpr (kArchitecture == "x86" || kArchitecture == "i386" ||
79 kArchitecture == "X86") {
80 return ARCHITECTURE::X86;
81 } else if constexpr (kArchitecture == "x86_64" || kArchitecture == "x64" ||
82 kArchitecture == "AMD64" || kArchitecture == "EM64T") {
84 } else if constexpr (kArchitecture == "arm") {
85 return ARCHITECTURE::ARM;
86 } else if constexpr (kArchitecture == "arm64" || kArchitecture == "aarch64" ||
87 kArchitecture == "ARM64") {
89 }
91}
92uint8_t GetBitness() noexcept { return kBitness; }
94 if constexpr (kCompiler == "GCC") {
95 return COMPILER::GCC;
96 } else if constexpr (kCompiler == "Clang") {
97 return COMPILER::CLANG;
98 } else if constexpr (kCompiler == "MSVC") {
99 return COMPILER::MSVC;
100 }
101 return COMPILER::UNKNOWN;
102}
103std::string_view GetCompilerName() noexcept { return kCompiler; }
104
105std::string_view GetFrameworkName() noexcept { return kProjectName; }
106std::string_view GetFrameworkDescription() noexcept {
107 return kProjectDescription;
108}
109std::string_view GetFrameworkHomepage() noexcept { return kProjectHomepage; }
110std::string_view GetFrameworkCopyrightHolder() noexcept {
111 return kCopyrightHolder;
112}
113std::string_view GetFrameworkLicense() noexcept {
114 return "Boost Software License - Version 1.0";
115}
116std::string_view GetFrameworkLicenseText() noexcept { return kLicenseText; }
117} // namespace lumi::info
std::string_view GetFrameworkLicenseText() noexcept
Definition info.cpp:116
uint8_t GetVersionMajor() noexcept
Definition info.cpp:20
std::string_view GetFrameworkLicense() noexcept
Definition info.cpp:113
std::string_view GetCommitHash() noexcept
Definition info.cpp:67
PLATFORM GetPlatform() noexcept
Definition info.cpp:68
std::string_view GetCompilerName() noexcept
Definition info.cpp:103
COMPILER GetCompiler() noexcept
Definition info.cpp:93
std::string_view GetFrameworkCopyrightHolder() noexcept
Definition info.cpp:110
uint8_t GetBitness() noexcept
Definition info.cpp:92
bool IsDebugMode() noexcept
Definition info.cpp:58
VERSION_TAG GetVersionTag() noexcept
Definition info.cpp:24
std::string_view GetFrameworkName() noexcept
Definition info.cpp:105
std::string_view GetFrameworkDescription() noexcept
Definition info.cpp:106
uint8_t GetVersionPatch() noexcept
Definition info.cpp:22
uint8_t GetVersionMinor() noexcept
Definition info.cpp:21
std::string_view GetVersion(const bool include_tag) noexcept
Definition info.cpp:17
uint8_t GetVersionReleaseCandidate() noexcept
Definition info.cpp:41
ARCHITECTURE GetArchitecture() noexcept
Definition info.cpp:77
std::string_view GetFrameworkHomepage() noexcept
Definition info.cpp:109
BUILD_TYPE GetBuildType() noexcept
Definition info.cpp:45
PLATFORM
Definition info.cppm:30
ARCHITECTURE
Definition info.cppm:36
COMPILER
Definition info.cppm:43
VERSION_TAG
Definition info.cppm:15
BUILD_TYPE
Definition info.cppm:23