~singpolyma/biboumi

ref: 7c1a38999c2eebfbd0939c9f8f8f864f10d9bc9a biboumi/src/irc/iid.cpp -rw-r--r-- 1.1 KiB
7c1a3899 — Florent Le Coz Rewrite the whole IID usage 8 years ago
                                                                                
7c1a3899 Florent Le Coz
bf7b05ef Florent Le Coz
7c1a3899 Florent Le Coz
bf7b05ef Florent Le Coz
7c1a3899 Florent Le Coz
bf7b05ef Florent Le Coz
7c1a3899 Florent Le Coz
bf7b05ef Florent Le Coz
7c1a3899 Florent Le Coz
bf7b05ef Florent Le Coz
a418b6ed Florent Le Coz
7c1a3899 Florent Le Coz
a418b6ed Florent Le Coz
7c1a3899 Florent Le Coz
a418b6ed 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
56
57
58
59
60
61
62
63
#include <utils/tolower.hpp>

#include <irc/iid.hpp>

Iid::Iid(const std::string& iid):
  is_channel(false),
  is_user(false)
{
  const std::string::size_type sep = iid.find_first_of("%!");
  if (sep != std::string::npos)
    {
      if (iid[sep] == '%')
        this->is_channel = true;
      else
        this->is_user = true;
      this->set_local(iid.substr(0, sep));
      this->set_server(iid.substr(sep + 1));
    }
  else
    this->set_server(iid);
}

Iid::Iid():
  is_channel(false),
  is_user(false)
{
}

void Iid::set_local(const std::string& loc)
{
  this->local = utils::tolower(loc);
}

void Iid::set_server(const std::string& serv)
{
  this->server = utils::tolower(serv);
}

const std::string& Iid::get_local() const
{
  return this->local;
}

const std::string& Iid::get_server() const
{
  return this->server;
}

std::string Iid::get_sep() const
{
  if (this->is_channel)
    return "%";
  else if (this->is_user)
    return "!";
  return "";
}

namespace std {
  const std::string to_string(const Iid& iid)
  {
    return iid.get_local() + iid.get_sep() + iid.get_server();
  }
}