summaryrefslogtreecommitdiff
path: root/boost/beast/_experimental/unit_test/detail/const_container.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/beast/_experimental/unit_test/detail/const_container.hpp')
-rw-r--r--boost/beast/_experimental/unit_test/detail/const_container.hpp95
1 files changed, 95 insertions, 0 deletions
diff --git a/boost/beast/_experimental/unit_test/detail/const_container.hpp b/boost/beast/_experimental/unit_test/detail/const_container.hpp
new file mode 100644
index 0000000000..2f77912323
--- /dev/null
+++ b/boost/beast/_experimental/unit_test/detail/const_container.hpp
@@ -0,0 +1,95 @@
+//
+// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot 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/beast
+//
+
+#ifndef BOOST_BEAST_UNIT_TEST_DETAIL_CONST_CONTAINER_HPP
+#define BOOST_BEAST_UNIT_TEST_DETAIL_CONST_CONTAINER_HPP
+
+namespace boost {
+namespace beast {
+namespace unit_test {
+namespace detail {
+
+/** Adapter to constrain a container interface.
+ The interface allows for limited read only operations. Derived classes
+ provide additional behavior.
+*/
+template<class Container>
+class const_container
+{
+private:
+ using cont_type = Container;
+
+ cont_type m_cont;
+
+protected:
+ cont_type& cont()
+ {
+ return m_cont;
+ }
+
+ cont_type const& cont() const
+ {
+ return m_cont;
+ }
+
+public:
+ using value_type = typename cont_type::value_type;
+ using size_type = typename cont_type::size_type;
+ using difference_type = typename cont_type::difference_type;
+ using iterator = typename cont_type::const_iterator;
+ using const_iterator = typename cont_type::const_iterator;
+
+ /** Returns `true` if the container is empty. */
+ bool
+ empty() const
+ {
+ return m_cont.empty();
+ }
+
+ /** Returns the number of items in the container. */
+ size_type
+ size() const
+ {
+ return m_cont.size();
+ }
+
+ /** Returns forward iterators for traversal. */
+ /** @{ */
+ const_iterator
+ begin() const
+ {
+ return m_cont.cbegin();
+ }
+
+ const_iterator
+ cbegin() const
+ {
+ return m_cont.cbegin();
+ }
+
+ const_iterator
+ end() const
+ {
+ return m_cont.cend();
+ }
+
+ const_iterator
+ cend() const
+ {
+ return m_cont.cend();
+ }
+ /** @} */
+};
+
+} // detail
+} // unit_test
+} // beast
+} // boost
+
+#endif