1 #ifndef BOOST_ARCHIVE_ITERATORS_DATAFLOW_EXCEPTION_HPP 2 #define BOOST_ARCHIVE_ITERATORS_DATAFLOW_EXCEPTION_HPP 3 4 // MS compatible compilers support #pragma once 5 #if defined(_MSC_VER) 6 # pragma once 7 #endif 8 9 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 10 // dataflow_exception.hpp: 11 12 // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 13 // Use, modification and distribution is subject to the Boost Software 14 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 15 // http://www.boost.org/LICENSE_1_0.txt) 16 17 // See http://www.boost.org for updates, documentation, and revision history. 18 19 #include <boost/config.hpp> 20 #ifndef BOOST_NO_EXCEPTIONS 21 #include <exception> 22 #endif //BOOST_NO_EXCEPTIONS 23 24 #include <boost/assert.hpp> 25 26 namespace boost { 27 namespace archive { 28 namespace iterators { 29 30 ////////////////////////////////////////////////////////////////////// 31 // exceptions thrown by dataflows 32 // 33 class dataflow_exception : public std::exception 34 { 35 public: 36 typedef enum { 37 invalid_6_bitcode, 38 invalid_base64_character, 39 invalid_xml_escape_sequence, 40 comparison_not_permitted, 41 invalid_conversion, 42 other_exception 43 } exception_code; 44 exception_code code; 45 dataflow_exception(exception_code c=other_exception)46 dataflow_exception(exception_code c = other_exception) : code(c) 47 {} 48 what() const49 const char *what( ) const throw( ) BOOST_OVERRIDE 50 { 51 const char *msg = "unknown exception code"; 52 switch(code){ 53 case invalid_6_bitcode: 54 msg = "attempt to encode a value > 6 bits"; 55 break; 56 case invalid_base64_character: 57 msg = "attempt to decode a value not in base64 char set"; 58 break; 59 case invalid_xml_escape_sequence: 60 msg = "invalid xml escape_sequence"; 61 break; 62 case comparison_not_permitted: 63 msg = "cannot invoke iterator comparison now"; 64 break; 65 case invalid_conversion: 66 msg = "invalid multbyte/wide char conversion"; 67 break; 68 default: 69 BOOST_ASSERT(false); 70 break; 71 } 72 return msg; 73 } 74 }; 75 76 } // namespace iterators 77 } // namespace archive 78 } // namespace boost 79 80 #endif //BOOST_ARCHIVE_ITERATORS_DATAFLOW_EXCEPTION_HPP 81