59 lines
1.3 KiB
C++
59 lines
1.3 KiB
C++
|
//
|
||
|
// Copyright (c) 2022 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
|
||
|
//
|
||
|
|
||
|
#ifndef BOOST_URL_DETAIL_ROUTER_HPP
|
||
|
#define BOOST_URL_DETAIL_ROUTER_HPP
|
||
|
|
||
|
#include <boost/url/pct_string_view.hpp>
|
||
|
#include <boost/url/segments_encoded_view.hpp>
|
||
|
#include <boost/url/grammar/delim_rule.hpp>
|
||
|
#include <boost/url/grammar/optional_rule.hpp>
|
||
|
#include <boost/url/grammar/range_rule.hpp>
|
||
|
#include <boost/url/grammar/tuple_rule.hpp>
|
||
|
#include <string>
|
||
|
|
||
|
namespace boost {
|
||
|
namespace urls {
|
||
|
namespace detail {
|
||
|
|
||
|
class router_base
|
||
|
{
|
||
|
void* impl_{nullptr};
|
||
|
|
||
|
public:
|
||
|
// A type-erased router resource
|
||
|
struct any_resource
|
||
|
{
|
||
|
virtual ~any_resource() = default;
|
||
|
virtual void const* get() const noexcept = 0;
|
||
|
};
|
||
|
|
||
|
protected:
|
||
|
router_base();
|
||
|
|
||
|
virtual ~router_base();
|
||
|
|
||
|
void
|
||
|
insert_impl(
|
||
|
core::string_view s,
|
||
|
any_resource const* v);
|
||
|
|
||
|
any_resource const*
|
||
|
find_impl(
|
||
|
segments_encoded_view path,
|
||
|
core::string_view*& matches,
|
||
|
core::string_view*& names) const noexcept;
|
||
|
};
|
||
|
|
||
|
} // detail
|
||
|
} // urls
|
||
|
} // boost
|
||
|
|
||
|
#endif
|