1*5fd0122aSMatthias Ringwald /* --COPYRIGHT--,BSD 2*5fd0122aSMatthias Ringwald * Copyright (c) 2017, Texas Instruments Incorporated 3*5fd0122aSMatthias Ringwald * All rights reserved. 4*5fd0122aSMatthias Ringwald * 5*5fd0122aSMatthias Ringwald * Redistribution and use in source and binary forms, with or without 6*5fd0122aSMatthias Ringwald * modification, are permitted provided that the following conditions 7*5fd0122aSMatthias Ringwald * are met: 8*5fd0122aSMatthias Ringwald * 9*5fd0122aSMatthias Ringwald * * Redistributions of source code must retain the above copyright 10*5fd0122aSMatthias Ringwald * notice, this list of conditions and the following disclaimer. 11*5fd0122aSMatthias Ringwald * 12*5fd0122aSMatthias Ringwald * * Redistributions in binary form must reproduce the above copyright 13*5fd0122aSMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 14*5fd0122aSMatthias Ringwald * documentation and/or other materials provided with the distribution. 15*5fd0122aSMatthias Ringwald * 16*5fd0122aSMatthias Ringwald * * Neither the name of Texas Instruments Incorporated nor the names of 17*5fd0122aSMatthias Ringwald * its contributors may be used to endorse or promote products derived 18*5fd0122aSMatthias Ringwald * from this software without specific prior written permission. 19*5fd0122aSMatthias Ringwald * 20*5fd0122aSMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21*5fd0122aSMatthias Ringwald * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22*5fd0122aSMatthias Ringwald * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23*5fd0122aSMatthias Ringwald * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24*5fd0122aSMatthias Ringwald * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25*5fd0122aSMatthias Ringwald * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26*5fd0122aSMatthias Ringwald * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27*5fd0122aSMatthias Ringwald * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28*5fd0122aSMatthias Ringwald * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29*5fd0122aSMatthias Ringwald * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 30*5fd0122aSMatthias Ringwald * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*5fd0122aSMatthias Ringwald * --/COPYRIGHT--*/ 32*5fd0122aSMatthias Ringwald #ifndef __DEBUG_H__ 33*5fd0122aSMatthias Ringwald #define __DEBUG_H__ 34*5fd0122aSMatthias Ringwald 35*5fd0122aSMatthias Ringwald //***************************************************************************** 36*5fd0122aSMatthias Ringwald // 37*5fd0122aSMatthias Ringwald // Prototype for the function that is called when an invalid argument is passed 38*5fd0122aSMatthias Ringwald // to an API. This is only used when doing a DEBUG build. 39*5fd0122aSMatthias Ringwald // 40*5fd0122aSMatthias Ringwald //***************************************************************************** 41*5fd0122aSMatthias Ringwald extern void __error__(char *pcFilename, unsigned long line); 42*5fd0122aSMatthias Ringwald 43*5fd0122aSMatthias Ringwald //***************************************************************************** 44*5fd0122aSMatthias Ringwald // 45*5fd0122aSMatthias Ringwald // The ASSERT macro, which does the actual assertion checking. Typically, this 46*5fd0122aSMatthias Ringwald // will be for procedure arguments. 47*5fd0122aSMatthias Ringwald // 48*5fd0122aSMatthias Ringwald //***************************************************************************** 49*5fd0122aSMatthias Ringwald #ifdef DEBUG 50*5fd0122aSMatthias Ringwald #define ASSERT(expr) { \ 51*5fd0122aSMatthias Ringwald if(!(expr)) \ 52*5fd0122aSMatthias Ringwald { \ 53*5fd0122aSMatthias Ringwald __error__(__FILE__, __LINE__); \ 54*5fd0122aSMatthias Ringwald } \ 55*5fd0122aSMatthias Ringwald } 56*5fd0122aSMatthias Ringwald #else 57*5fd0122aSMatthias Ringwald #define ASSERT(expr) 58*5fd0122aSMatthias Ringwald #endif 59*5fd0122aSMatthias Ringwald 60*5fd0122aSMatthias Ringwald #ifdef DEBUG 61*5fd0122aSMatthias Ringwald #define assert(expr) { \ 62*5fd0122aSMatthias Ringwald if(!(expr)) \ 63*5fd0122aSMatthias Ringwald { \ 64*5fd0122aSMatthias Ringwald __error__(__FILE__, __LINE__); \ 65*5fd0122aSMatthias Ringwald } \ 66*5fd0122aSMatthias Ringwald } 67*5fd0122aSMatthias Ringwald #else 68*5fd0122aSMatthias Ringwald #define assert(expr) 69*5fd0122aSMatthias Ringwald #endif 70*5fd0122aSMatthias Ringwald 71*5fd0122aSMatthias Ringwald #endif // __DEBUG_H__ 72