Added boost header
This commit is contained in:
180
test/external/boost/wave/cpp_throw.hpp
vendored
Normal file
180
test/external/boost/wave/cpp_throw.hpp
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
/*=============================================================================
|
||||
Boost.Wave: A Standard compliant C++ preprocessor library
|
||||
|
||||
http://www.boost.org/
|
||||
|
||||
Copyright (c) 2001-2011 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>
|
||||
|
||||
#ifdef BOOST_NO_STRINGSTREAM
|
||||
#include <strstream>
|
||||
#else
|
||||
#include <sstream>
|
||||
#endif
|
||||
|
||||
namespace boost { namespace wave { namespace util
|
||||
{
|
||||
#ifdef BOOST_NO_STRINGSTREAM
|
||||
template <typename Exception, typename S1, typename Pos>
|
||||
void throw_(typename Exception::error_code code, S1 msg, Pos const& pos)
|
||||
{
|
||||
std::strstream stream;
|
||||
stream << Exception::severity_text(code) << ": "
|
||||
<< Exception::error_text(code);
|
||||
if (msg[0] != 0)
|
||||
stream << ": " << msg;
|
||||
stream << std::ends;
|
||||
std::string throwmsg = stream.str(); stream.freeze(false);
|
||||
boost::throw_exception(Exception(throwmsg.c_str(), code,
|
||||
pos.get_line(), pos.get_column(), pos.get_file().c_str()));
|
||||
}
|
||||
|
||||
template <typename Exception, typename Context, typename S1, typename Pos>
|
||||
void throw_(Context& ctx, typename Exception::error_code code,
|
||||
S1 msg, Pos const& pos)
|
||||
{
|
||||
std::strstream stream;
|
||||
stream << Exception::severity_text(code) << ": "
|
||||
<< Exception::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(),
|
||||
Exception(throwmsg.c_str(), code, pos.get_line(), pos.get_column(),
|
||||
pos.get_file().c_str()));
|
||||
}
|
||||
|
||||
template <typename Exception, typename S1, typename Pos, typename S2>
|
||||
void throw_(typename Exception::error_code code, S1 msg, Pos const& pos,
|
||||
S2 name)
|
||||
{
|
||||
std::strstream stream;
|
||||
stream << Exception::severity_text(code) << ": "
|
||||
<< Exception::error_text(code);
|
||||
if (msg[0] != 0)
|
||||
stream << ": " << msg;
|
||||
stream << std::ends;
|
||||
std::string throwmsg = stream.str(); stream.freeze(false);
|
||||
boost::throw_exception(Exception(throwmsg.c_str(), code,
|
||||
pos.get_line(), pos.get_column(), pos.get_file().c_str(), name));
|
||||
}
|
||||
|
||||
template <typename Exception, typename Context, typename S1, typename Pos,
|
||||
typename S2>
|
||||
void throw_(Context& ctx, typename Exception::error_code code,
|
||||
S1 msg, Pos const& pos, S2 name)
|
||||
{
|
||||
std::strstream stream;
|
||||
stream << Exception::severity_text(code) << ": "
|
||||
<< Exception::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(),
|
||||
Exception(throwmsg.c_str(), code, pos.get_line(), pos.get_column(),
|
||||
pos.get_file().c_str(), name));
|
||||
}
|
||||
#else
|
||||
template <typename Exception, typename S1, typename Pos>
|
||||
void throw_(typename Exception::error_code code, S1 msg, Pos const& pos)
|
||||
{
|
||||
std::stringstream stream;
|
||||
stream << Exception::severity_text(code) << ": "
|
||||
<< Exception::error_text(code);
|
||||
if (msg[0] != 0)
|
||||
stream << ": " << msg;
|
||||
stream << std::ends;
|
||||
std::string throwmsg = stream.str();
|
||||
boost::throw_exception(Exception(throwmsg.c_str(), code,
|
||||
pos.get_line(), pos.get_column(), pos.get_file().c_str()));
|
||||
}
|
||||
|
||||
template <typename Exception, typename Context, typename S1, typename Pos>
|
||||
void throw_(Context& ctx, typename Exception::error_code code,
|
||||
S1 msg, Pos const& pos)
|
||||
{
|
||||
std::stringstream stream;
|
||||
stream << Exception::severity_text(code) << ": "
|
||||
<< Exception::error_text(code);
|
||||
if (msg[0] != 0)
|
||||
stream << ": " << msg;
|
||||
stream << std::ends;
|
||||
std::string throwmsg = stream.str();
|
||||
ctx.get_hooks().throw_exception(ctx.derived(),
|
||||
Exception(throwmsg.c_str(), code, pos.get_line(), pos.get_column(),
|
||||
pos.get_file().c_str()));
|
||||
}
|
||||
|
||||
template <typename Exception, typename S1, typename Pos, typename S2>
|
||||
void throw_(typename Exception::error_code code, S1 msg, Pos const& pos,
|
||||
S2 name)
|
||||
{
|
||||
std::stringstream stream;
|
||||
stream << Exception::severity_text(code) << ": "
|
||||
<< Exception::error_text(code);
|
||||
if (msg[0] != 0)
|
||||
stream << ": " << msg;
|
||||
stream << std::ends;
|
||||
std::string throwmsg = stream.str();
|
||||
boost::throw_exception(Exception(throwmsg.c_str(), code,
|
||||
pos.get_line(), pos.get_column(), pos.get_file().c_str(), name));
|
||||
}
|
||||
|
||||
template <typename Exception, typename Context, typename S1, typename Pos1,
|
||||
typename S2>
|
||||
void throw_(Context& ctx, typename Exception::error_code code,
|
||||
S1 msg, Pos1 const& pos, S2 name)
|
||||
{
|
||||
std::stringstream stream;
|
||||
stream << Exception::severity_text(code) << ": "
|
||||
<< Exception::error_text(code);
|
||||
if (msg[0] != 0)
|
||||
stream << ": " << msg;
|
||||
stream << std::ends;
|
||||
std::string throwmsg = stream.str();
|
||||
ctx.get_hooks().throw_exception(ctx.derived(),
|
||||
Exception(throwmsg.c_str(), code, pos.get_line(), pos.get_column(),
|
||||
pos.get_file().c_str(), name));
|
||||
}
|
||||
#endif
|
||||
}}}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// helper macro for throwing exceptions
|
||||
#if !defined(BOOST_WAVE_THROW)
|
||||
#define BOOST_WAVE_THROW(cls, code, msg, act_pos) \
|
||||
boost::wave::util::throw_<cls>(cls::code, msg, act_pos) \
|
||||
/**/
|
||||
|
||||
#define BOOST_WAVE_THROW_CTX(ctx, cls, code, msg, act_pos) \
|
||||
boost::wave::util::throw_<cls>(ctx, cls::code, msg, act_pos) \
|
||||
/**/
|
||||
#endif // BOOST_WAVE_THROW
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// helper macro for throwing exceptions with additional parameter
|
||||
#if !defined(BOOST_WAVE_THROW_NAME_CTX)
|
||||
#define BOOST_WAVE_THROW_NAME_CTX(ctx, cls, code, msg, act_pos, name) \
|
||||
boost::wave::util::throw_<cls>(cls::code, msg, act_pos, name) \
|
||||
/**/
|
||||
#endif // BOOST_WAVE_THROW_NAME_CTX
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// helper macro for throwing exceptions with additional parameter
|
||||
#if !defined(BOOST_WAVE_THROW_VAR_CTX)
|
||||
#define BOOST_WAVE_THROW_VAR_CTX(ctx, cls, code, msg, act_pos) \
|
||||
boost::wave::util::throw_<cls>(ctx, code, msg, act_pos) \
|
||||
/**/
|
||||
#endif // BOOST_WAVE_THROW_VAR_CTX
|
||||
|
||||
#endif // !defined(BOOST_WAVE_CPP_THROW_HPP_INCLUDED)
|
||||
Reference in New Issue
Block a user