diff --git a/CHANGES b/CHANGES index d7c8b3f4..d41287cf 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,8 @@ +v.11.0.5 (17 March 2024) + - Bypassed _componentsParallel optimization when unused. + - Removed unmatched cppcheck suppression. + - Reverted tasks.json testing change. + v.11.0.4 (17 March 2024) - Updated fast_any submodule (incl. optimized type checking). diff --git a/docs/Doxyfile b/docs/Doxyfile index af132a08..67174b9a 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -32,7 +32,7 @@ PROJECT_NAME = DSPatch # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = v.11.0.4 +PROJECT_NUMBER = v.11.0.5 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer diff --git a/docs/html/_circuit_8h_source.html b/docs/html/_circuit_8h_source.html index 0adb4b85..067b355f 100644 --- a/docs/html/_circuit_8h_source.html +++ b/docs/html/_circuit_8h_source.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
@@ -676,192 +676,198 @@
621{
622 PauseAutoTick();
623
-
624 _threadCount = threadCount;
-
625
-
626 // stop all threads
-
627 for ( auto& circuitThreads : _parallelCircuitThreads )
-
628 {
-
629 for ( auto& circuitThread : circuitThreads )
-
630 {
-
631 circuitThread.Stop();
-
632 }
-
633 }
-
634
-
635 // resize thread array
-
636 if ( _threadCount == 0 )
-
637 {
-
638 _parallelCircuitThreads.resize( 0 );
-
639 SetBufferCount( _bufferCount );
-
640 }
-
641 else
+
624 if ( _threadCount == 0 && threadCount != 0 )
+
625 {
+
626 _circuitDirty = true;
+
627 }
+
628
+
629 _threadCount = threadCount;
+
630
+
631 // stop all threads
+
632 for ( auto& circuitThreads : _parallelCircuitThreads )
+
633 {
+
634 for ( auto& circuitThread : circuitThreads )
+
635 {
+
636 circuitThread.Stop();
+
637 }
+
638 }
+
639
+
640 // resize thread array
+
641 if ( _threadCount == 0 )
642 {
-
643 _parallelCircuitThreads.resize( _bufferCount == 0 ? 1 : _bufferCount );
-
644 for ( auto& circuitThread : _parallelCircuitThreads )
-
645 {
-
646 circuitThread.resize( _threadCount );
-
647 }
-
648
-
649 // initialise and start all threads
-
650 int i = 0;
-
651 for ( auto& circuitThreads : _parallelCircuitThreads )
-
652 {
-
653 int j = 0;
-
654 for ( auto& circuitThread : circuitThreads )
-
655 {
-
656 circuitThread.Start( &_componentsParallel, i, j++, _threadCount );
-
657 }
-
658 ++i;
-
659 }
-
660 }
-
661
-
662 ResumeAutoTick();
-
663}
-
664
-
665// cppcheck-suppress unusedFunction
-
666inline int Circuit::GetThreadCount() const
-
667{
-
668 return _threadCount;
-
669}
-
670
-
671inline void Circuit::Tick()
-
672{
-
673 if ( _circuitDirty )
-
674 {
-
675 _Optimize();
-
676 }
-
677
-
678 // process in a single thread if this circuit has no threads
-
679 // =========================================================
-
680 if ( _bufferCount == 0 && _threadCount == 0 )
-
681 {
-
682 // tick all internal components
-
683 for ( auto component : _components )
-
684 {
-
685 component->TickSeries( 0 );
-
686 }
-
687
-
688 return;
-
689 }
-
690 // process in multiple threads if this circuit has threads
-
691 // =======================================================
-
692 else if ( _threadCount != 0 )
-
693 {
-
694 auto& circuitThreads = _parallelCircuitThreads[_currentBuffer];
-
695
-
696 for ( auto& circuitThread : circuitThreads )
-
697 {
-
698 circuitThread.Sync();
-
699 }
-
700 for ( auto& circuitThread : circuitThreads )
-
701 {
-
702 circuitThread.Resume();
-
703 }
-
704 }
-
705 else
-
706 {
-
707 _circuitThreads[_currentBuffer].SyncAndResume(); // sync and resume thread x
-
708 }
-
709
-
710 if ( _bufferCount != 0 && ++_currentBuffer == _bufferCount )
+
643 _parallelCircuitThreads.resize( 0 );
+
644 SetBufferCount( _bufferCount );
+
645 }
+
646 else
+
647 {
+
648 _parallelCircuitThreads.resize( _bufferCount == 0 ? 1 : _bufferCount );
+
649 for ( auto& circuitThread : _parallelCircuitThreads )
+
650 {
+
651 circuitThread.resize( _threadCount );
+
652 }
+
653
+
654 // initialise and start all threads
+
655 int i = 0;
+
656 for ( auto& circuitThreads : _parallelCircuitThreads )
+
657 {
+
658 int j = 0;
+
659 for ( auto& circuitThread : circuitThreads )
+
660 {
+
661 circuitThread.Start( &_componentsParallel, i, j++, _threadCount );
+
662 }
+
663 ++i;
+
664 }
+
665 }
+
666
+
667 ResumeAutoTick();
+
668}
+
669
+
670// cppcheck-suppress unusedFunction
+
671inline int Circuit::GetThreadCount() const
+
672{
+
673 return _threadCount;
+
674}
+
675
+
676inline void Circuit::Tick()
+
677{
+
678 if ( _circuitDirty )
+
679 {
+
680 _Optimize();
+
681 }
+
682
+
683 // process in a single thread if this circuit has no threads
+
684 // =========================================================
+
685 if ( _bufferCount == 0 && _threadCount == 0 )
+
686 {
+
687 // tick all internal components
+
688 for ( auto component : _components )
+
689 {
+
690 component->TickSeries( 0 );
+
691 }
+
692
+
693 return;
+
694 }
+
695 // process in multiple threads if this circuit has threads
+
696 // =======================================================
+
697 else if ( _threadCount != 0 )
+
698 {
+
699 auto& circuitThreads = _parallelCircuitThreads[_currentBuffer];
+
700
+
701 for ( auto& circuitThread : circuitThreads )
+
702 {
+
703 circuitThread.Sync();
+
704 }
+
705 for ( auto& circuitThread : circuitThreads )
+
706 {
+
707 circuitThread.Resume();
+
708 }
+
709 }
+
710 else
711 {
-
712 _currentBuffer = 0;
+
712 _circuitThreads[_currentBuffer].SyncAndResume(); // sync and resume thread x
713 }
-
714}
-
715
-
716inline void Circuit::Sync()
-
717{
-
718 // sync all threads
-
719 for ( auto& circuitThread : _circuitThreads )
-
720 {
-
721 circuitThread.Sync();
-
722 }
-
723 for ( auto& circuitThreads : _parallelCircuitThreads )
-
724 {
-
725 for ( auto& circuitThread : circuitThreads )
-
726 {
-
727 circuitThread.Sync();
-
728 }
-
729 }
-
730}
-
731
-
732inline void Circuit::StartAutoTick()
-
733{
-
734 _autoTickThread.Start( this );
+
714
+
715 if ( _bufferCount != 0 && ++_currentBuffer == _bufferCount )
+
716 {
+
717 _currentBuffer = 0;
+
718 }
+
719}
+
720
+
721inline void Circuit::Sync()
+
722{
+
723 // sync all threads
+
724 for ( auto& circuitThread : _circuitThreads )
+
725 {
+
726 circuitThread.Sync();
+
727 }
+
728 for ( auto& circuitThreads : _parallelCircuitThreads )
+
729 {
+
730 for ( auto& circuitThread : circuitThreads )
+
731 {
+
732 circuitThread.Sync();
+
733 }
+
734 }
735}
736
-
737inline void Circuit::StopAutoTick()
+
737inline void Circuit::StartAutoTick()
738{
-
739 _autoTickThread.Stop();
-
740 Sync();
-
741}
-
742
-
743inline void Circuit::PauseAutoTick()
-
744{
-
745 _autoTickThread.Pause();
-
746 Sync();
-
747}
-
748
-
749inline void Circuit::ResumeAutoTick()
-
750{
-
751 _autoTickThread.Resume();
+
739 _autoTickThread.Start( this );
+
740}
+
741
+
742inline void Circuit::StopAutoTick()
+
743{
+
744 _autoTickThread.Stop();
+
745 Sync();
+
746}
+
747
+
748inline void Circuit::PauseAutoTick()
+
749{
+
750 _autoTickThread.Pause();
+
751 Sync();
752}
753
-
754inline void Circuit::Optimize()
+
754inline void Circuit::ResumeAutoTick()
755{
-
756 if ( _circuitDirty )
-
757 {
-
758 PauseAutoTick();
-
759 _Optimize();
-
760 ResumeAutoTick();
-
761 }
-
762}
-
763
-
764inline void Circuit::_Optimize()
-
765{
-
766 // scan for optimal series order -> update _components
-
767 {
-
768 std::vector<DSPatch::Component*> orderedComponents;
-
769 orderedComponents.reserve( _components.size() );
-
770
-
771 for ( auto component : _components )
-
772 {
-
773 component->ScanSeries( orderedComponents );
-
774 }
-
775 for ( auto component : _components )
-
776 {
-
777 component->EndScan();
-
778 }
-
779
-
780 _components = std::move( orderedComponents );
-
781 }
-
782
-
783 // scan for optimal parallel order -> update _componentsParallel
-
784 {
-
785 std::vector<std::vector<DSPatch::Component*>> componentsMap;
-
786
-
787 for ( int i = (int)_components.size() - 1; i >= 0; --i )
-
788 {
-
789 int scanPosition;
-
790 _components[i]->ScanParallel( componentsMap, scanPosition );
-
791 }
-
792 for ( auto component : _components )
-
793 {
-
794 component->EndScan();
-
795 }
-
796
-
797 _componentsParallel.clear();
-
798 _componentsParallel.reserve( _components.size() );
-
799 for ( auto& componentsMapEntry : componentsMap )
-
800 {
-
801 _componentsParallel.insert( _componentsParallel.end(), componentsMapEntry.begin(), componentsMapEntry.end() );
-
802 }
-
803 }
-
804
-
805 // clear _circuitDirty flag
-
806 _circuitDirty = false;
-
807}
-
808
-
809} // namespace DSPatch
+
756 _autoTickThread.Resume();
+
757}
+
758
+
759inline void Circuit::Optimize()
+
760{
+
761 if ( _circuitDirty )
+
762 {
+
763 PauseAutoTick();
+
764 _Optimize();
+
765 ResumeAutoTick();
+
766 }
+
767}
+
768
+
769inline void Circuit::_Optimize()
+
770{
+
771 // scan for optimal series order -> update _components
+
772 {
+
773 std::vector<DSPatch::Component*> orderedComponents;
+
774 orderedComponents.reserve( _components.size() );
+
775
+
776 for ( auto component : _components )
+
777 {
+
778 component->ScanSeries( orderedComponents );
+
779 }
+
780 for ( auto component : _components )
+
781 {
+
782 component->EndScan();
+
783 }
+
784
+
785 _components = std::move( orderedComponents );
+
786 }
+
787
+
788 // scan for optimal parallel order -> update _componentsParallel
+
789 if ( _threadCount != 0 )
+
790 {
+
791 std::vector<std::vector<DSPatch::Component*>> componentsMap;
+
792
+
793 for ( int i = (int)_components.size() - 1; i >= 0; --i )
+
794 {
+
795 int scanPosition;
+
796 _components[i]->ScanParallel( componentsMap, scanPosition );
+
797 }
+
798 for ( auto component : _components )
+
799 {
+
800 component->EndScan();
+
801 }
+
802
+
803 _componentsParallel.clear();
+
804 _componentsParallel.reserve( _components.size() );
+
805 for ( auto& componentsMapEntry : componentsMap )
+
806 {
+
807 _componentsParallel.insert( _componentsParallel.end(), componentsMapEntry.begin(), componentsMapEntry.end() );
+
808 }
+
809 }
+
810
+
811 // clear _circuitDirty flag
+
812 _circuitDirty = false;
+
813}
+
814
+
815} // namespace DSPatch
Workspace for adding and routing components.
Definition Circuit.h:73
diff --git a/docs/html/_component_8h_source.html b/docs/html/_component_8h_source.html index 0c09ba26..6f2747fb 100644 --- a/docs/html/_component_8h_source.html +++ b/docs/html/_component_8h_source.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/_d_s_patch_8h_source.html b/docs/html/_d_s_patch_8h_source.html index 091261ac..cfc38306 100644 --- a/docs/html/_d_s_patch_8h_source.html +++ b/docs/html/_d_s_patch_8h_source.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/_plugin_8h_source.html b/docs/html/_plugin_8h_source.html index 0a6c7157..2581c8e6 100644 --- a/docs/html/_plugin_8h_source.html +++ b/docs/html/_plugin_8h_source.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/_signal_bus_8h_source.html b/docs/html/_signal_bus_8h_source.html index 82ba0813..e24c6746 100644 --- a/docs/html/_signal_bus_8h_source.html +++ b/docs/html/_signal_bus_8h_source.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
@@ -154,140 +154,139 @@
88
89inline SignalBus::SignalBus() = default;
90
-
91// cppcheck-suppress missingMemberCopy
-
92inline SignalBus::SignalBus( SignalBus&& rhs )
-
93 : _signals( std::move( rhs._signals ) )
-
94{
-
95}
-
96
-
97inline SignalBus::~SignalBus() = default;
-
98
-
99inline void SignalBus::SetSignalCount( int signalCount )
-
100{
-
101 _signals.resize( signalCount );
-
102}
-
103
-
104inline int SignalBus::GetSignalCount() const
-
105{
-
106 return (int)_signals.size();
-
107}
-
108
-
109inline fast_any::any* SignalBus::GetSignal( int signalIndex )
-
110{
-
111 // You might be thinking: Why the raw pointer return here?
-
112
-
113 // This is for usability, design, and performance reasons. Usability, because a pointer allows
-
114 // the user to manipulate the contained value externally. Design, because DSPatch doesn't use
-
115 // exceptions - a nullptr return here is the equivalent of "signal does not exist".
-
116 // Performance, because returning a smart pointer means having to store the value as a smart
-
117 // pointer too - this adds yet another level of indirection to the value, as well as some
-
118 // reference counting overhead. These Get() and Set() methods are VERY frequently called, so
-
119 // doing as little as possible with the data here is best.
-
120
-
121 if ( (size_t)signalIndex < _signals.size() )
-
122 {
-
123 return &_signals[signalIndex];
-
124 }
-
125 else
-
126 {
-
127 return nullptr;
-
128 }
-
129}
-
130
-
131inline bool SignalBus::HasValue( int signalIndex ) const
-
132{
-
133 if ( (size_t)signalIndex < _signals.size() )
-
134 {
-
135 return _signals[signalIndex].has_value();
-
136 }
-
137 else
-
138 {
-
139 return false;
-
140 }
-
141}
-
142
-
143template <typename ValueType>
-
144inline ValueType* SignalBus::GetValue( int signalIndex ) const
-
145{
-
146 // You might be thinking: Why the raw pointer return here?
-
147
-
148 // See: GetSignal().
-
149
-
150 if ( (size_t)signalIndex < _signals.size() )
-
151 {
-
152 return _signals[signalIndex].as<ValueType>();
-
153 }
-
154 else
-
155 {
-
156 return nullptr;
-
157 }
-
158}
-
159
-
160template <typename ValueType>
-
161inline void SignalBus::SetValue( int signalIndex, const ValueType& newValue )
-
162{
-
163 if ( (size_t)signalIndex < _signals.size() )
-
164 {
-
165 _signals[signalIndex].emplace<ValueType>( newValue );
-
166 }
-
167}
-
168
-
169template <typename ValueType>
-
170inline void SignalBus::MoveValue( int signalIndex, ValueType&& newValue )
-
171{
-
172 if ( (size_t)signalIndex < _signals.size() )
-
173 {
-
174 _signals[signalIndex].emplace<ValueType>( std::forward<ValueType>( newValue ) );
-
175 }
-
176}
-
177
-
178inline void SignalBus::SetSignal( int toSignalIndex, const fast_any::any& fromSignal )
-
179{
-
180 if ( (size_t)toSignalIndex < _signals.size() )
-
181 {
-
182 _signals[toSignalIndex] = fromSignal;
-
183 }
-
184}
-
185
-
186inline void SignalBus::MoveSignal( int toSignalIndex, fast_any::any& fromSignal )
-
187{
-
188 // You might be thinking: Why swap and not move here?
-
189
-
190 // This is a really nifty little optimisation actually. When we move a signal value from an
-
191 // output to an input (or vice-versa within a component) we move its type_info along with it.
-
192 // If you look at any::emplace(), you'll see that type_info is really useful in determining
-
193 // whether we need to delete and copy (re)construct our contained value, or can simply copy
-
194 // assign. To avoid the former as much as possible, a swap is done between source and target
-
195 // signals such that, between these two points, just two value holders need to be constructed,
-
196 // and shared back and forth from then on.
-
197
-
198 if ( (size_t)toSignalIndex < _signals.size() )
-
199 {
-
200 _signals[toSignalIndex].swap( fromSignal );
-
201 }
-
202}
-
203
-
204inline void SignalBus::ClearAllValues()
-
205{
-
206 for ( auto& signal : _signals )
-
207 {
-
208 signal.reset();
-
209 }
-
210}
-
211
-
212inline fast_any::type_info SignalBus::GetType( int signalIndex ) const
-
213{
-
214 if ( (size_t)signalIndex < _signals.size() )
-
215 {
-
216 return _signals[signalIndex].type();
-
217 }
-
218 else
-
219 {
-
220 return fast_any::type_id<void>;
-
221 }
-
222}
-
223
-
224} // namespace DSPatch
+
91inline SignalBus::SignalBus( SignalBus&& rhs )
+
92 : _signals( std::move( rhs._signals ) )
+
93{
+
94}
+
95
+
96inline SignalBus::~SignalBus() = default;
+
97
+
98inline void SignalBus::SetSignalCount( int signalCount )
+
99{
+
100 _signals.resize( signalCount );
+
101}
+
102
+
103inline int SignalBus::GetSignalCount() const
+
104{
+
105 return (int)_signals.size();
+
106}
+
107
+
108inline fast_any::any* SignalBus::GetSignal( int signalIndex )
+
109{
+
110 // You might be thinking: Why the raw pointer return here?
+
111
+
112 // This is for usability, design, and performance reasons. Usability, because a pointer allows
+
113 // the user to manipulate the contained value externally. Design, because DSPatch doesn't use
+
114 // exceptions - a nullptr return here is the equivalent of "signal does not exist".
+
115 // Performance, because returning a smart pointer means having to store the value as a smart
+
116 // pointer too - this adds yet another level of indirection to the value, as well as some
+
117 // reference counting overhead. These Get() and Set() methods are VERY frequently called, so
+
118 // doing as little as possible with the data here is best.
+
119
+
120 if ( (size_t)signalIndex < _signals.size() )
+
121 {
+
122 return &_signals[signalIndex];
+
123 }
+
124 else
+
125 {
+
126 return nullptr;
+
127 }
+
128}
+
129
+
130inline bool SignalBus::HasValue( int signalIndex ) const
+
131{
+
132 if ( (size_t)signalIndex < _signals.size() )
+
133 {
+
134 return _signals[signalIndex].has_value();
+
135 }
+
136 else
+
137 {
+
138 return false;
+
139 }
+
140}
+
141
+
142template <typename ValueType>
+
143inline ValueType* SignalBus::GetValue( int signalIndex ) const
+
144{
+
145 // You might be thinking: Why the raw pointer return here?
+
146
+
147 // See: GetSignal().
+
148
+
149 if ( (size_t)signalIndex < _signals.size() )
+
150 {
+
151 return _signals[signalIndex].as<ValueType>();
+
152 }
+
153 else
+
154 {
+
155 return nullptr;
+
156 }
+
157}
+
158
+
159template <typename ValueType>
+
160inline void SignalBus::SetValue( int signalIndex, const ValueType& newValue )
+
161{
+
162 if ( (size_t)signalIndex < _signals.size() )
+
163 {
+
164 _signals[signalIndex].emplace<ValueType>( newValue );
+
165 }
+
166}
+
167
+
168template <typename ValueType>
+
169inline void SignalBus::MoveValue( int signalIndex, ValueType&& newValue )
+
170{
+
171 if ( (size_t)signalIndex < _signals.size() )
+
172 {
+
173 _signals[signalIndex].emplace<ValueType>( std::forward<ValueType>( newValue ) );
+
174 }
+
175}
+
176
+
177inline void SignalBus::SetSignal( int toSignalIndex, const fast_any::any& fromSignal )
+
178{
+
179 if ( (size_t)toSignalIndex < _signals.size() )
+
180 {
+
181 _signals[toSignalIndex] = fromSignal;
+
182 }
+
183}
+
184
+
185inline void SignalBus::MoveSignal( int toSignalIndex, fast_any::any& fromSignal )
+
186{
+
187 // You might be thinking: Why swap and not move here?
+
188
+
189 // This is a really nifty little optimisation actually. When we move a signal value from an
+
190 // output to an input (or vice-versa within a component) we move its type_info along with it.
+
191 // If you look at any::emplace(), you'll see that type_info is really useful in determining
+
192 // whether we need to delete and copy (re)construct our contained value, or can simply copy
+
193 // assign. To avoid the former as much as possible, a swap is done between source and target
+
194 // signals such that, between these two points, just two value holders need to be constructed,
+
195 // and shared back and forth from then on.
+
196
+
197 if ( (size_t)toSignalIndex < _signals.size() )
+
198 {
+
199 _signals[toSignalIndex].swap( fromSignal );
+
200 }
+
201}
+
202
+
203inline void SignalBus::ClearAllValues()
+
204{
+
205 for ( auto& signal : _signals )
+
206 {
+
207 signal.reset();
+
208 }
+
209}
+
210
+
211inline fast_any::type_info SignalBus::GetType( int signalIndex ) const
+
212{
+
213 if ( (size_t)signalIndex < _signals.size() )
+
214 {
+
215 return _signals[signalIndex].type();
+
216 }
+
217 else
+
218 {
+
219 return fast_any::type_id<void>;
+
220 }
+
221}
+
222
+
223} // namespace DSPatch
Signal container.
Definition SignalBus.h:53
diff --git a/docs/html/annotated.html b/docs/html/annotated.html index e3e35244..46853a19 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/class_d_s_patch_1_1_circuit-members.html b/docs/html/class_d_s_patch_1_1_circuit-members.html index ba056c68..aee0f257 100644 --- a/docs/html/class_d_s_patch_1_1_circuit-members.html +++ b/docs/html/class_d_s_patch_1_1_circuit-members.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/class_d_s_patch_1_1_circuit.html b/docs/html/class_d_s_patch_1_1_circuit.html index 53cdc0da..47c9f896 100644 --- a/docs/html/class_d_s_patch_1_1_circuit.html +++ b/docs/html/class_d_s_patch_1_1_circuit.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
@@ -381,7 +381,7 @@

