diff options
author | Victor Stinner <vstinner@wyplay.com> | 2011-09-29 10:12:39 (GMT) |
---|---|---|
committer | Victor Stinner <vstinner@wyplay.com> | 2011-09-29 10:12:39 (GMT) |
commit | 573696a9cab740783cf762899fca72c2f03293b1 (patch) | |
tree | c70f4fa64d4b5c7c1e0181de5e575a6ad2a69fa5 | |
parent | 6f1ba077c0381c88f78614373157f71ea179e212 (diff) | |
download | cpython-573696a9cab740783cf762899fca72c2f03293b1.zip cpython-573696a9cab740783cf762899fca72c2f03293b1.tar.gz cpython-573696a9cab740783cf762899fca72c2f03293b1.tar.bz2 |
pymacro.h: Inline _Py_ARRAY_LENGTH_CHECK() and add http://ccodearchive.net/
-rw-r--r-- | Include/pymacro.h | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/Include/pymacro.h b/Include/pymacro.h index 22f1d71..07f4785 100644 --- a/Include/pymacro.h +++ b/Include/pymacro.h @@ -19,20 +19,10 @@ ((char *)(foo) \ + Py_BUILD_ASSERT(offsetof(struct foo, string) == 0)) - Written by Rusty Russell, public domain. */ + Written by Rusty Russell, public domain, http://ccodearchive.net/ */ #define Py_BUILD_ASSERT(cond) \ (sizeof(char [1 - 2*!(cond)]) - 1) -#if defined(__GNUC__) -/* Two gcc extensions. - &a[0] degrades to a pointer: a different type from an array */ -#define _Py_ARRAY_LENGTH_CHECK(array) \ - Py_BUILD_ASSERT(!__builtin_types_compatible_p(typeof(array), \ - typeof(&(array)[0]))) -#else -#define _Py_ARRAY_LENGTH_CHECK(array) 0 -#endif - /* Get the number of elements in a visible array @@ -40,9 +30,18 @@ parameters. With correct compiler support, such usage will cause a build error (see Py_BUILD_ASSERT). - Written by Rusty Russell, public domain. */ + Written by Rusty Russell, public domain, http://ccodearchive.net/ */ +#if defined(__GNUC__) +/* Two gcc extensions. + &a[0] degrades to a pointer: a different type from an array */ #define Py_ARRAY_LENGTH(array) \ - (sizeof(array) / sizeof((array)[0]) + _Py_ARRAY_LENGTH_CHECK(array)) + (sizeof(array) / sizeof((array)[0]) \ + + Py_BUILD_ASSERT(!__builtin_types_compatible_p(typeof(array), \ + typeof(&(array)[0])))) +#else +#define Py_ARRAY_LENGTH(array) \ + (sizeof(array) / sizeof((array)[0])) +#endif /* Define macros for inline documentation. */ |