#ifndef AUD_HPP #define AUD_HPP #include #include #include namespace Aud { class FileError : public exception { public: explicit FileError(const char* message); const char* what() const; private: const std::string message; }; enum { samplesPerSec = 48000 }; enum { sampleSizeInBits = 16, sampleSizeInBytes = 2 }; enum { numberOfChannels = 2 }; enum { blockAlign = numberOfChannels * sampleSizeInBytes }; class File { public: enum mode_t { in, out }; File(); File(const char* name, mode_t mode); ~File(); void open(const char* name, mode_t mode); void close(); bool isOpen() const; bool eof() const; mode_t mode() const; const char* name() const; int sampleCount() const; void seekSample(int sampleNum) const; size_t read(void* buffer, size_t size) const; void write(const void* buffer, size_t size); typedef __int64 offset_t; offset_t offset() const; void seekOffset(offset_t) const; private: File(const File&); File& operator=(const File&); void init(); int handle_; char name_[_MAX_PATH]; mode_t mode_; int m_sampleCount; }; } //end namespace Aud #endif