Imported existing code
This commit is contained in:
155
libraries/include/boost/wave/cpp_throw.hpp
Normal file
155
libraries/include/boost/wave/cpp_throw.hpp
Normal file
@@ -0,0 +1,155 @@
|
||||
/*=============================================================================
|
||||
Boost.Wave: A Standard compliant C++ preprocessor library
|
||||
|
||||
http://www.boost.org/
|
||||
|
||||
Copyright (c) 2001-2009 Hartmut Kaiser. Distributed under the Boost
|
||||
Software License, Version 1.0. (See accompanying file
|
||||
LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
=============================================================================*/
|
||||
|
||||
#if !defined(BOOST_WAVE_CPP_THROW_HPP_INCLUDED)
|
||||
#define BOOST_WAVE_CPP_THROW_HPP_INCLUDED
|
||||
|
||||
#include <string>
|
||||
#include <boost/throw_exception.hpp>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// helper macro for throwing exceptions
|
||||
#if !defined(BOOST_WAVE_THROW)
|
||||
#ifdef BOOST_NO_STRINGSTREAM
|
||||
#include <strstream>
|
||||
#define BOOST_WAVE_THROW(cls, code, msg, act_pos) \
|
||||
{ \
|
||||
using namespace boost::wave; \
|
||||
std::strstream stream; \
|
||||
stream << cls::severity_text(cls::code) << ": " \
|
||||
<< cls::error_text(cls::code); \
|
||||
if ((msg)[0] != 0) stream << ": " << (msg); \
|
||||
stream << std::ends; \
|
||||
std::string throwmsg = stream.str(); stream.freeze(false); \
|
||||
boost::throw_exception(cls(throwmsg.c_str(), cls::code, \
|
||||
(act_pos).get_line(), (act_pos).get_column(), \
|
||||
(act_pos).get_file().c_str())); \
|
||||
} \
|
||||
/**/
|
||||
#define BOOST_WAVE_THROW_CTX(ctx, cls, code, msg, act_pos) \
|
||||
{ \
|
||||
using namespace boost::wave; \
|
||||
std::strstream stream; \
|
||||
stream << cls::severity_text(cls::code) << ": " \
|
||||
<< cls::error_text(cls::code); \
|
||||
if ((msg)[0] != 0) stream << ": " << (msg); \
|
||||
stream << std::ends; \
|
||||
std::string throwmsg = stream.str(); stream.freeze(false); \
|
||||
ctx.get_hooks().throw_exception(ctx.derived(), cls(throwmsg.c_str(), \
|
||||
cls::code, (act_pos).get_line(), (act_pos).get_column(), \
|
||||
(act_pos).get_file().c_str())); \
|
||||
} \
|
||||
/**/
|
||||
#else
|
||||
#include <sstream>
|
||||
#define BOOST_WAVE_THROW(cls, code, msg, act_pos) \
|
||||
{ \
|
||||
using namespace boost::wave; \
|
||||
std::stringstream stream; \
|
||||
stream << cls::severity_text(cls::code) << ": " \
|
||||
<< cls::error_text(cls::code); \
|
||||
if ((msg)[0] != 0) stream << ": " << (msg); \
|
||||
stream << std::ends; \
|
||||
boost::throw_exception(cls(stream.str().c_str(), cls::code, \
|
||||
(act_pos).get_line(), (act_pos).get_column(), \
|
||||
(act_pos).get_file().c_str())); \
|
||||
} \
|
||||
/**/
|
||||
#define BOOST_WAVE_THROW_CTX(ctx, cls, code, msg, act_pos) \
|
||||
{ \
|
||||
using namespace boost::wave; \
|
||||
std::stringstream stream; \
|
||||
stream << cls::severity_text(cls::code) << ": " \
|
||||
<< cls::error_text(cls::code); \
|
||||
if ((msg)[0] != 0) stream << ": " << (msg); \
|
||||
stream << std::ends; \
|
||||
ctx.get_hooks().throw_exception(ctx.derived(), \
|
||||
cls(stream.str().c_str(), cls::code, (act_pos).get_line(), \
|
||||
(act_pos).get_column(), (act_pos).get_file().c_str())); \
|
||||
} \
|
||||
/**/
|
||||
#endif // BOOST_NO_STRINGSTREAM
|
||||
#endif // BOOST_WAVE_THROW
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// helper macro for throwing exceptions with additional parameter
|
||||
#if !defined(BOOST_WAVE_THROW_NAME)
|
||||
#ifdef BOOST_NO_STRINGSTREAM
|
||||
#include <strstream>
|
||||
#define BOOST_WAVE_THROW_NAME_CTX(ctx, cls, code, msg, act_pos, name) \
|
||||
{ \
|
||||
using namespace boost::wave; \
|
||||
std::strstream stream; \
|
||||
stream << cls::severity_text(cls::code) << ": " \
|
||||
<< cls::error_text(cls::code); \
|
||||
if ((msg)[0] != 0) stream << ": " << (msg); \
|
||||
stream << std::ends; \
|
||||
std::string throwmsg = stream.str(); stream.freeze(false); \
|
||||
ctx.get_hooks().throw_exception(ctx.derived(), cls(throwmsg.c_str(), \
|
||||
cls::code, (act_pos).get_line(), (act_pos).get_column(), \
|
||||
(act_pos).get_file().c_str(), (name))); \
|
||||
} \
|
||||
/**/
|
||||
#else
|
||||
#include <sstream>
|
||||
#define BOOST_WAVE_THROW_NAME_CTX(ctx, cls, code, msg, act_pos, name) \
|
||||
{ \
|
||||
using namespace boost::wave; \
|
||||
std::stringstream stream; \
|
||||
stream << cls::severity_text(cls::code) << ": " \
|
||||
<< cls::error_text(cls::code); \
|
||||
if ((msg)[0] != 0) stream << ": " << (msg); \
|
||||
stream << std::ends; \
|
||||
ctx.get_hooks().throw_exception(ctx.derived(), \
|
||||
cls(stream.str().c_str(), cls::code, (act_pos).get_line(), \
|
||||
(act_pos).get_column(), (act_pos).get_file().c_str(), (name))); \
|
||||
} \
|
||||
/**/
|
||||
#endif // BOOST_NO_STRINGSTREAM
|
||||
#endif // BOOST_WAVE_THROW_NAME
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// helper macro for throwing exceptions with additional parameter
|
||||
#if !defined(BOOST_WAVE_THROW_VAR)
|
||||
#ifdef BOOST_NO_STRINGSTREAM
|
||||
#include <strstream>
|
||||
#define BOOST_WAVE_THROW_VAR_CTX(ctx, cls, code, msg, act_pos) \
|
||||
{ \
|
||||
using namespace boost::wave; \
|
||||
std::strstream stream; \
|
||||
stream << cls::severity_text(code) << ": " \
|
||||
<< cls::error_text(code); \
|
||||
if ((msg)[0] != 0) stream << ": " << (msg); \
|
||||
stream << std::ends; \
|
||||
std::string throwmsg = stream.str(); stream.freeze(false); \
|
||||
ctx.get_hooks().throw_exception(ctx.derived(), cls(throwmsg.c_str(), \
|
||||
code, (act_pos).get_line(), (act_pos).get_column(), \
|
||||
(act_pos).get_file().c_str())); \
|
||||
} \
|
||||
/**/
|
||||
#else
|
||||
#include <sstream>
|
||||
#define BOOST_WAVE_THROW_VAR_CTX(ctx, cls, code, msg, act_pos) \
|
||||
{ \
|
||||
using namespace boost::wave; \
|
||||
std::stringstream stream; \
|
||||
stream << cls::severity_text(code) << ": " \
|
||||
<< cls::error_text(code); \
|
||||
if ((msg)[0] != 0) stream << ": " << (msg); \
|
||||
stream << std::ends; \
|
||||
ctx.get_hooks().throw_exception(ctx.derived(), \
|
||||
cls(stream.str().c_str(), code, (act_pos).get_line(), \
|
||||
(act_pos).get_column(), (act_pos).get_file().c_str())); \
|
||||
} \
|
||||
/**/
|
||||
#endif // BOOST_NO_STRINGSTREAM
|
||||
#endif // BOOST_WAVE_THROW_VAR
|
||||
|
||||
#endif // !defined(BOOST_WAVE_CPP_THROW_HPP_INCLUDED)
|
||||
Reference in New Issue
Block a user