summaryrefslogtreecommitdiff
path: root/src/irc/irc_user.hpp
blob: 4b6cd7a3617ddb9b7a3b92397115cd2ee7c1d2da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef IRC_USER_INCLUDED
# define IRC_USER_INCLUDED

#include <vector>
#include <string>
#include <map>
#include <set>

/**
 * Keeps various information about one IRC channel user
 */
class IrcUser
{
public:
  explicit IrcUser(const std::string& name,
                   const std::map<char, char>& prefix_to_mode);
  explicit IrcUser(const std::string& name);

  IrcUser(const IrcUser&) = delete;
  IrcUser(IrcUser&&) = delete;
  IrcUser& operator=(const IrcUser&) = delete;
  IrcUser& operator=(IrcUser&&) = delete;

  void add_mode(const char mode);
  void remove_mode(const char mode);
  char get_most_significant_mode(const std::vector<char>& sorted_user_modes) const;

  std::string nick;
  std::string host;
  std::set<char> modes;
};

#endif // IRC_USER_INCLUDED