From fd9206584f91da19a5bc693b53ea8aa76f31092e Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Thu, 3 Apr 2014 14:02:26 -0400 Subject: [PATCH] Sub in std::array for boost::array and beast::FixedArray --- Builds/VisualStudio2013/beast.vcxproj | 1 - Builds/VisualStudio2013/beast.vcxproj.filters | 3 - beast/FixedArray.h | 166 ------------------ beast/container/hash_append.h | 41 ----- modules/beast_asio/basics/FixedInputBuffer.h | 3 +- 5 files changed, 2 insertions(+), 212 deletions(-) delete mode 100644 beast/FixedArray.h diff --git a/Builds/VisualStudio2013/beast.vcxproj b/Builds/VisualStudio2013/beast.vcxproj index b104bb7b51..8ab2ece8df 100644 --- a/Builds/VisualStudio2013/beast.vcxproj +++ b/Builds/VisualStudio2013/beast.vcxproj @@ -147,7 +147,6 @@ - diff --git a/Builds/VisualStudio2013/beast.vcxproj.filters b/Builds/VisualStudio2013/beast.vcxproj.filters index c827959fec..d5bc57a8e5 100644 --- a/Builds/VisualStudio2013/beast.vcxproj.filters +++ b/Builds/VisualStudio2013/beast.vcxproj.filters @@ -735,9 +735,6 @@ beast\http - - beast - beast diff --git a/beast/FixedArray.h b/beast/FixedArray.h deleted file mode 100644 index c82062f8ac..0000000000 --- a/beast/FixedArray.h +++ /dev/null @@ -1,166 +0,0 @@ -//------------------------------------------------------------------------------ -/* - This file is part of Beast: https://github.com/vinniefalco/Beast - Copyright 2013, Vinnie Falco - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ -//============================================================================== - -#ifndef BEAST_FIXEDARRAY_H_INCLUDED -#define BEAST_FIXEDARRAY_H_INCLUDED - -#include "Config.h" - -#include -#include -#include - -namespace beast { - -// Ideas from Boost - -/** An array whose size is determined at compile-time. - The interface tries to follow std::vector as closely as possible within - the limitations of having a fixed size. -*/ -template -class FixedArray -{ -public: - T values [N]; - - typedef T value_type; - typedef T* iterator; - typedef T const* const_iterator; - typedef T& reference; - typedef T const& const_reference; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - - // iterators - iterator begin() { return values; } - const_iterator begin() const { return values; } - const_iterator cbegin() const { return values; } - iterator end() { return values+N; } - const_iterator end() const { return values+N; } - const_iterator cend() const { return values+N; } - - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - const_reverse_iterator crbegin() const { return const_reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - const_reverse_iterator crend() const { return const_reverse_iterator(begin()); } - - reference operator[](size_type i) - { - bassert (i < N); - return values[i]; - } - - const_reference operator[](size_type i) const - { - bassert (i < N); - return values[i]; - } - - reference at(size_type i) { rangecheck(i); return values[i]; } - const_reference at(size_type i) const { rangecheck(i); return values[i]; } - - reference front() { return values[0]; } - reference back() { return values[N-1]; } - const_reference front () const { return values[0]; } - const_reference back() const { return values[N-1]; } - - static size_type size() { return N; } - static bool empty() { return false; } - static size_type max_size() { return N; } - - enum { static_size = N }; - - T const* data() const { return values; } - T* data() { return values; } - T* c_array() { return values; } - - template - FixedArray& operator= (FixedArray const& rhs) - { - std::copy (rhs.begin(), rhs.end(), begin()); - return *this; - } - - void assign (T const& value) { fill (value); } - - void fill (T const& value) - { - std::fill_n (begin(), size(), value); - } - - void clear () - { - fill (T ()); - } - - static void rangecheck (size_type i) - { - if (i >= size()) - throw std::out_of_range ("FixedArray<>: index out of range"); - } -}; - -//------------------------------------------------------------------------------ - -template -bool operator== (FixedArray const& lhs, FixedArray const& rhs) -{ - return std::equal (lhs.begin(), lhs.end(), rhs.begin()); -} - -template -bool operator!= (FixedArray const& lhs, FixedArray const& rhs) -{ - return !(lhs==rhs); -} - -template -bool operator< (FixedArray const& lhs, FixedArray const& rhs) -{ - return std::lexicographical_compare ( - lhs.begin(), lhs.end(), rhs.begin(), rhs.end()); -} - -template -bool operator> (FixedArray const& lhs, FixedArray const& rhs) -{ - return rhs -bool operator<= (FixedArray const& lhs, FixedArray const& rhs) -{ - return !(rhs -bool operator>= (FixedArray const& lhs, FixedArray const& rhs) -{ - return !(lhs #include #endif @@ -155,17 +154,6 @@ struct is_contiguously_hashable > }; #endif -// boost::array -template -struct is_contiguously_hashable > - : public std::integral_constant ::value && - sizeof(T)*N == sizeof(boost::array)> -{ -}; - -static_assert (is_contiguously_hashable >::value, ""); - #endif // BEAST_USE_BOOST_FEATURES /** @} */ @@ -302,17 +290,6 @@ typename std::enable_if >::type hash_append (Hasher& h, std::array const& a) noexcept; -#if BEAST_USE_BOOST_FEATURES - -template -typename std::enable_if -< - !is_contiguously_hashable>::value ->::type -hash_append (Hasher& h, boost::array const& a) noexcept; - -#endif // BEAST_USE_BOOST_FEATURES - // std::tuple template @@ -953,24 +930,6 @@ hash_append (Hasher& h, std::vector const& v) noexcept h.append (v.data(), v.size()*sizeof(T)); } -#if BEAST_USE_BOOST_FEATURES - -// boost::array - -template -inline -std::enable_if_t -< - !is_contiguously_hashable::value -> -hash_append (Hasher& h, boost::array const& v) noexcept -{ - for (auto const& t : v) - hash_append (h, t); -} - -#endif // BEAST_USE_BOOST_FEATURES - template inline void diff --git a/modules/beast_asio/basics/FixedInputBuffer.h b/modules/beast_asio/basics/FixedInputBuffer.h index 96dbca2bb3..44da38a545 100644 --- a/modules/beast_asio/basics/FixedInputBuffer.h +++ b/modules/beast_asio/basics/FixedInputBuffer.h @@ -21,6 +21,7 @@ #define BEAST_ASIO_BASICS_FIXEDINPUTBUFFER_H_INCLUDED #include "../../../beast/asio/buffer_sequence.h" +#include namespace beast { namespace asio { @@ -191,7 +192,7 @@ public: } private: - boost::array m_storage; + std::array m_storage; boost::asio::mutable_buffer m_buffer; };