-

Definition at line 666 of file Circuit.h.

+

Definition at line 671 of file Circuit.h.

@@ -408,7 +408,7 @@

-

Definition at line 754 of file Circuit.h.

+

Definition at line 759 of file Circuit.h.

@@ -435,7 +435,7 @@

-

Definition at line 743 of file Circuit.h.

+

Definition at line 748 of file Circuit.h.

@@ -517,7 +517,7 @@

-

Definition at line 749 of file Circuit.h.

+

Definition at line 754 of file Circuit.h.

@@ -600,7 +600,7 @@

-

Definition at line 732 of file Circuit.h.

+

Definition at line 737 of file Circuit.h.

@@ -627,7 +627,7 @@

-

Definition at line 737 of file Circuit.h.

+

Definition at line 742 of file Circuit.h.

@@ -654,7 +654,7 @@

-

Definition at line 716 of file Circuit.h.

+

Definition at line 721 of file Circuit.h.

@@ -681,7 +681,7 @@

-

Definition at line 671 of file Circuit.h.

+

Definition at line 676 of file Circuit.h.

diff --git a/docs/html/class_d_s_patch_1_1_component-members.html b/docs/html/class_d_s_patch_1_1_component-members.html index 2dc286cb..38f0fdc0 100644 --- a/docs/html/class_d_s_patch_1_1_component-members.html +++ b/docs/html/class_d_s_patch_1_1_component-members.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/class_d_s_patch_1_1_component.html b/docs/html/class_d_s_patch_1_1_component.html index e215a6a1..523d0a87 100644 --- a/docs/html/class_d_s_patch_1_1_component.html +++ b/docs/html/class_d_s_patch_1_1_component.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/class_d_s_patch_1_1_plugin-members.html b/docs/html/class_d_s_patch_1_1_plugin-members.html index 9542ba93..7c471a03 100644 --- a/docs/html/class_d_s_patch_1_1_plugin-members.html +++ b/docs/html/class_d_s_patch_1_1_plugin-members.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/class_d_s_patch_1_1_plugin.html b/docs/html/class_d_s_patch_1_1_plugin.html index bf503ff5..ac35ce9f 100644 --- a/docs/html/class_d_s_patch_1_1_plugin.html +++ b/docs/html/class_d_s_patch_1_1_plugin.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/class_d_s_patch_1_1_signal_bus-members.html b/docs/html/class_d_s_patch_1_1_signal_bus-members.html index b7415be9..ec63d349 100644 --- a/docs/html/class_d_s_patch_1_1_signal_bus-members.html +++ b/docs/html/class_d_s_patch_1_1_signal_bus-members.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/class_d_s_patch_1_1_signal_bus.html b/docs/html/class_d_s_patch_1_1_signal_bus.html index d04dc0a5..c686c891 100644 --- a/docs/html/class_d_s_patch_1_1_signal_bus.html +++ b/docs/html/class_d_s_patch_1_1_signal_bus.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
@@ -153,7 +153,7 @@

