#ifndef _SAMPLE_PURESAMPLE_HPP_ #define _SAMPLE_PURESAMPLE_HPP_ #ifndef _COMMON_TYPES_HPP_ #include #endif #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_MEMFILE_HPP_ #include #endif #ifndef _COMMON_OPENFILE_HPP_ #include #endif #ifndef _COMMON_ARRAY_HPP_ #include #endif // This object holds the sample data as bytes. It does not know anything about the internal // makeup of the sample (ie) does not know how many bits per sample class PureSample { public: PureSample(void); PureSample(const PureSample &somePureSample); virtual ~PureSample(); PureSample &operator=(const PureSample &somePureSample); PureSample &operator+=(const PureSample &somePureSample); DWORD numSamples(void)const; void numSamples(DWORD numSamples); BYTE *sampleData(void); bool isOkay(void)const; bool write(MemFile &memFile)const; bool read(FileHandle &handle); String toString(void)const; private: void copySampleData(BYTE *lpDstSample,BYTE *lpSrcSample,DWORD numBytes); DWORD mNumSamples; Array mSampleData; }; inline PureSample::PureSample(void) : mNumSamples(0) { } inline PureSample::PureSample(const PureSample &somePureSample) { *this=somePureSample; } inline PureSample::~PureSample() { } inline DWORD PureSample::numSamples(void)const { return mNumSamples; } inline void PureSample::numSamples(DWORD numSamples) { mNumSamples=numSamples; mSampleData.size(mNumSamples); } inline BYTE *PureSample::sampleData(void) { if(!isOkay())return (BYTE*)0; return &mSampleData[0]; } inline bool PureSample::write(MemFile &memFile)const { if(!isOkay())return false; if(!memFile.write((char*)&((GlobalData&)mSampleData)[0],mNumSamples))return false; return true; } inline bool PureSample::read(FileHandle &handle) { if(!isOkay())return false; if(!handle.read(&mSampleData[0],mNumSamples))return false; return true; } inline bool PureSample::isOkay(void)const { return mSampleData.size()?true:false; } inline String PureSample::toString(void)const { String strPureSample; strPureSample+=""; strPureSample+=String(" NumSamples=")+String().fromInt(mNumSamples).quotes(); strPureSample+=String(" SampleData=")+String().fromInt(mSampleData.size()).quotes(); strPureSample+=String(""); return strPureSample; } #endif