CIntElement: Remove const_cast

CIESampleAndHold caches values internally for use later in a non-visible
manner to the user of the class. This is a good place for mutable to be
used.

This improves the readability of the GetValue() implementation.
This commit is contained in:
Lioncash 2020-03-22 06:05:56 -04:00
parent 36ac0a8d78
commit a2517a504e
2 changed files with 6 additions and 6 deletions

View File

@ -189,12 +189,12 @@ bool CIESampleAndHold::GetValue(int frame, int& valOut) const {
int b, c;
xc_waitFramesMin->GetValue(frame, b);
x10_waitFramesMax->GetValue(frame, c);
/* const-correctness, who needs it? */
const_cast<CIESampleAndHold*>(this)->x8_nextSampleFrame = CRandom16::GetRandomNumber()->Range(b, c) + frame;
x8_nextSampleFrame = CRandom16::GetRandomNumber()->Range(b, c) + frame;
x4_sampleSource->GetValue(frame, valOut);
const_cast<CIESampleAndHold*>(this)->x14_holdVal = valOut;
} else
x14_holdVal = valOut;
} else {
valOut = x14_holdVal;
}
return false;
}

View File

@ -134,10 +134,10 @@ public:
class CIESampleAndHold : public CIntElement {
std::unique_ptr<CIntElement> x4_sampleSource;
int x8_nextSampleFrame = 0;
mutable int x8_nextSampleFrame = 0;
std::unique_ptr<CIntElement> xc_waitFramesMin;
std::unique_ptr<CIntElement> x10_waitFramesMax;
int x14_holdVal;
mutable int x14_holdVal;
public:
CIESampleAndHold(std::unique_ptr<CIntElement>&& a, std::unique_ptr<CIntElement>&& b, std::unique_ptr<CIntElement>&& c)