7#include "semantic_version.hpp"
8#include "../strings.hpp"
12namespace hi::inline
v1 {
14inline std::optional<std::string> _application_name = std::nullopt;
15inline std::optional<std::string> _application_slug = std::nullopt;
16inline std::optional<std::string> _application_vendor = std::nullopt;
17inline std::optional<semantic_version> _application_version = std::nullopt;
19[[nodiscard]]
inline std::string const& get_application_name()
21 if (_application_name) {
22 return *_application_name;
24 throw std::logic_error(
"set_application_name() should be called at application startup.");
28[[nodiscard]]
inline std::string const& get_application_slug()
30 if (_application_slug) {
31 return *_application_slug;
33 throw std::logic_error(
"set_application_name() should be called at application startup.");
37[[nodiscard]]
inline std::string const& get_application_vendor()
39 if (_application_vendor) {
40 return *_application_vendor;
42 throw std::logic_error(
"set_application_vendor() should be called at application startup.");
46[[nodiscard]]
inline semantic_version
const& get_application_version()
48 if (_application_version) {
49 return *_application_version;
51 throw std::logic_error(
"set_application_version() should be called at application startup.");
55inline void set_application_name(std::string_view name, std::string_view slug)
60 if (name.contains(
'/') or name.contains(
'\\')) {
66 if (not is_slug(slug)) {
67 throw std::invalid_argument(
"application slug must contain only 'a'-'z' '0'-'9' and '-' characters.");
70 _application_name = name;
71 _application_slug = slug;
74inline void set_application_name(std::string_view name)
76 return set_application_name(name,
make_slug(name));
79inline void set_application_vendor(std::string_view name)
84 if (name.contains(
'/') or name.contains(
'\\')) {
88 _application_vendor = name;
91inline void set_application_version(semantic_version version)
noexcept
93 _application_version = version;
96inline void set_application_version(
int major,
int minor = 0,
int patch = 0) noexcept
98 return set_application_version(semantic_version{major, minor, patch});
DOXYGEN BUG.
Definition algorithm.hpp:13
constexpr std::string make_slug(std::string_view str) noexcept
Create a slug from a string.
Definition strings.hpp:251