1/* 2 * Copyright (c) 1999, 2000-2013 Apple Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 29#ifndef ASSERT_VERIFY_H 30#define ASSERT_VERIFY_H 31 32/****************************************************************************** 33Written by: Jeffrey Richter 34Notices: Copyright (c) 1995-1997 Jeffrey Richter 35Purpose: Common header file containing handy macros and definitions used 36 throughout all the applications in the book. 37******************************************************************************/ 38 39/* These header functions were copied from the cmnhdr.h file that accompanies 40 Advanced Windows 3rd Edition by Jeffrey Richter */ 41 42//////////////////////////// Assert/Verify Macros ///////////////////////////// 43 44#if defined(macintosh) || defined(__APPLE__) 45/* TBD */ 46#define chFAIL(szMSG) 47#define chASSERTFAIL(file,line,expr) 48#else 49#define chFAIL(szMSG) { \ 50 MessageBox(GetActiveWindow(), szMSG, \ 51 __TEXT("Assertion Failed"), MB_OK | MB_ICONERROR); \ 52 DebugBreak(); \ 53 } 54 55/* Put up an assertion failure message box. */ 56#define chASSERTFAIL(file,line,expr) { \ 57 TCHAR sz[128]; \ 58 wsprintf(sz, __TEXT("File %hs, line %d : %hs"), file, line, expr); \ 59 chFAIL(sz); \ 60 } 61 62#endif /* macintosh */ 63 64/* Put up a message box if an assertion fails in a debug build. */ 65#ifdef _DEBUG 66#define chASSERT(x) if (!(x)) chASSERTFAIL(__FILE__, __LINE__, #x) 67#else 68#define chASSERT(x) 69#endif 70 71/* Assert in debug builds, but don't remove the code in retail builds. */ 72#ifdef _DEBUG 73#define chVERIFY(x) chASSERT(x) 74#else 75#define chVERIFY(x) (x) 76#endif 77 78#endif /* ASSERT_VERIFY_H */ 79