[Python-checkins] python/dist/src/Objects unicodectype.c, 2.15, 2.16 unicodeobject.c, 2.218, 2.219 unicodetype_db.h, 1.8, 1.9

perky at users.sourceforge.net perky at users.sourceforge.net
Wed Aug 4 09:38:38 CEST 2004


Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1744/Objects
Modified Files:
	unicodectype.c unicodeobject.c unicodetype_db.h 
Log Message:
SF #989185: Drop unicode.iswide() and unicode.width() and add
unicodedata.east_asian_width(). You can still implement your own
simple width() function using it like this:
 def width(u):
 w = 0
 for c in unicodedata.normalize('NFC', u):
 cwidth = unicodedata.east_asian_width(c)
 if cwidth in ('W', 'F'): w += 2
 else: w += 1
 return w
Index: unicodectype.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/unicodectype.c,v
retrieving revision 2.15
retrieving revision 2.16
diff -C2 -d -r2.15 -r2.16
*** unicodectype.c	2 Jun 2004 16:49:16 -0000	2.15
--- unicodectype.c	4 Aug 2004 07:38:34 -0000	2.16
***************
*** 20,24 ****
 #define TITLE_MASK 0x40
 #define UPPER_MASK 0x80
- #define WIDE_MASK 0x100
 
 typedef struct {
--- 20,23 ----
***************
*** 324,336 ****
 }
 
- /* Returns 1 for Unicode characters having Full or Wide width, 0 otherwise */
- 
- int _PyUnicode_IsWide(Py_UNICODE ch)
- {
- const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
- 
- return (ctype->flags & WIDE_MASK) != 0;
- }
- 
 #ifndef WANT_WCTYPE_FUNCTIONS
 
--- 323,326 ----
Index: unicodeobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/unicodeobject.c,v
retrieving revision 2.218
retrieving revision 2.219
diff -C2 -d -r2.218 -r2.219
*** unicodeobject.c	23 Jul 2004 16:13:25 -0000	2.218
--- unicodeobject.c	4 Aug 2004 07:38:35 -0000	2.219
***************
*** 703,727 ****
 }
 
- int PyUnicode_GetWidth(PyObject *unicode)
- {
- const Py_UNICODE *p, *e;
- int width;
- 
- if (!PyUnicode_Check(unicode)) {
- 	PyErr_BadArgument();
- 	return -1;
- }
- 
- p = PyUnicode_AS_UNICODE(unicode);
- e = p + PyUnicode_GET_SIZE(unicode);
- for (width = 0; p < e; p++)
- 	if (Py_UNICODE_ISWIDE(*p))
- 	 width += 2;
- 	else
- 	 width++;
- 
- return width;
- }
- 
 const char *PyUnicode_GetDefaultEncoding(void)
 {
--- 703,706 ----
***************
*** 5437,5469 ****
 }
 
- PyDoc_STRVAR(iswide__doc__,
- "S.iswide() -> bool\n\
- \n\
- Return True if all characters in S are wide width\n\
- and there is at least one character in S, False otherwise.");
- 
- static PyObject*
- unicode_iswide(PyUnicodeObject *self)
- {
- register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
- register const Py_UNICODE *e;
- 
- /* Shortcut for single character strings */
- if (PyUnicode_GET_SIZE(self) == 1 &&
- 	Py_UNICODE_ISWIDE(*p))
- 	Py_RETURN_TRUE;
- 
- /* Special case for empty strings */
- if (PyString_GET_SIZE(self) == 0)
- 	Py_RETURN_FALSE;
- 
- e = p + PyUnicode_GET_SIZE(self);
- for (; p < e; p++) {
- 	if (!Py_UNICODE_ISWIDE(*p))
- 	 Py_RETURN_FALSE;
- }
- Py_RETURN_TRUE;
- }
- 
 PyDoc_STRVAR(join__doc__,
 "S.join(sequence) -> unicode\n\
--- 5416,5419 ----
***************
*** 6077,6095 ****
 }
 
- PyDoc_STRVAR(width__doc__,
- "S.width() -> unicode\n\
- \n\
- Return a fixed-width representation length of S.");
- 
- static PyObject*
- unicode_width(PyObject *self)
- {
- int width = PyUnicode_GetWidth(self);
- if (width == -1)
- 	return NULL;
- else
- 	return PyInt_FromLong((long)width);
- }
- 
 PyDoc_STRVAR(zfill__doc__,
 "S.zfill(width) -> unicode\n\
--- 6027,6030 ----
***************
*** 6256,6261 ****
 {"isalpha", (PyCFunction) unicode_isalpha, METH_NOARGS, isalpha__doc__},
 {"isalnum", (PyCFunction) unicode_isalnum, METH_NOARGS, isalnum__doc__},
- {"iswide", (PyCFunction) unicode_iswide, METH_NOARGS, iswide__doc__},
- {"width", (PyCFunction) unicode_width, METH_NOARGS, width__doc__},
 {"zfill", (PyCFunction) unicode_zfill, METH_VARARGS, zfill__doc__},
 #if 0
--- 6191,6194 ----
Index: unicodetype_db.h
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/unicodetype_db.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** unicodetype_db.h	2 Jun 2004 16:49:16 -0000	1.8
--- unicodetype_db.h	4 Aug 2004 07:38:35 -0000	1.9
***************
*** 88,92 ****
 {0, 48, 0, 0, 0, 129},
 {65488, 0, 65488, 0, 0, 9},
- {0, 0, 0, 0, 0, 257},
 {65477, 0, 65477, 0, 0, 9},
 {8, 0, 8, 0, 0, 9},
--- 88,91 ----
***************
*** 115,119 ****
 {0, 16, 0, 0, 0, 0},
 {65520, 0, 65520, 0, 0, 0},
[...978 lines suppressed...]
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
! 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
***************
*** 1147,1151 ****
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
! 1, 1, 1, 1, 1, 0, 0, 
 };
 
--- 1086,1090 ----
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
! 1, 1, 1, 1, 1, 1, 0, 0, 
 };
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /