Files
UNSWebServerCore_LinuxSO/IPList.cpp
T
2026-06-30 17:49:51 +08:00

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;
}