OpenSceneGraph/include/osgAnimation/Assert

50 lines
1.5 KiB
C++

/* -*-c++-*-
* Copyright (C) 2008 Cedric Pinson <mornifle@plopbyte.net>
*
* This library is open source and may be redistributed and/or modified under
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
* (at your option) any later version. The full license is in LICENSE file
* included with this distribution, and on the openscenegraph.org website.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* OpenSceneGraph Public License for more details.
*/
#ifndef OSGANIMATION_ASSERT_H
#define OSGANIMATION_ASSERT_H
#include <string>
#include <sstream>
#include <exception>
namespace osgAnimation
{
struct ThrowAssert : public std::exception
{
virtual const char* what() const throw () { return mMsg.c_str();}
std::string mMsg;
ThrowAssert(const std::string& msg, const char* file, int line )
{
std::stringstream ss;
ss << "Assert (" << msg << ") in file " << file << " at line " << line;
mMsg = ss.str();
}
ThrowAssert() {}
virtual ~ThrowAssert() throw () {}
};
}
#ifdef OSGANIMATION_ASSERT_THROW
#define OSGANIMATION_ASSERT(a) if (!(a)) throw osgAnimation::ThrowAssert(std::string(#a),__FILE__,__LINE__);
#else
#define OSGANIMATION_ASSERT(a) {if (!(a)) *((int*)0) = 0;}
#endif
#endif