Thunderbots Project
Loading...
Searching...
No Matches
robot_capabilities.h
1#pragma once
2
3#include <algorithm>
4#include <set>
5
6#include "software/util/make_enum/make_enum.hpp"
7
8MAKE_ENUM(RobotCapability, Dribble, Kick, Chip, Move);
9
14inline std::set<RobotCapability> allRobotCapabilities()
15{
16 return {RobotCapability::Dribble, RobotCapability::Kick, RobotCapability::Chip,
17 RobotCapability::Move};
18}
19
20// utility operators below for comparing capabilities
21
29template <typename T>
30inline bool operator<=(const std::set<T>& lhs, const std::set<T>& rhs)
31{
32 return std::includes(rhs.begin(), rhs.end(), lhs.begin(), lhs.end());
33}
34
42template <typename T>
43inline bool operator>=(const std::set<T>& lhs, const std::set<T>& rhs)
44{
45 return std::includes(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
46}