diff options
author | Victor Stinner <vstinner@python.org> | 2020-04-08 00:01:56 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-08 00:01:56 (GMT) |
commit | a15e260b708a98edaba86a2aa663c3f6b2abc964 (patch) | |
tree | ac80e678c0266db42f8264a1fccfdeb1f58f6a17 /Include | |
parent | 45ec5b99aefa54552947049086e87ec01bc2fc9a (diff) | |
download | cpython-a15e260b708a98edaba86a2aa663c3f6b2abc964.zip cpython-a15e260b708a98edaba86a2aa663c3f6b2abc964.tar.gz cpython-a15e260b708a98edaba86a2aa663c3f6b2abc964.tar.bz2 |
bpo-40170: Add _PyIndex_Check() internal function (GH-19426)
Add _PyIndex_Check() function to the internal C API: fast inlined
verson of PyIndex_Check().
Add Include/internal/pycore_abstract.h header file.
Replace PyIndex_Check() with _PyIndex_Check() in C files of Objects
and Python subdirectories.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/internal/pycore_abstract.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Include/internal/pycore_abstract.h b/Include/internal/pycore_abstract.h new file mode 100644 index 0000000..b791bf2 --- /dev/null +++ b/Include/internal/pycore_abstract.h @@ -0,0 +1,22 @@ +#ifndef Py_INTERNAL_ABSTRACT_H +#define Py_INTERNAL_ABSTRACT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +// Fast inlined version of PyIndex_Check() +static inline int +_PyIndex_Check(PyObject *obj) +{ + PyNumberMethods *tp_as_number = Py_TYPE(obj)->tp_as_number; + return (tp_as_number != NULL && tp_as_number->nb_index != NULL); +} + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_ABSTRACT_H */ |