-

Definition at line 92 of file SignalBus.h.

+

Definition at line 91 of file SignalBus.h.

@@ -181,7 +181,7 @@

-

Definition at line 204 of file SignalBus.h.

+

Definition at line 203 of file SignalBus.h.

@@ -209,7 +209,7 @@

-

Definition at line 109 of file SignalBus.h.

+

Definition at line 108 of file SignalBus.h.

@@ -236,7 +236,7 @@

-

Definition at line 104 of file SignalBus.h.

+

Definition at line 103 of file SignalBus.h.

@@ -264,7 +264,7 @@

-

Definition at line 212 of file SignalBus.h.

+

Definition at line 211 of file SignalBus.h.

@@ -294,7 +294,7 @@

-

Definition at line 144 of file SignalBus.h.

+

Definition at line 143 of file SignalBus.h.

@@ -322,7 +322,7 @@

-

Definition at line 131 of file SignalBus.h.

+

Definition at line 130 of file SignalBus.h.

@@ -360,7 +360,7 @@

-

Definition at line 186 of file SignalBus.h.

+

Definition at line 185 of file SignalBus.h.

@@ -400,7 +400,7 @@

-

Definition at line 170 of file SignalBus.h.

+

Definition at line 169 of file SignalBus.h.

@@ -438,7 +438,7 @@

