21 if (mIter != mDataMap.
constEnd() && mIter.
key() == t)
36 else if (mIter != mDataMap.
constEnd())
102 else if (
mIndex || loadCycle > 1)
107 else if (mIndex < mBuffer->mCount)
155 int WaveDataProviderClock::valueForTransition()
const
157 return mClock.
start_at_zero ? (mTransition%2) : 1 - (mTransition%2);
177 : mParser(saleaeDirectoryPath), mBitMask(nullptr), mCurrentTime(0), mSampleValue(-1), mValuePending(false), mEventReady(false)
180 int n = wdList.
size();
181 mBitMask =
new u32[n];
183 for (
int i=0; i<n; i++)
186 mBitMask[i] = 1 << (n-i-1);
188 if (t != mCurrentTime)
191 mSampleValue = mNextValue.
value();
192 mSampleTime = mCurrentTime;
193 mLastValue = mNextValue;
197 int mask = *((
int*) obj);
205 if (mBitMask)
delete [] mBitMask;
208 bool WaveDataProviderGroup::nextEventReady()
226 while (nextEventReady())
231 lastVal = mSampleValue;
235 if (mSampleTime == t)
237 retval.
mTime = mSampleTime;
238 retval.
mValue = mSampleValue;
244 mValuePending =
true;
257 mValuePending =
false;
258 retval.
mTime = mSampleTime;
259 retval.
mValue = mSampleValue;
262 if (nextEventReady())
264 retval.
mTime = mSampleTime;
265 retval.
mValue = mSampleValue;
274 mInputCount = wdList.
size();
275 int n = (mInputCount + 7) / 8;
276 mTruthTable =
new char[n];
277 memcpy(mTruthTable, ttable, n);
283 if (mTruthTable)
delete [] mTruthTable;
292 sdt.
mValue = (mTruthTable[j] & (1<<k)) ? 1 : 0;
309 : mParser(saleaeDirectoryPath), mFilter(filter), mTransitionToValue(nullptr), mCurrentTime(0), mCurrentTrigger(false), mReportedTime(-1)
311 int n = wdList.
size();
313 mTransitionToValue =
new int[n];
314 for (
int i=0; i<n; i++)
316 if (i < toValue.
size())
317 mTransitionToValue[i] = toValue.
at(i);
319 mTransitionToValue[i] = -1;
322 for (
int i=0; i<wdList.
size(); i++)
326 if (t != mCurrentTime)
329 mCurrentTrigger = false;
331 int transTo = *((
int*) obj);
332 if (transTo<0 || val==transTo)
333 mCurrentTrigger =
true;
334 }, mTransitionToValue+i);
337 if (mFilter) mFilter->loadDataUnlessAlreadyLoaded();
340 WaveDataProviderTrigger::~WaveDataProviderTrigger()
342 if (mTransitionToValue)
delete [] mTransitionToValue;
348 while (mParser.next_event())
349 if (mCurrentTime >= t && (qint64)mCurrentTime > mReportedTime && mCurrentTrigger)
353 if (!mFilter->intValue(mCurrentTime))
continue;
355 mReportedTime = mCurrentTime;
363 while (mParser.next_event())
364 if ((qint64)mCurrentTime > mReportedTime && mCurrentTrigger)
368 if (!mFilter->intValue(mCurrentTime))
continue;
370 mReportedTime = mCurrentTime;
static SimulationSettings * sSimulationSettings
uint64_t mCount
Number of elements in buffer.
uint64_t * mTimeArray
Buffer for mCount transition time values.
int * mValueArray
Buffer for mCount data values.
uint64_t mTime
Transition time.
bool next_event()
Call to parser to deliver next event via registered callbacks (see above).
bool register_callback(const std::string &name, uint32_t id, std::function< void(void *, uint64_t, int)> callback, void *obj)
Registers callback which gets executed upon next_event()
int maxSizeLoadable() const
WaveDataProviderBoolean(const std::string &saleaeDirectoryPath, const QList< WaveData * > &wdList, const char *ttable)
virtual SaleaeDataTuple startValue(u64 t) override
virtual SaleaeDataTuple nextPoint() override
virtual ~WaveDataProviderBoolean()
virtual SaleaeDataTuple nextPoint() override
virtual SaleaeDataTuple startValue(u64 t) override
virtual SaleaeDataTuple nextPoint() override
QMap< u64, int > mDataMap
SaleaeDataBuffer * mBuffer
virtual SaleaeDataTuple startValue(u64 t) override
const WaveDataTimeframe & mTimeframe
SaleaeInputFile & mInputFile
void storeCurrentDatapoint()
virtual SaleaeDataTuple nextPoint() override
WaveDataProviderGroup(const std::string &saleaeDirectoryPath, const QList< WaveData * > &wdList)
virtual SaleaeDataTuple startValue(u64 t) override
virtual ~WaveDataProviderGroup()
void setWaveType(WaveData::NetType type, int bts=1, int base=16)
virtual SaleaeDataTuple nextPoint() override
virtual SaleaeDataTuple startValue(u64 t) override
WaveDataProviderTrigger(const std::string &saleaeDirectoryPath, const QList< WaveData * > &wdList, const QList< int > &toValue, WaveData *filter=nullptr)
bool hasUserTimeframe() const
void setValue(u32 mask, int val)
WaveGroupValue mergePrevious(const WaveGroupValue &previous) const
const T & at(int i) const const
bool isEmpty() const const
QMap::const_iterator constBegin() const const
QMap::const_iterator constEnd() const const
const Key key(const T &value, const Key &defaultKey) const const
QMap::iterator lowerBound(const Key &key)
const T value(const Key &key, const T &defaultValue) const const
std::string toStdString() const const