summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Include/unicodeobject.h37
-rw-r--r--Objects/unicodeobject.c100
-rw-r--r--Objects/uniops.h91
3 files changed, 90 insertions, 138 deletions
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h
index 592f4dd..6e613eb 100644
--- a/Include/unicodeobject.h
+++ b/Include/unicodeobject.h
@@ -1984,43 +1984,6 @@ PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strrchr(
Py_UNICODE c
);
-PyAPI_FUNC(size_t) Py_UCS4_strlen(
- const Py_UCS4 *u
- );
-
-PyAPI_FUNC(Py_UCS4*) Py_UCS4_strcpy(
- Py_UCS4 *s1,
- const Py_UCS4 *s2);
-
-PyAPI_FUNC(Py_UCS4*) Py_UCS4_strcat(
- Py_UCS4 *s1, const Py_UCS4 *s2);
-
-PyAPI_FUNC(Py_UCS4*) Py_UCS4_strncpy(
- Py_UCS4 *s1,
- const Py_UCS4 *s2,
- size_t n);
-
-PyAPI_FUNC(int) Py_UCS4_strcmp(
- const Py_UCS4 *s1,
- const Py_UCS4 *s2
- );
-
-PyAPI_FUNC(int) Py_UCS4_strncmp(
- const Py_UCS4 *s1,
- const Py_UCS4 *s2,
- size_t n
- );
-
-PyAPI_FUNC(Py_UCS4*) Py_UCS4_strchr(
- const Py_UCS4 *s,
- Py_UCS4 c
- );
-
-PyAPI_FUNC(Py_UCS4*) Py_UCS4_strrchr(
- const Py_UCS4 *s,
- Py_UCS4 c
- );
-
/* Create a copy of a unicode string ending with a nul character. Return NULL
and raise a MemoryError exception on memory allocation failure, otherwise
return a new allocated buffer (use PyMem_Free() to free the buffer). */
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 6c73779..7147f04 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -14195,16 +14195,96 @@ unicode_iter(PyObject *seq)
return (PyObject *)it;
}
-#define UNIOP(x) Py_UNICODE_##x
-#define UNIOP_t Py_UNICODE
-#include "uniops.h"
-#undef UNIOP
-#undef UNIOP_t
-#define UNIOP(x) Py_UCS4_##x
-#define UNIOP_t Py_UCS4
-#include "uniops.h"
-#undef UNIOP
-#undef UNIOP_t
+
+size_t
+Py_UNICODE_strlen(const Py_UNICODE *u)
+{
+ int res = 0;
+ while(*u++)
+ res++;
+ return res;
+}
+
+Py_UNICODE*
+Py_UNICODE_strcpy(Py_UNICODE *s1, const Py_UNICODE *s2)
+{
+ Py_UNICODE *u = s1;
+ while ((*u++ = *s2++));
+ return s1;
+}
+
+Py_UNICODE*
+Py_UNICODE_strncpy(Py_UNICODE *s1, const Py_UNICODE *s2, size_t n)
+{
+ Py_UNICODE *u = s1;
+ while ((*u++ = *s2++))
+ if (n-- == 0)
+ break;
+ return s1;
+}
+
+Py_UNICODE*
+Py_UNICODE_strcat(Py_UNICODE *s1, const Py_UNICODE *s2)
+{
+ Py_UNICODE *u1 = s1;
+ u1 += Py_UNICODE_strlen(u1);
+ Py_UNICODE_strcpy(u1, s2);
+ return s1;
+}
+
+int
+Py_UNICODE_strcmp(const Py_UNICODE *s1, const Py_UNICODE *s2)
+{
+ while (*s1 && *s2 && *s1 == *s2)
+ s1++, s2++;
+ if (*s1 && *s2)
+ return (*s1 < *s2) ? -1 : +1;
+ if (*s1)
+ return 1;
+ if (*s2)
+ return -1;
+ return 0;
+}
+
+int
+Py_UNICODE_strncmp(const Py_UNICODE *s1, const Py_UNICODE *s2, size_t n)
+{
+ register Py_UNICODE u1, u2;
+ for (; n != 0; n--) {
+ u1 = *s1;
+ u2 = *s2;
+ if (u1 != u2)
+ return (u1 < u2) ? -1 : +1;
+ if (u1 == '\0')
+ return 0;
+ s1++;
+ s2++;
+ }
+ return 0;
+}
+
+Py_UNICODE*
+Py_UNICODE_strchr(const Py_UNICODE *s, Py_UNICODE c)
+{
+ const Py_UNICODE *p;
+ for (p = s; *p; p++)
+ if (*p == c)
+ return (Py_UNICODE*)p;
+ return NULL;
+}
+
+Py_UNICODE*
+Py_UNICODE_strrchr(const Py_UNICODE *s, Py_UNICODE c)
+{
+ const Py_UNICODE *p;
+ p = s + Py_UNICODE_strlen(s);
+ while (p != s) {
+ p--;
+ if (*p == c)
+ return (Py_UNICODE*)p;
+ }
+ return NULL;
+}
Py_UNICODE*
PyUnicode_AsUnicodeCopy(PyObject *unicode)
diff --git a/Objects/uniops.h b/Objects/uniops.h
deleted file mode 100644
index 06a0b4e..0000000
--- a/Objects/uniops.h
+++ /dev/null
@@ -1,91 +0,0 @@
-
-size_t
-UNIOP(strlen)(const UNIOP_t *u)
-{
- int res = 0;
- while(*u++)
- res++;
- return res;
-}
-
-UNIOP_t*
-UNIOP(strcpy)(UNIOP_t *s1, const UNIOP_t *s2)
-{
- UNIOP_t *u = s1;
- while ((*u++ = *s2++));
- return s1;
-}
-
-UNIOP_t*
-UNIOP(strncpy)(UNIOP_t *s1, const UNIOP_t *s2, size_t n)
-{
- UNIOP_t *u = s1;
- while ((*u++ = *s2++))
- if (n-- == 0)
- break;
- return s1;
-}
-
-UNIOP_t*
-UNIOP(strcat)(UNIOP_t *s1, const UNIOP_t *s2)
-{
- UNIOP_t *u1 = s1;
- u1 += UNIOP(strlen(u1));
- UNIOP(strcpy(u1, s2));
- return s1;
-}
-
-int
-UNIOP(strcmp)(const UNIOP_t *s1, const UNIOP_t *s2)
-{
- while (*s1 && *s2 && *s1 == *s2)
- s1++, s2++;
- if (*s1 && *s2)
- return (*s1 < *s2) ? -1 : +1;
- if (*s1)
- return 1;
- if (*s2)
- return -1;
- return 0;
-}
-
-int
-UNIOP(strncmp)(const UNIOP_t *s1, const UNIOP_t *s2, size_t n)
-{
- register UNIOP_t u1, u2;
- for (; n != 0; n--) {
- u1 = *s1;
- u2 = *s2;
- if (u1 != u2)
- return (u1 < u2) ? -1 : +1;
- if (u1 == '\0')
- return 0;
- s1++;
- s2++;
- }
- return 0;
-}
-
-UNIOP_t*
-UNIOP(strchr)(const UNIOP_t *s, UNIOP_t c)
-{
- const UNIOP_t *p;
- for (p = s; *p; p++)
- if (*p == c)
- return (UNIOP_t*)p;
- return NULL;
-}
-
-UNIOP_t*
-UNIOP(strrchr)(const UNIOP_t *s, UNIOP_t c)
-{
- const UNIOP_t *p;
- p = s + UNIOP(strlen)(s);
- while (p != s) {
- p--;
- if (*p == c)
- return (UNIOP_t*)p;
- }
- return NULL;
-}
-