|
Blender
V2.59
|
00001 /* 00002 * $Id: MT_Assert.cpp 35158 2011-02-25 11:49:19Z jesterking $ 00003 * ***** BEGIN GPL LICENSE BLOCK ***** 00004 * 00005 * This program is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU General Public License 00007 * as published by the Free Software Foundation; either version 2 00008 * of the License, or (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program; if not, write to the Free Software Foundation, 00017 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00018 * 00019 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. 00020 * All rights reserved. 00021 * 00022 * The Original Code is: all of this file. 00023 * 00024 * Contributor(s): none yet. 00025 * 00026 * ***** END GPL LICENSE BLOCK ***** 00027 */ 00028 00034 #include <stdio.h> 00035 00036 #ifdef _WIN32 00037 #include <windows.h> 00038 #endif 00039 00040 #include "MT_assert.h" 00041 00042 #ifdef _MSC_VER 00043 #ifndef snprintf 00044 #define snprintf _snprintf 00045 #endif 00046 #endif 00047 00048 // Query the user if they want to break/abort the program, ignore the assert, or ignore all future 00049 // occurance of the assert. 00050 int MT_QueryAssert(const char *file, int line, const char *predicate, int *do_assert) 00051 { 00052 #ifdef _WIN32 00053 if (*do_assert) 00054 { 00055 char buffer[1024]; 00056 snprintf(buffer, 1024, "ASSERT %s:%d: %s failed.\nWould you like to debug? (Cancel = ignore)", file, line, predicate); 00057 int result = MessageBox(NULL, buffer, "ASSERT failed.", MB_YESNOCANCEL|MB_ICONERROR); 00058 if (result == IDCANCEL) 00059 { 00060 *do_assert = 0; 00061 return 0; 00062 } 00063 00064 return result == IDYES; 00065 } 00066 #endif 00067 printf("ASSERT %s:%d: %s failed.\n", file, line, predicate); 00068 return *do_assert; 00069 }