Browse Source

Fix some LLVM 17 compiler warnings

v7.0.9
Tom Poole 2 years ago
parent
commit
2fb19ffd8f
100 changed files with 570 additions and 573 deletions
  1. +2
    -2
      examples/Assets/AudioLiveScrollingDisplay.h
  2. +18
    -18
      examples/Assets/DSPDemos_Common.h
  3. +4
    -7
      examples/Assets/DemoUtilities.h
  4. +1
    -1
      examples/Audio/AudioAppDemo.h
  5. +3
    -3
      examples/Audio/AudioLatencyDemo.h
  6. +13
    -13
      examples/Audio/AudioPlaybackDemo.h
  7. +4
    -4
      examples/Audio/AudioRecordingDemo.h
  8. +2
    -2
      examples/Audio/AudioSettingsDemo.h
  9. +5
    -5
      examples/Audio/AudioSynthesiserDemo.h
  10. +8
    -8
      examples/Audio/MPEDemo.h
  11. +5
    -5
      examples/Audio/MidiDemo.h
  12. +3
    -3
      examples/Audio/PluckedStringsDemo.h
  13. +2
    -2
      examples/Audio/SimpleFFTDemo.h
  14. +1
    -1
      examples/CMake/AudioPlugin/PluginEditor.h
  15. +1
    -1
      examples/CMake/AudioPlugin/PluginProcessor.h
  16. +1
    -1
      examples/CMake/GuiApp/MainComponent.h
  17. +1
    -1
      examples/DSP/ConvolutionDemo.h
  18. +1
    -1
      examples/DSP/FIRFilterDemo.h
  19. +1
    -1
      examples/DSP/GainDemo.h
  20. +1
    -1
      examples/DSP/IIRFilterDemo.h
  21. +1
    -1
      examples/DSP/OscillatorDemo.h
  22. +1
    -1
      examples/DSP/OverdriveDemo.h
  23. +1
    -1
      examples/DSP/SIMDRegisterDemo.h
  24. +1
    -1
      examples/DSP/StateVariableFilterDemo.h
  25. +1
    -1
      examples/DSP/WaveShaperTanhDemo.h
  26. +4
    -4
      examples/DemoRunner/Source/Main.cpp
  27. +24
    -24
      examples/GUI/AccessibilityDemo.h
  28. +1
    -1
      examples/GUI/AnimationAppDemo.h
  29. +4
    -4
      examples/GUI/AnimationDemo.h
  30. +2
    -2
      examples/GUI/BouncingBallWavetableDemo.h
  31. +1
    -1
      examples/GUI/CameraDemo.h
  32. +2
    -2
      examples/GUI/CodeEditorDemo.h
  33. +3
    -3
      examples/GUI/ComponentDemo.h
  34. +1
    -1
      examples/GUI/ComponentTransformsDemo.h
  35. +2
    -2
      examples/GUI/DialogsDemo.h
  36. +2
    -2
      examples/GUI/FlexBoxDemo.h
  37. +3
    -3
      examples/GUI/FontsDemo.h
  38. +14
    -14
      examples/GUI/GraphicsDemo.h
  39. +1
    -1
      examples/GUI/GridDemo.h
  40. +1
    -1
      examples/GUI/HelloWorldDemo.h
  41. +2
    -2
      examples/GUI/ImagesDemo.h
  42. +3
    -3
      examples/GUI/KeyMappingsDemo.h
  43. +4
    -4
      examples/GUI/LookAndFeelDemo.h
  44. +5
    -5
      examples/GUI/MDIDemo.h
  45. +8
    -8
      examples/GUI/MenusDemo.h
  46. +1
    -1
      examples/GUI/MultiTouchDemo.h
  47. +1
    -1
      examples/GUI/OpenGLAppDemo.h
  48. +1
    -1
      examples/GUI/OpenGLDemo.h
  49. +3
    -3
      examples/GUI/OpenGLDemo2D.h
  50. +4
    -4
      examples/GUI/PropertiesDemo.h
  51. +8
    -8
      examples/GUI/VideoDemo.h
  52. +2
    -2
      examples/GUI/WebBrowserDemo.h
  53. +17
    -17
      examples/GUI/WidgetsDemo.h
  54. +7
    -7
      examples/GUI/WindowsDemo.h
  55. +50
    -50
      examples/Plugins/ARAPluginDemo.h
  56. +4
    -4
      examples/Plugins/AUv3SynthPluginDemo.h
  57. +1
    -1
      examples/Plugins/ArpeggiatorPluginDemo.h
  58. +6
    -6
      examples/Plugins/AudioPluginDemo.h
  59. +38
    -38
      examples/Plugins/DSPModulePluginDemo.h
  60. +1
    -1
      examples/Plugins/GainPluginDemo.h
  61. +24
    -24
      examples/Plugins/HostPluginDemo.h
  62. +6
    -6
      examples/Plugins/MidiLoggerPluginDemo.h
  63. +1
    -1
      examples/Plugins/MultiOutSynthPluginDemo.h
  64. +1
    -1
      examples/Plugins/NoiseGatePluginDemo.h
  65. +7
    -7
      examples/Plugins/ReaperEmbeddedViewPluginDemo.h
  66. +41
    -41
      examples/Plugins/SamplerPluginDemo.h
  67. +7
    -7
      examples/Plugins/SurroundPluginDemo.h
  68. +2
    -2
      examples/Utilities/AnalyticsCollectionDemo.h
  69. +6
    -6
      examples/Utilities/Box2DDemo.h
  70. +8
    -8
      examples/Utilities/ChildProcessDemo.h
  71. +3
    -3
      examples/Utilities/CryptographyDemo.h
  72. +7
    -7
      examples/Utilities/InAppPurchasesDemo.h
  73. +4
    -4
      examples/Utilities/JavaScriptDemo.h
  74. +2
    -2
      examples/Utilities/LiveConstantDemo.h
  75. +7
    -7
      examples/Utilities/MultithreadingDemo.h
  76. +2
    -2
      examples/Utilities/NetworkingDemo.h
  77. +10
    -10
      examples/Utilities/OSCDemo.h
  78. +8
    -8
      examples/Utilities/PushNotificationsDemo.h
  79. +1
    -1
      examples/Utilities/SystemInfoDemo.h
  80. +7
    -7
      examples/Utilities/TimersAndEventsDemo.h
  81. +4
    -4
      examples/Utilities/UnitTestsDemo.h
  82. +5
    -5
      examples/Utilities/ValueTreesDemo.h
  83. +4
    -4
      examples/Utilities/XMLandJSONDemo.h
  84. +2
    -2
      extras/AudioPerformanceTest/Source/MainComponent.h
  85. +4
    -4
      extras/AudioPluginHost/Source/HostStartup.cpp
  86. +15
    -15
      extras/AudioPluginHost/Source/Plugins/ARAPlugin.h
  87. +4
    -4
      extras/AudioPluginHost/Source/Plugins/IOConfigurationWindow.cpp
  88. +1
    -1
      extras/AudioPluginHost/Source/Plugins/IOConfigurationWindow.h
  89. +3
    -3
      extras/AudioPluginHost/Source/Plugins/InternalPlugins.cpp
  90. +1
    -1
      extras/AudioPluginHost/Source/Plugins/InternalPlugins.h
  91. +3
    -3
      extras/AudioPluginHost/Source/Plugins/PluginGraph.h
  92. +15
    -15
      extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp
  93. +7
    -7
      extras/AudioPluginHost/Source/UI/GraphEditorPanel.h
  94. +5
    -5
      extras/AudioPluginHost/Source/UI/MainHostWindow.cpp
  95. +5
    -5
      extras/AudioPluginHost/Source/UI/MainHostWindow.h
  96. +7
    -7
      extras/AudioPluginHost/Source/UI/PluginWindow.h
  97. +2
    -2
      extras/Build/juceaide/Main.cpp
  98. +6
    -6
      extras/NetworkGraphicsDemo/Source/ClientComponent.h
  99. +8
    -8
      extras/NetworkGraphicsDemo/Source/Demos.h
  100. +2
    -2
      extras/NetworkGraphicsDemo/Source/Main.cpp

+ 2
- 2
examples/Assets/AudioLiveScrollingDisplay.h View File

