~ubuntu-branches/ubuntu/wily/sflphone/wily

« back to all changes in this revision

Viewing changes to daemon/libs/pjproject-2.2.1/pjlib/include/pj/assert.h

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2015-01-07 14:51:16 UTC
  • mfrom: (4.3.5 sid)
  • Revision ID: package-import@ubuntu.com-20150107145116-yxnafinf4lrdvrmx
Tags: 1.4.1-0.1ubuntu1
* Merge with Debian, remaining changes:
 - Drop soprano, nepomuk build-dep
* Drop ubuntu patches, now upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* $Id: assert.h 3553 2011-05-05 06:14:19Z nanang $ */
 
2
/* 
 
3
 * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
 
4
 * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License as published by
 
8
 * the Free Software Foundation; either version 2 of the License, or
 
9
 * (at your option) any later version.
 
10
 *
 
11
 * This program 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
 
14
 * GNU General Public License for more details.
 
15
 *
 
16
 * You should have received a copy of the GNU General Public License
 
17
 * along with this program; if not, write to the Free Software
 
18
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 
19
 */
 
20
#ifndef __PJ_ASSERT_H__
 
21
#define __PJ_ASSERT_H__
 
22
 
 
23
/**
 
24
 * @file assert.h
 
25
 * @brief Assertion macro pj_assert().
 
26
 */
 
27
 
 
28
#include <pj/config.h>
 
29
#include <pj/compat/assert.h>
 
30
 
 
31
/**
 
32
 * @defgroup pj_assert Assertion Macro
 
33
 * @ingroup PJ_MISC
 
34
 * @{
 
35
 *
 
36
 * Assertion and other helper macros for sanity checking.
 
37
 */
 
38
 
 
39
/**
 
40
 * @hideinitializer
 
41
 * Check during debug build that an expression is true. If the expression
 
42
 * computes to false during run-time, then the program will stop at the
 
43
 * offending statements.
 
44
 * For release build, this macro will not do anything.
 
45
 *
 
46
 * @param expr      The expression to be evaluated.
 
47
 */
 
48
#ifndef pj_assert
 
49
#   define pj_assert(expr)   assert(expr)
 
50
#endif
 
51
 
 
52
 
 
53
/**
 
54
 * @hideinitializer
 
55
 * If #PJ_ENABLE_EXTRA_CHECK is declared and the value is non-zero, then 
 
56
 * #PJ_ASSERT_RETURN macro will evaluate the expression in @a expr during
 
57
 * run-time. If the expression yields false, assertion will be triggered
 
58
 * and the current function will return with the specified return value.
 
59
 *
 
60
 * If #PJ_ENABLE_EXTRA_CHECK is not declared or is zero, then no run-time
 
61
 * checking will be performed. The macro simply evaluates to pj_assert(expr).
 
62
 */
 
63
#if defined(PJ_ENABLE_EXTRA_CHECK) && PJ_ENABLE_EXTRA_CHECK != 0
 
64
#   define PJ_ASSERT_RETURN(expr,retval)    \
 
65
            do { \
 
66
                if (!(expr)) { pj_assert(expr); return retval; } \
 
67
            } while (0)
 
68
#else
 
69
#   define PJ_ASSERT_RETURN(expr,retval)    pj_assert(expr)
 
70
#endif
 
71
 
 
72
/**
 
73
 * @hideinitializer
 
74
 * If #PJ_ENABLE_EXTRA_CHECK is declared and non-zero, then 
 
75
 * #PJ_ASSERT_ON_FAIL macro will evaluate the expression in @a expr during
 
76
 * run-time. If the expression yields false, assertion will be triggered
 
77
 * and @a exec_on_fail will be executed.
 
78
 *
 
79
 * If #PJ_ENABLE_EXTRA_CHECK is not declared or is zero, then no run-time
 
80
 * checking will be performed. The macro simply evaluates to pj_assert(expr).
 
81
 */
 
82
#if defined(PJ_ENABLE_EXTRA_CHECK) && PJ_ENABLE_EXTRA_CHECK != 0
 
83
#   define PJ_ASSERT_ON_FAIL(expr,exec_on_fail)    \
 
84
            do { \
 
85
                pj_assert(expr); \
 
86
                if (!(expr)) exec_on_fail; \
 
87
            } while (0)
 
88
#else
 
89
#   define PJ_ASSERT_ON_FAIL(expr,exec_on_fail)    pj_assert(expr)
 
90
#endif
 
91
 
 
92
/** @} */
 
93
 
 
94
#endif  /* __PJ_ASSERT_H__ */
 
95