summaryrefslogtreecommitdiff
path: root/src/irc/irc_user.hpp
blob: a4291d43dca3379201ee3714baa7ae9f3bee7f74 (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
#pragma once


#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>& modes) const;

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