ecto
Classes | Namespaces | Macros | Functions
except.hpp File Reference
#include <Python.h>
#include <boost/version.hpp>
#include <stdexcept>
#include <string>
#include <map>
#include <ecto/config.hpp>
#include <ecto/util.hpp>
#include <boost/optional.hpp>
#include <boost/exception/exception.hpp>
#include <boost/exception/info.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/stringize.hpp>
#include <boost/preprocessor/seq/for_each.hpp>
Include dependency graph for except.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ecto::except::detail::wrap< T >
 
class  ecto::except::error_info_container_impl
 
struct  ecto::except::EctoException
 

Namespaces

 ecto
 
 ecto::except
 
 ecto::except::detail
 
 boost
 

Macros

#define ECTO_EXCEPTION_TAG_NAMES
 
#define ECTO_EXCEPTIONS
 
#define BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP
 
#define ECTO_PP_ITERLIMIT   22
 
#define BOOST_PP_LIMIT_MAG   ECTO_PP_ITERLIMIT
 
#define BOOST_PP_LIMIT_TUPLE   25
 
#define BOOST_PP_LIMIT_DIM   3
 
#define BOOST_PP_LIMIT_REPEAT   ECTO_PP_ITERLIMIT
 
#define BOOST_PP_LIMIT_WHILE   ECTO_PP_ITERLIMIT
 
#define BOOST_PP_LIMIT_FOR   ECTO_PP_ITERLIMIT
 
#define BOOST_PP_LIMIT_ITERATION   ECTO_PP_ITERLIMIT
 
#define BOOST_PP_LIMIT_ITERATION_DIM   2
 
#define BOOST_PP_LIMIT_SEQ   ECTO_PP_ITERLIMIT
 
#define BOOST_PP_LIMIT_SLOT_SIG   10
 
#define BOOST_PP_LIMIT_SLOT_COUNT   5
 
#define ECTO_DECLARE_EXCEPTION(r, data, T)
 
#define ECTO_EXCEPTION_TAG_DECL(r, data, NAME)
 
#define ECTO_EXCEPTION_TAG_TYPE_NAME_RETURN_T   const char*
 
#define ECTO_EXCEPTION_TAG_TYPE_NAME_DECL(r, data, NAME)
 

Functions

 ecto::except::BOOST_PP_SEQ_FOR_EACH (ECTO_DECLARE_EXCEPTION,~, ECTO_EXCEPTIONS)
 
std::string ecto::except::diagnostic_string (const EctoException &)
 
boost::optional< std::string > ecto::except::diagnostic_string (const EctoException &e, const std::string &tag)
 
 ecto::except::BOOST_PP_SEQ_FOR_EACH (ECTO_EXCEPTION_TAG_DECL,~, ECTO_EXCEPTION_TAG_NAMES)
 
 boost::BOOST_PP_SEQ_FOR_EACH (ECTO_EXCEPTION_TAG_TYPE_NAME_DECL,~, ECTO_EXCEPTION_TAG_NAMES)
 
template<class E , class Tag , class T >
E const & boost::operator<< (E const &x, error_info< ::ecto::except::detail::wrap< Tag >, T > const &v)
 

Macro Definition Documentation

#define BOOST_PP_LIMIT_DIM   3
#define BOOST_PP_LIMIT_FOR   ECTO_PP_ITERLIMIT
#define BOOST_PP_LIMIT_ITERATION   ECTO_PP_ITERLIMIT
#define BOOST_PP_LIMIT_ITERATION_DIM   2
#define BOOST_PP_LIMIT_MAG   ECTO_PP_ITERLIMIT
#define BOOST_PP_LIMIT_REPEAT   ECTO_PP_ITERLIMIT
#define BOOST_PP_LIMIT_SEQ   ECTO_PP_ITERLIMIT
#define BOOST_PP_LIMIT_SLOT_COUNT   5
#define BOOST_PP_LIMIT_SLOT_SIG   10
#define BOOST_PP_LIMIT_TUPLE   25
#define BOOST_PP_LIMIT_WHILE   ECTO_PP_ITERLIMIT
#define BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP
#define ECTO_DECLARE_EXCEPTION (   r,
  data,
 
)
Value:
struct T : virtual EctoException \
{ \
const char* what() const throw(); \
};
#define ECTO_EXCEPTION_TAG_DECL (   r,
  data,
  NAME 
)
Value:
struct BOOST_PP_CAT(tag_, NAME); \
typedef ::boost::error_info<detail::wrap<BOOST_PP_CAT(tag_, NAME)>, \
std::string> NAME; \
#define ECTO_EXCEPTION_TAG_NAMES
Value:
(from_typename)(to_typename)(from_key)(to_key)(from_cell) \
(to_cell)(cpp_typename)(pyobject_repr)(actualtype_hint)(spore_typename) \
(diag_msg)(actualkeys_hint)(tendril_key)(cell_name)(cell_type)(function_name) \
(hint)(which_tendrils)(prev_typename)(cur_typename)(type) \
(what)(when)
#define ECTO_EXCEPTION_TAG_TYPE_NAME_DECL (   r,
  data,
  NAME 
)
Value:
template <> inline \
ECTO_EXCEPTION_TAG_TYPE_NAME_RETURN_T \
tag_type_name< ::ecto::except::detail::wrap< BOOST_PP_CAT(::ecto::except::tag_, NAME)> >() { \
return BOOST_PP_STRINGIZE(NAME); \
}
#define ECTO_EXCEPTION_TAG_TYPE_NAME_RETURN_T   const char*
#define ECTO_EXCEPTIONS
Value:
(TypeMismatch)(ValueNone)(ValueRequired)(NonExistant) \
(FailedFromPythonConversion)(TendrilRedeclaration)(CellException) \
(NotConnected)(AlreadyConnected)(NullTendril)
#define ECTO_PP_ITERLIMIT   22