assert.cpp
00001 #include <util/assert.h>
00002 #include <QMessageBox>
00003 #include <QString>
00004 #include <QCoreApplication>
00005 #include <QApplication>
00006 #include <stdlib.h>
00007 #include <iostream>
00008
00009 namespace util
00010 {
00011 void __assert_fail(const QString& assertion, const char* file,
00012 unsigned int line, const char* function)
00013 {
00014 if(QApplication::type() != QApplication::Tty)
00015 {
00016 QString app_name = QCoreApplication::applicationName();
00017 QString txt = QString("%1: %2:%3: %4: Assertion `%5' failed.").arg(app_name).arg(file).arg(QString::number(line)).arg(function).arg(assertion);
00018 QMessageBox::critical(NULL, "Assertion failed", txt);
00019 abort();
00020 }
00021 else
00022 {
00023 __assert_fail_txt(assertion, file, line, function);
00024 }
00025 }
00026
00027 void __assert_fail_txt(const QString& assertion, const char* file,
00028 unsigned int line, const char* function)
00029 {
00030 QString app_name = QCoreApplication::applicationName();
00031 QString txt = QString("%1: %2:%3: %4: Assertion `%5' failed.").arg(app_name).arg(file).arg(QString::number(line)).arg(function).arg(assertion);
00032 std::cout << txt.toStdString() << std::endl;
00033 abort();
00034 }
00035 };