@@ -24,8 +24,8 @@
/* This component scrolls a continuous waveform showing the audio that's /* This component scrolls a continuous waveform showing the audio that's
coming into whatever audio inputs this object is connected to. coming into whatever audio inputs this object is connected to.
*/ */
class LiveScrollingAudioDisplay : public AudioVisualiserComponent,
public AudioIODeviceCallback
class LiveScrollingAudioDisplay final : public AudioVisualiserComponent,
public AudioIODeviceCallback
{ {
public: public:
LiveScrollingAudioDisplay() : AudioVisualiserComponent (1) LiveScrollingAudioDisplay() : AudioVisualiserComponent (1)


+ 18
- 18
examples/Assets/DSPDemos_Common.h View File

@@ -38,7 +38,7 @@ struct DSPDemoParameterBase : public ChangeBroadcaster
}; };
//============================================================================== //==============================================================================
struct SliderParameter : public DSPDemoParameterBase
struct SliderParameter final : public DSPDemoParameterBase
{ {
SliderParameter (Range<double> range, double skew, double initialValue, SliderParameter (Range<double> range, double skew, double initialValue,
const String& labelName, const String& suffix = {}) const String& labelName, const String& suffix = {})
@@ -66,7 +66,7 @@ private:
}; };
//============================================================================== //==============================================================================
struct ChoiceParameter : public DSPDemoParameterBase
struct ChoiceParameter final : public DSPDemoParameterBase
{ {
ChoiceParameter (const StringArray& options, int initialId, const String& labelName) ChoiceParameter (const StringArray& options, int initialId, const String& labelName)
: DSPDemoParameterBase (labelName) : DSPDemoParameterBase (labelName)
@@ -89,11 +89,11 @@ private:
}; };
//============================================================================== //==============================================================================
class AudioThumbnailComponent : public Component,
public FileDragAndDropTarget,
public ChangeBroadcaster,
private ChangeListener,
private Timer
class AudioThumbnailComponent final : public Component,
public FileDragAndDropTarget,
public ChangeBroadcaster,
private ChangeListener,
private Timer
{ {
public: public:
AudioThumbnailComponent (AudioDeviceManager& adm, AudioFormatManager& afm) AudioThumbnailComponent (AudioDeviceManager& adm, AudioFormatManager& afm)
@@ -217,7 +217,7 @@ private:
}; };
//============================================================================== //==============================================================================
class DemoParametersComponent : public Component
class DemoParametersComponent final : public Component
{ {
public: public:
DemoParametersComponent (const std::vector<DSPDemoParameterBase*>& demoParams) DemoParametersComponent (const std::vector<DSPDemoParameterBase*>& demoParams)
@@ -270,9 +270,9 @@ private:
//============================================================================== //==============================================================================
template <class DemoType> template <class DemoType>
struct DSPDemo : public AudioSource,
public ProcessorWrapper<DemoType>,
private ChangeListener
struct DSPDemo final : public AudioSource,
public ProcessorWrapper<DemoType>,
private ChangeListener
{ {
DSPDemo (AudioSource& input) DSPDemo (AudioSource& input)
: inputSource (&input) : inputSource (&input)
@@ -327,10 +327,10 @@ struct DSPDemo : public AudioSource,
//============================================================================== //==============================================================================
template <class DemoType> template <class DemoType>
class AudioFileReaderComponent : public Component,
private TimeSliceThread,
private Value::Listener,
private ChangeListener
class AudioFileReaderComponent final : public Component,
private TimeSliceThread,
private Value::Listener,
private ChangeListener
{ {
public: public:
//============================================================================== //==============================================================================
@@ -496,9 +496,9 @@ public:
private: private:
//============================================================================== //==============================================================================
class AudioPlayerHeader : public Component,
private ChangeListener,
private Value::Listener
class AudioPlayerHeader final : public Component,
private ChangeListener,
private Value::Listener
{ {
public: public:
AudioPlayerHeader (AudioDeviceManager& adm, AudioPlayerHeader (AudioDeviceManager& adm,


+ 4
- 7
examples/Assets/DemoUtilities.h View File

@@ -218,11 +218,7 @@ inline Path getJUCELogoPath()
// 0.0 and 1.0 at a random speed // 0.0 and 1.0 at a random speed
struct BouncingNumber struct BouncingNumber
{ {
BouncingNumber()
: speed (0.0004 + 0.0007 * Random::getSystemRandom().nextDouble()),
phase (Random::getSystemRandom().nextDouble())
{
}
virtual ~BouncingNumber() = default;
float getValue() const float getValue() const
{ {
@@ -231,10 +227,11 @@ struct BouncingNumber
} }
protected: protected:
double speed, phase;
double speed = 0.0004 + 0.0007 * Random::getSystemRandom().nextDouble(),
phase = Random::getSystemRandom().nextDouble();
}; };
struct SlowerBouncingNumber : public BouncingNumber
struct SlowerBouncingNumber final : public BouncingNumber
{ {
SlowerBouncingNumber() SlowerBouncingNumber()
{ {


+ 1
- 1
examples/Audio/AudioAppDemo.h View File

@@ -50,7 +50,7 @@
//============================================================================== //==============================================================================
class AudioAppDemo : public AudioAppComponent
class AudioAppDemo final : public AudioAppComponent
{ {
public: public:
//============================================================================== //==============================================================================


+ 3
- 3
examples/Audio/AudioLatencyDemo.h View File

@@ -52,8 +52,8 @@
#include "../Assets/AudioLiveScrollingDisplay.h" #include "../Assets/AudioLiveScrollingDisplay.h"
//============================================================================== //==============================================================================
class LatencyTester : public AudioIODeviceCallback,
private Timer
class LatencyTester final : public AudioIODeviceCallback,
private Timer
{ {
public: public:
LatencyTester (TextEditor& editorBox) LatencyTester (TextEditor& editorBox)
@@ -304,7 +304,7 @@ private:
}; };
//============================================================================== //==============================================================================
class AudioLatencyDemo : public Component
class AudioLatencyDemo final : public Component
{ {
public: public:
AudioLatencyDemo() AudioLatencyDemo()


+ 13
- 13
examples/Audio/AudioPlaybackDemo.h View File

@@ -48,12 +48,12 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
class DemoThumbnailComp : public Component,
public ChangeListener,
public FileDragAndDropTarget,
public ChangeBroadcaster,
private ScrollBar::Listener,
private Timer
class DemoThumbnailComp final : public Component,
public ChangeListener,
public FileDragAndDropTarget,
public ChangeBroadcaster,
private ScrollBar::Listener,
private Timer
{ {
public: public:
DemoThumbnailComp (AudioFormatManager& formatManager, DemoThumbnailComp (AudioFormatManager& formatManager,
@@ -251,13 +251,13 @@ private:
}; };
//============================================================================== //==============================================================================
class AudioPlaybackDemo : public Component,
#if (JUCE_ANDROID || JUCE_IOS)
private Button::Listener,
#else
private FileBrowserListener,
#endif
private ChangeListener
class AudioPlaybackDemo final : public Component,
#if (JUCE_ANDROID || JUCE_IOS)
private Button::Listener,
#else
private FileBrowserListener,
#endif
private ChangeListener
{ {
public: public:
AudioPlaybackDemo() AudioPlaybackDemo()


+ 4
- 4
examples/Audio/AudioRecordingDemo.h View File

@@ -55,7 +55,7 @@
/** A simple class that acts as an AudioIODeviceCallback and writes the /** A simple class that acts as an AudioIODeviceCallback and writes the
incoming audio data to a WAV file. incoming audio data to a WAV file.
*/ */
class AudioRecorder : public AudioIODeviceCallback
class AudioRecorder final : public AudioIODeviceCallback
{ {
public: public:
AudioRecorder (AudioThumbnail& thumbnailToUpdate) AudioRecorder (AudioThumbnail& thumbnailToUpdate)
@@ -170,8 +170,8 @@ private:
}; };
//============================================================================== //==============================================================================
class RecordingThumbnail : public Component,
private ChangeListener
class RecordingThumbnail final : public Component,
private ChangeListener
{ {
public: public:
RecordingThumbnail() RecordingThumbnail()
@@ -230,7 +230,7 @@ private:
}; };
//============================================================================== //==============================================================================
class AudioRecordingDemo : public Component
class AudioRecordingDemo final : public Component
{ {
public: public:
AudioRecordingDemo() AudioRecordingDemo()


+ 2
- 2
examples/Audio/AudioSettingsDemo.h View File

@@ -51,8 +51,8 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class AudioSettingsDemo : public Component,
public ChangeListener
class AudioSettingsDemo final : public Component,
public ChangeListener
{ {
public: public:
AudioSettingsDemo() AudioSettingsDemo()


+ 5
- 5
examples/Audio/AudioSynthesiserDemo.h View File

@@ -53,7 +53,7 @@
//============================================================================== //==============================================================================
/** Our demo synth sound is just a basic sine wave.. */ /** Our demo synth sound is just a basic sine wave.. */
struct SineWaveSound : public SynthesiserSound
struct SineWaveSound final : public SynthesiserSound
{ {
bool appliesToNote (int /*midiNoteNumber*/) override { return true; } bool appliesToNote (int /*midiNoteNumber*/) override { return true; }
bool appliesToChannel (int /*midiChannel*/) override { return true; } bool appliesToChannel (int /*midiChannel*/) override { return true; }
@@ -61,7 +61,7 @@ struct SineWaveSound : public SynthesiserSound
//============================================================================== //==============================================================================
/** Our demo synth voice just plays a sine wave.. */ /** Our demo synth voice just plays a sine wave.. */
struct SineWaveVoice : public SynthesiserVoice
struct SineWaveVoice final : public SynthesiserVoice
{ {
bool canPlaySound (SynthesiserSound* sound) override bool canPlaySound (SynthesiserSound* sound) override
{ {
@@ -153,7 +153,7 @@ private:
//============================================================================== //==============================================================================
// This is an audio source that streams the output of our demo synth. // This is an audio source that streams the output of our demo synth.
struct SynthAudioSource : public AudioSource
struct SynthAudioSource final : public AudioSource
{ {
SynthAudioSource (MidiKeyboardState& keyState) : keyboardState (keyState) SynthAudioSource (MidiKeyboardState& keyState) : keyboardState (keyState)
{ {
@@ -238,7 +238,7 @@ struct SynthAudioSource : public AudioSource
}; };
//============================================================================== //==============================================================================
class Callback : public AudioIODeviceCallback
class Callback final : public AudioIODeviceCallback
{ {
public: public:
Callback (AudioSourcePlayer& playerIn, LiveScrollingAudioDisplay& displayIn) Callback (AudioSourcePlayer& playerIn, LiveScrollingAudioDisplay& displayIn)
@@ -283,7 +283,7 @@ private:
}; };
//============================================================================== //==============================================================================
class AudioSynthesiserDemo : public Component
class AudioSynthesiserDemo final : public Component
{ {
public: public:
AudioSynthesiserDemo() AudioSynthesiserDemo()


+ 8
- 8
examples/Audio/MPEDemo.h View File

@@ -95,7 +95,7 @@ private:
}; };
//============================================================================== //==============================================================================
class MPESetupComponent : public Component
class MPESetupComponent final : public Component
{ {
public: public:
//============================================================================== //==============================================================================
@@ -349,8 +349,8 @@ private:
}; };
//============================================================================== //==============================================================================
class ZoneLayoutComponent : public Component,
private MPEInstrument::Listener
class ZoneLayoutComponent final : public Component,
private MPEInstrument::Listener
{ {
public: public:
//============================================================================== //==============================================================================
@@ -466,7 +466,7 @@ private:
}; };
//============================================================================== //==============================================================================
class MPEDemoSynthVoice : public MPESynthesiserVoice
class MPEDemoSynthVoice final : public MPESynthesiserVoice
{ {
public: public:
//============================================================================== //==============================================================================
@@ -622,10 +622,10 @@ private:
}; };
//============================================================================== //==============================================================================
class MPEDemo : public Component,
private AudioIODeviceCallback,
private MidiInputCallback,
private MPEInstrument::Listener
class MPEDemo final : public Component,
private AudioIODeviceCallback,
private MidiInputCallback,
private MPEInstrument::Listener
{ {
public: public:
//============================================================================== //==============================================================================


+ 5
- 5
examples/Audio/MidiDemo.h View File

@@ -50,7 +50,7 @@
//============================================================================== //==============================================================================
struct MidiDeviceListEntry : ReferenceCountedObject
struct MidiDeviceListEntry final : ReferenceCountedObject
{ {
explicit MidiDeviceListEntry (MidiDeviceInfo info) : deviceInfo (info) {} explicit MidiDeviceListEntry (MidiDeviceInfo info) : deviceInfo (info) {}
@@ -72,10 +72,10 @@ struct MidiDeviceListEntry : ReferenceCountedObject
//============================================================================== //==============================================================================
class MidiDemo : public Component,
private MidiKeyboardState::Listener,
private MidiInputCallback,
private AsyncUpdater
class MidiDemo final : public Component,
private MidiKeyboardState::Listener,
private MidiInputCallback,
private AsyncUpdater
{ {
public: public:
//============================================================================== //==============================================================================


+ 3
- 3
examples/Audio/PluckedStringsDemo.h View File

@@ -172,8 +172,8 @@ private:
This component represents a horizontal vibrating musical string of fixed height This component represents a horizontal vibrating musical string of fixed height
and variable length. The string can be excited by calling stringPlucked(). and variable length. The string can be excited by calling stringPlucked().
*/ */
class StringComponent : public Component,
private Timer
class StringComponent final : public Component,
private Timer
{ {
public: public:
StringComponent (int lengthInPixels, Colour stringColour) StringComponent (int lengthInPixels, Colour stringColour)
@@ -249,7 +249,7 @@ private:
}; };
//============================================================================== //==============================================================================
class PluckedStringsDemo : public AudioAppComponent
class PluckedStringsDemo final : public AudioAppComponent
{ {
public: public:
PluckedStringsDemo() PluckedStringsDemo()


+ 2
- 2
examples/Audio/SimpleFFTDemo.h View File

@@ -50,8 +50,8 @@
//============================================================================== //==============================================================================
class SimpleFFTDemo : public AudioAppComponent,
private Timer
class SimpleFFTDemo final : public AudioAppComponent,
private Timer
{ {
public: public:
SimpleFFTDemo() : SimpleFFTDemo() :


+ 1
- 1
examples/CMake/AudioPlugin/PluginEditor.h View File

@@ -3,7 +3,7 @@
#include "PluginProcessor.h" #include "PluginProcessor.h"
//============================================================================== //==============================================================================
class AudioPluginAudioProcessorEditor : public juce::AudioProcessorEditor
class AudioPluginAudioProcessorEditor final : public juce::AudioProcessorEditor
{ {
public: public:
explicit AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor&); explicit AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor&);


+ 1
- 1
examples/CMake/AudioPlugin/PluginProcessor.h View File

@@ -3,7 +3,7 @@
#include <juce_audio_processors/juce_audio_processors.h> #include <juce_audio_processors/juce_audio_processors.h>
//============================================================================== //==============================================================================
class AudioPluginAudioProcessor : public juce::AudioProcessor
class AudioPluginAudioProcessor final : public juce::AudioProcessor
{ {
public: public:
//============================================================================== //==============================================================================


+ 1
- 1
examples/CMake/GuiApp/MainComponent.h View File

@@ -11,7 +11,7 @@
This component lives inside our window, and this is where you should put all This component lives inside our window, and this is where you should put all
your controls and content. your controls and content.
*/ */
class MainComponent : public juce::Component
class MainComponent final : public juce::Component
{ {
public: public:
//============================================================================== //==============================================================================


+ 1
- 1
examples/DSP/ConvolutionDemo.h View File

@@ -186,7 +186,7 @@ struct ConvolutionDemoDSP
std::vector<DSPDemoParameterBase*> parameters { &cabinetParam }; std::vector<DSPDemoParameterBase*> parameters { &cabinetParam };
}; };
struct ConvolutionDemo : public Component
struct ConvolutionDemo final : public Component
{ {
ConvolutionDemo() ConvolutionDemo()
{ {


+ 1
- 1
examples/DSP/FIRFilterDemo.h View File

@@ -98,7 +98,7 @@ struct FIRFilterDemoDSP
std::vector<DSPDemoParameterBase*> parameters { &cutoffParam, &typeParam }; std::vector<DSPDemoParameterBase*> parameters { &cutoffParam, &typeParam };
}; };
struct FIRFilterDemo : public Component
struct FIRFilterDemo final : public Component
{ {
FIRFilterDemo() FIRFilterDemo()
{ {


+ 1
- 1
examples/DSP/GainDemo.h View File

@@ -83,7 +83,7 @@ struct GainDemoDSP
std::vector<DSPDemoParameterBase*> parameters { &gainParam }; std::vector<DSPDemoParameterBase*> parameters { &gainParam };
}; };
struct GainDemo : public Component
struct GainDemo final : public Component
{ {
GainDemo() GainDemo()
{ {


+ 1
- 1
examples/DSP/IIRFilterDemo.h View File

@@ -102,7 +102,7 @@ struct IIRFilterDemoDSP
double sampleRate = 0.0; double sampleRate = 0.0;
}; };
struct IIRFilterDemo : public Component
struct IIRFilterDemo final : public Component
{ {
IIRFilterDemo() IIRFilterDemo()
{ {


+ 1
- 1
examples/DSP/OscillatorDemo.h View File

@@ -134,7 +134,7 @@ struct OscillatorDemoDSP
std::vector<DSPDemoParameterBase*> parameters { &typeParam, &accuracy, &freqParam, &gainParam, &mixParam }; std::vector<DSPDemoParameterBase*> parameters { &typeParam, &accuracy, &freqParam, &gainParam, &mixParam };
}; };
struct OscillatorDemo : public Component
struct OscillatorDemo final : public Component
{ {
OscillatorDemo() OscillatorDemo()
{ {


+ 1
- 1
examples/DSP/OverdriveDemo.h View File

@@ -113,7 +113,7 @@ struct OverdriveDemoDSP
double sampleRate = 0.0; double sampleRate = 0.0;
}; };
struct OverdriveDemo : public Component
struct OverdriveDemo final : public Component
{ {
OverdriveDemo() OverdriveDemo()
{ {


+ 1
- 1
examples/DSP/SIMDRegisterDemo.h View File

@@ -156,7 +156,7 @@ struct SIMDRegisterDemoDSP
double sampleRate = 0.0; double sampleRate = 0.0;
}; };
struct SIMDRegisterDemo : public Component
struct SIMDRegisterDemo final : public Component
{ {
SIMDRegisterDemo() SIMDRegisterDemo()
{ {


+ 1
- 1
examples/DSP/StateVariableFilterDemo.h View File

@@ -100,7 +100,7 @@ struct StateVariableFilterDemoDSP
double sampleRate = 0.0; double sampleRate = 0.0;
}; };
struct StateVariableFilterDemo : public Component
struct StateVariableFilterDemo final : public Component
{ {
StateVariableFilterDemo() StateVariableFilterDemo()
{ {


+ 1
- 1
examples/DSP/WaveShaperTanhDemo.h View File

@@ -82,7 +82,7 @@ struct WaveShaperTanhDemoDSP
std::vector<DSPDemoParameterBase*> parameters { &accuracy }; // no params for this demo std::vector<DSPDemoParameterBase*> parameters { &accuracy }; // no params for this demo
}; };
struct WaveShaperTanhDemo : public Component
struct WaveShaperTanhDemo final : public Component
{ {
WaveShaperTanhDemo() WaveShaperTanhDemo()
{ {


+ 4
- 4
examples/DemoRunner/Source/Main.cpp View File

@@ -31,8 +31,8 @@
//============================================================================== //==============================================================================
#if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD #if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD
// Just add a simple icon to the Window system tray area or Mac menu bar.. // Just add a simple icon to the Window system tray area or Mac menu bar..
struct DemoTaskbarComponent : public SystemTrayIconComponent,
private Timer
struct DemoTaskbarComponent final : public SystemTrayIconComponent,
private Timer
{ {
DemoTaskbarComponent() DemoTaskbarComponent()
{ {
@@ -76,7 +76,7 @@
std::unique_ptr<AudioDeviceManager> sharedAudioDeviceManager; std::unique_ptr<AudioDeviceManager> sharedAudioDeviceManager;
//============================================================================== //==============================================================================
class DemoRunnerApplication : public JUCEApplication
class DemoRunnerApplication final : public JUCEApplication
{ {
public: public:
//============================================================================== //==============================================================================
@@ -117,7 +117,7 @@ public:
ApplicationCommandManager& getGlobalCommandManager() { return commandManager; } ApplicationCommandManager& getGlobalCommandManager() { return commandManager; }
private: private:
class MainAppWindow : public DocumentWindow
class MainAppWindow final : public DocumentWindow
{ {
public: public:
MainAppWindow (const String& name) MainAppWindow (const String& name)


+ 24
- 24
examples/GUI/AccessibilityDemo.h View File

@@ -57,7 +57,7 @@
This component sets its accessibility title and help text properties and This component sets its accessibility title and help text properties and
also acts as a focus container for its children. also acts as a focus container for its children.
*/ */
class ContentComponent : public Component
class ContentComponent final : public Component
{ {
public: public:
ContentComponent (const String& title, const String& info, Component& contentToDisplay) ContentComponent (const String& title, const String& info, Component& contentToDisplay)
@@ -96,8 +96,8 @@ public:
private: private:
//============================================================================== //==============================================================================
struct InfoIcon : public Component,
public SettableTooltipClient
struct InfoIcon final : public Component,
public SettableTooltipClient
{ {
InfoIcon() InfoIcon()
{ {
@@ -151,7 +151,7 @@ private:
visible and controllable by accessibility clients. There are a few examples visible and controllable by accessibility clients. There are a few examples
of some widgets in this demo such as Sliders, Buttons and a TreeView. of some widgets in this demo such as Sliders, Buttons and a TreeView.
*/ */
class JUCEWidgetsComponent : public Component
class JUCEWidgetsComponent final : public Component
{ {
public: public:
JUCEWidgetsComponent() JUCEWidgetsComponent()
@@ -184,7 +184,7 @@ public:
private: private:
//============================================================================== //==============================================================================
class ButtonsComponent : public Component
class ButtonsComponent final : public Component
{ {
public: public:
ButtonsComponent() ButtonsComponent()
@@ -217,7 +217,7 @@ private:
private: private:
//============================================================================== //==============================================================================
struct RadioButtonsGroupComponent : public Component
struct RadioButtonsGroupComponent final : public Component
{ {
RadioButtonsGroupComponent() RadioButtonsGroupComponent()
{ {
@@ -263,7 +263,7 @@ private:
}; };
//============================================================================== //==============================================================================
class SlidersComponent : public Component
class SlidersComponent final : public Component
{ {
public: public:
SlidersComponent() SlidersComponent()
@@ -317,7 +317,7 @@ private:
}; };
//============================================================================== //==============================================================================
class TreeViewComponent : public Component
class TreeViewComponent final : public Component
{ {
public: public:
TreeViewComponent() TreeViewComponent()
@@ -335,7 +335,7 @@ private:
private: private:
//============================================================================== //==============================================================================
struct RootItem : public TreeViewItem
struct RootItem final : public TreeViewItem
{ {
RootItem() RootItem()
{ {
@@ -447,7 +447,7 @@ constexpr NameAndRole accessibilityRoles[]
Component::createAccessibilityHandler() method to return a custom AccessibilityHandler. Component::createAccessibilityHandler() method to return a custom AccessibilityHandler.
The properties of this handler are set by the various controls in the demo. The properties of this handler are set by the various controls in the demo.
*/ */
class CustomWidgetComponent : public Component
class CustomWidgetComponent final : public Component
{ {
public: public:
CustomWidgetComponent() CustomWidgetComponent()
@@ -488,7 +488,7 @@ public:
private: private:
//============================================================================== //==============================================================================
class AccessibleComponent : public Component
class AccessibleComponent final : public Component
{ {
public: public:
explicit AccessibleComponent (CustomWidgetComponent& owner) explicit AccessibleComponent (CustomWidgetComponent& owner)
@@ -543,7 +543,7 @@ private:
}; };
//============================================================================== //==============================================================================
class InfoComponent : public Component
class InfoComponent final : public Component
{ {
public: public:
explicit InfoComponent (CustomWidgetComponent& owner) explicit InfoComponent (CustomWidgetComponent& owner)
@@ -636,7 +636,7 @@ private:
}; };
//============================================================================== //==============================================================================
class ActionsComponent : public Component
class ActionsComponent final : public Component
{ {
public: public:
explicit ActionsComponent (CustomWidgetComponent& owner) explicit ActionsComponent (CustomWidgetComponent& owner)
@@ -675,8 +675,8 @@ private:
private: private:
//============================================================================== //==============================================================================
class AccessibilityActionComponent : public Component,
private Timer
class AccessibilityActionComponent final : public Component,
private Timer
{ {
public: public:
AccessibilityActionComponent (CustomWidgetComponent& owner, AccessibilityActionComponent (CustomWidgetComponent& owner,
@@ -769,7 +769,7 @@ private:
}; };
//============================================================================== //==============================================================================
class ValueInterfaceComponent : public Component
class ValueInterfaceComponent final : public Component
{ {
public: public:
explicit ValueInterfaceComponent (CustomWidgetComponent& owner) explicit ValueInterfaceComponent (CustomWidgetComponent& owner)
@@ -883,7 +883,7 @@ private:
private: private:
//============================================================================== //==============================================================================
struct RangedValueComponent : public Component
struct RangedValueComponent final : public Component
{ {
RangedValueComponent() RangedValueComponent()
{ {
@@ -986,7 +986,7 @@ private:
}; };
//============================================================================== //==============================================================================
class StateComponent : public Component
class StateComponent final : public Component
{ {
public: public:
StateComponent() StateComponent()
@@ -1096,7 +1096,7 @@ private:
/** /**
The top-level component containing an example of custom child component navigation. The top-level component containing an example of custom child component navigation.
*/ */
class CustomNavigationComponent : public Component
class CustomNavigationComponent final : public Component
{ {
public: public:
CustomNavigationComponent() CustomNavigationComponent()
@@ -1126,7 +1126,7 @@ public:
private: private:
//============================================================================== //==============================================================================
class NavigableComponentsHolder : public Component
class NavigableComponentsHolder final : public Component
{ {
public: public:
NavigableComponentsHolder() NavigableComponentsHolder()
@@ -1163,7 +1163,7 @@ private:
std::unique_ptr<ComponentTraverser> createFocusTraverser() override std::unique_ptr<ComponentTraverser> createFocusTraverser() override
{ {
struct CustomTraverser : public FocusTraverser
struct CustomTraverser final : public FocusTraverser
{ {
explicit CustomTraverser (NavigableComponentsHolder& owner) explicit CustomTraverser (NavigableComponentsHolder& owner)
: navigableComponentsHolder (owner) {} : navigableComponentsHolder (owner) {}
@@ -1221,7 +1221,7 @@ private:
} }
private: private:
struct NavigableComponent : public Component
struct NavigableComponent final : public Component
{ {
NavigableComponent (int index, int total, NavigableComponentsHolder& owner) NavigableComponent (int index, int total, NavigableComponentsHolder& owner)
{ {
@@ -1360,7 +1360,7 @@ private:
screen reader application to be read out along with a priority determining how screen reader application to be read out along with a priority determining how
it should be read out (whether it should interrupt other announcements, etc.). it should be read out (whether it should interrupt other announcements, etc.).
*/ */
class AnnouncementsComponent : public Component
class AnnouncementsComponent final : public Component
{ {
public: public:
AnnouncementsComponent() AnnouncementsComponent()
@@ -1442,7 +1442,7 @@ private:
This just contains a TabbedComponent with a tab for each of the top-level demos. This just contains a TabbedComponent with a tab for each of the top-level demos.
*/ */
class AccessibilityDemo : public Component
class AccessibilityDemo final : public Component
{ {
public: public:
AccessibilityDemo() AccessibilityDemo()


+ 1
- 1
examples/GUI/AnimationAppDemo.h View File

@@ -52,7 +52,7 @@
This component lives inside our window, and this is where you should put all This component lives inside our window, and this is where you should put all
your controls and content. your controls and content.
*/ */
class AnimationAppDemo : public AnimatedAppComponent
class AnimationAppDemo final : public AnimatedAppComponent
{ {
public: public:
//============================================================================== //==============================================================================


+ 4
- 4
examples/GUI/AnimationDemo.h View File

@@ -50,7 +50,7 @@
//============================================================================== //==============================================================================
/** This will be the source of our balls and can be dragged around. */ /** This will be the source of our balls and can be dragged around. */
class BallGeneratorComponent : public Component
class BallGeneratorComponent final : public Component
{ {
public: public:
BallGeneratorComponent() {} BallGeneratorComponent() {}
@@ -93,7 +93,7 @@ private:
}; };
//============================================================================== //==============================================================================
struct BallComponent : public Component
struct BallComponent final : public Component
{ {
BallComponent (Point<float> pos) BallComponent (Point<float> pos)
: position (pos), : position (pos),
@@ -136,8 +136,8 @@ struct BallComponent : public Component
}; };
//============================================================================== //==============================================================================
class AnimationDemo : public Component,
private Timer
class AnimationDemo final : public Component,
private Timer
{ {
public: public:
AnimationDemo() AnimationDemo()


+ 2
- 2
examples/GUI/BouncingBallWavetableDemo.h View File

@@ -50,8 +50,8 @@
//============================================================================== //==============================================================================
class BouncingBallWavetableDemo : public AudioAppComponent,
private Timer
class BouncingBallWavetableDemo final : public AudioAppComponent,
private Timer
{ {
public: public:
//============================================================================== //==============================================================================


+ 1
- 1
examples/GUI/CameraDemo.h View File

@@ -50,7 +50,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class CameraDemo : public Component
class CameraDemo final : public Component
{ {
public: public:
CameraDemo() CameraDemo()


+ 2
- 2
examples/GUI/CodeEditorDemo.h View File

@@ -53,8 +53,8 @@
#endif #endif
//============================================================================== //==============================================================================
class CodeEditorDemo : public Component,
private FilenameComponentListener
class CodeEditorDemo final : public Component,
private FilenameComponentListener
{ {
public: public:
CodeEditorDemo() CodeEditorDemo()


+ 3
- 3
examples/GUI/ComponentDemo.h View File

@@ -51,7 +51,7 @@
/** /**
This class represents one of the individual lights in our grid. This class represents one of the individual lights in our grid.
*/ */
class ToggleLightComponent : public Component
class ToggleLightComponent final : public Component
{ {
public: public:
ToggleLightComponent() {} ToggleLightComponent() {}
@@ -84,7 +84,7 @@ private:
/** /**
This is the parent class that holds multiple ToggleLightComponents in a grid. This is the parent class that holds multiple ToggleLightComponents in a grid.
*/ */
class ToggleLightGridComponent : public Component
class ToggleLightGridComponent final : public Component
{ {
public: public:
ToggleLightGridComponent() ToggleLightGridComponent()
@@ -134,7 +134,7 @@ private:
This component lives inside our window, and this is where you should put all This component lives inside our window, and this is where you should put all
your controls and content. your controls and content.
*/ */
class ComponentDemo : public Component
class ComponentDemo final : public Component
{ {
public: public:
//============================================================================== //==============================================================================


+ 1
- 1
examples/GUI/ComponentTransformsDemo.h View File

@@ -50,7 +50,7 @@
#include "WidgetsDemo.h" #include "WidgetsDemo.h"
//============================================================================== //==============================================================================
class ComponentTransformsDemo : public Component
class ComponentTransformsDemo final : public Component
{ {
public: public:
ComponentTransformsDemo() ComponentTransformsDemo()


+ 2
- 2
examples/GUI/DialogsDemo.h View File

@@ -55,7 +55,7 @@ struct MessageBoxOwnerComponent : public Component
}; };
//============================================================================== //==============================================================================
class DemoBackgroundThread : public ThreadWithProgressWindow
class DemoBackgroundThread final : public ThreadWithProgressWindow
{ {
public: public:
explicit DemoBackgroundThread (MessageBoxOwnerComponent& comp) explicit DemoBackgroundThread (MessageBoxOwnerComponent& comp)
@@ -117,7 +117,7 @@ public:
//============================================================================== //==============================================================================
class DialogsDemo : public MessageBoxOwnerComponent
class DialogsDemo final : public MessageBoxOwnerComponent
{ {
public: public:
enum DialogType enum DialogType


+ 2
- 2
examples/GUI/FlexBoxDemo.h View File

@@ -49,7 +49,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
struct DemoFlexPanel : public Component
struct DemoFlexPanel final : public Component
{ {
DemoFlexPanel (Colour col, FlexItem& item) DemoFlexPanel (Colour col, FlexItem& item)
: flexItem (item), colour (col) : flexItem (item), colour (col)
@@ -163,7 +163,7 @@ struct DemoFlexPanel : public Component
}; };
//============================================================================== //==============================================================================
struct FlexBoxDemo : public juce::Component
struct FlexBoxDemo final : public juce::Component
{ {
FlexBoxDemo() FlexBoxDemo()
{ {


+ 3
- 3
examples/GUI/FontsDemo.h View File

@@ -49,9 +49,9 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class FontsDemo : public Component,
private ListBoxModel,
private Slider::Listener
class FontsDemo final : public Component,
private ListBoxModel,
private Slider::Listener
{ {
public: public:
FontsDemo() FontsDemo()


+ 14
- 14
examples/GUI/GraphicsDemo.h View File

@@ -50,7 +50,7 @@
//============================================================================== //==============================================================================
/** Holds the various toggle buttons for the animation modes. */ /** Holds the various toggle buttons for the animation modes. */
class ControllersComponent : public Component
class ControllersComponent final : public Component
{ {
public: public:
ControllersComponent() ControllersComponent()
@@ -113,7 +113,7 @@ public:
}; };
//============================================================================== //==============================================================================
class GraphicsDemoBase : public Component
class GraphicsDemoBase : public Component
{ {
public: public:
GraphicsDemoBase (ControllersComponent& cc, const String& name) GraphicsDemoBase (ControllersComponent& cc, const String& name)
@@ -280,7 +280,7 @@ public:
}; };
//============================================================================== //==============================================================================
class RectangleFillTypesDemo : public GraphicsDemoBase
class RectangleFillTypesDemo final : public GraphicsDemoBase
{ {
public: public:
RectangleFillTypesDemo (ControllersComponent& cc) RectangleFillTypesDemo (ControllersComponent& cc)
@@ -316,7 +316,7 @@ public:
}; };
//============================================================================== //==============================================================================
class PathsDemo : public GraphicsDemoBase
class PathsDemo final : public GraphicsDemoBase
{ {
public: public:
PathsDemo (ControllersComponent& cc, bool linear, bool radial) PathsDemo (ControllersComponent& cc, bool linear, bool radial)
@@ -377,7 +377,7 @@ public:
}; };
//============================================================================== //==============================================================================
class StrokesDemo : public GraphicsDemoBase
class StrokesDemo final : public GraphicsDemoBase
{ {
public: public:
StrokesDemo (ControllersComponent& cc) StrokesDemo (ControllersComponent& cc)
@@ -410,7 +410,7 @@ public:
}; };
//============================================================================== //==============================================================================
class ImagesRenderingDemo : public GraphicsDemoBase
class ImagesRenderingDemo final : public GraphicsDemoBase
{ {
public: public:
ImagesRenderingDemo (ControllersComponent& cc, bool argb, bool tiled) ImagesRenderingDemo (ControllersComponent& cc, bool argb, bool tiled)
@@ -448,7 +448,7 @@ public:
}; };
//============================================================================== //==============================================================================
class GlyphsDemo : public GraphicsDemoBase
class GlyphsDemo final : public GraphicsDemoBase
{ {
public: public:
GlyphsDemo (ControllersComponent& cc) GlyphsDemo (ControllersComponent& cc)
@@ -468,7 +468,7 @@ public:
}; };
//============================================================================== //==============================================================================
class SVGDemo : public GraphicsDemoBase
class SVGDemo final : public GraphicsDemoBase
{ {
public: public:
SVGDemo (ControllersComponent& cc) SVGDemo (ControllersComponent& cc)
@@ -513,7 +513,7 @@ public:
}; };
//============================================================================== //==============================================================================
class LinesDemo : public GraphicsDemoBase
class LinesDemo final : public GraphicsDemoBase
{ {
public: public:
LinesDemo (ControllersComponent& cc) LinesDemo (ControllersComponent& cc)
@@ -576,8 +576,8 @@ public:
}; };
//============================================================================== //==============================================================================
class DemoHolderComponent : public Component,
private Timer
class DemoHolderComponent final : public Component,
private Timer
{ {
public: public:
DemoHolderComponent() DemoHolderComponent()
@@ -623,8 +623,8 @@ private:
}; };
//============================================================================== //==============================================================================
class TestListComponent : public Component,
private ListBoxModel
class TestListComponent final : public Component,
private ListBoxModel
{ {
public: public:
TestListComponent (DemoHolderComponent& holder, ControllersComponent& controls) TestListComponent (DemoHolderComponent& holder, ControllersComponent& controls)
@@ -695,7 +695,7 @@ private:
}; };
//============================================================================== //==============================================================================
class GraphicsDemo : public Component
class GraphicsDemo final : public Component
{ {
public: public:
GraphicsDemo() GraphicsDemo()


+ 1
- 1
examples/GUI/GridDemo.h View File

@@ -49,7 +49,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
struct GridDemo : public Component
struct GridDemo final : public Component
{ {
GridDemo() GridDemo()
{ {


+ 1
- 1
examples/GUI/HelloWorldDemo.h View File

@@ -48,7 +48,7 @@
//============================================================================== //==============================================================================
class HelloWorldDemo : public Component
class HelloWorldDemo final : public Component
{ {
public: public:
//============================================================================== //==============================================================================


+ 2
- 2
examples/GUI/ImagesDemo.h View File

@@ -49,8 +49,8 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class ImagesDemo : public Component,
public FileBrowserListener
class ImagesDemo final : public Component,
public FileBrowserListener
{ {
public: public:
ImagesDemo() ImagesDemo()


+ 3
- 3
examples/GUI/KeyMappingsDemo.h View File

@@ -66,8 +66,8 @@ enum KeyPressCommandIDs
This is a simple target for the key-presses which will live inside the demo component This is a simple target for the key-presses which will live inside the demo component
and contains a button that can be moved around with the arrow keys. and contains a button that can be moved around with the arrow keys.
*/ */
class KeyPressTarget : public Component,
public ApplicationCommandTarget
class KeyPressTarget final : public Component,
public ApplicationCommandTarget
{ {
public: public:
KeyPressTarget() KeyPressTarget()
@@ -213,7 +213,7 @@ private:
}; };
//============================================================================== //==============================================================================
class KeyMappingsDemo : public Component
class KeyMappingsDemo final : public Component
{ {
public: public:
KeyMappingsDemo() KeyMappingsDemo()


+ 4
- 4
examples/GUI/LookAndFeelDemo.h View File

@@ -55,7 +55,7 @@
It's a good idea not to hard code your colours, use the findColour method along with appropriate It's a good idea not to hard code your colours, use the findColour method along with appropriate
ColourIds so you can set these on a per-component basis. ColourIds so you can set these on a per-component basis.
*/ */
struct CustomLookAndFeel : public LookAndFeel_V4
struct CustomLookAndFeel : public LookAndFeel_V4
{ {
void drawRoundThumb (Graphics& g, float x, float y, float diameter, Colour colour, float outlineThickness) void drawRoundThumb (Graphics& g, float x, float y, float diameter, Colour colour, float outlineThickness)
{ {
@@ -296,7 +296,7 @@ struct CustomLookAndFeel : public LookAndFeel_V4
This inherits from CustomLookAndFeel above for the linear bar and slider backgrounds. This inherits from CustomLookAndFeel above for the linear bar and slider backgrounds.
*/ */
struct SquareLookAndFeel : public CustomLookAndFeel
struct SquareLookAndFeel final : public CustomLookAndFeel
{ {
void drawButtonBackground (Graphics& g, Button& button, const Colour& backgroundColour, void drawButtonBackground (Graphics& g, Button& button, const Colour& backgroundColour,
bool isMouseOverButton, bool isButtonDown) override bool isMouseOverButton, bool isButtonDown) override
@@ -434,7 +434,7 @@ struct SquareLookAndFeel : public CustomLookAndFeel
}; };
//============================================================================== //==============================================================================
struct LookAndFeelDemoComponent : public Component
struct LookAndFeelDemoComponent final : public Component
{ {
LookAndFeelDemoComponent() LookAndFeelDemoComponent()
{ {
@@ -521,7 +521,7 @@ struct LookAndFeelDemoComponent : public Component
}; };
//============================================================================== //==============================================================================
class LookAndFeelDemo : public Component
class LookAndFeelDemo final : public Component
{ {
public: public:
LookAndFeelDemo() LookAndFeelDemo()


+ 5
- 5
examples/GUI/MDIDemo.h View File

@@ -53,8 +53,8 @@
also listen to changes in the text and mark the FileBasedDocument as 'dirty'. This 'dirty' also listen to changes in the text and mark the FileBasedDocument as 'dirty'. This 'dirty'
flag is used to prompt the user to save the note when it is closed. flag is used to prompt the user to save the note when it is closed.
*/ */
class Note : public Component,
public FileBasedDocument
class Note final : public Component,
public FileBasedDocument
{ {
public: public:
Note (const String& name, const String& contents) Note (const String& name, const String& contents)
@@ -133,7 +133,7 @@ private:
//============================================================================== //==============================================================================
/** Simple MultiDocumentPanel that just tries to save our notes when they are closed. /** Simple MultiDocumentPanel that just tries to save our notes when they are closed.
*/ */
class DemoMultiDocumentPanel : public MultiDocumentPanel
class DemoMultiDocumentPanel final : public MultiDocumentPanel
{ {
public: public:
DemoMultiDocumentPanel() = default; DemoMultiDocumentPanel() = default;
@@ -165,8 +165,8 @@ private:
/** Simple multi-document panel that manages a number of notes that you can store to files. /** Simple multi-document panel that manages a number of notes that you can store to files.
By default this will look for notes saved to the desktop and load them up. By default this will look for notes saved to the desktop and load them up.
*/ */
class MDIDemo : public Component,
public FileDragAndDropTarget
class MDIDemo final : public Component,
public FileDragAndDropTarget
{ {
public: public:
MDIDemo() MDIDemo()


+ 8
- 8
examples/GUI/MenusDemo.h View File

@@ -54,7 +54,7 @@
is enabled. It contains an icon that can be used to show the side panel containing is enabled. It contains an icon that can be used to show the side panel containing
the menu. the menu.
*/ */
struct BurgerMenuHeader : public Component
struct BurgerMenuHeader final : public Component
{ {
BurgerMenuHeader (SidePanel& sp) BurgerMenuHeader (SidePanel& sp)
: sidePanel (sp) : sidePanel (sp)
@@ -120,9 +120,9 @@ private:
}; };
//============================================================================== //==============================================================================
class MenusDemo : public Component,
public ApplicationCommandTarget,
public MenuBarModel
class MenusDemo final : public Component,
public ApplicationCommandTarget,
public MenuBarModel
{ {
public: public:
//============================================================================== //==============================================================================
@@ -341,8 +341,8 @@ private:
Command messages that aren't handled in the main component will be passed Command messages that aren't handled in the main component will be passed
to this class to respond to. to this class to respond to.
*/ */
class OuterCommandTarget : public Component,
public ApplicationCommandTarget
class OuterCommandTarget final : public Component,
public ApplicationCommandTarget
{ {
public: public:
OuterCommandTarget (ApplicationCommandManager& m) OuterCommandTarget (ApplicationCommandManager& m)
@@ -430,8 +430,8 @@ private:
Command messages that aren't handled in the OuterCommandTarget will be passed Command messages that aren't handled in the OuterCommandTarget will be passed
to this class to respond to. to this class to respond to.
*/ */
struct InnerCommandTarget : public Component,
public ApplicationCommandTarget
struct InnerCommandTarget final : public Component,
public ApplicationCommandTarget
{ {
InnerCommandTarget (ApplicationCommandManager& m) InnerCommandTarget (ApplicationCommandManager& m)
: commandManager (m) : commandManager (m)


+ 1
- 1
examples/GUI/MultiTouchDemo.h View File

@@ -49,7 +49,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class MultiTouchDemo : public Component
class MultiTouchDemo final : public Component
{ {
public: public:
MultiTouchDemo() MultiTouchDemo()


+ 1
- 1
examples/GUI/OpenGLAppDemo.h View File

@@ -54,7 +54,7 @@
This component lives inside our window, and this is where you should put all This component lives inside our window, and this is where you should put all
your controls and content. your controls and content.
*/ */
class OpenGLAppDemo : public OpenGLAppComponent
class OpenGLAppDemo final : public OpenGLAppComponent
{ {
public: public:
//============================================================================== //==============================================================================


+ 1
- 1
examples/GUI/OpenGLDemo.h View File

@@ -951,7 +951,7 @@ private:
Graphics g (*glRenderer); Graphics g (*glRenderer);
g.addTransform (AffineTransform::scale (desktopScale)); g.addTransform (AffineTransform::scale (desktopScale));
for (auto s : stars)
for (const auto& s : stars)
{ {
auto size = 0.25f; auto size = 0.25f;


+ 3
- 3
examples/GUI/OpenGLDemo2D.h View File

@@ -49,9 +49,9 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class OpenGLDemo2D : public Component,
private CodeDocument::Listener,
private Timer
class OpenGLDemo2D final : public Component,
private CodeDocument::Listener,
private Timer
{ {
public: public:
OpenGLDemo2D() OpenGLDemo2D()


+ 4
- 4
examples/GUI/PropertiesDemo.h View File

@@ -49,7 +49,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class DemoButtonPropertyComponent : public ButtonPropertyComponent
class DemoButtonPropertyComponent final : public ButtonPropertyComponent
{ {
public: public:
DemoButtonPropertyComponent (const String& propertyName) DemoButtonPropertyComponent (const String& propertyName)
@@ -80,7 +80,7 @@ private:
}; };
//============================================================================== //==============================================================================
class DemoSliderPropertyComponent : public SliderPropertyComponent
class DemoSliderPropertyComponent final : public SliderPropertyComponent
{ {
public: public:
DemoSliderPropertyComponent (const String& propertyName) DemoSliderPropertyComponent (const String& propertyName)
@@ -162,8 +162,8 @@ static Array<PropertyComponent*> createChoices (int howMany)
} }
//============================================================================== //==============================================================================
class PropertiesDemo : public Component,
private Timer
class PropertiesDemo final : public Component,
private Timer
{ {
public: public:
PropertiesDemo() PropertiesDemo()


+ 8
- 8
examples/GUI/VideoDemo.h View File

@@ -51,9 +51,9 @@
#if JUCE_MAC || JUCE_WINDOWS #if JUCE_MAC || JUCE_WINDOWS
//============================================================================== //==============================================================================
// so that we can easily have two video windows each with a file browser, wrap this up as a class.. // so that we can easily have two video windows each with a file browser, wrap this up as a class..
class MovieComponentWithFileBrowser : public Component,
public DragAndDropTarget,
private FilenameComponentListener
class MovieComponentWithFileBrowser final : public Component,
public DragAndDropTarget,
private FilenameComponentListener
{ {
public: public:
MovieComponentWithFileBrowser() MovieComponentWithFileBrowser()
@@ -147,9 +147,9 @@ private:
}; };
//============================================================================== //==============================================================================
class VideoDemo : public Component,
public DragAndDropContainer,
private FileBrowserListener
class VideoDemo final : public Component,
public DragAndDropContainer,
private FileBrowserListener
{ {
public: public:
VideoDemo() VideoDemo()
@@ -269,8 +269,8 @@ private:
}; };
#elif JUCE_IOS || JUCE_ANDROID #elif JUCE_IOS || JUCE_ANDROID
//============================================================================== //==============================================================================
class VideoDemo : public Component,
private Timer
class VideoDemo final : public Component,
private Timer
{ {
public: public:
VideoDemo() VideoDemo()


+ 2
- 2
examples/GUI/WebBrowserDemo.h View File

@@ -55,7 +55,7 @@
when the browser changes URL. You don't need to do this, you can just also when the browser changes URL. You don't need to do this, you can just also
just use the WebBrowserComponent class directly. just use the WebBrowserComponent class directly.
*/ */
class DemoBrowserComponent : public WebBrowserComponent
class DemoBrowserComponent final : public WebBrowserComponent
{ {
public: public:
//============================================================================== //==============================================================================
@@ -89,7 +89,7 @@ private:
//============================================================================== //==============================================================================
class WebBrowserDemo : public Component
class WebBrowserDemo final : public Component
{ {
public: public:
WebBrowserDemo() WebBrowserDemo()


+ 17
- 17
examples/GUI/WidgetsDemo.h View File

@@ -59,7 +59,7 @@ static void showBubbleMessage (Component& targetComponent, const String& textToS
/** To demonstrate how sliders can have custom snapping applied to their values, /** To demonstrate how sliders can have custom snapping applied to their values,
this simple class snaps the value to 50 if it comes near. this simple class snaps the value to 50 if it comes near.
*/ */
struct SnappingSlider : public Slider
struct SnappingSlider final : public Slider
{ {
double snapValue (double attemptedValue, DragMode dragMode) override double snapValue (double attemptedValue, DragMode dragMode) override
{ {
@@ -74,8 +74,8 @@ struct SnappingSlider : public Slider
}; };
/** A TextButton that pops up a colour chooser to change its colours. */ /** A TextButton that pops up a colour chooser to change its colours. */
class ColourChangeButton : public TextButton,
public ChangeListener
class ColourChangeButton final : public TextButton,
public ChangeListener
{ {
public: public:
ColourChangeButton() ColourChangeButton()
@@ -112,7 +112,7 @@ public:
}; };
//============================================================================== //==============================================================================
struct SlidersPage : public Component
struct SlidersPage final : public Component
{ {
SlidersPage() SlidersPage()
{ {
@@ -261,7 +261,7 @@ private:
}; };
//============================================================================== //==============================================================================
struct ButtonsPage : public Component
struct ButtonsPage final : public Component
{ {
ButtonsPage (bool isRunningComponentTransformDemo) ButtonsPage (bool isRunningComponentTransformDemo)
{ {
@@ -461,8 +461,8 @@ private:
//============================================================================== //==============================================================================
struct MiscPage : public Component,
private Timer
struct MiscPage final : public Component,
private Timer
{ {
MiscPage() MiscPage()
{ {
@@ -540,7 +540,7 @@ struct MiscPage : public Component,
}; };
//============================================================================== //==============================================================================
struct MenuPage : public Component
struct MenuPage final : public Component
{ {
MenuPage() MenuPage()
{ {
@@ -735,8 +735,8 @@ struct MenuPage : public Component
}; };
//============================================================================== //==============================================================================
class ToolbarDemoComp : public Component,
private Slider::Listener
class ToolbarDemoComp final : public Component,
private Slider::Listener
{ {
public: public:
ToolbarDemoComp() ToolbarDemoComp()
@@ -802,7 +802,7 @@ private:
customiseButton { "Customise..." }; customiseButton { "Customise..." };
//============================================================================== //==============================================================================
class DemoToolbarItemFactory : public ToolbarItemFactory
class DemoToolbarItemFactory final : public ToolbarItemFactory
{ {
public: public:
DemoToolbarItemFactory() {} DemoToolbarItemFactory() {}
@@ -977,8 +977,8 @@ private:
/** /**
This class shows how to implement a TableListBoxModel to show in a TableListBox. This class shows how to implement a TableListBoxModel to show in a TableListBox.
*/ */
class TableDemoComponent : public Component,
public TableListBoxModel
class TableDemoComponent final : public Component,
public TableListBoxModel
{ {
public: public:
TableDemoComponent() TableDemoComponent()
@@ -1303,8 +1303,8 @@ private:
}; };
//============================================================================== //==============================================================================
class DragAndDropDemo : public Component,
public DragAndDropContainer
class DragAndDropDemo final : public Component,
public DragAndDropContainer
{ {
public: public:
DragAndDropDemo() DragAndDropDemo()
@@ -1509,7 +1509,7 @@ private:
}; };
//============================================================================== //==============================================================================
struct DemoTabbedComponent : public TabbedComponent
struct DemoTabbedComponent final : public TabbedComponent
{ {
DemoTabbedComponent (bool isRunningComponenTransformsDemo) DemoTabbedComponent (bool isRunningComponenTransformsDemo)
: TabbedComponent (TabbedButtonBar::TabsAtTop) : TabbedComponent (TabbedButtonBar::TabsAtTop)
@@ -1567,7 +1567,7 @@ struct DemoTabbedComponent : public TabbedComponent
}; };
//============================================================================== //==============================================================================
struct WidgetsDemo : public Component
struct WidgetsDemo final : public Component
{ {
WidgetsDemo (bool isRunningComponenTransformsDemo = false) WidgetsDemo (bool isRunningComponenTransformsDemo = false)
: tabs (isRunningComponenTransformsDemo) : tabs (isRunningComponenTransformsDemo)


+ 7
- 7
examples/GUI/WindowsDemo.h View File

@@ -50,7 +50,7 @@
//============================================================================== //==============================================================================
/** Just a simple window that deletes itself when closed. */ /** Just a simple window that deletes itself when closed. */
class BasicWindow : public DocumentWindow
class BasicWindow final : public DocumentWindow
{ {
public: public:
BasicWindow (const String& name, Colour backgroundColour, int buttonsNeeded) BasicWindow (const String& name, Colour backgroundColour, int buttonsNeeded)
@@ -68,8 +68,8 @@ private:
//============================================================================== //==============================================================================
/** This window contains a ColourSelector which can be used to change the window's colour. */ /** This window contains a ColourSelector which can be used to change the window's colour. */
class ColourSelectorWindow : public DocumentWindow,
private ChangeListener
class ColourSelectorWindow final : public DocumentWindow,
private ChangeListener
{ {
public: public:
ColourSelectorWindow (const String& name, Colour backgroundColour, int buttonsNeeded) ColourSelectorWindow (const String& name, Colour backgroundColour, int buttonsNeeded)
@@ -106,8 +106,8 @@ private:
}; };
//============================================================================== //==============================================================================
class BouncingBallComponent : public Component,
public Timer
class BouncingBallComponent final : public Component,
public Timer
{ {
public: public:
BouncingBallComponent() BouncingBallComponent()
@@ -159,7 +159,7 @@ private:
}; };
//============================================================================== //==============================================================================
class BouncingBallsContainer : public Component
class BouncingBallsContainer final : public Component
{ {
public: public:
BouncingBallsContainer (int numBalls) BouncingBallsContainer (int numBalls)
@@ -207,7 +207,7 @@ private:
}; };
//============================================================================== //==============================================================================
class WindowsDemo : public Component
class WindowsDemo final : public Component
{ {
public: public:
enum Windows enum Windows


+ 50
- 50
examples/Plugins/ARAPluginDemo.h View File

@@ -53,7 +53,7 @@
#include <ARA_Library/Utilities/ARATimelineConversion.h> #include <ARA_Library/Utilities/ARATimelineConversion.h>
//============================================================================== //==============================================================================
class ARADemoPluginAudioModification : public ARAAudioModification
class ARADemoPluginAudioModification final : public ARAAudioModification
{ {
public: public:
ARADemoPluginAudioModification (ARAAudioSource* audioSource, ARADemoPluginAudioModification (ARAAudioSource* audioSource,
@@ -79,7 +79,7 @@ struct PreviewState
std::atomic<ARAPlaybackRegion*> previewedRegion { nullptr }; std::atomic<ARAPlaybackRegion*> previewedRegion { nullptr };
}; };
class SharedTimeSliceThread : public TimeSliceThread
class SharedTimeSliceThread final : public TimeSliceThread
{ {
public: public:
SharedTimeSliceThread() SharedTimeSliceThread()
@@ -89,7 +89,7 @@ public:
} }
}; };
class AsyncConfigurationCallback : private AsyncUpdater
class AsyncConfigurationCallback final : private AsyncUpdater
{ {
public: public:
explicit AsyncConfigurationCallback (std::function<void()> callbackIn) explicit AsyncConfigurationCallback (std::function<void()> callbackIn)
@@ -303,7 +303,7 @@ struct ProcessingLockInterface
}; };
//============================================================================== //==============================================================================
class PlaybackRenderer : public ARAPlaybackRenderer
class PlaybackRenderer final : public ARAPlaybackRenderer
{ {
public: public:
PlaybackRenderer (ARA::PlugIn::DocumentController* dc, ProcessingLockInterface& lockInterfaceIn) PlaybackRenderer (ARA::PlugIn::DocumentController* dc, ProcessingLockInterface& lockInterfaceIn)
@@ -480,8 +480,8 @@ private:
std::unique_ptr<AudioBuffer<float>> tempBuffer; std::unique_ptr<AudioBuffer<float>> tempBuffer;
}; };
class EditorRenderer : public ARAEditorRenderer,
private ARARegionSequence::Listener
class EditorRenderer final : public ARAEditorRenderer,
private ARARegionSequence::Listener
{ {
public: public:
EditorRenderer (ARA::PlugIn::DocumentController* documentController, EditorRenderer (ARA::PlugIn::DocumentController* documentController,
@@ -699,8 +699,8 @@ private:
}; };
//============================================================================== //==============================================================================
class ARADemoPluginDocumentControllerSpecialisation : public ARADocumentControllerSpecialisation,
private ProcessingLockInterface
class ARADemoPluginDocumentControllerSpecialisation final : public ARADocumentControllerSpecialisation,
private ProcessingLockInterface
{ {
public: public:
using ARADocumentControllerSpecialisation::ARADocumentControllerSpecialisation; using ARADocumentControllerSpecialisation::ARADocumentControllerSpecialisation;
@@ -853,8 +853,8 @@ struct PlayHeadState
}; };
//============================================================================== //==============================================================================
class ARADemoPluginAudioProcessorImpl : public AudioProcessor,
public AudioProcessorARAExtension
class ARADemoPluginAudioProcessorImpl : public AudioProcessor,
public AudioProcessorARAExtension
{ {
public: public:
//============================================================================== //==============================================================================
@@ -985,14 +985,14 @@ private:
ListenerList<Listener> listeners; ListenerList<Listener> listeners;
}; };
class RulersView : public Component,
public SettableTooltipClient,
private Timer,
private TimeToViewScaling::Listener,
private ARAMusicalContext::Listener
class RulersView final : public Component,
public SettableTooltipClient,
private Timer,
private TimeToViewScaling::Listener,
private ARAMusicalContext::Listener
{ {
public: public:
class CycleMarkerComponent : public Component
class CycleMarkerComponent final : public Component
{ {
void paint (Graphics& g) override void paint (Graphics& g) override
{ {
@@ -1233,7 +1233,7 @@ private:
bool isDraggingCycle = false; bool isDraggingCycle = false;
}; };
class RulersHeader : public Component
class RulersHeader final : public Component
{ {
public: public:
RulersHeader() RulersHeader()
@@ -1274,7 +1274,7 @@ private:
}; };
//============================================================================== //==============================================================================
struct WaveformCache : private ARAAudioSource::Listener
struct WaveformCache final : private ARAAudioSource::Listener
{ {
WaveformCache() : thumbnailCache (20) WaveformCache() : thumbnailCache (20)
{ {
@@ -1325,12 +1325,12 @@ private:
std::map<ARAAudioSource*, std::unique_ptr<AudioThumbnail>> thumbnails; std::map<ARAAudioSource*, std::unique_ptr<AudioThumbnail>> thumbnails;
}; };
class PlaybackRegionView : public Component,
public ChangeListener,
public SettableTooltipClient,
private ARAAudioSource::Listener,
private ARAPlaybackRegion::Listener,
private ARAEditorView::Listener
class PlaybackRegionView final : public Component,
public ChangeListener,
public SettableTooltipClient,
private ARAAudioSource::Listener,
private ARAPlaybackRegion::Listener,
private ARAEditorView::Listener
{ {
public: public:
PlaybackRegionView (ARAEditorView& editorView, ARAPlaybackRegion& region, WaveformCache& cache) PlaybackRegionView (ARAEditorView& editorView, ARAPlaybackRegion& region, WaveformCache& cache)
@@ -1467,7 +1467,7 @@ public:
} }
private: private:
class PreviewRegionOverlay : public Component
class PreviewRegionOverlay final : public Component
{ {
static constexpr auto previewLength = 0.5; static constexpr auto previewLength = 0.5;
@@ -1522,11 +1522,11 @@ private:
bool isSelected = false; bool isSelected = false;
}; };
class RegionSequenceView : public Component,
public ChangeBroadcaster,
private TimeToViewScaling::Listener,
private ARARegionSequence::Listener,
private ARAPlaybackRegion::Listener
class RegionSequenceView final : public Component,
public ChangeBroadcaster,
private TimeToViewScaling::Listener,
private ARARegionSequence::Listener,
private ARAPlaybackRegion::Listener
{ {
public: public:
RegionSequenceView (ARAEditorView& editorView, TimeToViewScaling& scaling, ARARegionSequence& rs, WaveformCache& cache) RegionSequenceView (ARAEditorView& editorView, TimeToViewScaling& scaling, ARARegionSequence& rs, WaveformCache& cache)
@@ -1645,7 +1645,7 @@ private:
double playbackDuration = 0.0; double playbackDuration = 0.0;
}; };
class ZoomControls : public Component
class ZoomControls final : public Component
{ {
public: public:
ZoomControls() ZoomControls()
@@ -1672,8 +1672,8 @@ private:
TextButton zoomInButton { "+" }, zoomOutButton { "-" }; TextButton zoomInButton { "+" }, zoomOutButton { "-" };
}; };
class PlayheadPositionLabel : public Label,
private Timer
class PlayheadPositionLabel final : public Label,
private Timer
{ {
public: public:
PlayheadPositionLabel (PlayHeadState& playHeadStateIn) PlayheadPositionLabel (PlayHeadState& playHeadStateIn)
@@ -1769,9 +1769,9 @@ private:
ARAMusicalContext* selectedMusicalContext = nullptr; ARAMusicalContext* selectedMusicalContext = nullptr;
}; };
class TrackHeader : public Component,
private ARARegionSequence::Listener,
private ARAEditorView::Listener
class TrackHeader final : public Component,
private ARARegionSequence::Listener,
private ARAEditorView::Listener
{ {
public: public:
TrackHeader (ARAEditorView& editorView, ARARegionSequence& regionSequenceIn) TrackHeader (ARAEditorView& editorView, ARARegionSequence& regionSequenceIn)
@@ -1848,7 +1848,7 @@ private:
constexpr auto trackHeight = 60; constexpr auto trackHeight = 60;
class VerticalLayoutViewportContent : public Component
class VerticalLayoutViewportContent final : public Component
{ {
public: public:
void resized() override void resized() override
@@ -1863,7 +1863,7 @@ public:
} }
}; };
class VerticalLayoutViewport : public Viewport
class VerticalLayoutViewport final : public Viewport
{ {
public: public:
VerticalLayoutViewport() VerticalLayoutViewport()
@@ -1887,12 +1887,12 @@ private:
} }
}; };
class OverlayComponent : public Component,
private Timer,
private TimeToViewScaling::Listener
class OverlayComponent final : public Component,
private Timer,
private TimeToViewScaling::Listener
{ {
public: public:
class PlayheadMarkerComponent : public Component
class PlayheadMarkerComponent final : public Component
{ {
void paint (Graphics& g) override { g.fillAll (Colours::yellow.darker (0.2f)); } void paint (Graphics& g) override { g.fillAll (Colours::yellow.darker (0.2f)); }
}; };
@@ -1981,11 +1981,11 @@ private:
PlayheadMarkerComponent playheadMarker; PlayheadMarkerComponent playheadMarker;
}; };
class DocumentView : public Component,
public ChangeListener,
public ARAMusicalContext::Listener,
private ARADocument::Listener,
private ARAEditorView::Listener
class DocumentView final : public Component,
public ChangeListener,
public ARAMusicalContext::Listener,
private ARADocument::Listener,
private ARAEditorView::Listener
{ {
public: public:
DocumentView (ARAEditorView& editorView, PlayHeadState& playHeadState) DocumentView (ARAEditorView& editorView, PlayHeadState& playHeadState)
@@ -2287,8 +2287,8 @@ private:
}; };
class ARADemoPluginProcessorEditor : public AudioProcessorEditor,
public AudioProcessorEditorARAExtension
class ARADemoPluginProcessorEditor final : public AudioProcessorEditor,
public AudioProcessorEditorARAExtension
{ {
public: public:
explicit ARADemoPluginProcessorEditor (ARADemoPluginAudioProcessorImpl& p) explicit ARADemoPluginProcessorEditor (ARADemoPluginAudioProcessorImpl& p)
@@ -2334,7 +2334,7 @@ private:
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARADemoPluginProcessorEditor) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ARADemoPluginProcessorEditor)
}; };
class ARADemoPluginAudioProcessor : public ARADemoPluginAudioProcessorImpl
class ARADemoPluginAudioProcessor final : public ARADemoPluginAudioProcessorImpl
{ {
public: public:
bool hasEditor() const override { return true; } bool hasEditor() const override { return true; }


+ 4
- 4
examples/Plugins/AUv3SynthPluginDemo.h View File

@@ -54,7 +54,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class MaterialLookAndFeel : public LookAndFeel_V4
class MaterialLookAndFeel final : public LookAndFeel_V4
{ {
public: public:
//============================================================================== //==============================================================================
@@ -178,8 +178,8 @@ public:
}; };
//============================================================================== //==============================================================================
class AUv3SynthEditor : public AudioProcessorEditor,
private Timer
class AUv3SynthEditor final : public AudioProcessorEditor,
private Timer
{ {
public: public:
//============================================================================== //==============================================================================
@@ -309,7 +309,7 @@ private:
}; };
//============================================================================== //==============================================================================
class AUv3SynthProcessor : public AudioProcessor
class AUv3SynthProcessor final : public AudioProcessor
{ {
public: public:
AUv3SynthProcessor () AUv3SynthProcessor ()


+ 1
- 1
examples/Plugins/ArpeggiatorPluginDemo.h View File

@@ -52,7 +52,7 @@
//============================================================================== //==============================================================================
class Arpeggiator : public AudioProcessor
class Arpeggiator final : public AudioProcessor
{ {
public: public:


+ 6
- 6
examples/Plugins/AudioPluginDemo.h View File

@@ -55,7 +55,7 @@
//============================================================================== //==============================================================================
/** A demo synth sound that's just a basic sine wave.. */ /** A demo synth sound that's just a basic sine wave.. */
class SineWaveSound : public SynthesiserSound
class SineWaveSound final : public SynthesiserSound
{ {
public: public:
SineWaveSound() {} SineWaveSound() {}
@@ -66,7 +66,7 @@ public:
//============================================================================== //==============================================================================
/** A simple demo synth voice that just plays a sine wave.. */ /** A simple demo synth voice that just plays a sine wave.. */
class SineWaveVoice : public SynthesiserVoice
class SineWaveVoice final : public SynthesiserVoice
{ {
public: public:
SineWaveVoice() {} SineWaveVoice() {}
@@ -175,7 +175,7 @@ private:
//============================================================================== //==============================================================================
/** As the name suggest, this class does the actual audio processing. */ /** As the name suggest, this class does the actual audio processing. */
class JuceDemoPluginAudioProcessor : public AudioProcessor
class JuceDemoPluginAudioProcessor final : public AudioProcessor
{ {
public: public:
//============================================================================== //==============================================================================
@@ -362,9 +362,9 @@ public:
private: private:
//============================================================================== //==============================================================================
/** This is the editor component that our filter will display. */ /** This is the editor component that our filter will display. */
class JuceDemoPluginAudioProcessorEditor : public AudioProcessorEditor,
private Timer,
private Value::Listener
class JuceDemoPluginAudioProcessorEditor final : public AudioProcessorEditor,
private Timer,
private Value::Listener
{ {
public: public:
JuceDemoPluginAudioProcessorEditor (JuceDemoPluginAudioProcessor& owner) JuceDemoPluginAudioProcessorEditor (JuceDemoPluginAudioProcessor& owner)


+ 38
- 38
examples/Plugins/DSPModulePluginDemo.h View File

@@ -143,15 +143,15 @@ void resetAll (Processors&... processors)
} }
//============================================================================== //==============================================================================
class DspModulePluginDemo : public AudioProcessor,
private ValueTree::Listener
class DspModulePluginDemo : public AudioProcessor,
private ValueTree::Listener
{ {
public: public:
DspModulePluginDemo() DspModulePluginDemo()
: DspModulePluginDemo (AudioProcessorValueTreeState::ParameterLayout{}) {} : DspModulePluginDemo (AudioProcessorValueTreeState::ParameterLayout{}) {}
//============================================================================== //==============================================================================
void prepareToPlay (double sampleRate, int samplesPerBlock) override
void prepareToPlay (double sampleRate, int samplesPerBlock) final
{ {
const auto channels = jmax (getTotalNumInputChannels(), getTotalNumOutputChannels()); const auto channels = jmax (getTotalNumInputChannels(), getTotalNumOutputChannels());
@@ -163,15 +163,15 @@ public:
reset(); reset();
} }
void reset() override
void reset() final
{ {
chain.reset(); chain.reset();
update(); update();
} }
void releaseResources() override {}
void releaseResources() final {}
void processBlock (AudioBuffer<float>& buffer, MidiBuffer&) override
void processBlock (AudioBuffer<float>& buffer, MidiBuffer&) final
{ {
if (jmax (getTotalNumInputChannels(), getTotalNumOutputChannels()) == 0) if (jmax (getTotalNumInputChannels(), getTotalNumOutputChannels()) == 0)
return; return;
@@ -195,43 +195,43 @@ public:
chain.process (dsp::ProcessContextReplacing<float> (inoutBlock)); chain.process (dsp::ProcessContextReplacing<float> (inoutBlock));
} }
void processBlock (AudioBuffer<double>&, MidiBuffer&) override {}
void processBlock (AudioBuffer<double>&, MidiBuffer&) final {}
//============================================================================== //==============================================================================
AudioProcessorEditor* createEditor() override { return nullptr; } AudioProcessorEditor* createEditor() override { return nullptr; }
bool hasEditor() const override { return false; } bool hasEditor() const override { return false; }
//============================================================================== //==============================================================================
const String getName() const override { return "DSPModulePluginDemo"; }
const String getName() const final { return "DSPModulePluginDemo"; }
bool acceptsMidi() const override { return false; }
bool producesMidi() const override { return false; }
bool isMidiEffect() const override { return false; }
bool acceptsMidi() const final { return false; }
bool producesMidi() const final { return false; }
bool isMidiEffect() const final { return false; }
double getTailLengthSeconds() const override { return 0.0; }
double getTailLengthSeconds() const final { return 0.0; }
//============================================================================== //==============================================================================
int getNumPrograms() override { return 1; }
int getCurrentProgram() override { return 0; }
void setCurrentProgram (int) override {}
const String getProgramName (int) override { return "None"; }
int getNumPrograms() final { return 1; }
int getCurrentProgram() final { return 0; }
void setCurrentProgram (int) final {}
const String getProgramName (int) final { return "None"; }
void changeProgramName (int, const String&) override {}
void changeProgramName (int, const String&) final {}
//============================================================================== //==============================================================================
bool isBusesLayoutSupported (const BusesLayout& layout) const override
bool isBusesLayoutSupported (const BusesLayout& layout) const final
{ {
return layout == BusesLayout { { AudioChannelSet::stereo() }, return layout == BusesLayout { { AudioChannelSet::stereo() },
{ AudioChannelSet::stereo() } }; { AudioChannelSet::stereo() } };
} }
//============================================================================== //==============================================================================
void getStateInformation (MemoryBlock& destData) override
void getStateInformation (MemoryBlock& destData) final
{ {
copyXmlToBinary (*apvts.copyState().createXml(), destData); copyXmlToBinary (*apvts.copyState().createXml(), destData);
} }
void setStateInformation (const void* data, int sizeInBytes) override
void setStateInformation (const void* data, int sizeInBytes) final
{ {
apvts.replaceState (ValueTree::fromXml (*getXmlFromBinary (data, sizeInBytes))); apvts.replaceState (ValueTree::fromXml (*getXmlFromBinary (data, sizeInBytes)));
} }
@@ -811,7 +811,7 @@ private:
} }
//============================================================================== //==============================================================================
void valueTreePropertyChanged (ValueTree&, const Identifier&) override
void valueTreePropertyChanged (ValueTree&, const Identifier&) final
{ {
requiresUpdate.store (true); requiresUpdate.store (true);
} }
@@ -1498,7 +1498,7 @@ private:
}; };
//============================================================================== //==============================================================================
class DspModulePluginDemoEditor : public AudioProcessorEditor
class DspModulePluginDemoEditor final : public AudioProcessorEditor
{ {
public: public:
explicit DspModulePluginDemoEditor (DspModulePluginDemo& p) explicit DspModulePluginDemoEditor (DspModulePluginDemo& p)
@@ -1637,7 +1637,7 @@ private:
RangedAudioParameter& param; RangedAudioParameter& param;
}; };
class AttachedSlider : public ComponentWithParamMenu
class AttachedSlider final : public ComponentWithParamMenu
{ {
public: public:
AttachedSlider (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) AttachedSlider (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn)
@@ -1663,7 +1663,7 @@ private:
SliderParameterAttachment attachment; SliderParameterAttachment attachment;
}; };
class AttachedToggle : public ComponentWithParamMenu
class AttachedToggle final : public ComponentWithParamMenu
{ {
public: public:
AttachedToggle (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) AttachedToggle (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn)
@@ -1682,7 +1682,7 @@ private:
ButtonParameterAttachment attachment; ButtonParameterAttachment attachment;
}; };
class AttachedCombo : public ComponentWithParamMenu
class AttachedCombo final : public ComponentWithParamMenu
{ {
public: public:
AttachedCombo (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn) AttachedCombo (AudioProcessorEditor& editorIn, RangedAudioParameter& paramIn)
@@ -1795,7 +1795,7 @@ private:
grid.performLayout (bounds); grid.performLayout (bounds);
} }
struct BasicControls : public Component
struct BasicControls final : public Component
{ {
explicit BasicControls (AudioProcessorEditor& editor, explicit BasicControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::MainGroup& state) const DspModulePluginDemo::ParameterReferences::MainGroup& state)
@@ -1814,7 +1814,7 @@ private:
AttachedSlider pan, input, output; AttachedSlider pan, input, output;
}; };
struct DistortionControls : public Component
struct DistortionControls final : public Component
{ {
explicit DistortionControls (AudioProcessorEditor& editor, explicit DistortionControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::DistortionGroup& state) const DspModulePluginDemo::ParameterReferences::DistortionGroup& state)
@@ -1840,7 +1840,7 @@ private:
AttachedCombo type, oversampling; AttachedCombo type, oversampling;
}; };
struct ConvolutionControls : public Component
struct ConvolutionControls final : public Component
{ {
explicit ConvolutionControls (AudioProcessorEditor& editor, explicit ConvolutionControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::ConvolutionGroup& state) const DspModulePluginDemo::ParameterReferences::ConvolutionGroup& state)
@@ -1860,7 +1860,7 @@ private:
AttachedSlider mix; AttachedSlider mix;
}; };
struct MultiBandControls : public Component
struct MultiBandControls final : public Component
{ {
explicit MultiBandControls (AudioProcessorEditor& editor, explicit MultiBandControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::MultiBandGroup& state) const DspModulePluginDemo::ParameterReferences::MultiBandGroup& state)
@@ -1881,7 +1881,7 @@ private:
AttachedSlider low, high, lRFreq; AttachedSlider low, high, lRFreq;
}; };
struct CompressorControls : public Component
struct CompressorControls final : public Component
{ {
explicit CompressorControls (AudioProcessorEditor& editor, explicit CompressorControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::CompressorGroup& state) const DspModulePluginDemo::ParameterReferences::CompressorGroup& state)
@@ -1903,7 +1903,7 @@ private:
AttachedSlider threshold, ratio, attack, release; AttachedSlider threshold, ratio, attack, release;
}; };
struct NoiseGateControls : public Component
struct NoiseGateControls final : public Component
{ {
explicit NoiseGateControls (AudioProcessorEditor& editor, explicit NoiseGateControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::NoiseGateGroup& state) const DspModulePluginDemo::ParameterReferences::NoiseGateGroup& state)
@@ -1925,7 +1925,7 @@ private:
AttachedSlider threshold, ratio, attack, release; AttachedSlider threshold, ratio, attack, release;
}; };
struct LimiterControls : public Component
struct LimiterControls final : public Component
{ {
explicit LimiterControls (AudioProcessorEditor& editor, explicit LimiterControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::LimiterGroup& state) const DspModulePluginDemo::ParameterReferences::LimiterGroup& state)
@@ -1945,7 +1945,7 @@ private:
AttachedSlider threshold, release; AttachedSlider threshold, release;
}; };
struct DirectDelayControls : public Component
struct DirectDelayControls final : public Component
{ {
explicit DirectDelayControls (AudioProcessorEditor& editor, explicit DirectDelayControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::DirectDelayGroup& state) const DspModulePluginDemo::ParameterReferences::DirectDelayGroup& state)
@@ -1968,7 +1968,7 @@ private:
AttachedSlider delay, smooth, mix; AttachedSlider delay, smooth, mix;
}; };
struct DelayEffectControls : public Component
struct DelayEffectControls final : public Component
{ {
explicit DelayEffectControls (AudioProcessorEditor& editor, explicit DelayEffectControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::DelayEffectGroup& state) const DspModulePluginDemo::ParameterReferences::DelayEffectGroup& state)
@@ -1993,7 +1993,7 @@ private:
AttachedSlider value, smooth, lowpass, feedback, mix; AttachedSlider value, smooth, lowpass, feedback, mix;
}; };
struct PhaserControls : public Component
struct PhaserControls final : public Component
{ {
explicit PhaserControls (AudioProcessorEditor& editor, explicit PhaserControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::PhaserGroup& state) const DspModulePluginDemo::ParameterReferences::PhaserGroup& state)
@@ -2016,7 +2016,7 @@ private:
AttachedSlider rate, depth, centre, feedback, mix; AttachedSlider rate, depth, centre, feedback, mix;
}; };
struct ChorusControls : public Component
struct ChorusControls final : public Component
{ {
explicit ChorusControls (AudioProcessorEditor& editor, explicit ChorusControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::ChorusGroup& state) const DspModulePluginDemo::ParameterReferences::ChorusGroup& state)
@@ -2039,7 +2039,7 @@ private:
AttachedSlider rate, depth, centre, feedback, mix; AttachedSlider rate, depth, centre, feedback, mix;
}; };
struct LadderControls : public Component
struct LadderControls final : public Component
{ {
explicit LadderControls (AudioProcessorEditor& editor, explicit LadderControls (AudioProcessorEditor& editor,
const DspModulePluginDemo::ParameterReferences::LadderGroup& state) const DspModulePluginDemo::ParameterReferences::LadderGroup& state)
@@ -2088,7 +2088,7 @@ private:
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DspModulePluginDemoEditor) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DspModulePluginDemoEditor)
}; };
struct DspModulePluginDemoAudioProcessor : public DspModulePluginDemo
struct DspModulePluginDemoAudioProcessor final : public DspModulePluginDemo
{ {
AudioProcessorEditor* createEditor() override AudioProcessorEditor* createEditor() override
{ {


+ 1
- 1
examples/Plugins/GainPluginDemo.h View File

@@ -50,7 +50,7 @@
//============================================================================== //==============================================================================
class GainProcessor : public AudioProcessor
class GainProcessor final : public AudioProcessor
{ {
public: public:


+ 24
- 24
examples/Plugins/HostPluginDemo.h View File

@@ -88,7 +88,7 @@ public:
pluginList.addChangeListener (this); pluginList.addChangeListener (this);
} }
bool isBusesLayoutSupported (const BusesLayout& layouts) const override
bool isBusesLayoutSupported (const BusesLayout& layouts) const final
{ {
const auto& mainOutput = layouts.getMainOutputChannelSet(); const auto& mainOutput = layouts.getMainOutputChannelSet();
const auto& mainInput = layouts.getMainInputChannelSet(); const auto& mainInput = layouts.getMainInputChannelSet();
@@ -102,7 +102,7 @@ public:
return true; return true;
} }
void prepareToPlay (double sr, int bs) override
void prepareToPlay (double sr, int bs) final
{ {
const ScopedLock sl (innerMutex); const ScopedLock sl (innerMutex);
@@ -115,7 +115,7 @@ public:
} }
} }
void releaseResources() override
void releaseResources() final
{ {
const ScopedLock sl (innerMutex); const ScopedLock sl (innerMutex);
@@ -125,7 +125,7 @@ public:
inner->releaseResources(); inner->releaseResources();
} }
void reset() override
void reset() final
{ {
const ScopedLock sl (innerMutex); const ScopedLock sl (innerMutex);
@@ -136,12 +136,12 @@ public:
// In this example, we don't actually pass any audio through the inner processor. // In this example, we don't actually pass any audio through the inner processor.
// In a 'real' plugin, we'd need to add some synchronisation to ensure that the inner // In a 'real' plugin, we'd need to add some synchronisation to ensure that the inner
// plugin instance was never modified (deleted, replaced etc.) during a call to processBlock. // plugin instance was never modified (deleted, replaced etc.) during a call to processBlock.
void processBlock (AudioBuffer<float>&, MidiBuffer&) override
void processBlock (AudioBuffer<float>&, MidiBuffer&) final
{ {
jassert (! isUsingDoublePrecision()); jassert (! isUsingDoublePrecision());
} }
void processBlock (AudioBuffer<double>&, MidiBuffer&) override
void processBlock (AudioBuffer<double>&, MidiBuffer&) final
{ {
jassert (isUsingDoublePrecision()); jassert (isUsingDoublePrecision());
} }
@@ -149,18 +149,18 @@ public:
bool hasEditor() const override { return false; } bool hasEditor() const override { return false; }
AudioProcessorEditor* createEditor() override { return nullptr; } AudioProcessorEditor* createEditor() override { return nullptr; }
const String getName() const override { return "HostPluginDemo"; }
bool acceptsMidi() const override { return true; }
bool producesMidi() const override { return true; }
double getTailLengthSeconds() const override { return 0.0; }
const String getName() const final { return "HostPluginDemo"; }
bool acceptsMidi() const final { return true; }
bool producesMidi() const final { return true; }
double getTailLengthSeconds() const final { return 0.0; }
int getNumPrograms() override { return 0; }
int getCurrentProgram() override { return 0; }
void setCurrentProgram (int) override {}
const String getProgramName (int) override { return "None"; }
void changeProgramName (int, const String&) override {}
int getNumPrograms() final { return 0; }
int getCurrentProgram() final { return 0; }
void setCurrentProgram (int) final {}
const String getProgramName (int) final { return "None"; }
void changeProgramName (int, const String&) final {}
void getStateInformation (MemoryBlock& destData) override
void getStateInformation (MemoryBlock& destData) final
{ {
const ScopedLock sl (innerMutex); const ScopedLock sl (innerMutex);
@@ -185,7 +185,7 @@ public:
destData.replaceAll (text.toRawUTF8(), text.getNumBytesAsUTF8()); destData.replaceAll (text.toRawUTF8(), text.getNumBytesAsUTF8());
} }
void setStateInformation (const void* data, int sizeInBytes) override
void setStateInformation (const void* data, int sizeInBytes) final
{ {
const ScopedLock sl (innerMutex); const ScopedLock sl (innerMutex);
@@ -285,7 +285,7 @@ private:
static constexpr const char* innerStateTag = "inner_state"; static constexpr const char* innerStateTag = "inner_state";
static constexpr const char* editorStyleTag = "editor_style"; static constexpr const char* editorStyleTag = "editor_style";
void changeListenerCallback (ChangeBroadcaster* source) override
void changeListenerCallback (ChangeBroadcaster* source) final
{ {
if (source != &pluginList) if (source != &pluginList)
return; return;
@@ -312,7 +312,7 @@ static void doLayout (Component* main, Component& bottom, int bottomHeight, Rect
grid.performLayout (bounds); grid.performLayout (bounds);
} }
class PluginLoaderComponent : public Component
class PluginLoaderComponent final : public Component
{ {
public: public:
template <typename Callback> template <typename Callback>
@@ -348,7 +348,7 @@ public:
} }
private: private:
struct Buttons : public Component
struct Buttons final : public Component
{ {
Buttons() Buttons()
{ {
@@ -390,7 +390,7 @@ private:
}; };
//============================================================================== //==============================================================================
class PluginEditorComponent : public Component
class PluginEditorComponent final : public Component
{ {
public: public:
template <typename Callback> template <typename Callback>
@@ -435,7 +435,7 @@ private:
}; };
//============================================================================== //==============================================================================
class ScaledDocumentWindow : public DocumentWindow
class ScaledDocumentWindow final : public DocumentWindow
{ {
public: public:
ScaledDocumentWindow (Colour bg, float scale) ScaledDocumentWindow (Colour bg, float scale)
@@ -448,7 +448,7 @@ private:
}; };
//============================================================================== //==============================================================================
class HostAudioProcessorEditor : public AudioProcessorEditor
class HostAudioProcessorEditor final : public AudioProcessorEditor
{ {
public: public:
explicit HostAudioProcessorEditor (HostAudioProcessorImpl& owner) explicit HostAudioProcessorEditor (HostAudioProcessorImpl& owner)
@@ -576,7 +576,7 @@ private:
}; };
//============================================================================== //==============================================================================
class HostAudioProcessor : public HostAudioProcessorImpl
class HostAudioProcessor final : public HostAudioProcessorImpl
{ {
public: public:
bool hasEditor() const override { return true; } bool hasEditor() const override { return true; }


+ 6
- 6
examples/Plugins/MidiLoggerPluginDemo.h View File

@@ -113,8 +113,8 @@ private:
}; };
//============================================================================== //==============================================================================
class MidiTable : public Component,
private TableListBoxModel
class MidiTable final : public Component,
private TableListBoxModel
{ {
public: public:
MidiTable (MidiListModel& m) MidiTable (MidiListModel& m)
@@ -220,8 +220,8 @@ private:
}; };
//============================================================================== //==============================================================================
class MidiLoggerPluginDemoProcessor : public AudioProcessor,
private Timer
class MidiLoggerPluginDemoProcessor final : public AudioProcessor,
private Timer
{ {
public: public:
MidiLoggerPluginDemoProcessor() MidiLoggerPluginDemoProcessor()
@@ -268,8 +268,8 @@ public:
} }
private: private:
class Editor : public AudioProcessorEditor,
private Value::Listener
class Editor final : public AudioProcessorEditor,
private Value::Listener
{ {
public: public:
explicit Editor (MidiLoggerPluginDemoProcessor& ownerIn) explicit Editor (MidiLoggerPluginDemoProcessor& ownerIn)


+ 1
- 1
examples/Plugins/MultiOutSynthPluginDemo.h View File

@@ -53,7 +53,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class MultiOutSynth : public AudioProcessor
class MultiOutSynth final : public AudioProcessor
{ {
public: public:
enum enum


+ 1
- 1
examples/Plugins/NoiseGatePluginDemo.h View File

@@ -50,7 +50,7 @@
//============================================================================== //==============================================================================
class NoiseGate : public AudioProcessor
class NoiseGate final : public AudioProcessor
{ {
public: public:
//============================================================================== //==============================================================================


+ 7
- 7
examples/Plugins/ReaperEmbeddedViewPluginDemo.h View File

@@ -111,7 +111,7 @@ struct EmbeddedViewListener
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wnon-virtual-dtor") JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wnon-virtual-dtor")
//============================================================================== //==============================================================================
class EmbeddedUI : public reaper::IReaperUIEmbedInterface
class EmbeddedUI final : public reaper::IReaperUIEmbedInterface
{ {
public: public:
explicit EmbeddedUI (EmbeddedViewListener& demo) : listener (demo) {} explicit EmbeddedUI (EmbeddedViewListener& demo) : listener (demo) {}
@@ -146,7 +146,7 @@ private:
JUCE_END_IGNORE_WARNINGS_GCC_LIKE JUCE_END_IGNORE_WARNINGS_GCC_LIKE
class VST2Extensions : public VST2ClientExtensions
class VST2Extensions final : public VST2ClientExtensions
{ {
public: public:
explicit VST2Extensions (EmbeddedViewListener& l) explicit VST2Extensions (EmbeddedViewListener& l)
@@ -187,7 +187,7 @@ private:
EmbeddedViewListener& listener; EmbeddedViewListener& listener;
}; };
class VST3Extensions : public VST3ClientExtensions
class VST3Extensions final : public VST3ClientExtensions
{ {
public: public:
explicit VST3Extensions (EmbeddedViewListener& l) explicit VST3Extensions (EmbeddedViewListener& l)
@@ -222,7 +222,7 @@ private:
}; };
//============================================================================== //==============================================================================
class Editor : public AudioProcessorEditor
class Editor final : public AudioProcessorEditor
{ {
public: public:
explicit Editor (AudioProcessor& proc, explicit Editor (AudioProcessor& proc,
@@ -258,9 +258,9 @@ private:
}; };
//============================================================================== //==============================================================================
class ReaperEmbeddedViewDemo : public AudioProcessor,
private EmbeddedViewListener,
private Timer
class ReaperEmbeddedViewDemo final : public AudioProcessor,
private EmbeddedViewListener,
private Timer
{ {
public: public:
ReaperEmbeddedViewDemo() ReaperEmbeddedViewDemo()


+ 41
- 41
examples/Plugins/SamplerPluginDemo.h View File

@@ -111,8 +111,8 @@ struct Command
}; };
template <typename Proc, typename Func> template <typename Proc, typename Func>
class TemplateCommand : public Command<Proc>,
private Func
class TemplateCommand final : public Command<Proc>,
private Func
{ {
public: public:
template <typename FuncPrime> template <typename FuncPrime>
@@ -257,7 +257,7 @@ private:
}; };
//============================================================================== //==============================================================================
class MPESamplerVoice : public MPESynthesiserVoice
class MPESamplerVoice final : public MPESynthesiserVoice
{ {
public: public:
explicit MPESamplerVoice (std::shared_ptr<const MPESamplerSound> sound) explicit MPESamplerVoice (std::shared_ptr<const MPESamplerSound> sound)
@@ -501,7 +501,7 @@ private:
}; };
template <typename Contents> template <typename Contents>
class ReferenceCountingAdapter : public ReferenceCountedObject
class ReferenceCountingAdapter final : public ReferenceCountedObject
{ {
public: public:
template <typename... Args> template <typename... Args>
@@ -564,7 +564,7 @@ public:
}; };
//============================================================================== //==============================================================================
class MemoryAudioFormatReaderFactory : public AudioFormatReaderFactory
class MemoryAudioFormatReaderFactory final : public AudioFormatReaderFactory
{ {
public: public:
MemoryAudioFormatReaderFactory (const void* sampleDataIn, size_t dataSizeIn) MemoryAudioFormatReaderFactory (const void* sampleDataIn, size_t dataSizeIn)
@@ -588,7 +588,7 @@ private:
}; };
//============================================================================== //==============================================================================
class FileAudioFormatReaderFactory : public AudioFormatReaderFactory
class FileAudioFormatReaderFactory final : public AudioFormatReaderFactory
{ {
public: public:
explicit FileAudioFormatReaderFactory (File fileIn) explicit FileAudioFormatReaderFactory (File fileIn)
@@ -643,20 +643,20 @@ struct GenericVariantConverter
}; };
template <typename Numeric> template <typename Numeric>
struct VariantConverter<Range<Numeric>> : GenericVariantConverter<Range<Numeric>> {};
struct VariantConverter<Range<Numeric>> final : GenericVariantConverter<Range<Numeric>> {};
template<> template<>
struct VariantConverter<MPEZoneLayout> : GenericVariantConverter<MPEZoneLayout> {};
struct VariantConverter<MPEZoneLayout> final : GenericVariantConverter<MPEZoneLayout> {};
template<> template<>
struct VariantConverter<std::shared_ptr<AudioFormatReaderFactory>>
struct VariantConverter<std::shared_ptr<AudioFormatReaderFactory>> final
: GenericVariantConverter<std::shared_ptr<AudioFormatReaderFactory>> : GenericVariantConverter<std::shared_ptr<AudioFormatReaderFactory>>
{}; {};
} // namespace juce } // namespace juce
//============================================================================== //==============================================================================
class VisibleRangeDataModel : private ValueTree::Listener
class VisibleRangeDataModel final : private ValueTree::Listener
{ {
public: public:
class Listener class Listener
@@ -757,7 +757,7 @@ private:
}; };
//============================================================================== //==============================================================================
class MPESettingsDataModel : private ValueTree::Listener
class MPESettingsDataModel final : private ValueTree::Listener
{ {
public: public:
class Listener class Listener
@@ -947,7 +947,7 @@ private:
}; };
//============================================================================== //==============================================================================
class DataModel : private ValueTree::Listener
class DataModel final : private ValueTree::Listener
{ {
public: public:
class Listener class Listener
@@ -1132,8 +1132,8 @@ constexpr int controlSeparation = 6;
} // namespace } // namespace
//============================================================================== //==============================================================================
class MPELegacySettingsComponent final : public Component,
private MPESettingsDataModel::Listener
class MPELegacySettingsComponent final : public Component,
private MPESettingsDataModel::Listener
{ {
public: public:
explicit MPELegacySettingsComponent (const MPESettingsDataModel& model, explicit MPELegacySettingsComponent (const MPESettingsDataModel& model,
@@ -1256,8 +1256,8 @@ private:
}; };
//============================================================================== //==============================================================================
class MPENewSettingsComponent final : public Component,
private MPESettingsDataModel::Listener
class MPENewSettingsComponent final : public Component,
private MPESettingsDataModel::Listener
{ {
public: public:
MPENewSettingsComponent (const MPESettingsDataModel& model, MPENewSettingsComponent (const MPESettingsDataModel& model,
@@ -1352,8 +1352,8 @@ private:
}; };
//============================================================================== //==============================================================================
class MPESettingsComponent final : public Component,
private MPESettingsDataModel::Listener
class MPESettingsComponent final : public Component,
private MPESettingsDataModel::Listener
{ {
public: public:
MPESettingsComponent (const MPESettingsDataModel& model, MPESettingsComponent (const MPESettingsDataModel& model,
@@ -1446,7 +1446,7 @@ private:
}; };
//============================================================================== //==============================================================================
class LoopPointMarker : public Component
class LoopPointMarker final : public Component
{ {
public: public:
using MouseCallback = std::function<void (LoopPointMarker&, const MouseEvent&)>; using MouseCallback = std::function<void (LoopPointMarker&, const MouseEvent&)>;
@@ -1523,8 +1523,8 @@ private:
}; };
//============================================================================== //==============================================================================
class Ruler : public Component,
private VisibleRangeDataModel::Listener
class Ruler final : public Component,
private VisibleRangeDataModel::Listener
{ {
public: public:
explicit Ruler (const VisibleRangeDataModel& model) explicit Ruler (const VisibleRangeDataModel& model)
@@ -1614,9 +1614,9 @@ private:
}; };
//============================================================================== //==============================================================================
class LoopPointsOverlay : public Component,
private DataModel::Listener,
private VisibleRangeDataModel::Listener
class LoopPointsOverlay final : public Component,
private DataModel::Listener,
private VisibleRangeDataModel::Listener
{ {
public: public:
LoopPointsOverlay (const DataModel& dModel, LoopPointsOverlay (const DataModel& dModel,
@@ -1715,9 +1715,9 @@ private:
}; };
//============================================================================== //==============================================================================
class PlaybackPositionOverlay : public Component,
private Timer,
private VisibleRangeDataModel::Listener
class PlaybackPositionOverlay final : public Component,
private Timer,
private VisibleRangeDataModel::Listener
{ {
public: public:
using Provider = std::function<std::vector<float>()>; using Provider = std::function<std::vector<float>()>;
@@ -1762,10 +1762,10 @@ private:
}; };
//============================================================================== //==============================================================================
class WaveformView : public Component,
private ChangeListener,
private DataModel::Listener,
private VisibleRangeDataModel::Listener
class WaveformView final : public Component,
private ChangeListener,
private DataModel::Listener,
private VisibleRangeDataModel::Listener
{ {
public: public:
WaveformView (const DataModel& model, WaveformView (const DataModel& model,
@@ -1853,8 +1853,8 @@ private:
}; };
//============================================================================== //==============================================================================
class WaveformEditor : public Component,
private DataModel::Listener
class WaveformEditor final : public Component,
private DataModel::Listener
{ {
public: public:
WaveformEditor (const DataModel& model, WaveformEditor (const DataModel& model,
@@ -1909,9 +1909,9 @@ private:
}; };
//============================================================================== //==============================================================================
class MainSamplerView : public Component,
private DataModel::Listener,
private ChangeListener
class MainSamplerView final : public Component,
private DataModel::Listener,
private ChangeListener
{ {
public: public:
MainSamplerView (const DataModel& model, MainSamplerView (const DataModel& model,
@@ -2103,7 +2103,7 @@ struct ProcessorState
}; };
//============================================================================== //==============================================================================
class SamplerAudioProcessor : public AudioProcessor
class SamplerAudioProcessor final : public AudioProcessor
{ {
public: public:
SamplerAudioProcessor() SamplerAudioProcessor()
@@ -2366,10 +2366,10 @@ public:
private: private:
//============================================================================== //==============================================================================
class SamplerAudioProcessorEditor : public AudioProcessorEditor,
public FileDragAndDropTarget,
private DataModel::Listener,
private MPESettingsDataModel::Listener
class SamplerAudioProcessorEditor final : public AudioProcessorEditor,
public FileDragAndDropTarget,
private DataModel::Listener,
private MPESettingsDataModel::Listener
{ {
public: public:
SamplerAudioProcessorEditor (SamplerAudioProcessor& p, ProcessorState state) SamplerAudioProcessorEditor (SamplerAudioProcessor& p, ProcessorState state)


+ 7
- 7
examples/Plugins/SurroundPluginDemo.h View File

@@ -105,7 +105,7 @@ public:
samplesPlayed = samplesToPlay; samplesPlayed = samplesToPlay;
} }
bool applyBusLayouts (const BusesLayout& layouts) override
bool applyBusLayouts (const BusesLayout& layouts) final
{ {
// Some very badly-behaved hosts will call this during processing! // Some very badly-behaved hosts will call this during processing!
const SpinLock::ScopedLockType lock (levelMutex); const SpinLock::ScopedLockType lock (levelMutex);
@@ -225,8 +225,8 @@ inline void configureLabel (Label& label, const AudioProcessor::Bus* layout)
label.setColour (Label::textColourId, textColour); label.setColour (Label::textColourId, textColour);
} }
class InputBusViewer : public Component,
private Timer
class InputBusViewer final : public Component,
private Timer
{ {
public: public:
InputBusViewer (ProcessorWithLevels& proc, int busNumber) InputBusViewer (ProcessorWithLevels& proc, int busNumber)
@@ -306,7 +306,7 @@ private:
}; };
//============================================================================== //==============================================================================
class OutputBusViewer : public Component
class OutputBusViewer final : public Component
{ {
public: public:
OutputBusViewer (ProcessorWithLevels& proc, int busNumber) OutputBusViewer (ProcessorWithLevels& proc, int busNumber)
@@ -332,7 +332,7 @@ public:
channelButtons.emplace_back (channelName, channelName); channelButtons.emplace_back (channelName, channelName);
auto& newButton = channelButtons.back(); auto& newButton = channelButtons.back();
newButton.onClick = [&proc = processor, bus = bus, i] { proc.channelButtonClicked (bus, i); };
newButton.onClick = [&p = processor, b = bus, i] { p.channelButtonClicked (b, i); };
addAndMakeVisible (newButton); addAndMakeVisible (newButton);
} }
@@ -376,7 +376,7 @@ private:
}; };
//============================================================================== //==============================================================================
class SurroundEditor : public AudioProcessorEditor
class SurroundEditor final : public AudioProcessorEditor
{ {
public: public:
explicit SurroundEditor (ProcessorWithLevels& parent) explicit SurroundEditor (ProcessorWithLevels& parent)
@@ -454,7 +454,7 @@ private:
}; };
//============================================================================== //==============================================================================
struct SurroundProcessor : public ProcessorWithLevels
struct SurroundProcessor final : public ProcessorWithLevels
{ {
AudioProcessorEditor* createEditor() override { return new SurroundEditor (*this); } AudioProcessorEditor* createEditor() override { return new SurroundEditor (*this); }
bool hasEditor() const override { return true; } bool hasEditor() const override { return true; }


+ 2
- 2
examples/Utilities/AnalyticsCollectionDemo.h View File

@@ -58,7 +58,7 @@ enum DemoAnalyticsEventTypes
}; };
//============================================================================== //==============================================================================
class GoogleAnalyticsDestination : public ThreadedAnalyticsDestination
class GoogleAnalyticsDestination final : public ThreadedAnalyticsDestination
{ {
public: public:
GoogleAnalyticsDestination() GoogleAnalyticsDestination()
@@ -298,7 +298,7 @@ private:
}; };
//============================================================================== //==============================================================================
class AnalyticsCollectionDemo : public Component
class AnalyticsCollectionDemo final : public Component
{ {
public: public:
//============================================================================== //==============================================================================


+ 6
- 6
examples/Utilities/Box2DDemo.h View File

@@ -101,8 +101,8 @@ JUCE_END_IGNORE_WARNINGS_GCC_LIKE
/** This list box just displays a StringArray and broadcasts a change message when the /** This list box just displays a StringArray and broadcasts a change message when the
selected row changes. selected row changes.
*/ */
class Box2DTestList : public ListBoxModel,
public ChangeBroadcaster
class Box2DTestList final : public ListBoxModel,
public ChangeBroadcaster
{ {
public: public:
Box2DTestList (const StringArray& testList) Box2DTestList (const StringArray& testList)
@@ -134,7 +134,7 @@ private:
}; };
//============================================================================== //==============================================================================
struct Box2DRenderComponent : public Component
struct Box2DRenderComponent final : public Component
{ {
Box2DRenderComponent() Box2DRenderComponent()
{ {
@@ -159,9 +159,9 @@ struct Box2DRenderComponent : public Component
}; };
//============================================================================== //==============================================================================
class Box2DDemo : public Component,
private Timer,
private ChangeListener
class Box2DDemo final : public Component,
private Timer,
private ChangeListener
{ {
public: public:
enum Demos enum Demos


+ 8
- 8
examples/Utilities/ChildProcessDemo.h View File

@@ -76,8 +76,8 @@ static String valueTreeToString (const ValueTree& v)
} }
//============================================================================== //==============================================================================
class ChildProcessDemo : public Component,
private MessageListener
class ChildProcessDemo final : public Component,
private MessageListener
{ {
public: public:
ChildProcessDemo() ChildProcessDemo()
@@ -174,9 +174,9 @@ public:
//============================================================================== //==============================================================================
// This class is used by the main process, acting as the coordinator and receiving messages // This class is used by the main process, acting as the coordinator and receiving messages
// from the worker process. // from the worker process.
class DemoCoordinatorProcess : public ChildProcessCoordinator,
private DeletedAtShutdown,
private AsyncUpdater
class DemoCoordinatorProcess final : public ChildProcessCoordinator,
private DeletedAtShutdown,
private AsyncUpdater
{ {
public: public:
DemoCoordinatorProcess (ChildProcessDemo& d) : demo (d) {} DemoCoordinatorProcess (ChildProcessDemo& d) : demo (d) {}
@@ -257,8 +257,8 @@ private:
/* This class gets instantiated in the child process, and receives messages from /* This class gets instantiated in the child process, and receives messages from
the coordinator process. the coordinator process.
*/ */
class DemoWorkerProcess : public ChildProcessWorker,
private DeletedAtShutdown
class DemoWorkerProcess final : public ChildProcessWorker,
private DeletedAtShutdown
{ {
public: public:
DemoWorkerProcess() = default; DemoWorkerProcess() = default;
@@ -322,7 +322,7 @@ inline bool invokeChildProcessDemo (const String& commandLine)
// based on the command line parameters, we can't just use the normal auto-generated Main.cpp. // based on the command line parameters, we can't just use the normal auto-generated Main.cpp.
// Instead, we don't do anything in Main.cpp and create a JUCEApplication subclass here with // Instead, we don't do anything in Main.cpp and create a JUCEApplication subclass here with
// the necessary modifications. // the necessary modifications.
class Application : public JUCEApplication
class Application final : public JUCEApplication
{ {
public: public:
//============================================================================== //==============================================================================


+ 3
- 3
examples/Utilities/CryptographyDemo.h View File

@@ -49,7 +49,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class RSAComponent : public Component
class RSAComponent final : public Component
{ {
public: public:
RSAComponent() RSAComponent()
@@ -141,7 +141,7 @@ private:
}; };
//============================================================================== //==============================================================================
class HashesComponent : public Component
class HashesComponent final : public Component
{ {
public: public:
HashesComponent() HashesComponent()
@@ -238,7 +238,7 @@ private:
}; };
//============================================================================== //==============================================================================
class CryptographyDemo : public Component
class CryptographyDemo final : public Component
{ {
public: public:
CryptographyDemo() CryptographyDemo()


+ 7
- 7
examples/Utilities/InAppPurchasesDemo.h View File

@@ -67,7 +67,7 @@
*/ */
//============================================================================== //==============================================================================
class VoicePurchases : private InAppPurchases::Listener
class VoicePurchases final : private InAppPurchases::Listener
{ {
public: public:
//============================================================================== //==============================================================================
@@ -278,7 +278,7 @@ private:
}; };
//============================================================================== //==============================================================================
class PhraseModel : public ListBoxModel
class PhraseModel final : public ListBoxModel
{ {
public: public:
PhraseModel() {} PhraseModel() {}
@@ -308,12 +308,12 @@ private:
}; };
//============================================================================== //==============================================================================
class VoiceModel : public ListBoxModel
class VoiceModel final : public ListBoxModel
{ {
public: public:
//============================================================================== //==============================================================================
class VoiceRow : public Component,
private Timer
class VoiceRow final : public Component,
private Timer
{ {
public: public:
VoiceRow (VoicePurchases& voicePurchases) : purchases (voicePurchases) VoiceRow (VoicePurchases& voicePurchases) : purchases (voicePurchases)
@@ -491,8 +491,8 @@ private:
}; };
//============================================================================== //==============================================================================
class InAppPurchasesDemo : public Component,
private AsyncUpdater
class InAppPurchasesDemo final : public Component,
private AsyncUpdater
{ {
public: public:
InAppPurchasesDemo() InAppPurchasesDemo()


+ 4
- 4
examples/Utilities/JavaScriptDemo.h View File

@@ -49,9 +49,9 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class JavaScriptDemo : public Component,
private CodeDocument::Listener,
private Timer
class JavaScriptDemo final : public Component,
private CodeDocument::Listener,
private Timer
{ {
public: public:
JavaScriptDemo() JavaScriptDemo()
@@ -125,7 +125,7 @@ public:
//============================================================================== //==============================================================================
// This class is used by the script, and provides methods that the JS can call. // This class is used by the script, and provides methods that the JS can call.
struct DemoClass : public DynamicObject
struct DemoClass final : public DynamicObject
{ {
DemoClass (JavaScriptDemo& demo) : owner (demo) DemoClass (JavaScriptDemo& demo) : owner (demo)
{ {


+ 2
- 2
examples/Utilities/LiveConstantDemo.h View File

@@ -49,7 +49,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
struct LiveConstantDemoComponent : public Component
struct LiveConstantDemoComponent final : public Component
{ {
LiveConstantDemoComponent() {} LiveConstantDemoComponent() {}
@@ -78,7 +78,7 @@ struct LiveConstantDemoComponent : public Component
}; };
//============================================================================== //==============================================================================
class LiveConstantDemo : public Component
class LiveConstantDemo final : public Component
{ {
public: public:
LiveConstantDemo() LiveConstantDemo()


+ 7
- 7
examples/Utilities/MultithreadingDemo.h View File

@@ -49,7 +49,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class BouncingBall : private ComponentListener
class BouncingBall : private ComponentListener
{ {
public: public:
BouncingBall (Component& comp) BouncingBall (Component& comp)
@@ -145,8 +145,8 @@ private:
}; };
//============================================================================== //==============================================================================
class DemoThread : public BouncingBall,
public Thread
class DemoThread final : public BouncingBall,
public Thread
{ {
public: public:
DemoThread (Component& containerComp) DemoThread (Component& containerComp)
@@ -194,8 +194,8 @@ private:
//============================================================================== //==============================================================================
class DemoThreadPoolJob : public BouncingBall,
public ThreadPoolJob
class DemoThreadPoolJob final : public BouncingBall,
public ThreadPoolJob
{ {
public: public:
DemoThreadPoolJob (Component& containerComp) DemoThreadPoolJob (Component& containerComp)
@@ -232,8 +232,8 @@ private:
}; };
//============================================================================== //==============================================================================
class MultithreadingDemo : public Component,
private Timer
class MultithreadingDemo final : public Component,
private Timer
{ {
public: public:
//============================================================================== //==============================================================================


+ 2
- 2
examples/Utilities/NetworkingDemo.h View File

@@ -49,8 +49,8 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class NetworkingDemo : public Component,
private Thread
class NetworkingDemo final : public Component,
private Thread
{ {
public: public:
NetworkingDemo() NetworkingDemo()


+ 10
- 10
examples/Utilities/OSCDemo.h View File

@@ -48,9 +48,9 @@
//============================================================================== //==============================================================================
class OSCLogListBox : public ListBox,
private ListBoxModel,
private AsyncUpdater
class OSCLogListBox final : public ListBox,
private ListBoxModel,
private AsyncUpdater
{ {
public: public:
OSCLogListBox() OSCLogListBox()
@@ -189,7 +189,7 @@ private:
}; };
//============================================================================== //==============================================================================
class OSCSenderDemo : public Component
class OSCSenderDemo final : public Component
{ {
public: public:
OSCSenderDemo() OSCSenderDemo()
@@ -238,9 +238,9 @@ private:
}; };
//============================================================================== //==============================================================================
class OSCReceiverDemo : public Component,
private OSCReceiver,
private OSCReceiver::ListenerWithOSCAddress<OSCReceiver::MessageLoopCallback>
class OSCReceiverDemo final : public Component,
private OSCReceiver,
private OSCReceiver::ListenerWithOSCAddress<OSCReceiver::MessageLoopCallback>
{ {
public: public:
//============================================================================== //==============================================================================
@@ -289,8 +289,8 @@ private:
}; };
//============================================================================== //==============================================================================
class OSCMonitorDemo : public Component,
private OSCReceiver::Listener<OSCReceiver::MessageLoopCallback>
class OSCMonitorDemo final : public Component,
private OSCReceiver::Listener<OSCReceiver::MessageLoopCallback>
{ {
public: public:
//============================================================================== //==============================================================================
@@ -465,7 +465,7 @@ private:
}; };
//============================================================================== //==============================================================================
class OSCDemo : public Component
class OSCDemo final : public Component
{ {
public: public:
OSCDemo() OSCDemo()


+ 8
- 8
examples/Utilities/PushNotificationsDemo.h View File

@@ -121,10 +121,10 @@ public class JuceActivity extends Activity
*/ */
//============================================================================== //==============================================================================
class PushNotificationsDemo : public Component,
private ChangeListener,
private ComponentListener,
private PushNotifications::Listener
class PushNotificationsDemo final : public Component,
private ChangeListener,
private ComponentListener,
private PushNotifications::Listener
{ {
public: public:
//============================================================================== //==============================================================================
@@ -781,7 +781,7 @@ private:
} }
#endif #endif
struct RowComponent : public Component
struct RowComponent final : public Component
{ {
RowComponent (Label& l, Component& c, int u = 1) RowComponent (Label& l, Component& c, int u = 1)
: label (l), : label (l),
@@ -1123,7 +1123,7 @@ private:
OwnedArray<RowComponent> rowComponents; OwnedArray<RowComponent> rowComponents;
}; };
struct AuxActionsView : public Component
struct AuxActionsView final : public Component
{ {
AuxActionsView() AuxActionsView()
{ {
@@ -1177,7 +1177,7 @@ private:
TextButton removeAllPendingNotifsButton { "Remove All Pending Notifs" }; TextButton removeAllPendingNotifsButton { "Remove All Pending Notifs" };
}; };
struct RemoteView : public Component
struct RemoteView final : public Component
{ {
RemoteView() RemoteView()
{ {
@@ -1209,7 +1209,7 @@ private:
TextButton unsubscribeFromSportsButton { "UnsubscribeFromSports" }; TextButton unsubscribeFromSportsButton { "UnsubscribeFromSports" };
}; };
struct DemoTabbedComponent : public TabbedComponent
struct DemoTabbedComponent final : public TabbedComponent
{ {
DemoTabbedComponent (PushNotificationsDemo& demoIn, TabbedButtonBar::Orientation orientation) DemoTabbedComponent (PushNotificationsDemo& demoIn, TabbedButtonBar::Orientation orientation)
: TabbedComponent (orientation), demo (demoIn) : TabbedComponent (orientation), demo (demoIn)


+ 1
- 1
examples/Utilities/SystemInfoDemo.h View File

@@ -219,7 +219,7 @@ static String getAllSystemInfo()
return systemInfo; return systemInfo;
} }
class SystemInfoDemo : public Component
class SystemInfoDemo final : public Component
{ {
public: public:
SystemInfoDemo() SystemInfoDemo()


+ 7
- 7
examples/Utilities/TimersAndEventsDemo.h View File

@@ -50,7 +50,7 @@
//============================================================================== //==============================================================================
/** Simple message that holds a Colour. */ /** Simple message that holds a Colour. */
struct ColourMessage : public Message
struct ColourMessage final : public Message
{ {
ColourMessage (Colour col) : colour (col) {} ColourMessage (Colour col) : colour (col) {}
@@ -73,10 +73,10 @@ struct ColourMessage : public Message
The flash will then fade using a Timer to repaint itself and will send a change The flash will then fade using a Timer to repaint itself and will send a change
message once it is finished. message once it is finished.
*/ */
class FlashingComponent : public Component,
public MessageListener,
public ChangeBroadcaster,
private Timer
class FlashingComponent final : public Component,
public MessageListener,
public ChangeBroadcaster,
private Timer
{ {
public: public:
FlashingComponent() {} FlashingComponent() {}
@@ -144,8 +144,8 @@ private:
}; };
//============================================================================== //==============================================================================
class TimersAndEventsDemo : public Component,
private ChangeListener
class TimersAndEventsDemo final : public Component,
private ChangeListener
{ {
public: public:
TimersAndEventsDemo() TimersAndEventsDemo()


+ 4
- 4
examples/Utilities/UnitTestsDemo.h View File

@@ -53,7 +53,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class UnitTestsDemo : public Component
class UnitTestsDemo final : public Component
{ {
public: public:
UnitTestsDemo() UnitTestsDemo()
@@ -146,8 +146,8 @@ public:
private: private:
//============================================================================== //==============================================================================
class TestRunnerThread : public Thread,
private Timer
class TestRunnerThread final : public Thread,
private Timer
{ {
public: public:
TestRunnerThread (UnitTestsDemo& utd, const String& ctg) TestRunnerThread (UnitTestsDemo& utd, const String& ctg)
@@ -190,7 +190,7 @@ private:
//============================================================================== //==============================================================================
// This subclass of UnitTestRunner is used to redirect the test output to our // This subclass of UnitTestRunner is used to redirect the test output to our
// TextBox, and to interrupt the running tests when our thread is asked to stop.. // TextBox, and to interrupt the running tests when our thread is asked to stop..
class CustomTestRunner : public UnitTestRunner
class CustomTestRunner final : public UnitTestRunner
{ {
public: public:
CustomTestRunner (TestRunnerThread& trt) : owner (trt) {} CustomTestRunner (TestRunnerThread& trt) : owner (trt) {}


+ 5
- 5
examples/Utilities/ValueTreesDemo.h View File

@@ -49,8 +49,8 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class ValueTreeItem : public TreeViewItem,
private ValueTree::Listener
class ValueTreeItem final : public TreeViewItem,
private ValueTree::Listener
{ {
public: public:
ValueTreeItem (const ValueTree& v, UndoManager& um) ValueTreeItem (const ValueTree& v, UndoManager& um)
@@ -179,9 +179,9 @@ private:
}; };
//============================================================================== //==============================================================================
class ValueTreesDemo : public Component,
public DragAndDropContainer,
private Timer
class ValueTreesDemo final : public Component,
public DragAndDropContainer,
private Timer
{ {
public: public:
ValueTreesDemo() ValueTreesDemo()


+ 4
- 4
examples/Utilities/XMLandJSONDemo.h View File

@@ -49,7 +49,7 @@
#include "../Assets/DemoUtilities.h" #include "../Assets/DemoUtilities.h"
//============================================================================== //==============================================================================
class XmlTreeItem : public TreeViewItem
class XmlTreeItem final : public TreeViewItem
{ {
public: public:
XmlTreeItem (XmlElement& x) : xml (x) {} XmlTreeItem (XmlElement& x) : xml (x) {}
@@ -115,7 +115,7 @@ private:
}; };
//============================================================================== //==============================================================================
class JsonTreeItem : public TreeViewItem
class JsonTreeItem final : public TreeViewItem
{ {
public: public:
JsonTreeItem (Identifier i, var value) JsonTreeItem (Identifier i, var value)
@@ -228,8 +228,8 @@ private:
}; };
//============================================================================== //==============================================================================
class XMLandJSONDemo : public Component,
private CodeDocument::Listener
class XMLandJSONDemo final : public Component,
private CodeDocument::Listener
{ {
public: public:
/** The type of database to parse. */ /** The type of database to parse. */


+ 2
- 2
extras/AudioPerformanceTest/Source/MainComponent.h View File

@@ -29,8 +29,8 @@
#include <mutex> #include <mutex>
//============================================================================== //==============================================================================
class MainContentComponent : public AudioAppComponent,
private Timer
class MainContentComponent final : public AudioAppComponent,
private Timer
{ {
public: public:
//============================================================================== //==============================================================================


+ 4
- 4
extras/AudioPluginHost/Source/HostStartup.cpp View File

@@ -31,8 +31,8 @@
#error "If you're building the audio plugin host, you probably want to enable VST and/or AU support" #error "If you're building the audio plugin host, you probably want to enable VST and/or AU support"
#endif #endif
class PluginScannerSubprocess : private ChildProcessWorker,
private AsyncUpdater
class PluginScannerSubprocess final : private ChildProcessWorker,
private AsyncUpdater
{ {
public: public:
PluginScannerSubprocess() PluginScannerSubprocess()
@@ -139,8 +139,8 @@ private:
}; };
//============================================================================== //==============================================================================
class PluginHostApp : public JUCEApplication,
private AsyncUpdater
class PluginHostApp final : public JUCEApplication,
private AsyncUpdater
{ {
public: public:
PluginHostApp() = default; PluginHostApp() = default;


+ 15
- 15
extras/AudioPluginHost/Source/Plugins/ARAPlugin.h View File

@@ -213,7 +213,7 @@ private:
}; };
//============================================================================== //==============================================================================
class AudioAccessController : public ARA::Host::AudioAccessControllerInterface
class AudioAccessController final : public ARA::Host::AudioAccessControllerInterface
{ {
public: public:
ARA::ARAAudioReaderHostRef createAudioReaderForSource (ARA::ARAAudioSourceHostRef audioSourceHostRef, ARA::ARAAudioReaderHostRef createAudioReaderForSource (ARA::ARAAudioSourceHostRef audioSourceHostRef,
@@ -264,7 +264,7 @@ private:
std::map<AudioReader*, std::unique_ptr<AudioReader>> audioReaders; std::map<AudioReader*, std::unique_ptr<AudioReader>> audioReaders;
}; };
class ArchivingController : public ARA::Host::ArchivingControllerInterface
class ArchivingController final : public ARA::Host::ArchivingControllerInterface
{ {
public: public:
using ReaderConverter = ARAHostModel::ConversionFunctions<MemoryBlock*, ARA::ARAArchiveReaderHostRef>; using ReaderConverter = ARAHostModel::ConversionFunctions<MemoryBlock*, ARA::ARAArchiveReaderHostRef>;
@@ -316,7 +316,7 @@ public:
} }
}; };
class ContentAccessController : public ARA::Host::ContentAccessControllerInterface
class ContentAccessController final : public ARA::Host::ContentAccessControllerInterface
{ {
public: public:
using Converter = ARAHostModel::ConversionFunctions<ARA::ARAContentType, ARA::ARAContentReaderHostRef>; using Converter = ARAHostModel::ConversionFunctions<ARA::ARAContentType, ARA::ARAContentReaderHostRef>;
@@ -433,7 +433,7 @@ public:
ARA::ARAContentBarSignature barSignature; ARA::ARAContentBarSignature barSignature;
}; };
class ModelUpdateController : public ARA::Host::ModelUpdateControllerInterface
class ModelUpdateController final : public ARA::Host::ModelUpdateControllerInterface
{ {
public: public:
void notifyAudioSourceAnalysisProgress (ARA::ARAAudioSourceHostRef audioSourceHostRef, void notifyAudioSourceAnalysisProgress (ARA::ARAAudioSourceHostRef audioSourceHostRef,
@@ -465,7 +465,7 @@ public:
} }
}; };
class PlaybackController : public ARA::Host::PlaybackControllerInterface
class PlaybackController final : public ARA::Host::PlaybackControllerInterface
{ {
public: public:
void requestStartPlayback() noexcept override {} void requestStartPlayback() noexcept override {}
@@ -484,7 +484,7 @@ public:
void requestEnableCycle (bool enable) noexcept override { ignoreUnused (enable); } void requestEnableCycle (bool enable) noexcept override { ignoreUnused (enable); }
}; };
struct SimplePlayHead : public juce::AudioPlayHead
struct SimplePlayHead final : public juce::AudioPlayHead
{ {
Optional<PositionInfo> getPosition() const override Optional<PositionInfo> getPosition() const override
{ {
@@ -509,9 +509,9 @@ struct HostPlaybackController
virtual void clearAudioSource() = 0; virtual void clearAudioSource() = 0;
}; };
class AudioSourceComponent : public Component,
public FileDragAndDropTarget,
public ChangeListener
class AudioSourceComponent final : public Component,
public FileDragAndDropTarget,
public ChangeListener
{ {
public: public:
explicit AudioSourceComponent (HostPlaybackController& controller, juce::ChangeBroadcaster& bc) explicit AudioSourceComponent (HostPlaybackController& controller, juce::ChangeBroadcaster& bc)
@@ -607,8 +607,8 @@ public:
} }
private: private:
class WaveformComponent : public Component,
public ChangeListener
class WaveformComponent final : public Component,
public ChangeListener
{ {
public: public:
WaveformComponent (AudioSourceComponent& p) WaveformComponent (AudioSourceComponent& p)
@@ -701,14 +701,14 @@ private:
TextButton playButton, goToStartButton; TextButton playButton, goToStartButton;
}; };
class ARAPluginInstanceWrapper : public AudioPluginInstance
class ARAPluginInstanceWrapper final : public AudioPluginInstance
{ {
public: public:
class ARATestHost : public HostPlaybackController,
public juce::ChangeBroadcaster
class ARATestHost final : public HostPlaybackController,
public juce::ChangeBroadcaster
{ {
public: public:
class Editor : public AudioProcessorEditor
class Editor final : public AudioProcessorEditor
{ {
public: public:
explicit Editor (ARATestHost& araTestHost) explicit Editor (ARATestHost& araTestHost)


+ 4
- 4
extras/AudioPluginHost/Source/Plugins/IOConfigurationWindow.cpp View File

@@ -31,7 +31,7 @@
//============================================================================== //==============================================================================
struct NumberedBoxes : public TableListBox,
struct NumberedBoxes final : public TableListBox,
private TableListBoxModel, private TableListBoxModel,
private Button::Listener private Button::Listener
{ {
@@ -170,9 +170,9 @@ private:
}; };
//============================================================================== //==============================================================================
class IOConfigurationWindow::InputOutputConfig : public Component,
private Button::Listener,
private NumberedBoxes::Listener
class IOConfigurationWindow::InputOutputConfig final : public Component,
private Button::Listener,
private NumberedBoxes::Listener
{ {
public: public:
InputOutputConfig (IOConfigurationWindow& parent, bool direction) InputOutputConfig (IOConfigurationWindow& parent, bool direction)


+ 1
- 1
extras/AudioPluginHost/Source/Plugins/IOConfigurationWindow.h View File

@@ -30,7 +30,7 @@ class GraphDocumentComponent;
//============================================================================== //==============================================================================
class IOConfigurationWindow : public AudioProcessorEditor
class IOConfigurationWindow final : public AudioProcessorEditor
{ {
public: public:
IOConfigurationWindow (AudioProcessor&); IOConfigurationWindow (AudioProcessor&);


+ 3
- 3
extras/AudioPluginHost/Source/Plugins/InternalPlugins.cpp View File

@@ -61,7 +61,7 @@ static std::unique_ptr<InputStream> createAssetInputStream (const char* resource
#include "../../../../examples/Plugins/SurroundPluginDemo.h" #include "../../../../examples/Plugins/SurroundPluginDemo.h"
//============================================================================== //==============================================================================
class InternalPlugin : public AudioPluginInstance
class InternalPlugin final : public AudioPluginInstance
{ {
public: public:
explicit InternalPlugin (std::unique_ptr<AudioProcessor> innerIn) explicit InternalPlugin (std::unique_ptr<AudioProcessor> innerIn)
@@ -167,7 +167,7 @@ private:
}; };
//============================================================================== //==============================================================================
class SineWaveSynth : public AudioProcessor
class SineWaveSynth final : public AudioProcessor
{ {
public: public:
SineWaveSynth() SineWaveSynth()
@@ -343,7 +343,7 @@ private:
}; };
//============================================================================== //==============================================================================
class ReverbPlugin : public AudioProcessor
class ReverbPlugin final : public AudioProcessor
{ {
public: public:
ReverbPlugin() ReverbPlugin()


+ 1
- 1
extras/AudioPluginHost/Source/Plugins/InternalPlugins.h View File

@@ -32,7 +32,7 @@
/** /**
Manages the internal plugin types. Manages the internal plugin types.
*/ */
class InternalPluginFormat : public AudioPluginFormat
class InternalPluginFormat final : public AudioPluginFormat
{ {
public: public:
//============================================================================== //==============================================================================


+ 3
- 3
extras/AudioPluginHost/Source/Plugins/PluginGraph.h View File

@@ -55,9 +55,9 @@ struct PluginDescriptionAndPreference
/** /**
A collection of plugins and some connections between them. A collection of plugins and some connections between them.
*/ */
class PluginGraph : public FileBasedDocument,
public AudioProcessorListener,
private ChangeListener
class PluginGraph final : public FileBasedDocument,
public AudioProcessorListener,
private ChangeListener
{ {
public: public:
//============================================================================== //==============================================================================


+ 15
- 15
extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp View File

@@ -92,8 +92,8 @@
#endif #endif
//============================================================================== //==============================================================================
struct GraphEditorPanel::PinComponent : public Component,
public SettableTooltipClient
struct GraphEditorPanel::PinComponent final : public Component,
public SettableTooltipClient
{ {
PinComponent (GraphEditorPanel& p, AudioProcessorGraph::NodeAndChannel pinToUse, bool isIn) PinComponent (GraphEditorPanel& p, AudioProcessorGraph::NodeAndChannel pinToUse, bool isIn)
: panel (p), graph (p.graph), pin (pinToUse), isInput (isIn) : panel (p), graph (p.graph), pin (pinToUse), isInput (isIn)
@@ -170,10 +170,10 @@ struct GraphEditorPanel::PinComponent : public Component,
}; };
//============================================================================== //==============================================================================
struct GraphEditorPanel::PluginComponent : public Component,
public Timer,
private AudioProcessorParameter::Listener,
private AsyncUpdater
struct GraphEditorPanel::PluginComponent final : public Component,
public Timer,
private AudioProcessorParameter::Listener,
private AsyncUpdater
{ {
PluginComponent (GraphEditorPanel& p, AudioProcessorGraph::NodeID id) : panel (p), graph (p.graph), pluginID (id) PluginComponent (GraphEditorPanel& p, AudioProcessorGraph::NodeID id) : panel (p), graph (p.graph), pluginID (id)
{ {
@@ -554,8 +554,8 @@ struct GraphEditorPanel::PluginComponent : public Component,
//============================================================================== //==============================================================================
struct GraphEditorPanel::ConnectorComponent : public Component,
public SettableTooltipClient
struct GraphEditorPanel::ConnectorComponent final : public Component,
public SettableTooltipClient
{ {
explicit ConnectorComponent (GraphEditorPanel& p) explicit ConnectorComponent (GraphEditorPanel& p)
: panel (p), graph (p.graph) : panel (p), graph (p.graph)
@@ -1001,8 +1001,8 @@ void GraphEditorPanel::timerCallback()
} }
//============================================================================== //==============================================================================
struct GraphDocumentComponent::TooltipBar : public Component,
private Timer
struct GraphDocumentComponent::TooltipBar final : public Component,
private Timer
{ {
TooltipBar() TooltipBar()
{ {
@@ -1038,8 +1038,8 @@ struct GraphDocumentComponent::TooltipBar : public Component,
}; };
//============================================================================== //==============================================================================
class GraphDocumentComponent::TitleBarComponent : public Component,
private Button::Listener
class GraphDocumentComponent::TitleBarComponent final : public Component,
private Button::Listener
{ {
public: public:
explicit TitleBarComponent (GraphDocumentComponent& graphDocumentComponent) explicit TitleBarComponent (GraphDocumentComponent& graphDocumentComponent)
@@ -1134,9 +1134,9 @@ private:
}; };
//============================================================================== //==============================================================================
struct GraphDocumentComponent::PluginListBoxModel : public ListBoxModel,
public ChangeListener,
public MouseListener
struct GraphDocumentComponent::PluginListBoxModel final : public ListBoxModel,
public ChangeListener,
public MouseListener
{ {
PluginListBoxModel (ListBox& lb, KnownPluginList& kpl) PluginListBoxModel (ListBox& lb, KnownPluginList& kpl)
: owner (lb), : owner (lb),


+ 7
- 7
extras/AudioPluginHost/Source/UI/GraphEditorPanel.h View File

@@ -33,9 +33,9 @@ class MainHostWindow;
/** /**
A panel that displays and edits a PluginGraph. A panel that displays and edits a PluginGraph.
*/ */
class GraphEditorPanel : public Component,
public ChangeListener,
private Timer
class GraphEditorPanel final : public Component,
public ChangeListener,
private Timer
{ {
public: public:
//============================================================================== //==============================================================================
@@ -98,10 +98,10 @@ private:
It also manages the graph itself, and plays it. It also manages the graph itself, and plays it.
*/ */
class GraphDocumentComponent : public Component,
public DragAndDropTarget,
public DragAndDropContainer,
private ChangeListener
class GraphDocumentComponent final : public Component,
public DragAndDropTarget,
public DragAndDropContainer,
private ChangeListener
{ {
public: public:
GraphDocumentComponent (AudioPluginFormatManager& formatManager, GraphDocumentComponent (AudioPluginFormatManager& formatManager,


+ 5
- 5
extras/AudioPluginHost/Source/UI/MainHostWindow.cpp View File

@@ -30,7 +30,7 @@
constexpr const char* scanModeKey = "pluginScanMode"; constexpr const char* scanModeKey = "pluginScanMode";
//============================================================================== //==============================================================================
class Superprocess : private ChildProcessCoordinator
class Superprocess final : private ChildProcessCoordinator
{ {
public: public:
Superprocess() Superprocess()
@@ -94,8 +94,8 @@ private:
}; };
//============================================================================== //==============================================================================
class CustomPluginScanner : public KnownPluginList::CustomScanner,
private ChangeListener
class CustomPluginScanner final : public KnownPluginList::CustomScanner,
private ChangeListener
{ {
public: public:
CustomPluginScanner() CustomPluginScanner()
@@ -202,7 +202,7 @@ private:
}; };
//============================================================================== //==============================================================================
class CustomPluginListComponent : public PluginListComponent
class CustomPluginListComponent final : public PluginListComponent
{ {
public: public:
CustomPluginListComponent (AudioPluginFormatManager& manager, CustomPluginListComponent (AudioPluginFormatManager& manager,
@@ -256,7 +256,7 @@ private:
}; };
//============================================================================== //==============================================================================
class MainHostWindow::PluginListWindow : public DocumentWindow
class MainHostWindow::PluginListWindow final : public DocumentWindow
{ {
public: public:
PluginListWindow (MainHostWindow& mw, AudioPluginFormatManager& pluginFormatManager) PluginListWindow (MainHostWindow& mw, AudioPluginFormatManager& pluginFormatManager)


+ 5
- 5
extras/AudioPluginHost/Source/UI/MainHostWindow.h View File

@@ -74,11 +74,11 @@ void addPluginAutoScaleOptionsSubMenu (AudioPluginInstance*, PopupMenu&);
constexpr const char* processUID = "juceaudiopluginhost"; constexpr const char* processUID = "juceaudiopluginhost";
//============================================================================== //==============================================================================
class MainHostWindow : public DocumentWindow,
public MenuBarModel,
public ApplicationCommandTarget,
public ChangeListener,
public FileDragAndDropTarget
class MainHostWindow final : public DocumentWindow,
public MenuBarModel,
public ApplicationCommandTarget,
public ChangeListener,
public FileDragAndDropTarget
{ {
public: public:
//============================================================================== //==============================================================================


+ 7
- 7
extras/AudioPluginHost/Source/UI/PluginWindow.h View File

@@ -46,10 +46,10 @@ class PluginGraph;
/** /**
A window that shows a log of parameter change messages sent by the plugin. A window that shows a log of parameter change messages sent by the plugin.
*/ */
class PluginDebugWindow : public AudioProcessorEditor,
public AudioProcessorParameter::Listener,
public ListBoxModel,
public AsyncUpdater
class PluginDebugWindow final : public AudioProcessorEditor,
public AudioProcessorParameter::Listener,
public ListBoxModel,
public AsyncUpdater
{ {
public: public:
PluginDebugWindow (AudioProcessor& proc) PluginDebugWindow (AudioProcessor& proc)
@@ -146,7 +146,7 @@ private:
/** /**
A desktop window containing a plugin's GUI. A desktop window containing a plugin's GUI.
*/ */
class PluginWindow : public DocumentWindow
class PluginWindow final : public DocumentWindow
{ {
public: public:
enum class Type enum class Type
@@ -235,7 +235,7 @@ public:
} }
private: private:
class DecoratorConstrainer : public BorderedComponentBoundsConstrainer
class DecoratorConstrainer final : public BorderedComponentBoundsConstrainer
{ {
public: public:
explicit DecoratorConstrainer (DocumentWindow& windowIn) explicit DecoratorConstrainer (DocumentWindow& windowIn)
@@ -327,7 +327,7 @@ private:
} }
//============================================================================== //==============================================================================
struct ProgramAudioProcessorEditor : public AudioProcessorEditor
struct ProgramAudioProcessorEditor final : public AudioProcessorEditor
{ {
explicit ProgramAudioProcessorEditor (AudioProcessor& p) explicit ProgramAudioProcessorEditor (AudioProcessor& p)
: AudioProcessorEditor (p) : AudioProcessorEditor (p)


+ 2
- 2
extras/Build/juceaide/Main.cpp View File

@@ -104,7 +104,7 @@ int writeBinaryData (juce::ArgumentList&& args)
return 0; return 0;
} }
struct IconParseResults final
struct IconParseResults
{ {
juce::build_tools::Icons icons; juce::build_tools::Icons icons;
juce::File output; juce::File output;
@@ -191,7 +191,7 @@ bool getBoolValue (const std::unordered_map<juce::String, juce::String>& dict, j
|| str.equalsIgnoreCase ("on"); || str.equalsIgnoreCase ("on");
} }
struct UpdateField final
struct UpdateField
{ {
const std::unordered_map<juce::String, juce::String>& dict; const std::unordered_map<juce::String, juce::String>& dict;


+ 6
- 6
extras/NetworkGraphicsDemo/Source/ClientComponent.h View File

@@ -29,12 +29,12 @@
particular client covers, and updates itself when messages arrive from the master particular client covers, and updates itself when messages arrive from the master
containing new canvas states. containing new canvas states.
*/ */
class ClientCanvasComponent : public Component,
private OSCSender,
private OSCReceiver,
private OSCReceiver::Listener<OSCReceiver::RealtimeCallback>,
private AsyncUpdater,
private Timer
class ClientCanvasComponent final : public Component,
private OSCSender,
private OSCReceiver,
private OSCReceiver::Listener<OSCReceiver::RealtimeCallback>,
private AsyncUpdater,
private Timer
{ {
public: public:
ClientCanvasComponent (PropertiesFile& p, int windowIndex) : properties (p) ClientCanvasComponent (PropertiesFile& p, int windowIndex) : properties (p)


+ 8
- 8
extras/NetworkGraphicsDemo/Source/Demos.h View File

@@ -24,7 +24,7 @@
*/ */
struct BlankCanvas : public AnimatedContent
struct BlankCanvas final : public AnimatedContent
{ {
String getName() const override { return "Blank Canvas"; } String getName() const override { return "Blank Canvas"; }
void reset() override {} void reset() override {}
@@ -33,7 +33,7 @@ struct BlankCanvas : public AnimatedContent
}; };
//============================================================================== //==============================================================================
struct GridLines : public AnimatedContent
struct GridLines final : public AnimatedContent
{ {
String getName() const override { return "Grid Lines"; } String getName() const override { return "Grid Lines"; }
void reset() override {} void reset() override {}
@@ -64,7 +64,7 @@ struct GridLines : public AnimatedContent
}; };
//============================================================================== //==============================================================================
struct BackgroundLogo : public AnimatedContent
struct BackgroundLogo : public AnimatedContent
{ {
BackgroundLogo() BackgroundLogo()
{ {
@@ -99,7 +99,7 @@ struct BackgroundLogo : public AnimatedContent
}; };
//============================================================================== //==============================================================================
struct FlockDemo : public BackgroundLogo
struct FlockDemo : public BackgroundLogo
{ {
String getName() const override { return "Flock"; } String getName() const override { return "Flock"; }
@@ -358,7 +358,7 @@ struct FlockDemo : public BackgroundLogo
}; };
//============================================================================== //==============================================================================
struct FlockWithText : public FlockDemo
struct FlockWithText final : public FlockDemo
{ {
FlockWithText() FlockWithText()
{ {
@@ -445,7 +445,7 @@ struct FlockWithText : public FlockDemo
}; };
//============================================================================== //==============================================================================
struct SmallFlock : public FlockDemo
struct SmallFlock final : public FlockDemo
{ {
String getName() const override { return "Small Flock"; } String getName() const override { return "Small Flock"; }
@@ -456,7 +456,7 @@ struct SmallFlock : public FlockDemo
}; };
//============================================================================== //==============================================================================
struct BigFlock : public FlockDemo
struct BigFlock final : public FlockDemo
{ {
String getName() const override { return "Big Flock"; } String getName() const override { return "Big Flock"; }
@@ -468,7 +468,7 @@ struct BigFlock : public FlockDemo
//============================================================================== //==============================================================================
template <int numHorizontalLogos> template <int numHorizontalLogos>
struct MultiLogo : public BackgroundLogo
struct MultiLogo final : public BackgroundLogo
{ {
String getName() const override { return "Multi-Logo " + String ((int) numHorizontalLogos); } String getName() const override { return "Multi-Logo " + String ((int) numHorizontalLogos); }


+ 2
- 2
extras/NetworkGraphicsDemo/Source/Main.cpp View File

@@ -47,7 +47,7 @@ namespace
//============================================================================== //==============================================================================
class NetworkGraphicsDemoApplication : public JUCEApplication
class NetworkGraphicsDemoApplication final : public JUCEApplication
{ {
public: public:
NetworkGraphicsDemoApplication() : properties (getPropertyFileOptions()) NetworkGraphicsDemoApplication() : properties (getPropertyFileOptions())
@@ -89,7 +89,7 @@ public:
} }
//============================================================================== //==============================================================================
struct MainWindow : public DocumentWindow
struct MainWindow final : public DocumentWindow
{ {
explicit MainWindow (PropertiesFile& props) explicit MainWindow (PropertiesFile& props)
: DocumentWindow ("JUCE Networked Graphics Demo - Master", Colours::white, DocumentWindow::allButtons) : DocumentWindow ("JUCE Networked Graphics Demo - Master", Colours::white, DocumentWindow::allButtons)


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save