From b58301849b69ce2d6c9c5a12d335f09b6116f175 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Sat, 18 Nov 2023 19:43:11 +0200 Subject: [PATCH] Pass functor via reference to avoid costly copies --- AI/BattleAI/StackWithBonuses.cpp | 2 +- AI/BattleAI/StackWithBonuses.h | 2 +- lib/battle/BattleInfo.cpp | 4 ++-- lib/battle/BattleInfo.h | 4 ++-- lib/battle/BattleProxy.cpp | 4 ++-- lib/battle/BattleProxy.h | 4 ++-- lib/battle/CBattleInfoEssentials.cpp | 4 ++-- lib/battle/CBattleInfoEssentials.h | 4 ++-- lib/battle/IBattleInfoCallback.h | 2 +- lib/battle/IBattleState.h | 4 ++-- 10 files changed, 17 insertions(+), 17 deletions(-) diff --git a/AI/BattleAI/StackWithBonuses.cpp b/AI/BattleAI/StackWithBonuses.cpp index 7beabf514..21246b515 100644 --- a/AI/BattleAI/StackWithBonuses.cpp +++ b/AI/BattleAI/StackWithBonuses.cpp @@ -298,7 +298,7 @@ std::shared_ptr HypotheticBattle::getForUpdate(uint32_t id) } } -battle::Units HypotheticBattle::getUnitsIf(battle::UnitFilter predicate) const +battle::Units HypotheticBattle::getUnitsIf(const battle::UnitFilter & predicate) const { battle::Units proxyed = BattleProxy::getUnitsIf(predicate); diff --git a/AI/BattleAI/StackWithBonuses.h b/AI/BattleAI/StackWithBonuses.h index a69bbb887..6a50f6f84 100644 --- a/AI/BattleAI/StackWithBonuses.h +++ b/AI/BattleAI/StackWithBonuses.h @@ -114,7 +114,7 @@ public: int32_t getActiveStackID() const override; - battle::Units getUnitsIf(battle::UnitFilter predicate) const override; + battle::Units getUnitsIf(const battle::UnitFilter & predicate) const override; void nextRound() override; void nextTurn(uint32_t unitId) override; diff --git a/lib/battle/BattleInfo.cpp b/lib/battle/BattleInfo.cpp index fcccfafe2..6db67eab8 100644 --- a/lib/battle/BattleInfo.cpp +++ b/lib/battle/BattleInfo.cpp @@ -562,14 +562,14 @@ int32_t BattleInfo::getActiveStackID() const return activeStack; } -TStacks BattleInfo::getStacksIf(TStackFilter predicate) const +TStacks BattleInfo::getStacksIf(const TStackFilter & predicate) const { TStacks ret; vstd::copy_if(stacks, std::back_inserter(ret), predicate); return ret; } -battle::Units BattleInfo::getUnitsIf(battle::UnitFilter predicate) const +battle::Units BattleInfo::getUnitsIf(const battle::UnitFilter & predicate) const { battle::Units ret; vstd::copy_if(stacks, std::back_inserter(ret), predicate); diff --git a/lib/battle/BattleInfo.h b/lib/battle/BattleInfo.h index 030f56051..3b892c680 100644 --- a/lib/battle/BattleInfo.h +++ b/lib/battle/BattleInfo.h @@ -85,9 +85,9 @@ public: int32_t getActiveStackID() const override; - TStacks getStacksIf(TStackFilter predicate) const override; + TStacks getStacksIf(const TStackFilter & predicate) const override; - battle::Units getUnitsIf(battle::UnitFilter predicate) const override; + battle::Units getUnitsIf(const battle::UnitFilter & predicate) const override; BattleField getBattlefieldType() const override; TerrainId getTerrainType() const override; diff --git a/lib/battle/BattleProxy.cpp b/lib/battle/BattleProxy.cpp index 9ec4339d4..6bc34a77e 100644 --- a/lib/battle/BattleProxy.cpp +++ b/lib/battle/BattleProxy.cpp @@ -40,12 +40,12 @@ int32_t BattleProxy::getActiveStackID() const return -1; } -TStacks BattleProxy::getStacksIf(TStackFilter predicate) const +TStacks BattleProxy::getStacksIf(const TStackFilter & predicate) const { return subject->battleGetStacksIf(predicate); } -battle::Units BattleProxy::getUnitsIf(battle::UnitFilter predicate) const +battle::Units BattleProxy::getUnitsIf(const battle::UnitFilter & predicate) const { return subject->battleGetUnitsIf(predicate); } diff --git a/lib/battle/BattleProxy.h b/lib/battle/BattleProxy.h index d52d4231e..c43ede14d 100644 --- a/lib/battle/BattleProxy.h +++ b/lib/battle/BattleProxy.h @@ -29,9 +29,9 @@ public: int32_t getActiveStackID() const override; - TStacks getStacksIf(TStackFilter predicate) const override; + TStacks getStacksIf(const TStackFilter & predicate) const override; - battle::Units getUnitsIf(battle::UnitFilter predicate) const override; + battle::Units getUnitsIf(const battle::UnitFilter & predicate) const override; BattleField getBattlefieldType() const override; TerrainId getTerrainType() const override; diff --git a/lib/battle/CBattleInfoEssentials.cpp b/lib/battle/CBattleInfoEssentials.cpp index c113dddef..2b69caa29 100644 --- a/lib/battle/CBattleInfoEssentials.cpp +++ b/lib/battle/CBattleInfoEssentials.cpp @@ -109,13 +109,13 @@ TStacks CBattleInfoEssentials::battleGetAllStacks(bool includeTurrets) const }); } -TStacks CBattleInfoEssentials::battleGetStacksIf(TStackFilter predicate) const +TStacks CBattleInfoEssentials::battleGetStacksIf(const TStackFilter & predicate) const { RETURN_IF_NOT_BATTLE(TStacks()); return getBattle()->getStacksIf(std::move(predicate)); } -battle::Units CBattleInfoEssentials::battleGetUnitsIf(battle::UnitFilter predicate) const +battle::Units CBattleInfoEssentials::battleGetUnitsIf(const battle::UnitFilter & predicate) const { RETURN_IF_NOT_BATTLE(battle::Units()); return getBattle()->getUnitsIf(predicate); diff --git a/lib/battle/CBattleInfoEssentials.h b/lib/battle/CBattleInfoEssentials.h index 0dc3cab1b..f19563a5d 100644 --- a/lib/battle/CBattleInfoEssentials.h +++ b/lib/battle/CBattleInfoEssentials.h @@ -62,8 +62,8 @@ public: * @return filtered stacks * */ - TStacks battleGetStacksIf(TStackFilter predicate) const; //deprecated - battle::Units battleGetUnitsIf(battle::UnitFilter predicate) const override; + TStacks battleGetStacksIf(const TStackFilter & predicate) const; //deprecated + battle::Units battleGetUnitsIf(const battle::UnitFilter & predicate) const override; const battle::Unit * battleGetUnitByID(uint32_t ID) const override; const battle::Unit * battleActiveUnit() const override; diff --git a/lib/battle/IBattleInfoCallback.h b/lib/battle/IBattleInfoCallback.h index 5996d5bda..6ee05b2f6 100644 --- a/lib/battle/IBattleInfoCallback.h +++ b/lib/battle/IBattleInfoCallback.h @@ -72,7 +72,7 @@ public: virtual uint32_t battleNextUnitId() const = 0; - virtual battle::Units battleGetUnitsIf(battle::UnitFilter predicate) const = 0; + virtual battle::Units battleGetUnitsIf(const battle::UnitFilter & predicate) const = 0; virtual const battle::Unit * battleGetUnitByID(uint32_t ID) const = 0; virtual const battle::Unit * battleGetUnitByPos(BattleHex pos, bool onlyAlive = true) const = 0; diff --git a/lib/battle/IBattleState.h b/lib/battle/IBattleState.h index 8af3ad429..fd643c56c 100644 --- a/lib/battle/IBattleState.h +++ b/lib/battle/IBattleState.h @@ -42,9 +42,9 @@ public: virtual int32_t getActiveStackID() const = 0; - virtual TStacks getStacksIf(TStackFilter predicate) const = 0; + virtual TStacks getStacksIf(const TStackFilter & predicate) const = 0; - virtual battle::Units getUnitsIf(battle::UnitFilter predicate) const = 0; + virtual battle::Units getUnitsIf(const battle::UnitFilter & predicate) const = 0; virtual BattleField getBattlefieldType() const = 0; virtual TerrainId getTerrainType() const = 0;