aboutsummaryrefslogtreecommitdiff
path: root/libbutl/vector-view.mxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2021-09-28 19:24:31 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2021-09-28 20:29:59 +0300
commitdf1ef68cd8e8582724ce1192bfc202e0b9aeaf0c (patch)
treeb731ca4c68e60c00c7e7d499dbf4868ee7b71f44 /libbutl/vector-view.mxx
parent7a4fc37f264cdb67f2f83fa92703c869215bbc86 (diff)
Get rid of C++ modules related code and rename *.mxx files to *.hxx
Diffstat (limited to 'libbutl/vector-view.mxx')
-rw-r--r--libbutl/vector-view.mxx133
1 files changed, 0 insertions, 133 deletions
diff --git a/libbutl/vector-view.mxx b/libbutl/vector-view.mxx
deleted file mode 100644
index 7924371..0000000
--- a/libbutl/vector-view.mxx
+++ /dev/null
@@ -1,133 +0,0 @@
-// file : libbutl/vector-view.mxx -*- C++ -*-
-// license : MIT; see accompanying LICENSE file
-
-#ifndef __cpp_modules_ts
-#pragma once
-#endif
-
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
-#include <vector>
-#include <cstddef> // size_t, ptrdiff_t
-#include <utility> // swap()
-#include <iterator> // reverse_iterator
-#include <stdexcept> // out_of_range
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.vector_view;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
-
-#include <libbutl/export.hxx>
-
-LIBBUTL_MODEXPORT namespace butl
-{
- // In our version a const view allows the modification of the elements
- // unless T is made const (the same semantics as in smart pointers).
- //
- // @@ If T is const T1, could be useful to have a c-tor from vector<T1>.
- //
- template <typename T>
- class vector_view
- {
- public:
- using value_type = T;
- using pointer = T*;
- using reference = T&;
- using const_pointer = const T*;
- using const_reference = const T&;
- using size_type = std::size_t;
- using difference_type = std::ptrdiff_t;
-
- using iterator = T*;
- using const_iterator = const T*;
- using reverse_iterator = std::reverse_iterator<iterator>;
- using const_reverse_iterator = std::reverse_iterator<const_iterator>;
-
- // construct/copy/destroy:
- //
- vector_view (): data_ (nullptr), size_ (0) {}
- vector_view (T* d, size_type s): data_ (d), size_ (s) {}
-
- template <typename T1, typename A>
- vector_view (std::vector<T1, A>& v)
- : data_ (v.data ()), size_ (v.size ()) {}
-
- template <typename T1, typename A>
- vector_view (const std::vector<T1, A>& v)
- : data_ (v.data ()), size_ (v.size ()) {}
-
- template <typename T1>
- vector_view (const vector_view<T1>& v)
- : data_ (v.data ()), size_ (v.size ()) {}
-
- vector_view (vector_view&&) = default;
- vector_view (const vector_view&) = default;
- vector_view& operator= (vector_view&&) = default;
- vector_view& operator= (const vector_view&) = default;
-
- // iterators:
- //
- iterator begin() const {return data_;}
- iterator end() const {return data_ + size_;}
-
- const_iterator cbegin() const {return data_;}
- const_iterator cend() const {return data_ + size_;}
-
- reverse_iterator rbegin() const {return reverse_iterator (end ());}
- reverse_iterator rend() const {return reverse_iterator (begin ());}
-
- const_reverse_iterator crbegin() const {
- return const_reverse_iterator (cend ());}
- const_reverse_iterator crend() const {
- return const_reverse_iterator (cbegin ());}
-
- // capacity:
- //
- size_type size() const {return size_;}
- bool empty() const {return size_ == 0;}
-
- // element access:
- //
- reference operator[](size_type n) const {return data_[n];}
- reference front() const {return data_[0];}
- reference back() const {return data_[size_ - 1];}
-
- reference at(size_type n) const
- {
- if (n >= size_)
- throw std::out_of_range ("index out of range");
- return data_[n];
- }
-
- // data access:
- //
- T* data() const {return data_;}
-
- // modifiers:
- //
- void assign (T* d, size_type s) {data_ = d; size_ = s;}
- void clear () {data_ = nullptr; size_ = 0;}
- void swap (vector_view& v) {
- std::swap (data_, v.data_); std::swap (size_, v.size_);}
-
- private:
- T* data_;
- size_type size_;
- };
-
- //@@ TODO.
- //
- template<typename T> bool operator== (vector_view<T> l, vector_view<T> r);
- template<typename T> bool operator!= (vector_view<T> l, vector_view<T> r);
- template<typename T> bool operator< (vector_view<T> l, vector_view<T> r);
- template<typename T> bool operator> (vector_view<T> l, vector_view<T> r);
- template<typename T> bool operator<= (vector_view<T> l, vector_view<T> r);
- template<typename T> bool operator>= (vector_view<T> l, vector_view<T> r);
-}