summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-04-08 00:01:56 (GMT)
committerGitHub <noreply@github.com>2020-04-08 00:01:56 (GMT)
commita15e260b708a98edaba86a2aa663c3f6b2abc964 (patch)
treeac80e678c0266db42f8264a1fccfdeb1f58f6a17 /Include
parent45ec5b99aefa54552947049086e87ec01bc2fc9a (diff)
downloadcpython-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.h22
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 */