TrinityCore
Loading...
Searching...
No Matches
CommonPredicates.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef TRINITY_COMMONPREDICATES_H
19#define TRINITY_COMMONPREDICATES_H
20
21#include "Define.h"
22#include <utility>
23
24class Unit;
25class WorldObject;
26
27namespace Trinity
28{
29 namespace Predicates
30 {
33 {
34 public:
35 IsVictimOf(Unit const* attacker);
36 bool operator()(WorldObject const* obj) const { return obj && (_victim == obj); }
37 private:
39 };
40
41 template <typename PRED>
43 {
44 public:
45 Inverter(PRED&& p) : _child(std::move(p)) { }
46
47 template <typename... Args>
48 bool operator()(Args&&... args)
49 {
50 return !_child(std::forward<Args>(args)...);
51 }
52
53 template <typename... Args>
54 bool operator()(Args&&... args) const
55 {
56 return !_child(std::forward<Args>(args)...);
57 }
58
59 private:
60 PRED _child;
61 };
62
63 template <typename PRED>
65 Inverter<PRED> Invert(PRED&& p) { return Inverter<PRED>(std::forward<PRED>(p)); }
66 }
67}
68
69#endif //TRINITY_COMMONPREDICATES_H
#define TC_GAME_API
Definition Define.h:114
bool operator()(Args &&... args)
bool operator()(Args &&... args) const
Only returns true for the given attacker's current victim, if any.
bool operator()(WorldObject const *obj) const
Definition Unit.h:769
Inverter< PRED > Invert(PRED &&p)
Inverts the given predicate to return the opposite result.
STL namespace.