docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
user.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <vector>
5
7#include "sdfg/element.h"
9
10namespace sdfg {
11namespace analysis {
13} // namespace analysis
14
15namespace users {
16
17class Users;
18class UsersView;
19
20enum Use {
21 NOP, // No-op
26};
27
28class User {
29 friend class Users;
30 friend class UsersView;
32
33private:
34 // Creation order during traversal; users of a control-flow node occupy a contiguous range.
35 size_t index_ = 0;
36 // Innermost control-flow node whose traversal created this user; null for artificial users.
38
39 std::string container_;
40 Element* element_;
41 Use use_;
42
43 mutable std::vector<data_flow::Subset> subsets_;
44 mutable bool subsets_cached_ = false;
45
46public:
47 User(const std::string& container, Element* element, Use use);
48
49 virtual ~User() = default;
50
51 std::string& container();
52
53 Use use() const;
54
56
57 const std::vector<data_flow::Subset>& subsets() const;
58};
59
60class ForUser : public User {
61private:
62 bool is_init_;
63 bool is_condition_;
64 bool is_update_;
65
66public:
67 ForUser(const std::string& container, Element* element, Use use, bool is_init, bool is_condition, bool is_update);
68
69 bool is_init() const;
70
71 bool is_condition() const;
72
73 bool is_update() const;
74};
75
76} // namespace users
77} // namespace sdfg
Definition element.h:159
Computes the read-after-write relation between users.
Definition data_dependency_analysis.h:27
ForUser(const std::string &container, Element *element, Use use, bool is_init, bool is_condition, bool is_update)
User(const std::string &container, Element *element, Use use)
Base class for all structured control flow nodes in a StructuredSDFG.
Definition control_flow_node.h:44
ForUser(const std::string &container, Element *element, Use use, bool is_init, bool is_condition, bool is_update)
bool is_update() const
bool is_init() const
bool is_condition() const
friend class UsersView
Definition user.h:30
Element * element()
friend class Users
Definition user.h:29
Use use() const
virtual ~User()=default
std::string & container()
const std::vector< data_flow::Subset > & subsets() const
User(const std::string &container, Element *element, Use use)
Definition users.h:190
Definition users.h:19
Edges in the dataflow graph representing data movement.
Definition analysis.h:8
Definition base_user_visitor.h:5
Use
Definition user.h:20
@ WRITE
Definition user.h:23
@ VIEW
Definition user.h:24
@ MOVE
Definition user.h:25
@ NOP
Definition user.h:21
@ READ
Definition user.h:22
Definition analysis.h:7