107 lines
1.5 KiB
C++
107 lines
1.5 KiB
C++
#include "IPList.h"
|
|
#include <regex>
|
|
|
|
bool IPList::CheckIPv4(std::string ip)
|
|
{
|
|
std::regex v4("^(((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))$");
|
|
return std::regex_match(ip, v4);
|
|
}
|
|
|
|
IPList::IPList()
|
|
{
|
|
list.clear();
|
|
}
|
|
|
|
IPList::IPList(std::initializer_list<std::string> list)
|
|
{
|
|
for (const auto& ele : list)
|
|
this->list.insert(ele);
|
|
}
|
|
|
|
IPList::IPList(const IPList& obj)
|
|
{
|
|
for (const auto& ele : obj.list)
|
|
list.insert(ele);
|
|
}
|
|
|
|
bool IPList::Push(std::string ip)
|
|
{
|
|
if (!CheckIPv4(ip))
|
|
return false;
|
|
list.insert(ip);
|
|
return true;
|
|
}
|
|
|
|
bool IPList::Pop(std::string ip)
|
|
{
|
|
if (!Exist(ip))
|
|
return false;
|
|
list.erase(ip);
|
|
return false;
|
|
}
|
|
|
|
bool IPList::Exist(std::string ip)
|
|
{
|
|
return (list.find(ip) != list.end());
|
|
}
|
|
|
|
bool IPList::Exist(std::string ip) const
|
|
{
|
|
return (list.find(ip) != list.end());
|
|
}
|
|
|
|
bool IPList::Empty()
|
|
{
|
|
return list.empty();
|
|
}
|
|
|
|
size_t IPList::Size()
|
|
{
|
|
return list.size();
|
|
}
|
|
|
|
auto IPList::begin()
|
|
{
|
|
return list.begin();
|
|
}
|
|
|
|
auto IPList::end()
|
|
{
|
|
return list.end();
|
|
}
|
|
|
|
auto IPList::rbegin()
|
|
{
|
|
return list.rbegin();
|
|
}
|
|
|
|
auto IPList::rend()
|
|
{
|
|
return list.rend();
|
|
}
|
|
|
|
auto IPList::begin() const
|
|
{
|
|
return list.begin();
|
|
}
|
|
|
|
auto IPList::end() const
|
|
{
|
|
return list.end();
|
|
}
|
|
|
|
auto IPList::rbegin() const
|
|
{
|
|
return list.rbegin();
|
|
}
|
|
|
|
auto IPList::rend() const
|
|
{
|
|
return list.rend();
|
|
}
|
|
|
|
bool IPList::operator<(const IPList& obj) const
|
|
{
|
|
return list < obj.list;
|
|
}
|