38 template <
typename Fn,
typename Tuple,
size_t... Ix>
41 (
void) std::initializer_list<int> { ((
void)
fn (std::get<Ix> (tuple), std::integral_constant<size_t, Ix>()), 0)... };
47 template <
typename Fn,
typename Tuple>
54 template <
typename Context,
size_t Ix>
57 static constexpr auto value = ! Context::usesSeparateInputAndOutputBlocks() || Ix == 0;
67template <
typename... Processors>
98 template <
typename ProcessContext>
99 void process (
const ProcessContext& context)
noexcept
106 template <typename Context, typename Proc, size_t Ix, std::enable_if_t<! detail::UseContextDirectly<Context, Ix>::value,
int> = 0>
107 void processOne (
const Context& context, Proc& proc, std::integral_constant<size_t, Ix>)
noexcept
109 jassert (context.getOutputBlock().getNumChannels() == context.getInputBlock().getNumChannels());
113 proc.process (replacingContext);
116 template <typename Context, typename Proc, size_t Ix, std::enable_if_t<detail::UseContextDirectly<Context, Ix>::value,
int> = 0>
117 void processOne (
const Context& context, Proc& proc, std::integral_constant<size_t, Ix>)
noexcept
119 auto contextCopy = context;
120 contextCopy.isBypassed = (
bypassed[Ix] || context.isBypassed);
122 proc.process (contextCopy);
126 std::array<bool,
sizeof...(Processors)>
bypassed { {} };
132template <
int Index,
typename... Processors>
141template <
int Index,
typename... Processors>
150template <
int Index,
typename... Processors>
159template <
int Index,
typename... Processors>
175template <typename... Processors>
176struct tuple_size<::
juce::
dsp::ProcessorChain<Processors...>> : integral_constant<
size_t, sizeof... (Processors)> {};
179template <
size_t I,
typename... Processors>
180struct tuple_element<I, ::juce::dsp::ProcessorChain<Processors...>> : tuple_element<I, tuple<Processors...>> {};
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_ProcessorChain.h:69
bool isBypassed() const noexcept
Definition juce_ProcessorChain.h:83
void setBypassed(bool b) noexcept
Definition juce_ProcessorChain.h:79
void prepare(const ProcessSpec &spec)
Definition juce_ProcessorChain.h:86
void processOne(const Context &context, Proc &proc, std::integral_constant< size_t, Ix >) noexcept
Definition juce_ProcessorChain.h:107
void reset()
Definition juce_ProcessorChain.h:92
auto & get() noexcept
Definition juce_ProcessorChain.h:72
std::tuple< Processors... > processors
Definition juce_ProcessorChain.h:125
const auto & get() const noexcept
Definition juce_ProcessorChain.h:75
std::array< bool, sizeof...(Processors)> bypassed
Definition juce_ProcessorChain.h:126
void process(const ProcessContext &context) noexcept
Definition juce_ProcessorChain.h:99
static PuglViewHint int value
Definition pugl.h:1708
#define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
Definition juce_CompilerWarnings.h:181
#define JUCE_END_IGNORE_WARNINGS_GCC_LIKE
Definition juce_CompilerWarnings.h:182
Definition juce_FixedSizeFunction.h:34
std::make_index_sequence< std::tuple_size< std::remove_cv_t< std::remove_reference_t< T > > >::value > TupleIndexSequence
Definition juce_ProcessorChain.h:45
constexpr void forEachInTuple(Fn &&fn, Tuple &&tuple, std::index_sequence< Ix... >)
Definition juce_ProcessorChain.h:39
Definition juce_AudioBlock.h:29
auto & get(ProcessorChain< Processors... > &chain) noexcept
Definition juce_ProcessorChain.h:133
void setBypassed(ProcessorChain< Processors... > &chain, bool bypassed) noexcept
Definition juce_ProcessorChain.h:151
bool isBypassed(const ProcessorChain< Processors... > &chain) noexcept
Definition juce_ProcessorChain.h:160
Definition carla_juce.cpp:31
Definition juce_Uuid.h:141
Definition juce_ProcessContext.h:88
bool isBypassed
Definition juce_ProcessContext.h:119
Definition juce_ProcessContext.h:38
Definition juce_ProcessorChain.h:56
static constexpr auto value
Definition juce_ProcessorChain.h:57
const char const char const char const char char * fn
Definition swell-functions.h:168
#define void
Definition unzip.h:396
#define const
Definition zconf.h:137