FluidSCWrapper: Clients no longer templates; find RT/NRT info in ClientWrapper

nix
Owen Green 6 years ago
parent aa2ea9c98d
commit d70a23f745

@ -176,7 +176,7 @@ public:
/// Final input is the doneAction, not a param, so we skip it in the controlsIterator
NonRealTime() :
mControlsIterator{mInBuf,static_cast<size_t>(static_cast<ptrdiff_t>(mNumInputs) - mSpecialIndex - 1)}
mControlsIterator{mInBuf,static_cast<size_t>(mNumInputs == 0 ? 0 : static_cast<ptrdiff_t>(mNumInputs) - mSpecialIndex - 1)}
, mParams{Wrapper::Client::getParameterDescriptors()}
, mClient{Wrapper::setParams(mParams,mWorld->mVerbosity > 0, mWorld, mControlsIterator,true)}
{}
@ -381,7 +381,7 @@ class FluidSCWrapperImpl<Client, Wrapper, std::false_type, std::true_type> : pub
// Make base class(es), full of CRTP mixin goodness
template <typename Client>
using FluidSCWrapperBase = FluidSCWrapperImpl<Client, FluidSCWrapper<Client>, isNonRealTime<Client>, isRealTime<Client>>;
using FluidSCWrapperBase = FluidSCWrapperImpl<Client, FluidSCWrapper<Client>, typename Client::isNonRealTime, typename Client::isRealTime>;
} // namespace impl
@ -524,14 +524,14 @@ class FluidSCWrapper : public impl::FluidSCWrapperBase<C>
static void launchMessage(Unit* u,sc_msg_iter* args)
{
FluidSCWrapper* x = static_cast<FluidSCWrapper*>(u);
using IndexList = typename Client::MessageSetType::template MessageDescriptorAt<Client,N>::IndexList;
using IndexList = typename Client::MessageSetType::template MessageDescriptorAt<N>::IndexList;
launchMessageImpl<N>(x,args,IndexList());
}
template<size_t N, size_t...Is>
static void launchMessageImpl(FluidSCWrapper* x,sc_msg_iter* inArgs,std::index_sequence<Is...>)
{
using MessageDescriptor = typename Client::MessageSetType::template MessageDescriptorAt<Client,N>;
using MessageDescriptor = typename Client::MessageSetType::template MessageDescriptorAt<N>;
using ArgTuple = typename MessageDescriptor::ArgumentTypes;
using ReturnType = typename MessageDescriptor::ReturnType;
using IndexList = typename MessageDescriptor::IndexList;
@ -669,13 +669,10 @@ public:
}
};
template <template<typename T> class Client>
template <typename Client>
void makeSCWrapper(const char *name, InterfaceTable *ft)
{
FluidSCWrapper<Client<float>>::setup(ft, name);
FluidSCWrapper<Client>::setup(ft, name);
}
} // namespace client

Loading…
Cancel
Save