Zserio C++17 runtime library 1.3.0
Built for Zserio 2.20.0
Loading...
Searching...
No Matches
DataView.h
Go to the documentation of this file.
1#ifndef ZSERIO_DATA_VIEW_H_INC
2#define ZSERIO_DATA_VIEW_H_INC
3
5#include <zserio/View.h>
6
7namespace zserio
8{
9
14template <class T>
15class DataView : public View<T>
16{
17public:
25 template <typename... ARGS>
27 View<T>(m_ownData, arguments...),
28 m_ownData(std::move(data))
29 {
30 detail::read(reader, m_ownData, std::forward<ARGS>(arguments)...);
31 }
32
39 template <typename... ARGS>
40 explicit DataView(const T& data, ARGS&&... arguments) :
41 View<T>(m_ownData, std::forward<ARGS>(arguments)...),
42 m_ownData(data)
43 {
44 detail::validate(*this);
45 (void)detail::initializeOffsets(*this, 0);
46 }
47
54 template <typename... ARGS>
55 explicit DataView(T&& data, ARGS&&... arguments) :
56 View<T>(m_ownData, std::forward<ARGS>(arguments)...),
57 m_ownData(std::move(data))
58 {
59 detail::validate(*this);
60 (void)detail::initializeOffsets(*this, 0);
61 }
62
69 View<T>(m_ownData, other),
70 m_ownData(other.m_ownData)
71 {}
72
79 View<T>(m_ownData, other),
80 m_ownData(std::move(other.m_ownData))
81 {}
82
87 DataView& operator=(const DataView& other) = delete;
91 ~DataView() = default;
92
93private:
94 T m_ownData;
95};
96
97// template argument deduction guide for DataView constructor
98template <typename T, typename... ARGS>
100
101} // namespace zserio
102
103#endif // ZSERIO_DATA_VIEW_H_INC
DataView & operator=(const DataView &other)=delete
~DataView()=default
DataView & operator=(DataView &&other)=delete
DataView(const T &data, ARGS &&... arguments)
Definition DataView.h:40
DataView(T &&data, ARGS &&... arguments)
Definition DataView.h:55
DataView(const DataView &other)
Definition DataView.h:68
DataView(BitStreamReader &reader, T &&data, ARGS &&... arguments)
Definition DataView.h:26
DataView(DataView &&other)
Definition DataView.h:78