43 "-Wnullability-extension",
113template <
typename Constructor>
116 template <
typename... Args>
120 Constructor::construct (
forge, &
frame, std::forward<Args> (args)...);
146 template <
typename Target,
typename... Types>
152 template <
typename Target,
typename Head,
typename... Tail>
155 if (atom.
type ==
head.urid && atom.
size == sizeof (Head))
156 return static_cast<Target
> (*
reinterpret_cast<const Head*
> (
data));
161 template <
typename Target>
176 template <
typename Target>
182 template <
typename Target>
197 #define X(str) const LV2_URID m##str = map (str);
218 if (subject ==
nullptr)
221 return subject->
type == mLV2_ATOM__URID
225 template <
typename Callback>
228 if (
object->body.otype != mLV2_PATCH__Set)
236 { mLV2_PATCH__property, &
property },
237 { mLV2_PATCH__value, &
value },
248 template <
typename Callback>
251 if (event->
body.
type == mLV2_ATOM__Object)
255 template <
typename Callback>
258 if (property ==
nullptr)
265 if (property->
type != mLV2_ATOM__URID)
272 const auto parseResult =
parser.parseNumericAtom<
float> (
value);
274 if (! parseResult.hasValue())
286 #define X(str) const LV2_URID m##str = parser.map (str);
300template <
typename Traits>
304 using Iter =
typename Traits::Iter;
308 using value_type =
decltype (Traits::get (std::declval<Container>(), std::declval<Iter>()));
323 bool operator== (
const Iterator& other)
const noexcept
325 return iter ==
nullptr && other.iter ==
nullptr;
328 bool operator!= (
const Iterator& other)
const noexcept
330 return ! operator== (other);
421template <
typename OtherWordType,
typename Word>
424 static_assert (
sizeof (
word) ==
sizeof (OtherWordType),
"Word sizes must match");
452 if (std::any_of (
info.begin(),
info.end(), hasUnknownKind))
467 const auto getRequired = [] (
const SinglePortInfo&
i) {
return !
i.optional; };
468 return std::any_of (
info.begin(),
info.end(), getRequired);
487 { layout.outputBuses, buses.outputs })
493 return it !=
ports.end() ? it->second : -1;
498 const std::vector<ParsedGroup>&
client)
513 const std::vector<ParsedGroup>& parsedGroup)
515 if ((
int) parsedGroup.size() != layout.
size())
522 std::map<uint32_t, int>
result;
523 int channelOffsetOfBus = 0;
524 auto groupIterator = parsedGroup.begin();
526 for (
const auto& bus : layout)
528 const auto&
group = groupIterator->info;
532 const auto index = bus.getChannelIndexForType (
port.designation);
535 result.emplace (
port.index, channelOffsetOfBus + index);
538 channelOffsetOfBus += bus.size();
542 if ((
int)
result.size() != channelOffsetOfBus)
564 const std::map<
String, std::set<SinglePortInfo>>& groupedPorts,
565 const std::set<SinglePortInfo>& ungroupedPorts)
567 if (groupedPorts.empty())
569 std::vector<ParsedGroup>
result;
573 for (
const auto&
port : ungroupedPorts)
577 if (! mandatoryPorts.
info.empty())
578 result.push_back (std::move (mandatoryPorts));
580 for (
const auto&
port : ungroupedPorts)
587 std::vector<ParsedGroup>
result;
589 const auto pushGroup = [&] (
const std::pair<String, std::set<SinglePortInfo>>&
info)
594 const auto mainGroupIterator = groupedPorts.find (mainGroupUid);
596 if (mainGroupIterator != groupedPorts.end())
597 pushGroup (*mainGroupIterator);
599 for (
auto it = groupedPorts.begin(); it != groupedPorts.end(); ++it)
600 if (it != mainGroupIterator)
603 for (
const auto&
info : ungroupedPorts)
#define copy(x)
Definition ADnoteParameters.cpp:1011
#define noexcept
Definition DistrhoDefines.h:72
uint8_t a
Definition Spc_Cpu.h:141
Definition juce_Array.h:56
int size() const noexcept
Definition juce_Array.h:215
Definition juce_AudioChannelSet.h:47
bool isDisabled() const noexcept
Definition juce_AudioChannelSet.h:451
ChannelType
Definition juce_AudioChannelSet.h:317
@ right
Definition juce_AudioChannelSet.h:322
@ surround
Definition juce_AudioChannelSet.h:332
@ unknown
Definition juce_AudioChannelSet.h:318
@ centre
Definition juce_AudioChannelSet.h:323
@ rightSurroundRear
Definition juce_AudioChannelSet.h:344
@ rightSurroundSide
Definition juce_AudioChannelSet.h:334
@ rightCentre
Definition juce_AudioChannelSet.h:330
@ leftCentre
Definition juce_AudioChannelSet.h:329
@ leftSurroundSide
Definition juce_AudioChannelSet.h:333
@ leftSurroundRear
Definition juce_AudioChannelSet.h:343
@ left
Definition juce_AudioChannelSet.h:321
@ LFE
Definition juce_AudioChannelSet.h:326
static AudioChannelSet JUCE_CALLTYPE discreteChannels(int numChannels)
Definition juce_AudioChannelSet.cpp:504
Definition juce_Optional.h:74
Definition juce_String.h:53
LV2_Atom_Forge forge
Definition juce_LV2Common.h:107
const LV2_Atom_Forge * get() const
Definition juce_LV2Common.h:98
AtomForge(LV2_URID_Map m)
Definition juce_LV2Common.h:85
const LV2_URID chunk
Definition juce_LV2Common.h:108
LV2_Atom_Forge * get()
Definition juce_LV2Common.h:97
LV2_URID_Map map
Definition juce_LV2Common.h:106
void setBuffer(void *buf, size_t size)
Definition juce_LV2Common.h:92
void writeChunk(uint32_t size)
Definition juce_LV2Common.h:100
Definition juce_LV2Common.h:302
Iterator & operator++()
Definition juce_LV2Common.h:333
value_type * pointer
Definition juce_LV2Common.h:309
decltype(Traits::get(std::declval< Container >(), std::declval< Iter >())) value_type
Definition juce_LV2Common.h:308
value_type reference
Definition juce_LV2Common.h:310
reference operator*() const noexcept
Definition juce_LV2Common.h:346
Iterator begin() const noexcept
Definition juce_LV2Common.h:320
ptrdiff_t difference_type
Definition juce_LV2Common.h:307
Iterator(Container p) noexcept
Definition juce_LV2Common.h:317
typename Traits::Container Container
Definition juce_LV2Common.h:303
Container container
Definition juce_LV2Common.h:357
Iter iter
Definition juce_LV2Common.h:358
Iter testEnd(Iter i) const noexcept
Definition juce_LV2Common.h:352
Iterator end() const noexcept
Definition juce_LV2Common.h:321
std::input_iterator_tag iterator_category
Definition juce_LV2Common.h:311
typename Traits::Iter Iter
Definition juce_LV2Common.h:304
static std::map< uint32_t, int > getPortLayout(const Array< AudioChannelSet > &layout, const std::vector< ParsedGroup > &parsedGroup)
Definition juce_LV2Common.h:512
PortToAudioBufferMap(const PortToAudioBufferMap &inputs, const PortToAudioBufferMap &outputs)
Definition juce_LV2Common.h:502
int getChannelForPort(uint32_t port) const
Definition juce_LV2Common.h:490
std::map< uint32_t, int > ports
Definition juce_LV2Common.h:551
PortToAudioBufferMap(const AudioProcessor::BusesLayout &layout, const ParsedBuses &buses)
Definition juce_LV2Common.h:485
PortToAudioBufferMap(const Array< AudioChannelSet > &host, const std::vector< ParsedGroup > &client)
Definition juce_LV2Common.h:497
* e
Definition inflate.c:1404
unsigned * m
Definition inflate.c:1559
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
unsigned f
Definition inflate.c:1572
#define LV2_ATOM__Object
http://lv2plug.in/ns/ext/atom#Object
Definition atom.h:47
#define LV2_ATOM__Float
http://lv2plug.in/ns/ext/atom#Float
Definition atom.h:42
#define LV2_ATOM__Chunk
http://lv2plug.in/ns/ext/atom#Chunk
Definition atom.h:39
#define LV2_ATOM__Int
http://lv2plug.in/ns/ext/atom#Int
Definition atom.h:43
#define LV2_ATOM__URID
http://lv2plug.in/ns/ext/atom#URID
Definition atom.h:56
#define LV2_ATOM__Double
http://lv2plug.in/ns/ext/atom#Double
Definition atom.h:40
#define LV2_ATOM__Bool
http://lv2plug.in/ns/ext/atom#Bool
Definition atom.h:38
#define LV2_ATOM__Long
http://lv2plug.in/ns/ext/atom#Long
Definition atom.h:45
static PuglViewHint int value
Definition pugl.h:1708
static void lv2_atom_forge_init(LV2_Atom_Forge *forge, const LV2_URID_Map *map)
Definition atom-forge.h:143
static LV2_Atom_Forge_Ref lv2_atom_forge_sequence_head(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame, uint32_t unit)
Definition atom-forge.h:661
static void lv2_atom_forge_pop(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame)
Definition atom-forge.h:201
static void lv2_atom_forge_set_buffer(LV2_Atom_Forge *forge, uint8_t *buf, size_t size)
Definition atom-forge.h:242
static LV2_Atom_Forge_Ref lv2_atom_forge_atom(LV2_Atom_Forge *forge, uint32_t size, uint32_t type)
Definition atom-forge.h:354
static LV2_Atom_Forge_Ref lv2_atom_forge_object(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame, LV2_URID id, LV2_URID otype)
Definition atom-forge.h:574
#define LV2_PATCH__Set
http://lv2plug.in/ns/ext/patch#Set
Definition patch.h:47
#define LV2_PATCH__subject
http://lv2plug.in/ns/ext/patch#subject
Definition patch.h:56
#define LV2_PATCH__value
http://lv2plug.in/ns/ext/patch#value
Definition patch.h:58
#define LV2_PATCH__property
http://lv2plug.in/ns/ext/patch#property
Definition patch.h:52
#define LV2_PORT_GROUPS__left
http://lv2plug.in/ns/ext/port-groups#left
Definition port-groups.h:52
#define LV2_PORT_GROUPS__center
http://lv2plug.in/ns/ext/port-groups#center
Definition port-groups.h:47
#define LV2_PORT_GROUPS__rearLeft
http://lv2plug.in/ns/ext/port-groups#rearLeft
Definition port-groups.h:57
#define LV2_PORT_GROUPS__rearRight
http://lv2plug.in/ns/ext/port-groups#rearRight
Definition port-groups.h:58
#define LV2_PORT_GROUPS__rearCenter
http://lv2plug.in/ns/ext/port-groups#rearCenter
Definition port-groups.h:56
#define LV2_PORT_GROUPS__lowFrequencyEffects
http://lv2plug.in/ns/ext/port-groups#lowFrequencyEffects
Definition port-groups.h:53
#define LV2_PORT_GROUPS__centerRight
http://lv2plug.in/ns/ext/port-groups#centerRight
Definition port-groups.h:49
#define LV2_PORT_GROUPS__right
http://lv2plug.in/ns/ext/port-groups#right
Definition port-groups.h:59
#define LV2_PORT_GROUPS__centerLeft
http://lv2plug.in/ns/ext/port-groups#centerLeft
Definition port-groups.h:48
#define LV2_PORT_GROUPS__sideLeft
http://lv2plug.in/ns/ext/port-groups#sideLeft
Definition port-groups.h:62
#define LV2_PORT_GROUPS__sideRight
http://lv2plug.in/ns/ext/port-groups#sideRight
Definition port-groups.h:63
uint32_t LV2_URID
Definition urid.h:58
static const LV2_Atom_Event * lv2_atom_sequence_next(const LV2_Atom_Event *i)
Definition atom-util.h:113
static const LV2_Atom_Event * lv2_atom_sequence_begin(const LV2_Atom_Sequence_Body *body)
Definition atom-util.h:83
static bool lv2_atom_sequence_is_end(const LV2_Atom_Sequence_Body *body, uint32_t size, const LV2_Atom_Event *i)
Definition atom-util.h:104
static const LV2_Atom_Object_Query LV2_ATOM_OBJECT_QUERY_END
Definition atom-util.h:308
static int lv2_atom_object_query(const LV2_Atom_Object *object, LV2_Atom_Object_Query *query)
Definition atom-util.h:336
void * object
Definition jmemsys.h:50
struct backing_store_struct * info
Definition jmemsys.h:183
JSAMPIMAGE data
Definition jpeglib.h:945
#define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
Definition juce_CompilerWarnings.h:181
#define JUCE_END_IGNORE_WARNINGS_GCC_LIKE
Definition juce_CompilerWarnings.h:182
#define X(str)
Definition juce_LV2Common.h:197
#define JUCE_LEAK_DETECTOR(OwnerClass)
Definition juce_LeakedObjectDetector.h:138
unsigned int uint32_t
Definition mid.cpp:100
unsigned char uint8_t
Definition mid.cpp:98
Definition juce_LV2Common.h:80
ScopedFrame< ObjectTraits > ObjectFrame
Definition juce_LV2Common.h:137
ScopedFrame< SequenceTraits > SequenceFrame
Definition juce_LV2Common.h:136
const std::map< String, AudioChannelSet::ChannelType > channelDesignationMap
Definition juce_LV2Common.h:404
Iterator< SequenceIteratorTraits > SequenceIterator
Definition juce_LV2Common.h:401
static auto wordCast(Word word)
Definition juce_LV2Common.h:422
static std::vector< ParsedGroup > findStableBusOrder(const String &mainGroupUid, const std::map< String, std::set< SinglePortInfo > > &groupedPorts, const std::set< SinglePortInfo > &ungroupedPorts)
Definition juce_LV2Common.h:563
Definition carla_juce.cpp:31
jack_client_t client jack_client_t client jack_client_t client jack_client_t JackInfoShutdownCallback void arg jack_client_t jack_port_t * port
Definition juce_linux_JackAudio.cpp:65
Type readUnaligned(const void *srcPtr) noexcept
Definition juce_Memory.h:65
jack_client_t * client
Definition juce_linux_JackAudio.cpp:57
@ group
Definition juce_AccessibilityRole.h:61
static int compare(const var &v1, const var &v2)
Definition juce_Variant.cpp:654
short word
Definition private.h:22
LV2_Atom body
Definition atom.h:216
Definition atom-forge.h:102
Definition atom-util.h:303
uint32_t size
Definition atom.h:107
uint32_t type
Definition atom.h:108
Definition juce_AudioProcessor.h:311
Array< AudioChannelSet > inputBuses
Definition juce_AudioProcessor.h:313
Definition juce_LV2Common.h:144
LV2_URID urid
Definition juce_LV2Common.h:144
Definition juce_LV2Common.h:140
LV2_URID map(const char *str) const
Definition juce_LV2Common.h:194
const LV2_URID_Map mapFeature
Definition juce_LV2Common.h:196
NumericAtomParser(LV2_URID_Map mapFeatureIn)
Definition juce_LV2Common.h:141
static Optional< Target > tryParse(const LV2_Atom &atom, const void *data, Tag< Head > head, Tag< Tail >... tail)
Definition juce_LV2Common.h:153
Optional< Target > parseNumericOption(const LV2_Options_Option *option) const
Definition juce_LV2Common.h:183
Optional< Target > parseNumericAtom(const LV2_Atom *atom) const
Definition juce_LV2Common.h:177
Optional< Target > parseNumericAtom(const LV2_Atom *atom, const void *data) const
Definition juce_LV2Common.h:162
static Optional< Target > tryParse(const LV2_Atom &, const void *)
Definition juce_LV2Common.h:147
Definition juce_LV2Common.h:134
static constexpr auto construct
Definition juce_LV2Common.h:134
Definition juce_LV2Common.h:478
std::vector< ParsedGroup > inputs
Definition juce_LV2Common.h:479
std::vector< ParsedGroup > outputs
Definition juce_LV2Common.h:479
Definition juce_LV2Common.h:441
bool isCompatible(const AudioChannelSet &requestedBus) const
Definition juce_LV2Common.h:471
std::set< SinglePortInfo > info
Definition juce_LV2Common.h:443
static AudioChannelSet getEquivalentSet(const std::set< SinglePortInfo > &info)
Definition juce_LV2Common.h:448
AudioChannelSet getEquivalentSet() const noexcept
Definition juce_LV2Common.h:463
String uid
Definition juce_LV2Common.h:442
auto tie() const
Definition juce_LV2Common.h:445
bool isRequired() const
Definition juce_LV2Common.h:465
void setPluginProperty(const LV2_Atom *property, const LV2_Atom *value, Callback &&callback)
Definition juce_LV2Common.h:256
bool isPlugin(const LV2_Atom *subject) const
Definition juce_LV2Common.h:216
PatchSetHelper(LV2_URID_Map mapFeatureIn, const char *pluginUri)
Definition juce_LV2Common.h:211
LV2_URID pluginUrid
Definition juce_LV2Common.h:285
void processPatchSet(const LV2_Atom_Object *object, Callback &&callback)
Definition juce_LV2Common.h:226
NumericAtomParser parser
Definition juce_LV2Common.h:284
void processPatchSet(const LV2_Atom_Event *event, Callback &&callback)
Definition juce_LV2Common.h:249
Definition juce_LV2Common.h:115
~ScopedFrame()
Definition juce_LV2Common.h:123
LV2_Atom_Forge * forge
Definition juce_LV2Common.h:126
ScopedFrame(LV2_Atom_Forge *f, Args &&... args)
Definition juce_LV2Common.h:117
LV2_Atom_Forge_Frame frame
Definition juce_LV2Common.h:125
Definition juce_LV2Common.h:379
SequenceWithSize Container
Definition juce_LV2Common.h:380
static bool isEnd(const Container &s, Iter it) noexcept
Definition juce_LV2Common.h:393
static LV2_Atom_Event * next(const Container &, Iter it) noexcept
Definition juce_LV2Common.h:388
static LV2_Atom_Event * begin(const Container &s) noexcept
Definition juce_LV2Common.h:383
static LV2_Atom_Event * get(const Container &, Iter e) noexcept
Definition juce_LV2Common.h:398
LV2_Atom_Event * Iter
Definition juce_LV2Common.h:381
Definition juce_LV2Common.h:133
static constexpr auto construct
Definition juce_LV2Common.h:133
Definition juce_LV2Common.h:363
SequenceWithSize()=default
size_t size
Definition juce_LV2Common.h:373
SequenceWithSize(const LV2_Atom_Sequence *sequence)
Definition juce_LV2Common.h:369
const LV2_Atom_Sequence_Body * body
Definition juce_LV2Common.h:372
SequenceWithSize(const LV2_Atom_Sequence_Body *bodyIn, size_t sizeIn)
Definition juce_LV2Common.h:366
Definition juce_LV2Common.h:430
AudioChannelSet::ChannelType designation
Definition juce_LV2Common.h:432
bool optional
Definition juce_LV2Common.h:433
uint32_t index
Definition juce_LV2Common.h:431
auto tie() const
Definition juce_LV2Common.h:435
RECT const char void(* callback)(const char *droppath))) SWELL_API_DEFINE(BOOL
Definition swell-functions.h:1004
uch * p
Definition crypt.c:594
int result
Definition process.c:1455
#define const
Definition zconf.h:137