Skip to content

Commit 5932aad

Browse files
committed
Refactor Typedefs to core path
1 parent d8276ba commit 5932aad

34 files changed

+114
-109
lines changed

src/openvic-simulation/utility/Typedefs.hpp renamed to src/openvic-simulation/core/Typedefs.hpp

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
#pragma once
22

3+
#include <array>
4+
#include <string_view>
5+
#include <utility>
6+
37
#if defined(__GNUC__)
48
#define OV_likely(x) __builtin_expect(!!(x), 1)
59
#define OV_unlikely(x) __builtin_expect(!!(x), 0)
@@ -44,6 +48,49 @@
4448
#endif // OV_NO_UNIQUE_ADDRESS
4549

4650
namespace OpenVic {
51+
template<std::size_t... Idxs>
52+
constexpr auto substring_as_array(std::string_view str, std::index_sequence<Idxs...>) {
53+
return std::array { str[Idxs]... };
54+
}
55+
56+
template<typename T>
57+
constexpr auto type_name_array() {
58+
#if defined(__clang__)
59+
constexpr auto prefix = std::string_view { "[T = " };
60+
constexpr auto suffix = std::string_view { "]" };
61+
constexpr auto function = std::string_view { __PRETTY_FUNCTION__ };
62+
#elif defined(__GNUC__)
63+
constexpr auto prefix = std::string_view { "with T = " };
64+
constexpr auto suffix = std::string_view { "]" };
65+
constexpr auto function = std::string_view { __PRETTY_FUNCTION__ };
66+
#elif defined(_MSC_VER)
67+
constexpr auto prefix = std::string_view { "type_name_array<" };
68+
constexpr auto suffix = std::string_view { ">(void)" };
69+
constexpr auto function = std::string_view { __FUNCSIG__ };
70+
#else
71+
#error Unsupported compiler
72+
#endif
73+
74+
constexpr auto start = function.find(prefix) + prefix.size();
75+
constexpr auto end = function.rfind(suffix);
76+
77+
static_assert(start < end);
78+
79+
constexpr auto name = function.substr(start, (end - start));
80+
return substring_as_array(name, std::make_index_sequence<name.size()> {});
81+
}
82+
83+
template<typename T>
84+
struct type_name_holder {
85+
static inline constexpr auto value = type_name_array<T>();
86+
};
87+
88+
template<typename T>
89+
constexpr auto type_name() -> std::string_view {
90+
constexpr auto& value = type_name_holder<T>::value;
91+
return std::string_view { value.data(), value.size() };
92+
}
93+
4794
[[noreturn]] inline void unreachable() {
4895
// Uses compiler specific extensions if possible.
4996
// Even if no extension is used, undefined behavior is still raised by

src/openvic-simulation/core/error/ErrorMacros.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

33
#include "openvic-simulation/utility/Logger.hpp" // IWYU pragma: keep for loggers
4-
#include "openvic-simulation/utility/Typedefs.hpp" // IWYU pragma: keep for macros
4+
#include "openvic-simulation/core/Typedefs.hpp" // IWYU pragma: keep for macros
55

66
/**
77
* Try using `OV_ERR_FAIL_COND_MSG`.

src/openvic-simulation/country/CountryInstance.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
#include "openvic-simulation/types/UnitBranchType.hpp"
4747
#include "openvic-simulation/utility/Containers.hpp"
4848
#include "openvic-simulation/utility/Logger.hpp"
49-
#include "openvic-simulation/utility/Typedefs.hpp"
49+
#include "openvic-simulation/core/Typedefs.hpp"
5050

5151
using namespace OpenVic;
5252

src/openvic-simulation/economy/production/ArtisanalProducer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#include "openvic-simulation/population/PopValuesFromProvince.hpp"
1919
#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
2020
#include "openvic-simulation/utility/RandomGenerator.hpp"
21-
#include "openvic-simulation/utility/Typedefs.hpp"
21+
#include "openvic-simulation/core/Typedefs.hpp"
2222
#include "openvic-simulation/utility/WeightedSampling.hpp"
2323

2424
using namespace OpenVic;

src/openvic-simulation/economy/trading/MarketInstance.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
99
#include "openvic-simulation/utility/Containers.hpp"
1010
#include "openvic-simulation/utility/ThreadPool.hpp"
11-
#include "openvic-simulation/utility/Typedefs.hpp"
11+
#include "openvic-simulation/core/Typedefs.hpp"
1212

1313
using namespace OpenVic;
1414

src/openvic-simulation/map/MapDefinition.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#include "openvic-simulation/utility/FormatValidate.hpp"
2929
#include "openvic-simulation/utility/Logger.hpp"
3030
#include "openvic-simulation/utility/StringUtils.hpp"
31-
#include "openvic-simulation/utility/Typedefs.hpp"
31+
#include "openvic-simulation/core/Typedefs.hpp"
3232
#include "openvic-simulation/utility/Containers.hpp"
3333

3434
using namespace OpenVic;

src/openvic-simulation/misc/GameAction.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "openvic-simulation/DefinitionManager.hpp"
44
#include "openvic-simulation/InstanceManager.hpp"
5-
#include "openvic-simulation/utility/Typedefs.hpp"
5+
#include "openvic-simulation/core/Typedefs.hpp"
66

77
using namespace OpenVic;
88

src/openvic-simulation/misc/GameRulesManager.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include <cstdint>
44

55
#include "openvic-simulation/utility/Getters.hpp"
6-
#include "openvic-simulation/utility/Typedefs.hpp"
6+
#include "openvic-simulation/core/Typedefs.hpp"
77

88
namespace OpenVic {
99
struct ProvinceInstance;

src/openvic-simulation/pathfinding/AStarPathing.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#include "openvic-simulation/pathfinding/PointMap.hpp"
1717
#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
1818
#include "openvic-simulation/utility/Containers.hpp"
19-
#include "openvic-simulation/utility/Typedefs.hpp"
19+
#include "openvic-simulation/core/Typedefs.hpp"
2020

2121
using namespace OpenVic;
2222

src/openvic-simulation/pathfinding/PointMap.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include "openvic-simulation/core/error/ErrorMacros.hpp"
1515
#include "openvic-simulation/types/Vector.hpp"
1616
#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
17-
#include "openvic-simulation/utility/Typedefs.hpp"
17+
#include "openvic-simulation/core/Typedefs.hpp"
1818

1919
using namespace OpenVic;
2020

0 commit comments

Comments
 (0)