Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * copyright (c) 2010 Michael Niedermayer <michaelni@gmx.at>
  3.  *
  4.  * This file is part of FFmpeg.
  5.  *
  6.  * FFmpeg is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU Lesser General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * FFmpeg is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * Lesser General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Lesser General Public
  17.  * License along with FFmpeg; if not, write to the Free Software
  18.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  19.  */
  20.  
  21. /**
  22.  * @file
  23.  * simple assert() macros that are a bit more flexible than ISO C assert().
  24.  * @author Michael Niedermayer <michaelni@gmx.at>
  25.  */
  26.  
  27. #ifndef AVUTIL_AVASSERT_H
  28. #define AVUTIL_AVASSERT_H
  29.  
  30. #include <stdlib.h>
  31. #include "avutil.h"
  32. #include "log.h"
  33.  
  34. /**
  35.  * assert() equivalent, that is always enabled.
  36.  */
  37. #define av_assert0(cond) do {                                           \
  38.     if (!(cond)) {                                                      \
  39.         av_log(NULL, AV_LOG_PANIC, "Assertion %s failed at %s:%d\n",    \
  40.                AV_STRINGIFY(cond), __FILE__, __LINE__);                 \
  41.         abort();                                                        \
  42.     }                                                                   \
  43. } while (0)
  44.  
  45.  
  46. /**
  47.  * assert() equivalent, that does not lie in speed critical code.
  48.  * These asserts() thus can be enabled without fearing speedloss.
  49.  */
  50. #if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0
  51. #define av_assert1(cond) av_assert0(cond)
  52. #else
  53. #define av_assert1(cond) ((void)0)
  54. #endif
  55.  
  56.  
  57. /**
  58.  * assert() equivalent, that does lie in speed critical code.
  59.  */
  60. #if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1
  61. #define av_assert2(cond) av_assert0(cond)
  62. #else
  63. #define av_assert2(cond) ((void)0)
  64. #endif
  65.  
  66. #endif /* AVUTIL_AVASSERT_H */
  67.