mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 22:55:41 +00:00
Mark action point distance helpers nodiscard (#8040)
* Mark action point distance helpers nodiscard * Allow APD cache warmup calls
This commit is contained in:
+10
-8
@@ -43,7 +43,7 @@ protected:
|
||||
const std::shared_ptr<BraveableTileInfo> &braveWaterPossibleCoords,
|
||||
const std::vector<Coords> &indexToCoords,
|
||||
const std::vector<std::array<int, 6>> &adjacencyTable);
|
||||
static auto GenerateDistances(
|
||||
[[nodiscard]] static auto GenerateDistances(
|
||||
int fromIndex,
|
||||
const HexMap *hexMap,
|
||||
bool includeBravingWater,
|
||||
@@ -51,13 +51,15 @@ protected:
|
||||
const BattalionTypeSPtr &battalionType,
|
||||
const std::shared_ptr<BraveableTileInfo> &braveWaterPossibleCoords)
|
||||
-> std::vector<DIST_T>;
|
||||
auto BraveWaterPossibleCoords(const HexMap *hexMap) const -> std::shared_ptr<BraveableTileInfo>;
|
||||
[[nodiscard]] auto BraveWaterPossibleCoords(const HexMap *hexMap) const
|
||||
-> std::shared_ptr<BraveableTileInfo>;
|
||||
|
||||
// Create coordinate lookup table for efficient index->coords conversion
|
||||
static auto CreateIndexToCoords(const HexMap *hexMap) -> std::vector<Coords>;
|
||||
[[nodiscard]] static auto CreateIndexToCoords(const HexMap *hexMap) -> std::vector<Coords>;
|
||||
|
||||
// Create adjacency lookup table for efficient neighbor access
|
||||
static auto CreateAdjacencyTable(const HexMap *hexMap) -> std::vector<std::array<int, 6>>;
|
||||
[[nodiscard]] static auto CreateAdjacencyTable(const HexMap *hexMap)
|
||||
-> std::vector<std::array<int, 6>>;
|
||||
|
||||
[[nodiscard]] auto ToIndex(const Coords &coords) const -> int {
|
||||
return coords.row() * column_count + coords.column();
|
||||
@@ -70,9 +72,9 @@ public:
|
||||
|
||||
virtual ~ActionPointDistances() = default;
|
||||
|
||||
virtual auto Distance(int fromIndex, int toIndex) const -> DIST_T = 0;
|
||||
[[nodiscard]] virtual auto Distance(int fromIndex, int toIndex) const -> DIST_T = 0;
|
||||
|
||||
virtual auto Distance(const Coords &from, const Coords &to) const -> DIST_T = 0;
|
||||
[[nodiscard]] virtual auto Distance(const Coords &from, const Coords &to) const -> DIST_T = 0;
|
||||
};
|
||||
|
||||
class OnDemandActionPointDistances final : public ActionPointDistances {
|
||||
@@ -91,11 +93,11 @@ public:
|
||||
|
||||
~OnDemandActionPointDistances() override = default;
|
||||
|
||||
auto Distance(const int fromIndex, const int toIndex) const -> int16_t override {
|
||||
[[nodiscard]] auto Distance(const int fromIndex, const int toIndex) const -> int16_t override {
|
||||
return distances[fromIndex].get()[toIndex];
|
||||
}
|
||||
|
||||
auto Distance(const Coords &from, const Coords &to) const -> int16_t override {
|
||||
[[nodiscard]] auto Distance(const Coords &from, const Coords &to) const -> int16_t override {
|
||||
return Distance(ToIndex(from), ToIndex(to));
|
||||
}
|
||||
};
|
||||
|
||||
+6
-6
@@ -22,7 +22,7 @@ struct MapId {
|
||||
uint64_t terrainTypesId;
|
||||
uint64_t modifierId;
|
||||
|
||||
auto operator==(const MapId& other) const -> bool {
|
||||
[[nodiscard]] auto operator==(const MapId& other) const -> bool {
|
||||
return terrainTypesId == other.terrainTypesId && modifierId == other.modifierId;
|
||||
}
|
||||
};
|
||||
@@ -34,7 +34,7 @@ struct FullCacheKey {
|
||||
bool includeBravingWater;
|
||||
int braveWaterCost;
|
||||
|
||||
bool operator==(const FullCacheKey& other) const {
|
||||
[[nodiscard]] bool operator==(const FullCacheKey& other) const {
|
||||
return mapId == other.mapId && battalionTypeId == other.battalionTypeId &&
|
||||
includeBravingWater == other.includeBravingWater &&
|
||||
braveWaterCost == other.braveWaterCost;
|
||||
@@ -43,7 +43,7 @@ struct FullCacheKey {
|
||||
|
||||
// Hash function for FullCacheKey
|
||||
struct FullCacheKeyHash {
|
||||
size_t operator()(const FullCacheKey& key) const {
|
||||
[[nodiscard]] size_t operator()(const FullCacheKey& key) const {
|
||||
// Pack small fields into a single 64-bit value
|
||||
uint64_t packed = (static_cast<uint64_t>(key.battalionTypeId) << 32) |
|
||||
(static_cast<uint64_t>(key.braveWaterCost) << 1) |
|
||||
@@ -85,7 +85,7 @@ private:
|
||||
// Epoch system removed - TLS cache uses size-based eviction instead
|
||||
|
||||
// Helper to build cache key
|
||||
static auto MakeCacheKey(
|
||||
[[nodiscard]] static auto MakeCacheKey(
|
||||
const MapId& mapId,
|
||||
const BattalionTypeSPtr& battalionType,
|
||||
bool includeBravingWater,
|
||||
@@ -107,7 +107,7 @@ public:
|
||||
bool includeBravingWater,
|
||||
int braveWaterActionPointCost = -1) -> const ActionPointDistances*;
|
||||
|
||||
static auto GetMapId(const HexMap* map) -> MapId;
|
||||
[[nodiscard]] static auto GetMapId(const HexMap* map) -> MapId;
|
||||
|
||||
// Consolidate the thread-safe cache into the persistent cache and clear
|
||||
// the current thread's local cache. This is only safe if we know reads
|
||||
@@ -116,7 +116,7 @@ public:
|
||||
|
||||
// Cache management methods
|
||||
static void ClearThreadLocalCache();
|
||||
static size_t GetThreadLocalCacheSize();
|
||||
[[nodiscard]] static size_t GetThreadLocalCacheSize();
|
||||
};
|
||||
|
||||
using APDCache = std::shared_ptr<ActionPointDistancesCache>;
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ private:
|
||||
|
||||
public:
|
||||
// Factory method to create FixedActionPointDistances
|
||||
static auto Create(
|
||||
[[nodiscard]] static auto Create(
|
||||
const HexMap *map,
|
||||
const BattalionTypeSPtr &battalionType,
|
||||
bool includeBravingWater,
|
||||
|
||||
Reference in New Issue
Block a user