-

Definition at line 178 of file SignalBus.h.

+

Definition at line 177 of file SignalBus.h.

@@ -466,7 +466,7 @@

-

Definition at line 99 of file SignalBus.h.

+

Definition at line 98 of file SignalBus.h.

@@ -506,7 +506,7 @@

-

Definition at line 161 of file SignalBus.h.

+

Definition at line 160 of file SignalBus.h.

diff --git a/docs/html/classes.html b/docs/html/classes.html index 2806e323..c29f12b9 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/dir_96ae4afe4ae1b3c2e5b248f6fc6b60cd.html b/docs/html/dir_96ae4afe4ae1b3c2e5b248f6fc6b60cd.html index d4bd9c7f..8b0375ad 100644 --- a/docs/html/dir_96ae4afe4ae1b3c2e5b248f6fc6b60cd.html +++ b/docs/html/dir_96ae4afe4ae1b3c2e5b248f6fc6b60cd.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html index 4dcc6ac1..a6dbcb5e 100644 --- a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/files.html b/docs/html/files.html index 05967d9e..50a2e06e 100644 --- a/docs/html/files.html +++ b/docs/html/files.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5
diff --git a/docs/html/index.html b/docs/html/index.html index 8c0a4eb0..d058fda4 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.0.4 +
DSPatch v.11.0.5