MUDA
Loading...
Searching...
No Matches
graph_var_view.h
1#pragma once
2#include <muda/buffer/var_view.h>
3#include <muda/compute_graph/compute_graph_var.h>
4
5namespace muda
6{
7template <typename T>
9{
10 public:
11 static_assert(!std::is_const_v<T>, "T must not be const");
12
13 using VarType = VarView<T>;
14 using ROView = CVarView<T>;
15 using RWView = VarView<T>;
16
17 protected:
18 friend class ComputeGraph;
19 friend class ComputeGraphVarManager;
20
21 using ComputeGraphVarBase::ComputeGraphVarBase;
22
23 ComputeGraphVar(ComputeGraphVarManager* var_manager, std::string_view name, VarId var_id) MUDA_NOEXCEPT
24 : ComputeGraphVarBase(var_manager, name, var_id)
25 {
26 }
27
29 std::string_view name,
30 VarId var_id,
31 const RWView& init_value) MUDA_NOEXCEPT
32 : ComputeGraphVarBase(var_manager, name, var_id, true),
33 m_value(init_value)
34 {
35 }
36
37 virtual ~ComputeGraphVar() = default;
38
39 public:
40 ROView ceval() const { return _ceval(m_value); }
41 RWView eval() { return _eval(m_value); }
42 auto cviewer() const { return ceval().cviewer(); };
43 auto viewer() { return eval().viewer(); };
44 operator ROView() const { return ceval(); }
45 operator RWView() { return eval(); }
46
47 void update(const RWView& view);
48 ComputeGraphVar<VarType>& operator=(const RWView& view);
49
50 private:
51 RWView m_value;
52};
53
54} // namespace muda
55
56#include "details/graph_var_view.inl"
Definition compute_graph.h:38
Definition compute_graph_var.h:17
Definition compute_graph_var.h:90
Definition compute_graph_var_manager.h:15
Definition compute_graph_var_id.h:6
Definition var_view.h:11