diff options
Diffstat (limited to 'contrib/tools/python3/Objects/stringlib/eq.h')
-rw-r--r-- | contrib/tools/python3/Objects/stringlib/eq.h | 17 |
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; +} |