diff options
| -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;  	};  | 
