[XOP] C++ Wrapper for MDAccessNumericWaveData
thomas_braun
Examples:
<br />
// waveH points to a double/NT_FP64 wave<br />
double *dbl = getWaveDataPtr<double>(waveH)<br />
// float/NT_FP32<br />
float *flt = getWaveDataPtr<float>(waveH)<br />
// int/NT_I32<br />
int *integer = getWaveDataPtr<int>(waveH)<br />
// waveH points to a double/NT_FP64 wave<br />
double *dbl = getWaveDataPtr<double>(waveH)<br />
// float/NT_FP32<br />
float *flt = getWaveDataPtr<float>(waveH)<br />
// int/NT_I32<br />
int *integer = getWaveDataPtr<int>(waveH)<br />
In case you pass a textwave or the wave layout has changed at some point in the future the return value is null.
Be sure to place the template function into a header file.
<br />
// check the return value for NULL<br />
template <class T> T* getWaveDataPtr(waveHndl waveH){<br />
int accessMode = kMDWaveAccessMode0;<br />
int ret=-1;<br />
BCInt dataOffset;<br />
T *dataPtr;<br />
<br />
ret = MDAccessNumericWaveData(waveH, accessMode, &dataOffset);<br />
if(ret != 0 ){<br />
// throw here someting if you want to have it more C++-ish<br />
return NULL;<br />
}<br />
<br />
dataPtr = reinterpret_cast<T*>( reinterpret_cast<char*>(*waveH) + dataOffset );<br />
return dataPtr;<br />
}<br />
// check the return value for NULL<br />
template <class T> T* getWaveDataPtr(waveHndl waveH){<br />
int accessMode = kMDWaveAccessMode0;<br />
int ret=-1;<br />
BCInt dataOffset;<br />
T *dataPtr;<br />
<br />
ret = MDAccessNumericWaveData(waveH, accessMode, &dataOffset);<br />
if(ret != 0 ){<br />
// throw here someting if you want to have it more C++-ish<br />
return NULL;<br />
}<br />
<br />
dataPtr = reinterpret_cast<T*>( reinterpret_cast<char*>(*waveH) + dataOffset );<br />
return dataPtr;<br />
}<br />
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More