diff --git a/src/common/Threading/MPSCQueue.h b/src/common/Threading/MPSCQueue.h index c4f95b80c5c..27afc822a4a 100644 --- a/src/common/Threading/MPSCQueue.h +++ b/src/common/Threading/MPSCQueue.h @@ -114,14 +114,14 @@ public: (_dummyPtr->*IntrusiveLink).~Atomic(); } - void Enqueue(T* input) + void Enqueue(T* input) noexcept { (input->*IntrusiveLink).store(nullptr, std::memory_order_release); T* prevHead = _head.exchange(input, std::memory_order_acq_rel); (prevHead->*IntrusiveLink).store(input, std::memory_order_release); } - bool Dequeue(T*& result) + bool Dequeue(T*& result) noexcept { T* tail = _tail.load(std::memory_order_relaxed); T* next = (tail->*IntrusiveLink).load(std::memory_order_acquire); diff --git a/src/server/database/Database/QueryResultStructured.h b/src/server/database/Database/QueryResultStructured.h index afd17edf5d6..043b4f2ff2e 100644 --- a/src/server/database/Database/QueryResultStructured.h +++ b/src/server/database/Database/QueryResultStructured.h @@ -45,7 +45,7 @@ BOOST_PP_SEQ_FOR_EACH(DEFINE_FIELD_ACCESSOR_CACHE_FIELD, ~, fields_list) \ struct_name(result_type const& result) : Fields(result.Fetch()), indexes(indexes_impl(result)) { }\ Field* Fields; \ - static Indexes const& indexes_impl(result_type const& result) { static Indexes const instance(result); return instance; }\ + static Indexes const& indexes_impl(result_type const& result) noexcept { static Indexes const instance(result); return instance; }\ Indexes const& indexes;\ } diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp index db24e13cb19..9e7b33d9033 100644 --- a/src/server/game/Spells/SpellScript.cpp +++ b/src/server/game/Spells/SpellScript.cpp @@ -102,7 +102,7 @@ std::string_view SpellScriptBase::GetScriptName() const } template -SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(T&& t) +SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(T&& t) noexcept { ::HookList::operator+=(std::move(t)); return *this; @@ -254,18 +254,18 @@ bool SpellScript::TargetHook::CheckEffect(SpellInfo const* spellInfo, uint8 effI return false; } -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::CastHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::CheckCastHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::EffectHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::BeforeHitHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::HitHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::OnCalcCritChanceHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::ObjectAreaTargetSelectHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::ObjectTargetSelectHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::DestinationTargetSelectHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::DamageAndHealingCalcHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::OnCalculateResistAbsorbHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::EmpowerStageCompletedHandler&& hook); +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::CastHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::CheckCastHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::EffectHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::BeforeHitHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::HitHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::OnCalcCritChanceHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::ObjectAreaTargetSelectHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::ObjectTargetSelectHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::DestinationTargetSelectHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::DamageAndHealingCalcHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::OnCalculateResistAbsorbHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(SpellScript::EmpowerStageCompletedHandler&& hook) noexcept; SpellScript::SpellScript() noexcept : m_spell(nullptr), m_hitPreventEffectMask(0), m_hitPreventDefaultEffectMask(0) { @@ -789,24 +789,24 @@ Difficulty SpellScript::GetCastDifficulty() const return m_spell->GetCastDifficulty(); } -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::CheckAreaTargetHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::AuraDispelHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::AuraHeartbeatHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectApplyHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectPeriodicHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectUpdatePeriodicHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectCalcAmountHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectCalcPeriodicHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectCalcSpellModHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectCalcCritChanceHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectCalcDamageAndHealingHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectAbsorbHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectAbsorbHealHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::CheckProcHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::CheckEffectProcHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::AuraProcHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectProcHandler&& hook); -template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EnterLeaveCombatHandler&& hook); +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::CheckAreaTargetHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::AuraDispelHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::AuraHeartbeatHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectApplyHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectPeriodicHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectUpdatePeriodicHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectCalcAmountHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectCalcPeriodicHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectCalcSpellModHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectCalcCritChanceHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectCalcDamageAndHealingHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectAbsorbHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectAbsorbHealHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::CheckProcHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::CheckEffectProcHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::AuraProcHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EffectProcHandler&& hook) noexcept; +template TC_GAME_API SpellScriptBase::HookList& SpellScriptBase::HookList::operator+=(AuraScript::EnterLeaveCombatHandler&& hook) noexcept; bool AuraScript::_Validate(SpellInfo const* entry) { diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h index b0314fdf1a5..8d30ec3486e 100644 --- a/src/server/game/Spells/SpellScript.h +++ b/src/server/game/Spells/SpellScript.h @@ -94,7 +94,7 @@ protected: class HookList : public ::HookList { public: - HookList& operator+=(T&& t); + HookList& operator+=(T&& t) noexcept; }; class TC_GAME_API EffectHook