30 Q_DISABLE_COPY_MOVE (Port)
32 using FullDesignationProvider =
37 void set_full_designation_provider (FullDesignationProvider provider)
39 full_designation_provider_ = std::move (provider);
48 full_designation_provider_ = [owner] (
const Port &port) {
49 return owner->get_full_designation_for_port (port);
53 bool is_input ()
const {
return flow_ == PortFlow::Input; }
54 bool is_output ()
const {
return flow_ == PortFlow::Output; }
56 bool is_midi ()
const {
return type_ == PortType::Midi; }
57 bool is_cv ()
const {
return type_ == PortType::CV; }
58 bool is_audio ()
const {
return type_ == PortType::Audio; }
60 utils::Utf8String get_label ()
const {
return label_; }
62 auto get_symbol ()
const {
return sym_; }
63 void set_symbol (
const utils::Utf8String &sym) { sym_ = sym; }
79 virtual void clear_buffer (std::size_t offset, std::size_t nframes) = 0;
87 return full_designation_provider_ (*
this);
90 bool has_label ()
const {
return !label_.empty (); }
91 PortType type ()
const {
return type_; }
92 PortFlow flow ()
const {
return flow_; }
95 Port (utils::Utf8String label, PortType type = {}, PortFlow flow = {});
101 static constexpr auto kFlowId =
"flow"sv;
102 static constexpr auto kLabelId =
"label"sv;
103 static constexpr auto kSymbolId =
"symbol"sv;
104 static constexpr auto kPortGroupId =
"portGroup"sv;
105 friend void to_json (nlohmann::json &j,
const Port &p);
106 friend void from_json (
const nlohmann::json &j, Port &p);
109 FullDesignationProvider full_designation_provider_ =
110 [
this] (
const Port &port) {
return get_label (); };
118 utils::Utf8String label_;
125 utils::Utf8String sym_;
128 std::optional<utils::Utf8String> port_group_;
130 BOOST_DESCRIBE_CLASS (
132 (utils::UuidIdentifiableObject<Port>),
135 (label_, sym_, port_group_))
182 std::pair<const PortT *, std::unique_ptr<dsp::PortConnection>>;
187 auto &port_sources ()
const {
return port_sources_; }
192 self.port_sources_.clear ();
193 for (
const auto &source_port : source_ports)
195 self.port_sources_.push_back (
198 std::make_unique<dsp::PortConnection> (
199 source_port->get_uuid (), self.get_uuid (), 1.f,
true,
true)));
209 std::vector<ElementType> port_sources_;