X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2Fexceptions.h;h=ce032e1655e041375417699fab132055be08614c;hb=5cb314df178f78c6fa7b9826c2c5a5298ec7a473;hp=55f8208e9733bef324ec009c5fa6d38d07f09143;hpb=8c28c26a2cb6adf1e2f56af534b5157a9ec605e0;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/exceptions.h b/xmltooling/exceptions.h index 55f8208..ce032e1 100644 --- a/xmltooling/exceptions.h +++ b/xmltooling/exceptions.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Internet2 + * Copyright 2001-2007 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,7 +50,7 @@ name(const std::string& msg, const xmltooling::params& p=xmltooling::params()) : base(msg,p) {} \ XMLTOOLING_DOXYGEN(Constructor) \ name(const std::string& msg, const xmltooling::namedparams& p) : base(msg,p) {} \ - virtual ~name() {} \ + virtual ~name() throw () {} \ virtual const char* getClassName() const { return #ns"::"#name; } \ void raise() const {throw *this;} \ } @@ -61,7 +61,7 @@ * @param name the exception class name * @param ns the exception class C++ namespace */ -#define DECL_EXCEPTION_FACTORY(name,ns) \ +#define DECL_XMLTOOLING_EXCEPTION_FACTORY(name,ns) \ xmltooling::XMLToolingException* name##Factory() \ { \ return new ns::name(); \ @@ -73,7 +73,7 @@ * @param name the exception class name * @param ns the exception class C++ namespace */ -#define REGISTER_EXCEPTION_FACTORY(name,ns) XMLToolingException::registerFactory(#ns"::"#name,name##Factory) +#define REGISTER_XMLTOOLING_EXCEPTION_FACTORY(name,ns) XMLToolingException::registerFactory(#ns"::"#name,name##Factory) #if defined (_MSC_VER) #pragma warning( push ) @@ -131,20 +131,15 @@ namespace xmltooling { namedparams(int count,...); }; - class XMLTOOL_EXCEPTIONAPI(XMLTOOL_API) XMLToolingException; - - /** A factory function that returns an empty exception object of a given type. */ - typedef XMLToolingException* ExceptionFactory(); - /** * Base exception class, supports parametrized messages and XML serialization. * Parameters are prefixed with a dollar sign ($) and can be positional ($1) * or named ($info). */ - class XMLTOOL_EXCEPTIONAPI(XMLTOOL_API) XMLToolingException + class XMLTOOL_EXCEPTIONAPI(XMLTOOL_API) XMLToolingException : public std::exception { public: - virtual ~XMLToolingException() {} + virtual ~XMLToolingException() throw () {} /** * Constructs an exception using a message and positional parameters. @@ -190,7 +185,7 @@ namespace xmltooling { * * @return the processed message */ - const char* what() const {return getMessage();} + const char* what() const throw () {return getMessage();} /** * Sets the error message. @@ -311,6 +306,9 @@ namespace xmltooling { */ static XMLToolingException* fromString(const char* s); + /** A factory function that returns an empty exception object of a given type. */ + typedef XMLToolingException* ExceptionFactory(); + /** * Registers a factory to create exceptions of a given class name. * @@ -350,9 +348,11 @@ namespace xmltooling { DECL_XMLTOOLING_EXCEPTION(UnknownAttributeException,XMLTOOL_EXCEPTIONAPI(XMLTOOL_API),xmltooling,XMLToolingException,Exceptions due to processing of unknown attributes); DECL_XMLTOOLING_EXCEPTION(UnknownExtensionException,XMLTOOL_EXCEPTIONAPI(XMLTOOL_API),xmltooling,XMLToolingException,Exceptions from use of an unrecognized extension/plugin); DECL_XMLTOOLING_EXCEPTION(ValidationException,XMLTOOL_EXCEPTIONAPI(XMLTOOL_API),xmltooling,XMLToolingException,Exceptions during object validation); - DECL_XMLTOOLING_EXCEPTION(XMLSecurityException,XMLTOOL_EXCEPTIONAPI(XMLTOOL_API),xmltooling,XMLToolingException,Exceptions related to the XML security layer); DECL_XMLTOOLING_EXCEPTION(IOException,XMLTOOL_EXCEPTIONAPI(XMLTOOL_API),xmltooling,XMLToolingException,Exceptions related to physical input/output errors); +#ifndef XMLTOOLING_NO_XMLSEC + DECL_XMLTOOLING_EXCEPTION(XMLSecurityException,XMLTOOL_EXCEPTIONAPI(XMLTOOL_API),xmltooling,XMLToolingException,Exceptions related to the XML security layer); +#endif }; #if defined (_MSC_VER)