diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-10-23 17:37:07 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-10-23 17:37:07 +0100 |
commit | 65446fad1ec69e5d72b28e5c6b4369c0bc8d6537 (patch) | |
tree | c7173564a51d0f6ed0effc30881422288d645493 | |
parent | Allow working with local types (except classes, need ice_id functionality) (diff) | |
download | slicer-1.4.1.tar.bz2 slicer-1.4.1.tar.xz slicer-1.4.1.zip |
Add exception messages to all exceptionsslicer-1.4.1
-rw-r--r-- | slicer/db/sqlCommon.cpp | 27 | ||||
-rw-r--r-- | slicer/db/sqlExceptions.ice | 4 | ||||
-rw-r--r-- | slicer/slicer/common.ice | 11 | ||||
-rw-r--r-- | slicer/slicer/slicer.cpp | 74 | ||||
-rw-r--r-- | slicer/xml/serializer.cpp | 7 | ||||
-rw-r--r-- | slicer/xml/xmlExceptions.ice | 1 |
6 files changed, 124 insertions, 0 deletions
diff --git a/slicer/db/sqlCommon.cpp b/slicer/db/sqlCommon.cpp new file mode 100644 index 0000000..645c10f --- /dev/null +++ b/slicer/db/sqlCommon.cpp @@ -0,0 +1,27 @@ +#include <sqlExceptions.h> +#include <boost/format.hpp> + +namespace Slicer { + void TooManyRowsReturned::ice_print(std::ostream & s) const + { + s << "Too many rows returned"; + } + + void NoRowsReturned::ice_print(std::ostream & s) const + { + s << "No rows returned"; + } + + void NoRowsFound::ice_print(std::ostream & s) const + { + s << "No rows found"; + } + + void UnsuitableIdFieldType::ice_print(std::ostream & s) const + { + static boost::format f("Unsuitable id field type [%s]"); + s << f % type; + } + +} + diff --git a/slicer/db/sqlExceptions.ice b/slicer/db/sqlExceptions.ice index a392876..3aca6a2 100644 --- a/slicer/db/sqlExceptions.ice +++ b/slicer/db/sqlExceptions.ice @@ -4,9 +4,13 @@ #include <common.ice> module Slicer { + ["cpp:ice_print"] exception TooManyRowsReturned extends DeserializerError {}; + ["cpp:ice_print"] exception NoRowsReturned extends DeserializerError {}; + ["cpp:ice_print"] exception NoRowsFound extends SerializerError {}; + ["cpp:ice_print"] exception UnsuitableIdFieldType extends SerializerError { string type; }; diff --git a/slicer/slicer/common.ice b/slicer/slicer/common.ice index 96d3a85..6960f42 100644 --- a/slicer/slicer/common.ice +++ b/slicer/slicer/common.ice @@ -2,27 +2,38 @@ #define SLICER module Slicer { + ["cpp:ice_print"] exception CompilerError { string what; }; + ["cpp:ice_print"] exception RuntimeError { }; + ["cpp:ice_print"] exception SerializerError extends RuntimeError { }; + ["cpp:ice_print"] exception DeserializerError extends RuntimeError { }; + ["cpp:ice_print"] exception IncorrectElementName extends DeserializerError { string name; }; + ["cpp:ice_print"] exception UnsupportedModelType extends RuntimeError { }; + ["cpp:ice_print"] exception LocalTypeException extends RuntimeError { }; + ["cpp:ice_print"] exception NoConversionFound extends RuntimeError { string type; }; + ["cpp:ice_print"] exception UnknownType extends DeserializerError { string type; }; + ["cpp:ice_print"] exception InvalidEnumerationValue extends SerializerError { int value; string type; }; + ["cpp:ice_print"] exception InvalidEnumerationSymbol extends DeserializerError { string symbol; string type; diff --git a/slicer/slicer/slicer.cpp b/slicer/slicer/slicer.cpp index c895a38..ee2a95f 100644 --- a/slicer/slicer/slicer.cpp +++ b/slicer/slicer/slicer.cpp @@ -1,4 +1,6 @@ #include "slicer.h" +#include <common.h> +#include <boost/format.hpp> namespace Slicer { Slicer::MemberChildRef::MemberChildRef(Slicer::ModelPartPtr mp, const Slicer::Metadata & md) : @@ -35,5 +37,77 @@ namespace Slicer { { return emptyMetadata; } + + void + InvalidEnumerationSymbol::ice_print(std::ostream & s) const + { + static boost::format f("Invalid enumeration symbol [%s] for type [%s]"); + s << f % symbol % type; + } + + void + InvalidEnumerationValue::ice_print(std::ostream & s) const + { + static boost::format f("Invalid enumeration symbol [%d] for type [%s]"); + s << f % value % type; + } + + void + UnknownType::ice_print(std::ostream & s) const + { + static boost::format f("Unknown type [%s]"); + s << f % type; + } + + void + NoConversionFound::ice_print(std::ostream & s) const + { + static boost::format f("No conversion found for type [%s]"); + s << f % type; + } + + void + LocalTypeException::ice_print(std::ostream & s) const + { + s << "Invalid operation on local type"; + } + + void + UnsupportedModelType::ice_print(std::ostream & s) const + { + s << "Unsupported model type"; + } + + void + IncorrectElementName::ice_print(std::ostream & s) const + { + static boost::format f("Incorrect element name [%s]"); + s << f % name; + } + + void + DeserializerError::ice_print(std::ostream & s) const + { + s << "General deserializer error"; + } + + void + SerializerError::ice_print(std::ostream & s) const + { + s << "General serializer error"; + } + + void + RuntimeError::ice_print(std::ostream & s) const + { + s << "General runtime error"; + } + + void + CompilerError::ice_print(std::ostream & s) const + { + static boost::format f("Slicer compiler: %s"); + s << f % what; + } } diff --git a/slicer/xml/serializer.cpp b/slicer/xml/serializer.cpp index f83151e..654793c 100644 --- a/slicer/xml/serializer.cpp +++ b/slicer/xml/serializer.cpp @@ -8,6 +8,7 @@ #include <boost/intrusive_ptr.hpp> #include <stdexcept> #include <glibmm/ustring.h> +#include <boost/format.hpp> NAMEDFACTORY(".xml", Slicer::XmlFileSerializer, Slicer::FileSerializerFactory); NAMEDFACTORY(".xml", Slicer::XmlFileDeserializer, Slicer::FileDeserializerFactory); @@ -354,5 +355,11 @@ namespace Slicer { doc = new xmlpp::Document(); modelRoot->OnEachChild(boost::bind(&XmlSerializer::ModelTreeIterateRoot, doc, _1, _2)); } + + void BadBooleanValue::ice_print(std::ostream & s) const + { + static boost::format f("Bad boolean value [%s]"); + s << f % text; + } } diff --git a/slicer/xml/xmlExceptions.ice b/slicer/xml/xmlExceptions.ice index e03fbe7..94dee30 100644 --- a/slicer/xml/xmlExceptions.ice +++ b/slicer/xml/xmlExceptions.ice @@ -4,6 +4,7 @@ #include <common.ice> module Slicer { + ["cpp:ice_print"] exception BadBooleanValue extends DeserializerError { string text; }; |