36 Q_DISABLE_COPY_MOVE (Port)
38 using FullDesignationProvider =
43 void set_full_designation_provider (FullDesignationProvider provider)
45 full_designation_provider_ = std::move (provider);
54 full_designation_provider_ = [owner] (
const Port &port) {
55 return owner->get_full_designation_for_port (port);
59 bool is_input ()
const {
return flow_ == PortFlow::Input; }
60 bool is_output ()
const {
return flow_ == PortFlow::Output; }
62 bool is_midi ()
const {
return type_ == PortType::Midi; }
63 bool is_cv ()
const {
return type_ == PortType::CV; }
64 bool is_audio ()
const {
return type_ == PortType::Audio; }
66 utils::Utf8String get_label ()
const {
return label_; }
68 auto get_symbol ()
const {
return sym_; }
69 void set_symbol (
const utils::Utf8String &sym) { sym_ = sym; }
85 virtual void clear_buffer (std::size_t offset, std::size_t nframes) = 0;
93 return full_designation_provider_ (*
this);
96 bool has_label ()
const {
return !label_.empty (); }
97 PortType type ()
const {
return type_; }
98 PortFlow flow ()
const {
return flow_; }
102 utils::Utf8String label,
105 QObject * parent =
nullptr);
111 static constexpr auto kFlowId =
"flow"sv;
112 static constexpr auto kLabelId =
"label"sv;
113 static constexpr auto kSymbolId =
"symbol"sv;
114 static constexpr auto kPortGroupId =
"portGroup"sv;
115 friend void to_json (nlohmann::json &j,
const Port &p);
116 friend void from_json (
const nlohmann::json &j, Port &p);
119 FullDesignationProvider full_designation_provider_ =
120 [
this] (
const Port &port) {
return get_label (); };
128 utils::Utf8String label_;
135 utils::Utf8String sym_;
138 std::optional<utils::Utf8String> port_group_;
140 BOOST_DESCRIBE_CLASS (
142 (utils::UuidIdentifiableObject<Port>),
145 (label_, sym_, port_group_))
192 std::pair<const PortT *, std::unique_ptr<dsp::PortConnection>>;
197 auto &port_sources ()
const {
return port_sources_; }
203 self.port_sources_.clear ();
204 for (
const auto &source_port : source_ports)
206 self.port_sources_.push_back (
209 std::make_unique<dsp::PortConnection> (
210 source_port->get_uuid (), self.get_uuid (), 1.f,
true,
true)));
220 std::vector<ElementType> port_sources_;