diff --git a/examples/src/Main.cpp b/examples/src/Main.cpp index 530fe71..bab972d 100644 --- a/examples/src/Main.cpp +++ b/examples/src/Main.cpp @@ -71,7 +71,15 @@ int main() //auto result = loader.Load(fileData, "test_data/ad_hoc/TestBeat_44_16_mono-ima4-reaper.wav"); loader.Load(fileData, "test_data/ad_hoc/TestBeat_44_16_stereo-ima4-reaper.wavp"); } - catch(const UnsupportedExtensionException & e) + catch(const UnsupportedExtensionEx & e) + { + std::cerr << "Caught: " << e.what() << std::endl; + } + catch(const LoadPathNotImplEx & e) + { + std::cerr << "Caught: " << e.what() << std::endl; + } + catch(const LoadBufferNotImplEx & e) { std::cerr << "Caught: " << e.what() << std::endl; } diff --git a/include/libnyquist/AudioDecoder.h b/include/libnyquist/AudioDecoder.h index 8b3b292..f2a00fb 100644 --- a/include/libnyquist/AudioDecoder.h +++ b/include/libnyquist/AudioDecoder.h @@ -35,26 +35,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace nqr { -struct UnsupportedExtensionException : public std::runtime_error +struct UnsupportedExtensionEx : public std::runtime_error { - UnsupportedExtensionException() : std::runtime_error("Unsupported file extension") {} + UnsupportedExtensionEx() : std::runtime_error("Unsupported file extension") {} }; - -// Tofix: -// Individual decoder classes will throw std::exceptions for bad things, -// but NyquistIO implements this enum for high-level error notifications. -enum IOError + +struct LoadPathNotImplEx : public std::runtime_error { - NoError, - LoadPathNotImplemented, - LoadBufferNotImplemented, - UnknownError + LoadPathNotImplEx() : std::runtime_error("Loading from path not implemented") {} +}; + +struct LoadBufferNotImplEx : public std::runtime_error +{ + LoadBufferNotImplEx() : std::runtime_error("Loading from buffer not implemented") {} }; struct BaseDecoder { - virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) = 0; - virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) = 0; + virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) = 0; + virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) = 0; virtual std::vector GetSupportedFileExtensions() = 0; //@todo implement streaming helper methods here }; diff --git a/include/libnyquist/CafDecoder.h b/include/libnyquist/CafDecoder.h index b524bce..e2c0e93 100644 --- a/include/libnyquist/CafDecoder.h +++ b/include/libnyquist/CafDecoder.h @@ -35,8 +35,8 @@ struct CAFDecoder : public nqr::BaseDecoder { CAFDecoder() {}; virtual ~CAFDecoder() {}; - virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; - virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; + virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override; + virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; virtual std::vector GetSupportedFileExtensions() override; }; diff --git a/include/libnyquist/FlacDecoder.h b/include/libnyquist/FlacDecoder.h index 392478f..93e737a 100644 --- a/include/libnyquist/FlacDecoder.h +++ b/include/libnyquist/FlacDecoder.h @@ -55,8 +55,8 @@ struct FlacDecoder : public nqr::BaseDecoder { FlacDecoder() {} virtual ~FlacDecoder() {} - virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; - virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; + virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override; + virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; virtual std::vector GetSupportedFileExtensions() override; }; diff --git a/include/libnyquist/MusepackDecoder.h b/include/libnyquist/MusepackDecoder.h index bc807ad..0f5f453 100644 --- a/include/libnyquist/MusepackDecoder.h +++ b/include/libnyquist/MusepackDecoder.h @@ -35,8 +35,8 @@ struct MusepackDecoder : public nqr::BaseDecoder { MusepackDecoder() {}; virtual ~MusepackDecoder() {}; - virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; - virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; + virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override; + virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; virtual std::vector GetSupportedFileExtensions() override; }; diff --git a/include/libnyquist/OpusDecoder.h b/include/libnyquist/OpusDecoder.h index c7bb354..2a40f1b 100644 --- a/include/libnyquist/OpusDecoder.h +++ b/include/libnyquist/OpusDecoder.h @@ -40,8 +40,8 @@ struct OpusDecoder : public nqr::BaseDecoder { OpusDecoder() {} virtual ~OpusDecoder() {} - virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; - virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; + virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override; + virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; virtual std::vector GetSupportedFileExtensions() override; }; diff --git a/include/libnyquist/VorbisDecoder.h b/include/libnyquist/VorbisDecoder.h index b03ebde..2f2ea47 100644 --- a/include/libnyquist/VorbisDecoder.h +++ b/include/libnyquist/VorbisDecoder.h @@ -35,8 +35,8 @@ struct VorbisDecoder : public nqr::BaseDecoder { VorbisDecoder() {} virtual ~VorbisDecoder() {} - virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; - virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; + virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override; + virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; virtual std::vector GetSupportedFileExtensions() override; }; diff --git a/include/libnyquist/WavDecoder.h b/include/libnyquist/WavDecoder.h index dc932f9..536de42 100644 --- a/include/libnyquist/WavDecoder.h +++ b/include/libnyquist/WavDecoder.h @@ -172,8 +172,8 @@ struct WavDecoder : public nqr::BaseDecoder { WavDecoder() {} virtual ~WavDecoder() {} - virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; - virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; + virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override; + virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; virtual std::vector GetSupportedFileExtensions() override; }; diff --git a/include/libnyquist/WavPackDecoder.h b/include/libnyquist/WavPackDecoder.h index 21f52e4..6503b65 100644 --- a/include/libnyquist/WavPackDecoder.h +++ b/include/libnyquist/WavPackDecoder.h @@ -35,8 +35,8 @@ struct WavPackDecoder : public nqr::BaseDecoder { WavPackDecoder() {}; virtual ~WavPackDecoder() {}; - virtual int LoadFromPath(nqr::AudioData * data, const std::string & path) override; - virtual int LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; + virtual void LoadFromPath(nqr::AudioData * data, const std::string & path) override; + virtual void LoadFromBuffer(nqr::AudioData * data, const std::vector & memory) override; virtual std::vector GetSupportedFileExtensions() override; }; diff --git a/src/AudioDecoder.cpp b/src/AudioDecoder.cpp index 1938717..db61b0e 100644 --- a/src/AudioDecoder.cpp +++ b/src/AudioDecoder.cpp @@ -65,7 +65,7 @@ void NyquistIO::Load(AudioData * data, const std::string & path) } else { - throw UnsupportedExtensionException(); + throw UnsupportedExtensionEx(); } } @@ -73,7 +73,7 @@ void NyquistIO::Load(AudioData * data, std::string extension, const std::vector< { if (decoderTable.find(extension) == decoderTable.end()) { - throw UnsupportedExtensionException(); + throw UnsupportedExtensionEx(); } if (decoderTable.size()) diff --git a/src/CafDecoder.cpp b/src/CafDecoder.cpp index 3520503..86ae698 100644 --- a/src/CafDecoder.cpp +++ b/src/CafDecoder.cpp @@ -31,14 +31,14 @@ using namespace nqr; // Public Interface // ////////////////////// -int CAFDecoder::LoadFromPath(AudioData * data, const std::string & path) +void CAFDecoder::LoadFromPath(AudioData * data, const std::string & path) { - return IOError::LoadPathNotImplemented; + throw LoadPathNotImplEx(); } -int CAFDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) +void CAFDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) { - return IOError::LoadBufferNotImplemented; + throw LoadBufferNotImplEx(); } std::vector CAFDecoder::GetSupportedFileExtensions() diff --git a/src/FlacDecoder.cpp b/src/FlacDecoder.cpp index e23c95c..9ac35f6 100644 --- a/src/FlacDecoder.cpp +++ b/src/FlacDecoder.cpp @@ -166,15 +166,14 @@ private: // Public Interface // ////////////////////// -int FlacDecoder::LoadFromPath(AudioData * data, const std::string & path) +void FlacDecoder::LoadFromPath(AudioData * data, const std::string & path) { FlacDecoderInternal decoder(data, path); - return IOError::NoError; } -int FlacDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) +void FlacDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) { - return IOError::LoadBufferNotImplemented; + throw LoadBufferNotImplEx(); } std::vector FlacDecoder::GetSupportedFileExtensions() diff --git a/src/MusepackDecoder.cpp b/src/MusepackDecoder.cpp index e99c5fa..f100820 100644 --- a/src/MusepackDecoder.cpp +++ b/src/MusepackDecoder.cpp @@ -178,17 +178,15 @@ private: // Public Interface // ////////////////////// -int MusepackDecoder::LoadFromPath(AudioData * data, const std::string & path) +void MusepackDecoder::LoadFromPath(AudioData * data, const std::string & path) { auto fileBuffer = nqr::ReadFile(path); MusepackInternal decoder(data, fileBuffer.buffer); - return IOError::NoError; } -int MusepackDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) +void MusepackDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) { MusepackInternal decoder(data, memory); - return IOError::NoError; } std::vector MusepackDecoder::GetSupportedFileExtensions() diff --git a/src/OpusDecoder.cpp b/src/OpusDecoder.cpp index faa7287..16d51f8 100644 --- a/src/OpusDecoder.cpp +++ b/src/OpusDecoder.cpp @@ -160,17 +160,15 @@ private: // Public Interface // ////////////////////// -int nqr::OpusDecoder::LoadFromPath(AudioData * data, const std::string & path) +void nqr::OpusDecoder::LoadFromPath(AudioData * data, const std::string & path) { auto fileBuffer = nqr::ReadFile(path); OpusDecoderInternal decoder(data, fileBuffer.buffer); - return IOError::NoError; } -int nqr::OpusDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) +void nqr::OpusDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) { OpusDecoderInternal decoder(data, memory); - return IOError::NoError; } std::vector nqr::OpusDecoder::GetSupportedFileExtensions() diff --git a/src/VorbisDecoder.cpp b/src/VorbisDecoder.cpp index d24dead..50a6378 100644 --- a/src/VorbisDecoder.cpp +++ b/src/VorbisDecoder.cpp @@ -182,15 +182,14 @@ private: // Public Interface // ////////////////////// -int VorbisDecoder::LoadFromPath(AudioData * data, const std::string & path) +void VorbisDecoder::LoadFromPath(AudioData * data, const std::string & path) { VorbisDecoderInternal decoder(data, path); - return IOError::NoError; } -int VorbisDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) +void VorbisDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) { - return IOError::LoadBufferNotImplemented; + throw LoadBufferNotImplEx(); } std::vector VorbisDecoder::GetSupportedFileExtensions() diff --git a/src/WavDecoder.cpp b/src/WavDecoder.cpp index 5c69deb..8f83094 100644 --- a/src/WavDecoder.cpp +++ b/src/WavDecoder.cpp @@ -33,13 +33,13 @@ using namespace nqr; // Public Interface // ////////////////////// -int WavDecoder::LoadFromPath(AudioData * data, const std::string & path) +void WavDecoder::LoadFromPath(AudioData * data, const std::string & path) { auto fileBuffer = nqr::ReadFile(path); return LoadFromBuffer(data, fileBuffer.buffer); } -int WavDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) +void WavDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) { ////////////////////// // Read RIFF Header // @@ -218,8 +218,6 @@ int WavDecoder::LoadFromBuffer(AudioData * data, const std::vector & me data->samples.resize(totalSamples); ConvertToFloat32(data->samples.data(), memory.data() + DataChunkInfo.offset, totalSamples, data->sourceFormat); } - - return IOError::NoError; } std::vector WavDecoder::GetSupportedFileExtensions() diff --git a/src/WavPackDecoder.cpp b/src/WavPackDecoder.cpp index 7f00ecc..63d3a9f 100644 --- a/src/WavPackDecoder.cpp +++ b/src/WavPackDecoder.cpp @@ -142,15 +142,14 @@ private: // Public Interface // ////////////////////// -int WavPackDecoder::LoadFromPath(AudioData * data, const std::string & path) +void WavPackDecoder::LoadFromPath(AudioData * data, const std::string & path) { WavPackInternal decoder(data, path); - return IOError::NoError; } -int WavPackDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) +void WavPackDecoder::LoadFromBuffer(AudioData * data, const std::vector & memory) { - return IOError::LoadBufferNotImplemented; + throw LoadBufferNotImplEx(); } std::vector WavPackDecoder::GetSupportedFileExtensions()