aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/Objects/stringlib/eq.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/tools/python3/Objects/stringlib/eq.h')
-rw-r--r--contrib/tools/python3/Objects/stringlib/eq.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/contrib/tools/python3/Objects/stringlib/eq.h b/contrib/tools/python3/Objects/stringlib/eq.h
new file mode 100644
index 0000000000..2eac4baf5c
--- /dev/null
+++ b/contrib/tools/python3/Objects/stringlib/eq.h
@@ -0,0 +1,17 @@
+/* Fast unicode equal function optimized for dictobject.c and setobject.c */
+
+/* Return 1 if two unicode objects are equal, 0 if not.
+ * unicode_eq() is called when the hash of two unicode objects is equal.
+ */
+Py_LOCAL_INLINE(int)
+unicode_eq(PyObject *a, PyObject *b)
+{
+ if (PyUnicode_GET_LENGTH(a) != PyUnicode_GET_LENGTH(b))
+ return 0;
+ if (PyUnicode_GET_LENGTH(a) == 0)
+ return 1;
+ if (PyUnicode_KIND(a) != PyUnicode_KIND(b))
+ return 0;
+ return memcmp(PyUnicode_1BYTE_DATA(a), PyUnicode_1BYTE_DATA(b),
+ PyUnicode_GET_LENGTH(a) * PyUnicode_KIND(a)) == 0;
+}