OpenWalnut  1.4.0
WAssert.cpp
00001 //---------------------------------------------------------------------------
00002 //
00003 // Project: OpenWalnut ( http://www.openwalnut.org )
00004 //
00005 // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
00006 // For more information see http://www.openwalnut.org/copying
00007 //
00008 // This file is part of OpenWalnut.
00009 //
00010 // OpenWalnut is free software: you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as published by
00012 // the Free Software Foundation, either version 3 of the License, or
00013 // (at your option) any later version.
00014 //
00015 // OpenWalnut is distributed in the hope that it will be useful,
00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018 // GNU Lesser General Public License for more details.
00019 //
00020 // You should have received a copy of the GNU Lesser General Public License
00021 // along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
00022 //
00023 //---------------------------------------------------------------------------
00024 
00025 #include <string>
00026 
00027 #include "WStringUtils.h"
00028 
00029 #include "WAssert.h"
00030 
00031 void wAssertFailed( std::string const& expression, std::string const& file, std::size_t line, std::string const& msg )
00032 {
00033 #ifdef WASSERT_AS_CASSERT
00034     std::cerr << "Assertion failed: " << expression << " (in file " << file << " at line " << line << ")";
00035     if( !msg.empty() )
00036     {
00037         std::cerr << ", Message: " << msg;
00038     }
00039     std::cerr << std::endl;
00040     abort();
00041 #else
00042     std::string s = "Assertion failed: " + expression + " (in file " + file + " at line " + string_utils::toString( line ) + ")";
00043     if( !msg.empty() )
00044     {
00045         s += ", Message: " + msg;
00046     }
00047     throw WException( s );
00048 #endif
00049 }