master-server/src/utils/parameters.cpp
2023-05-26 16:09:29 +02:00

93 lines
1.6 KiB
C++

#include <std_include.hpp>
#include "parameters.hpp"
#include "string.hpp"
namespace utils
{
parameters::parameters(std::string buffer)
{
while (!buffer.empty() && (buffer.back() == '\0' || isspace(buffer.back())))
{
buffer.pop_back();
}
this->arguments_ = string::split(buffer, ' ');
}
parameters::parameters(const std::string_view& buffer)
: parameters(std::string{buffer.data(), buffer.size()})
{
}
void parameters::add(std::string value)
{
this->arguments_.emplace_back(std::move(value));
}
size_t parameters::size() const
{
return this->arguments_.size();
}
const std::string& parameters::get(const size_t index) const
{
return this->arguments_.at(index);
}
std::string parameters::join(const size_t index, const std::string& separator) const
{
std::string buffer{};
for (auto i = index; i < this->size(); ++i)
{
if (i != 0)
{
buffer.append(separator);
}
buffer.append(this->get(i));
}
return buffer;
}
const std::string& parameters::operator[](const size_t index) const
{
return this->get(index);
}
parameters::list_type::iterator parameters::begin()
{
return this->arguments_.begin();
}
parameters::list_type::const_iterator parameters::begin() const
{
return this->arguments_.begin();
}
parameters::list_type::iterator parameters::end()
{
return this->arguments_.end();
}
parameters::list_type::const_iterator parameters::end() const
{
return this->arguments_.end();
}
bool parameters::has(const std::string& value) const
{
for (const auto& val : this->arguments_)
{
if (val == value)
{
return true;
}
}
return false;
}
}