IOLink  IOL_v1.6.1_release
ViewOriginExtension.h
1 #pragma once
2 #include <memory>
3 #include <string>
4 
5 #include <iolink/view/Extension.h>
6 
7 namespace iolink
8 {
9 // forward declaration
10 class View;
11 
15 enum class ViewDataOrigin
16 {
20  UNKNOWN = 0,
21 
25  CPU_MEMORY = 1,
26 
30  DRIVE = 2,
31 
35  GPU_MEMORY = 3,
36 
40  NETWORK = 4,
41 
45  GENERATED = 5,
46 
50  COMPOSITE = 6
51 };
52 
61 class IOLINK_API ViewOriginExtension : public Extension
62 {
63 public:
67  static constexpr size_t EXTENSION_ID = 0x3;
68 
74  virtual uint64_t uid() const = 0;
75 
82  virtual size_t parentCount() const = 0;
83 
92  virtual std::shared_ptr<ViewOriginExtension> parent(size_t idx) const = 0;
93 
99  virtual ViewDataOrigin dataOrigin() const = 0;
100 
106  virtual std::string displayName() const = 0;
107 
111  std::string toString() const;
112 };
113 
114 } // end namespace iolink