зеркало из https://github.com/mozilla/pjs.git
Fixing bug 375985. Add compile time assertions to NSPR. r=wtchang@gmail.com
This commit is contained in:
Родитель
bafe9e32c8
Коммит
a149a724b5
|
@ -48,6 +48,21 @@ typedef PRInt32 PRErrorCode;
|
||||||
|
|
||||||
#include "prerr.h"
|
#include "prerr.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Compile-time assert. "condition" must be a constant expression.
|
||||||
|
** The macro should be used only once per source line in places where
|
||||||
|
** a "typedef" declaration is allowed.
|
||||||
|
** For stringification of the line numbers where the macro is used we need some
|
||||||
|
** macro indirection. IMPL is required to get macro-expansion of __LINE__ to
|
||||||
|
** its integer value so that IMPL2 will stringify the number, not "__LINE__".
|
||||||
|
*/
|
||||||
|
#define PR_STATIC_ASSERT(condition) \
|
||||||
|
PR_STATIC_ASSERT_IMPL(condition, __LINE__)
|
||||||
|
#define PR_STATIC_ASSERT_IMPL(condition, line) \
|
||||||
|
PR_STATIC_ASSERT_IMPL2(condition, line)
|
||||||
|
#define PR_STATIC_ASSERT_IMPL2(condition, line) \
|
||||||
|
typedef int pr_static_assert_line_##line[(condition) ? 1 : -1]
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Set error will preserve an error condition within a thread context.
|
** Set error will preserve an error condition within a thread context.
|
||||||
** The values stored are the NSPR (platform independent) translation of
|
** The values stored are the NSPR (platform independent) translation of
|
||||||
|
|
Загрузка…
Ссылка в новой задаче