LMMS
Loading...
Searching...
No Matches
juce_AudioProcessorParameterGroup.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29//==============================================================================
42{
43public:
44 //==============================================================================
60 {
61 public:
62 //==============================================================================
65
68
71
74
75 private:
76 //==============================================================================
77 AudioProcessorParameterNode (std::unique_ptr<AudioProcessorParameter>, AudioProcessorParameterGroup*);
78 AudioProcessorParameterNode (std::unique_ptr<AudioProcessorParameterGroup>, AudioProcessorParameterGroup*);
79
80 std::unique_ptr<AudioProcessorParameterGroup> group;
81 std::unique_ptr<AudioProcessorParameter> parameter;
83
85
87 };
88
89 //==============================================================================
92
104 AudioProcessorParameterGroup (String groupID, String groupName, String subgroupSeparator);
105
117 template <typename ParameterOrGroup>
118 AudioProcessorParameterGroup (String groupID, String groupName, String subgroupSeparator,
119 std::unique_ptr<ParameterOrGroup> child)
120 : AudioProcessorParameterGroup (groupID, groupName, subgroupSeparator)
121 {
122 addChild (std::move (child));
123 }
124
137 template <typename ParameterOrGroup, typename... Args>
138 AudioProcessorParameterGroup (String groupID, String groupName, String subgroupSeparator,
139 std::unique_ptr<ParameterOrGroup> firstChild, Args&&... remainingChildren)
140 : AudioProcessorParameterGroup (groupID, groupName, subgroupSeparator, std::move (firstChild))
141 {
142 addChild (std::forward<Args> (remainingChildren)...);
143 }
144
149
154
157
158 //==============================================================================
160 String getID() const;
161
163 String getName() const;
164
166 String getSeparator() const;
167
170
171 //==============================================================================
176 void setName (String newName);
177
178 //==============================================================================
181
182 //==============================================================================
189
196
201
202 //==============================================================================
208 template <typename ParameterOrGroup>
209 void addChild (std::unique_ptr<ParameterOrGroup> child)
210 {
211 // If you hit a compiler error here then you are attempting to add a
212 // child that is neither a pointer to an AudioProcessorParameterGroup
213 // nor a pointer to an AudioProcessorParameter.
214 append (std::move (child));
215 }
216
222 template <typename ParameterOrGroup, typename... Args>
223 void addChild (std::unique_ptr<ParameterOrGroup> firstChild, Args&&... remainingChildren)
224 {
225 addChild (std::move (firstChild));
226 addChild (std::forward<Args> (remainingChildren)...);
227 }
228
229 #ifndef DOXYGEN
230 [[deprecated ("This class now has a move operator, so if you're trying to move them around, you "
231 "should use that, or if you really need to swap two groups, just call std::swap. "
232 "However, remember that swapping a group that's already owned by an AudioProcessor "
233 "will most likely crash the host, so don't do that.")]]
234 void swapWith (AudioProcessorParameterGroup& other) { std::swap (*this, other); }
235 #endif
236
237private:
238 //==============================================================================
239 void getSubgroups (Array<const AudioProcessorParameterGroup*>&, bool recursive) const;
240 void getParameters (Array<AudioProcessorParameter*>&, bool recursive) const;
241 const AudioProcessorParameterGroup* getGroupForParameter (AudioProcessorParameter*) const;
242 void updateChildParentage();
243 void append (std::unique_ptr<AudioProcessorParameter>);
244 void append (std::unique_ptr<AudioProcessorParameterGroup>);
245
246 //==============================================================================
250
252};
253
254} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_Array.h:56
Definition juce_AudioProcessorParameterGroup.h:60
friend class AudioProcessorParameterGroup
Definition juce_AudioProcessorParameterGroup.h:84
AudioProcessorParameterGroup * parent
Definition juce_AudioProcessorParameterGroup.h:82
AudioProcessorParameterNode(AudioProcessorParameterNode &&)
Definition juce_AudioProcessorParameterGroup.cpp:31
AudioProcessorParameterGroup * getGroup() const
Definition juce_AudioProcessorParameterGroup.cpp:52
AudioProcessorParameter * getParameter() const
Definition juce_AudioProcessorParameterGroup.cpp:51
std::unique_ptr< AudioProcessorParameterGroup > group
Definition juce_AudioProcessorParameterGroup.h:80
std::unique_ptr< AudioProcessorParameter > parameter
Definition juce_AudioProcessorParameterGroup.h:81
AudioProcessorParameterGroup * getParent() const
Definition juce_AudioProcessorParameterGroup.cpp:50
Definition juce_AudioProcessorParameterGroup.h:42
AudioProcessorParameterGroup(String groupID, String groupName, String subgroupSeparator, std::unique_ptr< ParameterOrGroup > firstChild, Args &&... remainingChildren)
Definition juce_AudioProcessorParameterGroup.h:138
AudioProcessorParameterGroup * parent
Definition juce_AudioProcessorParameterGroup.h:249
AudioProcessorParameterGroup(String groupID, String groupName, String subgroupSeparator, std::unique_ptr< ParameterOrGroup > child)
Definition juce_AudioProcessorParameterGroup.h:118
String getSeparator() const
Definition juce_AudioProcessorParameterGroup.cpp:96
void setName(String newName)
Definition juce_AudioProcessorParameterGroup.cpp:99
String getName() const
Definition juce_AudioProcessorParameterGroup.cpp:95
void addChild(std::unique_ptr< ParameterOrGroup > child)
Definition juce_AudioProcessorParameterGroup.h:209
Array< const AudioProcessorParameterGroup * > getGroupsForParameter(AudioProcessorParameter *) const
Definition juce_AudioProcessorParameterGroup.cpp:128
const AudioProcessorParameterNode *const * end() const noexcept
Definition juce_AudioProcessorParameterGroup.cpp:102
Array< AudioProcessorParameter * > getParameters(bool recursive) const
Definition juce_AudioProcessorParameterGroup.cpp:121
String identifier
Definition juce_AudioProcessorParameterGroup.h:247
const AudioProcessorParameterGroup * getParent() const noexcept
Definition juce_AudioProcessorParameterGroup.cpp:97
void addChild(std::unique_ptr< ParameterOrGroup > firstChild, Args &&... remainingChildren)
Definition juce_AudioProcessorParameterGroup.h:223
OwnedArray< AudioProcessorParameterNode > children
Definition juce_AudioProcessorParameterGroup.h:248
String separator
Definition juce_AudioProcessorParameterGroup.h:247
void append(std::unique_ptr< AudioProcessorParameter >)
Definition juce_AudioProcessorParameterGroup.cpp:104
Array< const AudioProcessorParameterGroup * > getSubgroups(bool recursive) const
Definition juce_AudioProcessorParameterGroup.cpp:114
void swapWith(AudioProcessorParameterGroup &other)
Definition juce_AudioProcessorParameterGroup.h:234
const AudioProcessorParameterNode *const * begin() const noexcept
Definition juce_AudioProcessorParameterGroup.cpp:101
String name
Definition juce_AudioProcessorParameterGroup.h:247
String getID() const
Definition juce_AudioProcessorParameterGroup.cpp:94
Definition juce_AudioProcessorParameter.h:40
Definition juce_OwnedArray.h:51
Definition juce_String.h:53
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
Definition carla_juce.cpp:31
Definition juce_Uuid.h:141
#define const
Definition zconf.h:137