9
9
PulseAudio is free software; you can redistribute it and/or modify
10
10
it under the terms of the GNU Lesser General Public License as published
11
by the Free Software Foundation; either version 2 of the License,
11
by the Free Software Foundation; either version 2.1 of the License,
12
12
or (at your option) any later version.
14
14
PulseAudio is distributed in the hope that it will be useful, but
165
165
#define pa_return_null_if_fail(expr) pa_return_val_if_fail(expr, NULL)
167
/* An assert which guarantees side effects of x, i.e. is never
167
/* pa_assert_se() is an assert which guarantees side effects of x,
168
* i.e. is never optimized away, regardless of NDEBUG or FASTPATH. */
169
169
#define pa_assert_se(expr) \
171
171
if (PA_UNLIKELY(!(expr))) { \
177
/* An assert that may be optimized away by defining NDEBUG */
177
/* Does exactly nothing */
178
#define pa_nop() do {} while (FALSE)
180
/* pa_assert() is an assert that may be optimized away by defining
181
* NDEBUG. pa_assert_fp() is an assert that may be optimized away by
182
* defining FASTPATH. It is supposed to be used in inner loops. It's
183
* there for extra paranoia checking and should probably be removed in
184
* production builds. */
179
#define pa_assert(expr) do {} while (FALSE)
186
#define pa_assert(expr) pa_nop()
187
#define pa_assert_fp(expr) pa_nop()
188
#elif defined (FASTPATH)
189
#define pa_assert(expr) pa_assert_se(expr)
190
#define pa_assert_fp(expr) pa_nop()
181
192
#define pa_assert(expr) pa_assert_se(expr)
193
#define pa_assert_fp(expr) pa_assert_se(expr)
197
#define pa_assert_not_reached() pa_nop()
184
199
#define pa_assert_not_reached() \
186
201
pa_log_error("Code should not be reached at %s:%u, function %s(). Aborting.", __FILE__, __LINE__, PA_PRETTY_FUNCTION); \
190
#define PA_PTR_TO_UINT(p) ((unsigned int) (unsigned long) (p))
191
#define PA_UINT_TO_PTR(u) ((void*) (unsigned long) (u))
193
#define PA_PTR_TO_UINT32(p) ((uint32_t) PA_PTR_TO_UINT(p))
194
#define PA_UINT32_TO_PTR(u) PA_UINT_TO_PTR((uint32_t) u)
196
#define PA_PTR_TO_INT(p) ((int) PA_PTR_TO_UINT(p))
197
#define PA_INT_TO_PTR(u) PA_UINT_TO_PTR((int) u)
199
#define PA_PTR_TO_INT32(p) ((int32_t) PA_PTR_TO_UINT(p))
200
#define PA_INT32_TO_PTR(u) PA_UINT_TO_PTR((int32_t) u)
206
/* A compile time assertion */
207
#define pa_assert_cc(expr) \
216
#define PA_PTR_TO_UINT(p) ((unsigned int) ((uintptr_t) (p)))
217
#define PA_UINT_TO_PTR(u) ((void*) ((uintptr_t) (u)))
219
#define PA_PTR_TO_UINT32(p) ((uint32_t) ((uintptr_t) (p)))
220
#define PA_UINT32_TO_PTR(u) ((void*) ((uintptr_t) (u)))
222
#define PA_PTR_TO_INT(p) ((int) ((intptr_t) (p)))
223
#define PA_INT_TO_PTR(u) ((void*) ((intptr_t) (u)))
225
#define PA_PTR_TO_INT32(p) ((int32_t) ((intptr_t) (p)))
226
#define PA_INT32_TO_PTR(u) ((void*) ((intptr_t) (u)))
202
228
#ifdef OS_IS_WIN32
203
229
#define PA_PATH_SEP "\\"