OSSIA
Open Scenario System for Interactive Application
safe_nodes/port.hpp
1 #pragma once
2 
3 #include <array>
4 #include <cstdint>
5 #include <string_view>
6 
7 namespace ossia::safe_nodes
8 {
9 
10 enum class inlet_kind
11 {
12  audio_in,
13  midi_in,
14  value_in,
15  address_in,
16  control_in,
17 };
18 enum class outlet_kind
19 {
20  audio_out,
21  midi_out,
22  value_out,
23  control_out,
24 };
25 struct address_in
26 {
27  const std::string_view name;
28 
29  constexpr address_in(const char* name)
30  : name{name}
31  {
32  }
33 };
34 struct audio_in
35 {
36  const std::string_view name;
37 
38  constexpr audio_in(const char* name)
39  : name{name}
40  {
41  }
42 };
43 struct audio_out
44 {
45  const std::string_view name;
46 
47  constexpr audio_out(const char* name)
48  : name{name}
49  {
50  }
51 };
52 struct value_in
53 {
54  const std::string_view name;
55  const bool is_event{true};
56 
57  constexpr value_in(const char* name)
58  : name{name}
59  {
60  }
61 
62  constexpr value_in(const char* name, bool b)
63  : name{name}
64  , is_event{b}
65  {
66  }
67 };
68 struct value_out
69 {
70  const std::string_view name;
71  const std::string_view type;
72 
73  constexpr value_out(const char* name)
74  : name{name}
75  {
76  }
77 
78  constexpr value_out(std::string_view name, std::string_view t)
79  : name{name}
80  , type{t}
81  {
82  }
83 };
84 struct midi_in
85 {
86  const std::string_view name;
87 
88  constexpr midi_in(const char* name)
89  : name{name}
90  {
91  }
92 };
93 struct midi_out
94 {
95  const std::string_view name;
96 
97  constexpr midi_out(const char* name)
98  : name{name}
99  {
100  }
101 };
102 struct control_in
103 {
104  const std::string_view name;
105 
106  constexpr control_in(const char* name)
107  : name{name}
108  {
109  }
110 };
111 
112 struct control_out
113 {
114  const std::string_view name;
115 
116  constexpr control_out(const char* name)
117  : name{name}
118  {
119  }
120 };
121 }