From 1cec8df45e297a8136df6f293d4874ae6c6cb013 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Mon, 9 Mar 2015 13:48:41 +0000 Subject: ArrayView content is not const anymore As in upcoming std c++ array_view, ArrayView points to mutable data, use ArrayView or alias ConstArrayView for const data. --- src/array_view.hh | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) (limited to 'src/array_view.hh') diff --git a/src/array_view.hh b/src/array_view.hh index 4e3d7775..0d225fd6 100644 --- a/src/array_view.hh +++ b/src/array_view.hh @@ -3,6 +3,7 @@ #include #include +#include namespace Kakoune { @@ -18,42 +19,42 @@ public: constexpr ArrayView() : m_pointer(nullptr), m_size(0) {} - constexpr ArrayView(const T& oneval) + constexpr ArrayView(T& oneval) : m_pointer(&oneval), m_size(1) {} - constexpr ArrayView(const T* pointer, size_t size) + constexpr ArrayView(T* pointer, size_t size) : m_pointer(pointer), m_size(size) {} - constexpr ArrayView(const T* begin, const T* end) + constexpr ArrayView(T* begin, T* end) : m_pointer(begin), m_size(end - begin) {} template - constexpr ArrayView(const T(&array)[N]) : m_pointer(array), m_size(N) {} + constexpr ArrayView(T(&array)[N]) : m_pointer(array), m_size(N) {} template constexpr ArrayView(const Iterator& begin, const Iterator& end) : m_pointer(&(*begin)), m_size(end - begin) {} - template - constexpr ArrayView(const std::vector& v) + template + constexpr ArrayView(const std::vector& v) : m_pointer(&v[0]), m_size(v.size()) {} constexpr ArrayView(const std::initializer_list& v) : m_pointer(v.begin()), m_size(v.size()) {} - constexpr const T* pointer() const { return m_pointer; } + constexpr T* pointer() const { return m_pointer; } constexpr size_t size() const { return m_size; } - constexpr const T& operator[](size_t n) const { return *(m_pointer + n); } + constexpr T& operator[](size_t n) const { return *(m_pointer + n); } - constexpr const T* begin() const { return m_pointer; } - constexpr const T* end() const { return m_pointer+m_size; } + constexpr T* begin() const { return m_pointer; } + constexpr T* end() const { return m_pointer+m_size; } - using reverse_iterator = std::reverse_iterator; + using reverse_iterator = std::reverse_iterator; constexpr reverse_iterator rbegin() const { return reverse_iterator(m_pointer+m_size); } constexpr reverse_iterator rend() const { return reverse_iterator(m_pointer); } - constexpr const T& front() const { return *m_pointer; } - constexpr const T& back() const { return *(m_pointer + m_size - 1); } + constexpr T& front() const { return *m_pointer; } + constexpr T& back() const { return *(m_pointer + m_size - 1); } constexpr bool empty() const { return m_size == 0; } @@ -63,10 +64,13 @@ public: } private: - const T* m_pointer; + T* m_pointer; size_t m_size; }; +template +using ConstArrayView = ArrayView; + } #endif // array_view_hh_INCLUDED -- cgit v1.2.3