From bf1aa5088ea41135cdd7561ccbfb73e5238194e3 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 25 Jan 2016 12:18:32 +0000 Subject: [PATCH] Revert "From Jannik Heller and Robert Osfield, introduced ReadResult/WriteResult::statusMessage() method that creates a std::string from the stutus value and message string." as this submission was meant for the master only, not the binary compatible 3.4 branch. This reverts commit df97a18a5754ed39ac43044ad9557e8409790ff3. --- include/osgDB/ReaderWriter | 6 --- src/osgDB/DatabasePager.cpp | 3 +- src/osgDB/InputStream.cpp | 4 +- src/osgDB/ReadFile.cpp | 25 +++++------ src/osgDB/ReaderWriter.cpp | 60 -------------------------- src/osgDB/Registry.cpp | 86 +++++++++++++++++++++++++++++++++---- src/osgDB/WriteFile.cpp | 12 +++--- src/osgText/Font.cpp | 8 ++-- 8 files changed, 105 insertions(+), 99 deletions(-) diff --git a/include/osgDB/ReaderWriter b/include/osgDB/ReaderWriter index 0bdffb032..81de7f583 100644 --- a/include/osgDB/ReaderWriter +++ b/include/osgDB/ReaderWriter @@ -161,9 +161,6 @@ class OSGDB_EXPORT ReaderWriter : public osg::Object std::string& message() { return _message; } const std::string& message() const { return _message; } - /// report the ReadResult's status, and message (if any). Useful for reporting of errors to users. - std::string statusMessage() const; - ReadStatus status() const { return _status; } bool success() const { return _status==FILE_LOADED || _status==FILE_LOADED_FROM_CACHE ; } bool loadedFromCache() const { return _status==FILE_LOADED_FROM_CACHE; } @@ -203,9 +200,6 @@ class OSGDB_EXPORT ReaderWriter : public osg::Object std::string& message() { return _message; } const std::string& message() const { return _message; } - /// Report the WriteResult's status, and message (if any). Useful for reporting of errors to users. - std::string statusMessage() const; - WriteStatus status() const { return _status; } bool success() const { return _status==FILE_SAVED; } bool error() const { return _status==ERROR_IN_WRITING_FILE; } diff --git a/src/osgDB/DatabasePager.cpp b/src/osgDB/DatabasePager.cpp index d443970af..554da079a 100644 --- a/src/osgDB/DatabasePager.cpp +++ b/src/osgDB/DatabasePager.cpp @@ -912,7 +912,8 @@ void DatabasePager::DatabaseThread::run() osg::ref_ptr loadedModel; if (rr.validNode()) loadedModel = rr.getNode(); - if (!rr.success()) OSG_WARN<<"Error in reading file "<readObject(filename,options); if (rr.validObject()) return rr.takeObject(); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } @@ -43,7 +43,7 @@ Image* osgDB::readImageFile(const std::string& filename,const Options* options) { ReaderWriter::ReadResult rr = Registry::instance()->readImage(filename,options); if (rr.validImage()) return rr.takeImage(); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } @@ -51,7 +51,7 @@ Shader* osgDB::readShaderFile(const std::string& filename,const Options* options { ReaderWriter::ReadResult rr = Registry::instance()->readShader(filename,options); if (rr.validShader()) return rr.takeShader(); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } @@ -60,7 +60,7 @@ HeightField* osgDB::readHeightFieldFile(const std::string& filename,const Option { ReaderWriter::ReadResult rr = Registry::instance()->readHeightField(filename,options); if (rr.validHeightField()) return rr.takeHeightField(); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } @@ -69,7 +69,8 @@ Node* osgDB::readNodeFile(const std::string& filename,const Options* options) { ReaderWriter::ReadResult rr = Registry::instance()->readNode(filename,options); if (rr.validNode()) return rr.takeNode(); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; + if (rr.notEnoughMemory()) OSG_INFO << "Not enought memory to load file "<readScript(filename,options); if (rr.validScript()) return rr.takeScript(); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } #endif @@ -97,7 +98,7 @@ osg::ref_ptr osgDB::readRefObjectFile(const std::string& filename,c { ReaderWriter::ReadResult rr = Registry::instance()->readObject(filename,options); if (rr.validObject()) return osg::ref_ptr(rr.getObject()); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } @@ -105,7 +106,7 @@ osg::ref_ptr osgDB::readRefImageFile(const std::string& filename,con { ReaderWriter::ReadResult rr = Registry::instance()->readImage(filename,options); if (rr.validImage()) return osg::ref_ptr(rr.getImage()); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } @@ -113,7 +114,7 @@ osg::ref_ptr osgDB::readRefShaderFile(const std::string& filename,c { ReaderWriter::ReadResult rr = Registry::instance()->readShader(filename,options); if (rr.validShader()) return osg::ref_ptr(rr.getShader()); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } @@ -121,7 +122,7 @@ osg::ref_ptr osgDB::readRefHeightFieldFile(const std::string& { ReaderWriter::ReadResult rr = Registry::instance()->readHeightField(filename,options); if (rr.validHeightField()) return osg::ref_ptr(rr.getHeightField()); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } @@ -129,7 +130,7 @@ osg::ref_ptr osgDB::readRefNodeFile(const std::string& filename,const { ReaderWriter::ReadResult rr = Registry::instance()->readNode(filename,options); if (rr.validNode()) return osg::ref_ptr(rr.getNode()); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } @@ -137,7 +138,7 @@ osg::ref_ptr osgDB::readRefScriptFile(const std::string& filename,c { ReaderWriter::ReadResult rr = Registry::instance()->readScript(filename,options); if (rr.validScript()) return osg::ref_ptr(rr.getScript()); - if (!rr.success()) OSG_WARN << "Error reading file " << filename << ": " << rr.statusMessage() << std::endl; + if (rr.error()) OSG_WARN << rr.message() << std::endl; return NULL; } diff --git a/src/osgDB/ReaderWriter.cpp b/src/osgDB/ReaderWriter.cpp index d6394686c..2c4d5ce57 100644 --- a/src/osgDB/ReaderWriter.cpp +++ b/src/osgDB/ReaderWriter.cpp @@ -35,66 +35,6 @@ osgDB::Archive* ReaderWriter::ReadResult::takeArchive() { osgDB::Archive* archiv osg::Shader* ReaderWriter::ReadResult::takeShader() { osg::Shader* shader=dynamic_cast(_object.get()); if (shader) { shader->ref(); _object=NULL; shader->unref_nodelete(); } return shader; } osg::Script* ReaderWriter::ReadResult::takeScript() { osg::Script* script=dynamic_cast(_object.get()); if (script) { script->ref(); _object=NULL; script->unref_nodelete(); } return script; } -std::string ReaderWriter::ReadResult::statusMessage() const -{ - std::string description; - switch (_status) - { - case NOT_IMPLEMENTED: - description += "not implemented"; - break; - case FILE_NOT_HANDLED: - description += "file not handled"; - break; - case FILE_NOT_FOUND: - description += "file not found"; - break; - case ERROR_IN_READING_FILE: - description += "read error"; - break; - case FILE_LOADED: - description += "file loaded"; - break; - case FILE_LOADED_FROM_CACHE: - description += "file loaded from cache"; - break; - case FILE_REQUESTED: - description += "file requested"; - break; - case INSUFFICIENT_MEMORY_TO_LOAD: - description += "insufficient memory to load"; - break; - } - - if (!_message.empty()) - description += " (" + _message + ")"; - return description; -} - -std::string ReaderWriter::WriteResult::statusMessage() const -{ - std::string description; - switch (_status) - { - case NOT_IMPLEMENTED: - description += "not implemented"; - break; - case FILE_NOT_HANDLED: - description += "file not handled"; - break; - case ERROR_IN_WRITING_FILE: - description += "write error"; - break; - case FILE_SAVED: - description += "file saved"; - break; - } - - if (!_message.empty()) - description += " (" + _message + ")"; - return description; -} - ReaderWriter::~ReaderWriter() { } diff --git a/src/osgDB/Registry.cpp b/src/osgDB/Registry.cpp index 271b73090..7a3aad6f6 100644 --- a/src/osgDB/Registry.cpp +++ b/src/osgDB/Registry.cpp @@ -1216,19 +1216,30 @@ ReaderWriter::ReadResult Registry::read(const ReadFunctor& readFunctor) } else { - return ReaderWriter::ReadResult("Could not find the .curl plugin to read from server."); + return ReaderWriter::ReadResult("Warning: Could not find the .curl plugin to read from server."); } } if (results.empty()) { - return ReaderWriter::ReadResult("Could not find plugin to read objects from file \""+readFunctor._filename+"\"."); + return ReaderWriter::ReadResult("Warning: Could not find plugin to read objects from file \""+readFunctor._filename+"\"."); } // sort the results so the most relevant (i.e. ERROR_IN_READING_FILE is more relevant than FILE_NOT_FOUND) results get placed at the end of the results list. std::sort(results.begin(), results.end()); ReaderWriter::ReadResult result = results.back(); + if (result.message().empty()) + { + switch(result.status()) + { + case(ReaderWriter::ReadResult::FILE_NOT_HANDLED): result.message() = "Warning: reading \""+readFunctor._filename+"\" not supported."; break; + case(ReaderWriter::ReadResult::FILE_NOT_FOUND): result.message() = "Warning: could not find file \""+readFunctor._filename+"\"."; break; + case(ReaderWriter::ReadResult::ERROR_IN_READING_FILE): result.message() = "Warning: Error in reading to \""+readFunctor._filename+"\"."; break; + default: break; + } + } + return result; } @@ -1345,13 +1356,23 @@ ReaderWriter::WriteResult Registry::writeObjectImplementation(const Object& obj, if (results.empty()) { - return ReaderWriter::WriteResult("Could not find plugin to write objects to file \""+fileName+"\"."); + return ReaderWriter::WriteResult("Warning: Could not find plugin to write objects to file \""+fileName+"\"."); } // sort the results so the most relevant (i.e. ERROR_IN_WRITING_FILE is more relevant than FILE_NOT_FOUND) results get placed at the end of the results list. std::sort(results.begin(), results.end()); ReaderWriter::WriteResult result = results.back(); + if (result.message().empty()) + { + switch(result.status()) + { + case(ReaderWriter::WriteResult::FILE_NOT_HANDLED): result.message() = "Warning: Write to \""+fileName+"\" not supported."; break; + case(ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE): result.message() = "Warning: Error in writing to \""+fileName+"\"."; break; + default: break; + } + } + return result; } @@ -1391,13 +1412,23 @@ ReaderWriter::WriteResult Registry::writeImageImplementation(const Image& image, if (results.empty()) { - return ReaderWriter::WriteResult("Could not find plugin to write image to file \""+fileName+"\"."); + return ReaderWriter::WriteResult("Warning: Could not find plugin to write image to file \""+fileName+"\"."); } // sort the results so the most relevant (i.e. ERROR_IN_WRITING_FILE is more relevant than FILE_NOT_FOUND) results get placed at the end of the results list. std::sort(results.begin(), results.end()); ReaderWriter::WriteResult result = results.back(); + if (result.message().empty()) + { + switch(result.status()) + { + case(ReaderWriter::WriteResult::FILE_NOT_HANDLED): result.message() = "Warning: Write to \""+fileName+"\" not supported."; break; + case(ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE): result.message() = "Warning: Error in writing to \""+fileName+"\"."; break; + default: break; + } + } + return result; } @@ -1436,13 +1467,23 @@ ReaderWriter::WriteResult Registry::writeHeightFieldImplementation(const HeightF if (results.empty()) { - return ReaderWriter::WriteResult("Could not find plugin to write HeightField to file \""+fileName+"\"."); + return ReaderWriter::WriteResult("Warning: Could not find plugin to write HeightField to file \""+fileName+"\"."); } // sort the results so the most relevant (i.e. ERROR_IN_WRITING_FILE is more relevant than FILE_NOT_FOUND) results get placed at the end of the results list. std::sort(results.begin(), results.end()); ReaderWriter::WriteResult result = results.back(); + if (result.message().empty()) + { + switch(result.status()) + { + case(ReaderWriter::WriteResult::FILE_NOT_HANDLED): result.message() = "Warning: Write to \""+fileName+"\" not supported."; break; + case(ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE): result.message() = "Warning: Error in writing to \""+fileName+"\"."; break; + default: break; + } + } + return result; } @@ -1495,13 +1536,23 @@ ReaderWriter::WriteResult Registry::writeNodeImplementation(const Node& node,con if (results.empty()) { - return ReaderWriter::WriteResult("Could not find plugin to write nodes to file \""+fileName+"\"."); + return ReaderWriter::WriteResult("Warning: Could not find plugin to write nodes to file \""+fileName+"\"."); } // sort the results so the most relevant (i.e. ERROR_IN_WRITING_FILE is more relevant than FILE_NOT_FOUND) results get placed at the end of the results list. std::sort(results.begin(), results.end()); ReaderWriter::WriteResult result = results.back(); + if (result.message().empty()) + { + switch(result.status()) + { + case(ReaderWriter::WriteResult::FILE_NOT_HANDLED): result.message() = "Warning: Write to \""+fileName+"\" not supported."; break; + case(ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE): result.message() = "Warning: Error in writing to \""+fileName+"\"."; break; + default: break; + } + } + return result; } @@ -1541,13 +1592,22 @@ ReaderWriter::WriteResult Registry::writeShaderImplementation(const Shader& shad if (results.empty()) { - return ReaderWriter::WriteResult("Could not find plugin to write shader to file \""+fileName+"\"."); + return ReaderWriter::WriteResult("Warning: Could not find plugin to write shader to file \""+fileName+"\"."); } // sort the results so the most relevant (i.e. ERROR_IN_WRITING_FILE is more relevant than FILE_NOT_FOUND) results get placed at the end of the results list. std::sort(results.begin(), results.end()); ReaderWriter::WriteResult result = results.back(); + if (result.message().empty()) + { + switch(result.status()) + { + case(ReaderWriter::WriteResult::FILE_NOT_HANDLED): result.message() = "Warning: Write to \""+fileName+"\" not supported."; break; + case(ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE): result.message() = "Warning: Error in writing to \""+fileName+"\"."; break; + default: break; + } + } return result; } @@ -1586,13 +1646,23 @@ ReaderWriter::WriteResult Registry::writeScriptImplementation(const Script& imag if (results.empty()) { - return ReaderWriter::WriteResult("Could not find plugin to write image to file \""+fileName+"\"."); + return ReaderWriter::WriteResult("Warning: Could not find plugin to write image to file \""+fileName+"\"."); } // sort the results so the most relevant (i.e. ERROR_IN_WRITING_FILE is more relevant than FILE_NOT_FOUND) results get placed at the end of the results list. std::sort(results.begin(), results.end()); ReaderWriter::WriteResult result = results.back(); + if (result.message().empty()) + { + switch(result.status()) + { + case(ReaderWriter::WriteResult::FILE_NOT_HANDLED): result.message() = "Warning: Write to \""+fileName+"\" not supported."; break; + case(ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE): result.message() = "Warning: Error in writing to \""+fileName+"\"."; break; + default: break; + } + } + return result; } diff --git a/src/osgDB/WriteFile.cpp b/src/osgDB/WriteFile.cpp index b06d8a595..0db2c0311 100644 --- a/src/osgDB/WriteFile.cpp +++ b/src/osgDB/WriteFile.cpp @@ -27,7 +27,7 @@ using namespace osgDB; bool osgDB::writeObjectFile(const Object& object,const std::string& filename, const Options* options ) { ReaderWriter::WriteResult wr = Registry::instance()->writeObject( object, filename, options ); - if (!wr.success()) OSG_WARN << "Error writing file " << filename << ": " << wr.statusMessage() << std::endl; + if (wr.error()) OSG_WARN << "Error writing file " << filename << ": " << wr.message() << std::endl; return wr.success(); } @@ -35,7 +35,7 @@ bool osgDB::writeObjectFile(const Object& object,const std::string& filename, co bool osgDB::writeImageFile(const Image& image,const std::string& filename, const Options* options ) { ReaderWriter::WriteResult wr = Registry::instance()->writeImage( image, filename, options ); - if (!wr.success()) OSG_WARN << "Error writing file " << filename << ": " << wr.statusMessage() << std::endl; + if (wr.error()) OSG_WARN << "Error writing file " << filename << ": " << wr.message() << std::endl; return wr.success(); } @@ -43,28 +43,28 @@ bool osgDB::writeImageFile(const Image& image,const std::string& filename, const bool osgDB::writeHeightFieldFile(const HeightField& HeightField,const std::string& filename, const Options* options ) { ReaderWriter::WriteResult wr = Registry::instance()->writeHeightField( HeightField, filename, options ); - if (!wr.success()) OSG_WARN << "Error writing file " << filename << ": " << wr.statusMessage() << std::endl; + if (wr.error()) OSG_WARN << "Error writing file " << filename << ": " << wr.message() << std::endl; return wr.success(); } bool osgDB::writeNodeFile(const Node& node,const std::string& filename, const Options* options ) { ReaderWriter::WriteResult wr = Registry::instance()->writeNode( node, filename, options ); - if (!wr.success()) OSG_WARN << "Error writing file " << filename << ": " << wr.statusMessage() << std::endl; + if (wr.error()) OSG_WARN << "Error writing file " << filename << ": " << wr.message() << std::endl; return wr.success(); } bool osgDB::writeShaderFile(const Shader& shader,const std::string& filename, const Options* options ) { ReaderWriter::WriteResult wr = Registry::instance()->writeShader( shader, filename, options ); - if (!wr.success()) OSG_WARN << "Error writing file " << filename << ": " << wr.statusMessage() << std::endl; + if (wr.error()) OSG_WARN << "Error writing file " << filename << ": " << wr.message() << std::endl; return wr.success(); } bool osgDB::writeScriptFile(const Script& image,const std::string& filename, const Options* options ) { ReaderWriter::WriteResult wr = Registry::instance()->writeScript( image, filename, options ); - if (!wr.success()) OSG_WARN << "Error writing file " << filename << ": " << wr.statusMessage() << std::endl; + if (wr.error()) OSG_WARN << "Error writing file " << filename << ": " << wr.message() << std::endl; return wr.success(); } diff --git a/src/osgText/Font.cpp b/src/osgText/Font.cpp index 666dd54b3..d2585c5bd 100644 --- a/src/osgText/Font.cpp +++ b/src/osgText/Font.cpp @@ -151,9 +151,9 @@ osgText::Font* osgText::readFontStream(std::istream& stream, const osgDB::Reader osgDB::ReaderWriter *reader = osgDB::Registry::instance()->getReaderWriterForExtension("ttf"); if (reader == 0) return 0; osgDB::ReaderWriter::ReadResult rr = reader->readObject(stream, userOptions ? userOptions : localOptions.get()); - if (!rr.success()) + if (rr.error()) { - OSG_WARN << rr.statusMessage() << std::endl; + OSG_WARN << rr.message() << std::endl; return 0; } if (!rr.validObject()) return 0; @@ -211,9 +211,9 @@ osg::ref_ptr osgText::readRefFontStream(std::istream& stream, const osgDB: osgDB::ReaderWriter *reader = osgDB::Registry::instance()->getReaderWriterForExtension("ttf"); if (reader == 0) return 0; osgDB::ReaderWriter::ReadResult rr = reader->readObject(stream, userOptions ? userOptions : localOptions.get()); - if (!rr.success()) + if (rr.error()) { - OSG_WARN << rr.statusMessage() << std::endl; + OSG_WARN << rr.message() << std::endl; return 0; } if (!rr.validObject()) return 0;