diff --git a/framework/content/reader.cpp b/framework/content/reader.cpp index d35837e..8009752 100644 --- a/framework/content/reader.cpp +++ b/framework/content/reader.cpp @@ -92,7 +92,7 @@ namespace xna { return *(double*)&int64; } - std::vector ContentReader::ReadByteBuffer(size_t size, xna_error_ptr_arg) + std::vector ContentReader::ReadByteBuffer(size_t size) { if (byteBuffer.empty() || byteBuffer.size() < size) { @@ -104,8 +104,7 @@ namespace xna { { num = Read(byteBuffer, index, size - index); if (num == 0) { - xna_error_apply(err, XnaErrorCode::FAILED_OPERATION); - return std::vector(); + throw std::runtime_error("ContentReader::ReadByteBuffer: Bad xbn."); } } @@ -161,12 +160,7 @@ namespace xna { Int ContentReader::ReadHeader() { auto _this = shared_from_this(); typeReaders = ContentTypeReaderManager::ReadTypeManifest(this->Read7BitEncodedInt(), _this); - auto length = this->Read7BitEncodedInt(); - - if (length > 0) - { - //TODO: length > 0 - } + auto length = this->Read7BitEncodedInt(); return length; diff --git a/inc/content/reader.hpp b/inc/content/reader.hpp index 12e140e..855376e 100644 --- a/inc/content/reader.hpp +++ b/inc/content/reader.hpp @@ -63,7 +63,7 @@ namespace xna { template auto ReadAsset(); - std::vector ReadByteBuffer(size_t size, xna_error_nullarg); + std::vector ReadByteBuffer(size_t size); private: ContentReader(sptr const& contentManager, sptr& input, String const& assetName, Int graphicsProfile) @@ -74,13 +74,13 @@ namespace xna { Int ReadHeader(); template - auto ReadObjectInternal(std::any& existingInstance, xna_error_nullarg); + auto ReadObjectInternal(std::any& existingInstance); template - auto ReadObjectInternal(ContentTypeReader& typeReader, std::any& existingInstance, xna_error_nullarg); + auto ReadObjectInternal(ContentTypeReader& typeReader, std::any& existingInstance); template - auto InvokeReader(ContentTypeReader& reader, std::any& existingInstance, xna_error_nullarg); + auto InvokeReader(ContentTypeReader& reader, std::any& existingInstance); private: sptr _contentManager = nullptr; @@ -96,7 +96,7 @@ namespace xna { }; template - inline auto ContentReader::ReadObjectInternal(std::any& existingInstance, xna_error_ptr_arg) + inline auto ContentReader::ReadObjectInternal(std::any& existingInstance) { const auto num = Read7BitEncodedInt(); @@ -107,18 +107,16 @@ namespace xna { const auto index = num - 1; if (index >= typeReaders.size()) { - xna_error_apply(err, XnaErrorCode::ARGUMENT_OUT_OF_RANGE); - - XnaHelper::ReturnDefaultOrNull(); + throw std::runtime_error("ContentReader::ReadObjectInternal: Bad xbn."); } auto reader = typeReaders[index]; - return InvokeReader(*reader, existingInstance, err); + return InvokeReader(*reader, existingInstance); } template - inline auto ContentReader::InvokeReader(ContentTypeReader& reader, std::any& existingInstance, xna_error_ptr_arg) + inline auto ContentReader::InvokeReader(ContentTypeReader& reader, std::any& existingInstance) { auto contentTypeReader = reinterpret_cast*>(&reader); T objB; @@ -167,11 +165,11 @@ namespace xna { } template - inline auto ContentReader::ReadObjectInternal(ContentTypeReader& typeReader, std::any& existingInstance, xna_error_ptr_arg) + inline auto ContentReader::ReadObjectInternal(ContentTypeReader& typeReader, std::any& existingInstance) { return typeReader.TargetIsValueType - ? InvokeReader(typeReader, existingInstance, err) - : ReadObjectInternal(existingInstance, err); + ? InvokeReader(typeReader, existingInstance) + : ReadObjectInternal(existingInstance); } }