gslcpp
Modern-C++ Wrapper for GSL
v-view.hpp
Go to the documentation of this file.
1 /// \file include/gslcpp/vec/v-view.hpp
2 /// \copyright 2022 Thomas E. Vaughan, all rights reserved.
3 /// \brief Definition for gsl::view.
4 
5 #pragma once
6 #include "../wrap/container.hpp" // w_vector_view
7 
8 namespace gsl {
9 
10 
11 /// Interface to vector-storage not owned by interface.
12 ///
13 /// %v_view can serve as template-type parameter for (and thus base of)
14 /// vec::iface.
15 ///
16 /// @tparam T Type of each element in vector.
17 template<typename T, size_t N= 0> class v_view {
18  w_vector_view<T> cview_; ///< GSL's view of data outside instance.
19 
20 public:
21  /// Reference to GSL's interface to vector.
22  /// @return Reference to GSL's interface to vector.
23  auto *v() { return &cview_.vector; }
24 
25  /// Reference to GSL's interface to vector.
26  /// @return Reference to GSL's interface to immutable vector.
27  auto const *v() const { return &cview_.vector; }
28 
29  /// Constructor called by TBS.
30  /// @param v View to copy.
31  v_view(w_vector_view<T> const &v): cview_(v) {}
32 
33  /// GSL's native, C-language interface to vector-view.
34  /// @return GSL's native, C-language interface to vector-view.
35  auto &cview() const { return cview_; }
36 };
37 
38 
39 } // namespace gsl
40 
41 // EOF
gsl::v_view::v_view
v_view(w_vector_view< T > const &v)
Constructor called by TBS.
Definition: v-view.hpp:31
gsl::v_view::cview
auto & cview() const
GSL's native, C-language interface to vector-view.
Definition: v-view.hpp:35
gsl::v_view::v
const auto * v() const
Reference to GSL's interface to vector.
Definition: v-view.hpp:27
gsl::v_view
Interface to vector-storage not owned by interface.
Definition: v-view.hpp:17
gsl::v_view::cview_
w_vector_view< T > cview_
GSL's view of data outside instance.
Definition: v-view.hpp:18
gsl::v_view::v
auto * v()
Reference to GSL's interface to vector.
Definition: v-view.hpp:23
gsl
Namespace for C++-interface to GSL.
Definition: v-iface.hpp:51