~singpolyma/biboumi

ref: 020325dbb071f1735bceb80de9f982aefcd2de47 biboumi/src/irc/irc_channel.cpp -rw-r--r-- 1.1 KiB
020325db — Florent Le Coz [WIP] DummyIrcChannel 9 years ago
                                                                                
bf7b05ef Florent Le Coz
acf769d8 Florent Le Coz
bf7b05ef Florent Le Coz
acf769d8 Florent Le Coz
bf7b05ef Florent Le Coz
7c671499 Florent Le Coz
e840704b Florent Le Coz
7c671499 Florent Le Coz
020325db Florent Le Coz
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <irc/irc_channel.hpp>
#include <utils/make_unique.hpp>

IrcChannel::IrcChannel():
  joined(false),
  self(nullptr)
{
}

void IrcChannel::set_self(const std::string& name)
{
  this->self = std::make_unique<IrcUser>(name);
}

IrcUser* IrcChannel::add_user(const std::string& name,
                              const std::map<char, char> prefix_to_mode)
{
  this->users.emplace_back(std::make_unique<IrcUser>(name, prefix_to_mode));
  return this->users.back().get();
}

IrcUser* IrcChannel::get_self() const
{
  return this->self.get();
}

IrcUser* IrcChannel::find_user(const std::string& name) const
{
  IrcUser user(name);
  for (const auto& u: this->users)
    {
      if (u->nick == user.nick)
        return u.get();
    }
  return nullptr;
}

void IrcChannel::remove_user(const IrcUser* user)
{
  for (auto it = this->users.begin(); it != this->users.end(); ++it)
    {
      IrcUser* u = it->get();
      if (u->nick == user->nick)
        {
          this->users.erase(it);
          break ;
        }
    }
}

DummyIrcChannel::DummyIrcChannel():
  IrcChannel(),
  joining(false)
{
}