00001 /*---------------------------------------------------------------------------* 00002 * passert.h * 00003 * * 00004 * Copyright 2007 Nuance Communciations, Inc. * 00005 * * 00006 * Licensed under the Apache License, Version 2.0 (the 'License'); * 00007 * you may not use this file except in compliance with the License. * 00008 * * 00009 * You may obtain a copy of the License at * 00010 * http://www.apache.org/licenses/LICENSE-2.0 * 00011 * * 00012 * Unless required by applicable law or agreed to in writing, software * 00013 * distributed under the License is distributed on an 'AS IS' BASIS, * 00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 00015 * See the License for the specific language governing permissions and * 00016 * limitations under the License. * 00017 * * 00018 *---------------------------------------------------------------------------*/ 00019 00020 #ifndef PASSERT_H 00021 #define PASSERT_H 00022 00023 00024 00031 #if defined(_WIN32) || defined(POSIX) 00032 00035 #define HAS_ASSERT 00036 #endif 00037 00038 #if defined(HAS_ASSERT) 00039 00040 #include <assert.h> 00041 00045 #define passert(exp) assert(exp) 00046 00047 #elif defined(NDEBUG) 00048 00049 #define passert(exp) 00050 00051 #else 00052 00056 #define passert(exp) do { \ 00057 if (!(exp)) \ 00058 { \ 00059 pfprintf(PSTDERR, __FILE__ "(%d): " #exp " failed.\n",__LINE__); \ 00060 abort(); \ 00061 } \ 00062 } \ 00063 while(0) 00064 00065 #endif /* HAS_ASSERT */ 00066 00071 #endif