diff --git a/include/FluidSCWrapper.hpp b/include/FluidSCWrapper.hpp index 13f7b65..239ecc9 100644 --- a/include/FluidSCWrapper.hpp +++ b/include/FluidSCWrapper.hpp @@ -26,7 +26,7 @@ namespace impl { // Iterate over kr/ir inputs via callbacks from params object struct FloatControlsIter { - FloatControlsIter(float **vals, size_t N) + FloatControlsIter(float **vals, index N) : mValues(vals) , mSize(N) {} @@ -39,12 +39,12 @@ struct FloatControlsIter mCount = 0; } - size_t size() const noexcept { return mSize; } + index size() const noexcept { return mSize; } private: float **mValues; - size_t mSize; - size_t mCount{0}; + index mSize; + index mCount{0}; }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -78,7 +78,7 @@ public: } RealTime() - : mControlsIterator{mInBuf + mSpecialIndex + 1,static_cast(static_cast(mNumInputs) - mSpecialIndex - 1)} + : mControlsIterator{mInBuf + mSpecialIndex + 1,static_cast(mNumInputs) - mSpecialIndex - 1} , mParams{Wrapper::Client::getParameterDescriptors()} , mClient{Wrapper::setParams(mParams,mWorld->mVerbosity > 0, mWorld, mControlsIterator,true)} {} @@ -100,24 +100,24 @@ public: } mClient.sampleRate(fullSampleRate()); - mInputConnections.reserve(mClient.audioChannelsIn()); - mOutputConnections.reserve(mClient.audioChannelsOut()); - mAudioInputs.reserve(mClient.audioChannelsIn()); - mOutputs.reserve(std::max(mClient.audioChannelsOut(), mClient.controlChannelsOut())); + mInputConnections.reserve(asUnsigned(mClient.audioChannelsIn())); + mOutputConnections.reserve(asUnsigned(mClient.audioChannelsOut())); + mAudioInputs.reserve(asUnsigned(mClient.audioChannelsIn())); + mOutputs.reserve(asUnsigned(std::max(mClient.audioChannelsOut(), mClient.controlChannelsOut()))); - for (int i = 0; i < static_cast(mClient.audioChannelsIn()); ++i) + for (index i = 0; i < mClient.audioChannelsIn(); ++i) { - mInputConnections.emplace_back(isAudioRateIn(i)); + mInputConnections.emplace_back(isAudioRateIn(static_cast(i))); mAudioInputs.emplace_back(nullptr, 0, 0); } - for (int i = 0; i < static_cast(mClient.audioChannelsOut()); ++i) + for (index i = 0; i < mClient.audioChannelsOut(); ++i) { mOutputConnections.emplace_back(true); mOutputs.emplace_back(nullptr, 0, 0); } - for (int i = 0; i < static_cast(mClient.controlChannelsOut()); ++i) { mOutputs.emplace_back(nullptr, 0, 0); } + for (index i = 0; i < mClient.controlChannelsOut(); ++i) { mOutputs.emplace_back(nullptr, 0, 0); } mCalcFunc = make_calc_function(); Wrapper::getInterfaceTable()->fClearUnitOutputs(this, 1); @@ -129,15 +129,23 @@ public: Wrapper::setParams(mParams, mWorld->mVerbosity > 0, mWorld, mControlsIterator); // forward on inputs N + audio inputs as params mParams.constrainParameterValues(); const Unit *unit = this; - for (size_t i = 0; i < mClient.audioChannelsIn(); ++i) + for (index i = 0; i < mClient.audioChannelsIn(); ++i) { - if (mInputConnections[i]) mAudioInputs[i].reset(IN(i), 0, fullBufferSize()); + if (mInputConnections[asUnsigned(i)]) + { + mAudioInputs[asUnsigned(i)].reset(IN(i), 0, fullBufferSize()); + } + } + for (index i = 0; i < mClient.audioChannelsOut(); ++i) + { + assert(i <= std::numeric_limits::max()); + if (mOutputConnections[asUnsigned(i)]) mOutputs[asUnsigned(i)].reset(out(static_cast(i)), 0, fullBufferSize()); } - for (size_t i = 0; i < mClient.audioChannelsOut(); ++i) + for (index i = 0; i < mClient.controlChannelsOut(); ++i) { - if (mOutputConnections[i]) mOutputs[i].reset(out(static_cast(i)), 0, fullBufferSize()); + assert(i <= std::numeric_limits::max()); + mOutputs[asUnsigned(i)].reset(out(static_cast(i)), 0, 1); } - for (size_t i = 0; i < mClient.controlChannelsOut(); ++i) { mOutputs[i].reset(out(static_cast(i)), 0, 1); } mClient.process(mAudioInputs, mOutputs,mContext); } @@ -196,10 +204,10 @@ public: /// Penultimate input is the doneAction, final is blocking mode. Neither are params, so we skip them in the controlsIterator NonRealTime() : - mControlsIterator{mInBuf,static_cast(static_cast(mNumInputs) - mSpecialIndex - 2)} + mControlsIterator{mInBuf,index(mNumInputs) - mSpecialIndex - 2} , mParams{Wrapper::Client::getParameterDescriptors()} , mClient{Wrapper::setParams(mParams,mWorld->mVerbosity > 0, mWorld, mControlsIterator,true)} - , mSynchronous{mNumInputs > 2 ? (in0(static_cast(mNumInputs - 1)) > 0) : false} + , mSynchronous{mNumInputs > 2 ? (in0(int(mNumInputs) - 1) > 0) : false} {} ~NonRealTime() @@ -220,7 +228,7 @@ public: mFifoMsg.Set(mWorld, initNRTJob, nullptr, this); mWorld->ft->fSendMsgFromRT(mWorld,mFifoMsg); //we want to poll thread roughly every 20ms - checkThreadInterval = static_cast(0.02 / controlDur()); + checkThreadInterval = static_cast(0.02 / controlDur()); set_calc_function(); }; @@ -301,7 +309,7 @@ public: auto w = static_cast(data); if(w->mDone && w->mNumInputs > 2) //don't check for doneAction if UGen has no ins (there should be 3 minimum -> sig, doneAction, blocking mode) { - int doneAction = static_cast(w->in0(static_cast(w->mNumInputs - 2))); //doneAction is penultimate input; THIS IS THE LAW + int doneAction = static_cast(w->in0(int(w->mNumInputs) - 2)); //doneAction is penultimate input; THIS IS THE LAW world->ft->fDoneAction(doneAction,w); return; } @@ -363,8 +371,8 @@ private: char* mCompletionMessage = nullptr; void* mReplyAddr = nullptr; const char *mName = nullptr; - size_t checkThreadInterval; - size_t pollCounter{0}; + index checkThreadInterval; + index pollCounter{0}; protected: ParamSetType mParams; Client mClient; @@ -427,7 +435,7 @@ class FluidSCWrapper : public impl::FluidSCWrapperBase template struct Setter { - static constexpr size_t argSize = C::getParameterDescriptors().template get().fixedSize; + static constexpr index argSize = C::getParameterDescriptors().template get().fixedSize; auto fromArgs(World *, FloatControlsIter& args, LongT::type, int) { return args.next(); } auto fromArgs(World *, FloatControlsIter& args, FloatT::type, int) { return args.next(); } @@ -449,7 +457,7 @@ class FluidSCWrapper : public impl::FluidSCWrapperBase ParamLiteralConvertor a; using LiteralType = typename ParamLiteralConvertor::LiteralType; - for (size_t i = 0; i < argSize; i++) + for (index i = 0; i < argSize; i++) a[i] = static_cast(fromArgs(w, args, a[0], 0)); return a.value(); diff --git a/include/SCBufferAdaptor.hpp b/include/SCBufferAdaptor.hpp index e1ae6e1..0a2e0c6 100644 --- a/include/SCBufferAdaptor.hpp +++ b/include/SCBufferAdaptor.hpp @@ -26,9 +26,9 @@ struct NRTBuf { : mBuffer(b) { } - NRTBuf(World *world, uint32 bufnum, bool rt = false) - : NRTBuf(rt ? World_GetBuf(world, bufnum) - : World_GetNRTBuf(world, bufnum)) + NRTBuf(World *world, index bufnum, bool rt = false) + : NRTBuf(rt ? World_GetBuf(world, static_cast(bufnum)) + : World_GetNRTBuf(world, static_cast(bufnum))) { if (mBuffer && !static_cast(mBuffer->samplerate)) mBuffer->samplerate = world->mFullRate.mSampleRate; @@ -65,8 +65,8 @@ public: SCBufferAdaptor& operator=(SCBufferAdaptor&&) = default; - SCBufferAdaptor(intptr_t bufnum,World *world, bool rt = false) - : NRTBuf(world, static_cast(bufnum), rt) + SCBufferAdaptor(index bufnum,World *world, bool rt = false) + : NRTBuf(world, bufnum, rt) , mBufnum(bufnum) , mWorld(world) { @@ -109,60 +109,60 @@ public: return true; } - FluidTensorView samps(size_t channel) override + FluidTensorView samps(index channel) override { FluidTensorView v{mBuffer->data, 0, - static_cast(mBuffer->frames), - static_cast(mBuffer->channels)}; + mBuffer->frames, + mBuffer->channels}; return v.col(channel); } - FluidTensorView samps(size_t offset, size_t nframes, - size_t chanoffset) override + FluidTensorView samps(index offset, index nframes, + index chanoffset) override { FluidTensorView v{mBuffer->data, 0, - static_cast(mBuffer->frames), - static_cast(mBuffer->channels)}; + mBuffer->frames, + mBuffer->channels}; return v(fluid::Slice(offset, nframes), fluid::Slice(chanoffset, 1)).col(0); } - FluidTensorView samps(size_t channel) const override + FluidTensorView samps(index channel) const override { FluidTensorView v{mBuffer->data, 0, - static_cast(mBuffer->frames), - static_cast(mBuffer->channels)}; + mBuffer->frames, + mBuffer->channels}; return v.col(channel); } - FluidTensorView samps(size_t offset, size_t nframes, - size_t chanoffset) const override + FluidTensorView samps(index offset, index nframes, + index chanoffset) const override { FluidTensorView v{mBuffer->data, 0, - static_cast(mBuffer->frames), - static_cast(mBuffer->channels)}; + mBuffer->frames, + mBuffer->channels}; return v(fluid::Slice(offset, nframes), fluid::Slice(chanoffset, 1)).col(0); } - size_t numFrames() const override + index numFrames() const override { - return valid() ? static_cast(this->mBuffer->frames) : 0u; + return valid() ? this->mBuffer->frames : 0; } - size_t numChans() const override + index numChans() const override { - return valid() ? static_cast(this->mBuffer->channels) : 0u; + return valid() ? this->mBuffer->channels : 0; } double sampleRate() const override { return valid() ? mBuffer->samplerate : 0; } std::string asString() const override { return std::to_string(bufnum()); } - const Result resize(size_t frames, size_t channels, double sampleRate) override + const Result resize(index frames, index channels, double sampleRate) override { SndBuf *thisThing = mBuffer; mOldData = thisThing->data; @@ -178,14 +178,14 @@ public: return r; } - intptr_t bufnum() const { return mBufnum; } + index bufnum() const { return mBufnum; } void realTime(bool rt) { mRealTime = rt; } protected: bool mRealTime{false}; float *mOldData{0}; - intptr_t mBufnum; + index mBufnum; World *mWorld; };