99 lines
1.6 KiB
C++
99 lines
1.6 KiB
C++
|
//
|
||
|
// Copyright (c) 2023 Alan de Freitas (alandefreitas@gmail.com)
|
||
|
//
|
||
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||
|
//
|
||
|
// Official repository: https://github.com/boostorg/url
|
||
|
//
|
||
|
|
||
|
#include "../matches.hpp"
|
||
|
|
||
|
namespace boost {
|
||
|
namespace urls {
|
||
|
|
||
|
auto
|
||
|
matches_base::
|
||
|
at( size_type pos ) const
|
||
|
-> const_reference
|
||
|
{
|
||
|
if (pos < size())
|
||
|
{
|
||
|
return matches()[pos];
|
||
|
}
|
||
|
boost::throw_exception(
|
||
|
std::out_of_range(""));
|
||
|
}
|
||
|
|
||
|
auto
|
||
|
matches_base::
|
||
|
operator[]( size_type pos ) const
|
||
|
-> const_reference
|
||
|
{
|
||
|
BOOST_ASSERT(pos < size());
|
||
|
return matches()[pos];
|
||
|
}
|
||
|
|
||
|
auto
|
||
|
matches_base::
|
||
|
at( core::string_view id ) const
|
||
|
-> const_reference
|
||
|
{
|
||
|
for (std::size_t i = 0; i < size(); ++i)
|
||
|
{
|
||
|
if (ids()[i] == id)
|
||
|
return matches()[i];
|
||
|
}
|
||
|
boost::throw_exception(
|
||
|
std::out_of_range(""));
|
||
|
}
|
||
|
|
||
|
auto
|
||
|
matches_base::
|
||
|
operator[]( core::string_view id ) const
|
||
|
-> const_reference
|
||
|
{
|
||
|
return at(id);
|
||
|
}
|
||
|
|
||
|
auto
|
||
|
matches_base::
|
||
|
find( core::string_view id ) const
|
||
|
-> const_iterator
|
||
|
{
|
||
|
for (std::size_t i = 0; i < size(); ++i)
|
||
|
{
|
||
|
if (ids()[i] == id)
|
||
|
return matches() + i;
|
||
|
}
|
||
|
return matches() + size();
|
||
|
}
|
||
|
|
||
|
auto
|
||
|
matches_base::
|
||
|
begin() const
|
||
|
-> const_iterator
|
||
|
{
|
||
|
return &matches()[0];
|
||
|
}
|
||
|
|
||
|
auto
|
||
|
matches_base::
|
||
|
end() const
|
||
|
-> const_iterator
|
||
|
{
|
||
|
return &matches()[size()];
|
||
|
}
|
||
|
|
||
|
auto
|
||
|
matches_base::
|
||
|
empty() const noexcept
|
||
|
-> bool
|
||
|
{
|
||
|
return size() == 0;
|
||
|
}
|
||
|
|
||
|
} // urls
|
||
|
} // boost
|
||
|
|