#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_GLOBALDATA_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); UHUGE *sampleData(void); WORD isOkay(void)const; MemFile &operator>>(MemFile &someMemFile)const; FileHandle &operator<<(FileHandle &someFileHandle); String toString(void)const; private: void copySampleData(UHUGE *lpDstSample,UHUGE *lpSrcSamples,DWORD numBytes); DWORD mNumSamples; GlobalData 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,GMEM_MOVEABLE); } inline UHUGE *PureSample::sampleData(void) { if(!isOkay())return (UHUGE*)0; return (UHUGE*)&mSampleData[0]; } inline MemFile &PureSample::operator>>(MemFile &someMemFile)const { if(!isOkay())return someMemFile; someMemFile.write((char*)(UHUGE*)&(((GlobalData&)mSampleData)[0]),mNumSamples); return someMemFile; } inline FileHandle &PureSample::operator<<(FileHandle &someFileHandle) { if(!isOkay())return someFileHandle; someFileHandle.read((BYTE*)(UHUGE*)&mSampleData[0],mNumSamples); return someFileHandle; } inline WORD PureSample::isOkay(void)const { return mSampleData.isOkay(); } 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