Serhiy Storchaka <storch...@gmail.com> added the comment:

> Since assert(0) always fails, return can never happen (and was not added 
> above. So I would think remove it.

This will cause a compiler warning in non-debug mode.

Here is updated patch with all other comments taken into account.

----------
Added file: http://bugs.python.org/file26102/enum_PyUnicode_Kind-2.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue15092>
_______________________________________
diff -r aa153b827d17 Include/unicodeobject.h
--- a/Include/unicodeobject.h   Fri Jun 22 22:49:12 2012 -0500
+++ b/Include/unicodeobject.h   Sat Jun 23 11:04:31 2012 +0300
@@ -1013,7 +1013,7 @@
     );
 
 #ifndef Py_LIMITED_API
-PyAPI_FUNC(void*) _PyUnicode_AsKind(PyObject *s, unsigned int kind);
+PyAPI_FUNC(void*) _PyUnicode_AsKind(PyObject *s, enum PyUnicode_Kind kind);
 #endif
 
 #endif
diff -r aa153b827d17 Modules/_csv.c
--- a/Modules/_csv.c    Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/_csv.c    Sat Jun 23 11:04:31 2012 +0300
@@ -774,7 +774,7 @@
     PyObject *fields = NULL;
     Py_UCS4 c;
     Py_ssize_t pos, linelen;
-    unsigned int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     PyObject *lineobj;
 
@@ -973,7 +973,8 @@
  * record length.
  */
 static Py_ssize_t
-join_append_data(WriterObj *self, unsigned int field_kind, void *field_data,
+join_append_data(WriterObj *self,
+                 enum PyUnicode_Kind field_kind, void *field_data,
                  Py_ssize_t field_len, int quote_empty, int *quoted,
                  int copy_phase)
 {
@@ -1093,7 +1094,7 @@
 static int
 join_append(WriterObj *self, PyObject *field, int *quoted, int quote_empty)
 {
-    unsigned int field_kind = -1;
+    enum PyUnicode_Kind field_kind = -1;
     void *field_data = NULL;
     Py_ssize_t field_len = 0;
     Py_ssize_t rec_len;
@@ -1123,7 +1124,7 @@
 join_append_lineterminator(WriterObj *self)
 {
     Py_ssize_t terminator_len, i;
-    unsigned int term_kind;
+    enum PyUnicode_Kind term_kind;
     void *term_data;
 
     terminator_len = PyUnicode_GET_LENGTH(self->dialect->lineterminator);
diff -r aa153b827d17 Modules/_elementtree.c
--- a/Modules/_elementtree.c    Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/_elementtree.c    Sat Jun 23 11:04:31 2012 +0300
@@ -869,7 +869,7 @@
     if (PyUnicode_Check(tag)) {
         const Py_ssize_t len = PyUnicode_GET_LENGTH(tag);
         void *data = PyUnicode_DATA(tag);
-        unsigned int kind = PyUnicode_KIND(tag);
+        enum PyUnicode_Kind kind = PyUnicode_KIND(tag);
         for (i = 0; i < len; i++) {
             Py_UCS4 ch = PyUnicode_READ(kind, data, i);
             if (ch == '{')
@@ -2947,7 +2947,7 @@
     unsigned char s[256];
     int i;
     void *data;
-    unsigned int kind;
+    enum PyUnicode_Kind kind;
 
     memset(info, 0, sizeof(XML_Encoding));
 
diff -r aa153b827d17 Modules/_io/_iomodule.h
--- a/Modules/_io/_iomodule.h   Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/_io/_iomodule.h   Sat Jun 23 11:04:31 2012 +0300
@@ -55,7 +55,7 @@
    Otherwise, the function will scan further and return garbage. */
 extern Py_ssize_t _PyIO_find_line_ending(
     int translated, int universal, PyObject *readnl,
-    int kind, char *start, char *end, Py_ssize_t *consumed);
+    enum PyUnicode_Kind kind, char *start, char *end, Py_ssize_t *consumed);
 
 
 #define DEFAULT_BUFFER_SIZE (8 * 1024)  /* bytes */
diff -r aa153b827d17 Modules/_io/textio.c
--- a/Modules/_io/textio.c      Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/_io/textio.c      Sat Jun 23 11:04:31 2012 +0300
@@ -301,7 +301,7 @@
     output_len = PyUnicode_GET_LENGTH(output);
     if (self->pendingcr && (final || output_len > 0)) {
         /* Prefix output with CR */
-        int kind;
+        enum PyUnicode_Kind kind;
         PyObject *modified;
         char *out;
 
@@ -311,7 +311,7 @@
             goto error;
         kind = PyUnicode_KIND(modified);
         out = PyUnicode_DATA(modified);
-        PyUnicode_WRITE(kind, PyUnicode_DATA(modified), 0, '\r');
+        PyUnicode_WRITE(kind, out, 0, '\r');
         memcpy(out + kind, PyUnicode_DATA(output), kind * output_len);
         Py_DECREF(output);
         output = modified; /* output remains ready */
@@ -342,7 +342,7 @@
         Py_ssize_t len;
         int seennl = self->seennl;
         int only_lf = 0;
-        int kind;
+        enum PyUnicode_Kind kind;
 
         in_str = PyUnicode_DATA(output);
         len = PyUnicode_GET_LENGTH(output);
@@ -417,7 +417,7 @@
         }
         else {
             void *translated;
-            int kind = PyUnicode_KIND(output);
+            kind = PyUnicode_KIND(output);
             void *in_str = PyUnicode_DATA(output);
             Py_ssize_t in, out;
             /* XXX: Previous in-place translation here is disabled as
@@ -1600,7 +1600,7 @@
    that is to the NUL character. Otherwise the function will produce
    incorrect results. */
 static char *
-find_control_char(int kind, char *s, char *end, Py_UCS4 ch)
+find_control_char(enum PyUnicode_Kind kind, char *s, char *end, Py_UCS4 ch)
 {
     if (kind == PyUnicode_1BYTE_KIND) {
         assert(ch < 256);
@@ -1620,7 +1620,7 @@
 Py_ssize_t
 _PyIO_find_line_ending(
     int translated, int universal, PyObject *readnl,
-    int kind, char *start, char *end, Py_ssize_t *consumed)
+    enum PyUnicode_Kind kind, char *start, char *end, Py_ssize_t *consumed)
 {
     Py_ssize_t len = ((char*)end - (char*)start)/kind;
 
@@ -1720,7 +1720,7 @@
     while (1) {
         char *ptr;
         Py_ssize_t line_len;
-        int kind;
+        enum PyUnicode_Kind kind;
         Py_ssize_t consumed = 0;
 
         /* First, get some data if necessary */
diff -r aa153b827d17 Modules/_json.c
--- a/Modules/_json.c   Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/_json.c   Sat Jun 23 11:04:31 2012 +0300
@@ -204,7 +204,7 @@
     PyObject *rval;
     void *input;
     unsigned char *output;
-    int kind;
+    enum PyUnicode_Kind kind;
 
     if (PyUnicode_READY(pystr) == -1)
         return NULL;
@@ -331,7 +331,7 @@
     Py_ssize_t begin = end - 1;
     Py_ssize_t next /* = begin */;
     const void *buf;
-    int kind;
+    enum PyUnicode_Kind kind;
     PyObject *chunks = NULL;
     PyObject *chunk = NULL;
 
@@ -613,7 +613,7 @@
     Returns a new PyObject (usually a dict, but object_hook can change that)
     */
     void *str;
-    int kind;
+    enum PyUnicode_Kind kind;
     Py_ssize_t end_idx;
     PyObject *val = NULL;
     PyObject *rval = NULL;
@@ -755,7 +755,7 @@
     Returns a new PyList
     */
     void *str;
-    int kind;
+    enum PyUnicode_Kind kind;
     Py_ssize_t end_idx;
     PyObject *val = NULL;
     PyObject *rval = PyList_New(0);
@@ -858,7 +858,7 @@
         May return other types if parse_int or parse_float are set
     */
     void *str;
-    int kind;
+    enum PyUnicode_Kind kind;
     Py_ssize_t end_idx;
     Py_ssize_t idx = start;
     int is_float = 0;
@@ -975,7 +975,7 @@
     */
     PyObject *res;
     void *str;
-    int kind;
+    enum PyUnicode_Kind kind;
     Py_ssize_t length;
 
     if (PyUnicode_READY(pystr) == -1)
diff -r aa153b827d17 Modules/_pickle.c
--- a/Modules/_pickle.c Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/_pickle.c Sat Jun 23 11:04:31 2012 +0300
@@ -1814,7 +1814,7 @@
     char *p;
     Py_ssize_t i, size, expandsize;
     void *data;
-    unsigned int kind;
+    enum PyUnicode_Kind kind;
 
     if (PyUnicode_READY(obj))
         return NULL;
diff -r aa153b827d17 Modules/_sqlite/connection.c
--- a/Modules/_sqlite/connection.c      Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/_sqlite/connection.c      Sat Jun 23 11:04:31 2012 +0300
@@ -1440,7 +1440,7 @@
     _Py_IDENTIFIER(upper);
     char *uppercase_name_str;
     int rc;
-    unsigned int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
diff -r aa153b827d17 Modules/_tkinter.c
--- a/Modules/_tkinter.c        Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/_tkinter.c        Sat Jun 23 11:04:31 2012 +0300
@@ -965,7 +965,7 @@
     else if (PyUnicode_Check(value)) {
         void *inbuf;
         Py_ssize_t size;
-        int kind;
+        enum PyUnicode_Kind kind;
         Tcl_UniChar *outbuf = NULL;
         Py_ssize_t i;
         size_t allocsize;
diff -r aa153b827d17 Modules/operator.c
--- a/Modules/operator.c        Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/operator.c        Sat Jun 23 11:04:31 2012 +0300
@@ -403,7 +403,7 @@
         PyObject *item = PyTuple_GET_ITEM(args, idx);
         Py_ssize_t item_len;
         void *data;
-        unsigned int kind;
+        enum PyUnicode_Kind kind;
         int dot_count;
 
         if (!PyUnicode_Check(item)) {
diff -r aa153b827d17 Modules/pyexpat.c
--- a/Modules/pyexpat.c Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/pyexpat.c Sat Jun 23 11:04:31 2012 +0300
@@ -1102,7 +1102,7 @@
     PyUnicodeObject *_u_string = NULL;
     int result = 0;
     int i;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     /* Yes, supports only 8bit encodings */
diff -r aa153b827d17 Modules/unicodedata.c
--- a/Modules/unicodedata.c     Fri Jun 22 22:49:12 2012 -0500
+++ b/Modules/unicodedata.c     Sat Jun 23 11:04:31 2012 +0300
@@ -497,7 +497,7 @@
     PyObject *result;
     Py_UCS4 *output;
     Py_ssize_t i, o, osize;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     /* Longest decomposition in Unicode 3.2: U+FDFA */
     Py_UCS4 stack[20];
@@ -637,7 +637,7 @@
 nfc_nfkc(PyObject *self, PyObject *input, int k)
 {
     PyObject *result;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_UCS4 *output;
     Py_ssize_t i, i1, o, len;
@@ -773,7 +773,7 @@
 is_normalized(PyObject *self, PyObject *input, int nfc, int k)
 {
     Py_ssize_t i, len;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     unsigned char prev_combining = 0, quickcheck_mask;
 
diff -r aa153b827d17 Objects/bytearrayobject.c
--- a/Objects/bytearrayobject.c Fri Jun 22 22:49:12 2012 -0500
+++ b/Objects/bytearrayobject.c Sat Jun 23 11:04:31 2012 +0300
@@ -2692,7 +2692,7 @@
     Py_ssize_t hexlen, byteslen, i, j;
     int top, bot;
     void *data;
-    unsigned int kind;
+    enum PyUnicode_Kind kind;
 
     if (!PyArg_ParseTuple(args, "U:fromhex", &hexobj))
         return NULL;
diff -r aa153b827d17 Objects/bytesobject.c
--- a/Objects/bytesobject.c     Fri Jun 22 22:49:12 2012 -0500
+++ b/Objects/bytesobject.c     Sat Jun 23 11:04:31 2012 +0300
@@ -2372,7 +2372,7 @@
     Py_ssize_t hexlen, byteslen, i, j;
     int top, bot;
     void *data;
-    unsigned int kind;
+    enum PyUnicode_Kind kind;
 
     if (!PyArg_ParseTuple(args, "U:fromhex", &hexobj))
         return NULL;
diff -r aa153b827d17 Objects/exceptions.c
--- a/Objects/exceptions.c      Fri Jun 22 22:49:12 2012 -0500
+++ b/Objects/exceptions.c      Sat Jun 23 11:04:31 2012 +0300
@@ -1274,7 +1274,7 @@
 my_basename(PyObject *name)
 {
     Py_ssize_t i, size, offset;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     if (PyUnicode_READY(name))
diff -r aa153b827d17 Objects/unicodeobject.c
--- a/Objects/unicodeobject.c   Fri Jun 22 22:49:12 2012 -0500
+++ b/Objects/unicodeobject.c   Sat Jun 23 11:04:31 2012 +0300
@@ -295,7 +295,7 @@
 _PyUnicode_CheckConsistency(PyObject *op, int check_content)
 {
     PyASCIIObject *ascii;
-    unsigned int kind;
+    enum PyUnicode_Kind kind;
 
     assert(PyUnicode_Check(op));
 
@@ -538,7 +538,7 @@
      (BLOOM(bloom_linebreak, (ch)) && Py_UNICODE_ISLINEBREAK(ch)))
 
 Py_LOCAL_INLINE(BLOOM_MASK)
-make_bloom_mask(int kind, void* ptr, Py_ssize_t len)
+make_bloom_mask(enum PyUnicode_Kind kind, void* ptr, Py_ssize_t len)
 {
     /* calculate simple bloom-style bitmask for a given unicode string */
 
@@ -609,7 +609,7 @@
 static PyObject *
 fixup(PyObject *self, Py_UCS4 (*fixfct)(PyObject *s));
 
-Py_LOCAL_INLINE(Py_ssize_t) findchar(void *s, int kind,
+Py_LOCAL_INLINE(Py_ssize_t) findchar(void *s, enum PyUnicode_Kind kind,
                                      Py_ssize_t size, Py_UCS4 ch,
                                      int direction)
 {
@@ -1126,7 +1126,7 @@
                  PyObject *from, Py_ssize_t from_start,
                  Py_ssize_t how_many, int check_maxchar)
 {
-    unsigned int from_kind, to_kind;
+    enum PyUnicode_Kind from_kind, to_kind;
     void *from_data, *to_data;
 
     assert(0 <= how_many);
@@ -1856,7 +1856,7 @@
 }
 
 static Py_UCS4
-kind_maxchar_limit(unsigned int kind)
+kind_maxchar_limit(enum PyUnicode_Kind kind)
 {
     switch (kind) {
     case PyUnicode_1BYTE_KIND:
@@ -2051,7 +2051,7 @@
     PyObject *unicode, *copy;
     Py_UCS4 max_char;
     Py_ssize_t len;
-    unsigned int kind;
+    enum PyUnicode_Kind kind;
 
     assert(p_unicode != NULL);
     unicode = *p_unicode;
@@ -2117,11 +2117,11 @@
    character. Return NULL on error. */
 
 void*
-_PyUnicode_AsKind(PyObject *s, unsigned int kind)
+_PyUnicode_AsKind(PyObject *s, enum PyUnicode_Kind kind)
 {
     Py_ssize_t len;
     void *result;
-    unsigned int skind;
+    enum PyUnicode_Kind skind;
 
     if (PyUnicode_READY(s) == -1)
         return NULL;
@@ -2175,7 +2175,7 @@
 as_ucs4(PyObject *string, Py_UCS4 *target, Py_ssize_t targetsize,
         int copy_null)
 {
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_ssize_t len, targetlen;
     if (PyUnicode_READY(string) == -1)
@@ -2393,7 +2393,7 @@
     char *numberresults = NULL;
     char *numberresult = NULL;
     Py_ssize_t i;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     Py_VA_COPY(count, vargs);
@@ -4486,7 +4486,7 @@
                       int base64WhiteSpace,
                       const char *errors)
 {
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_ssize_t len;
     PyObject *v;
@@ -4740,7 +4740,7 @@
     s += outpos;
     while (s < end) {
         Py_UCS4 ch;
-        int kind = PyUnicode_KIND(unicode);
+        enum PyUnicode_Kind kind = PyUnicode_KIND(unicode);
         if (kind == PyUnicode_1BYTE_KIND) {
             if (PyUnicode_IS_ASCII(unicode))
                 ch = asciilib_utf8_decode(&s, end,
@@ -5088,7 +5088,7 @@
                        const char *errors,
                        int byteorder)
 {
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_ssize_t len;
     PyObject *v;
@@ -5255,7 +5255,7 @@
     while (1) {
         Py_UCS4 ch = 0;
         if (e - q >= 2) {
-            int kind = PyUnicode_KIND(unicode);
+            enum PyUnicode_Kind kind = PyUnicode_KIND(unicode);
             if (kind == PyUnicode_1BYTE_KIND) {
                 if (PyUnicode_IS_ASCII(unicode))
                     ch = asciilib_utf16_decode(&q, e,
@@ -5769,7 +5769,7 @@
     Py_ssize_t i, len;
     PyObject *repr;
     char *p;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_ssize_t expandsize = 0;
 
@@ -5800,6 +5800,7 @@
     case PyUnicode_1BYTE_KIND: expandsize = 4; break;
     case PyUnicode_2BYTE_KIND: expandsize = 6; break;
     case PyUnicode_4BYTE_KIND: expandsize = 10; break;
+    default: assert(0);
     }
 
     if (len == 0)
@@ -6016,7 +6017,7 @@
     char *p;
     char *q;
     Py_ssize_t expandsize, pos;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_ssize_t len;
 
@@ -6317,7 +6318,7 @@
 {
     /* input state */
     Py_ssize_t pos=0, size;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     /* output object */
     PyObject *res;
@@ -6554,7 +6555,7 @@
 {
     const char *starts = s;
     PyObject *unicode;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_ssize_t startinpos;
     Py_ssize_t endinpos;
@@ -7694,7 +7695,7 @@
     unsigned char level2[512];
     unsigned char *mlevel1, *mlevel2, *mlevel3;
     int count2 = 0, count3 = 0;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_ssize_t length;
     Py_UCS4 ch;
@@ -8424,7 +8425,7 @@
     /* input object */
     char *idata;
     Py_ssize_t size, i;
-    int kind;
+    enum PyUnicode_Kind kind;
     /* output buffer */
     Py_UCS4 *output = NULL;
     Py_ssize_t osize;
@@ -8614,7 +8615,7 @@
     /* No need to call PyUnicode_READY(self) because this function is only
        called as a callback from fixup() which does it already. */
     const Py_ssize_t len = PyUnicode_GET_LENGTH(self);
-    const int kind = PyUnicode_KIND(self);
+    const enum PyUnicode_Kind kind = PyUnicode_KIND(self);
     void *data = PyUnicode_DATA(self);
     Py_UCS4 maxchar = 127, ch, fixed;
     int modified = 0;
@@ -8776,7 +8777,7 @@
                Py_ssize_t start,
                Py_ssize_t end)
 {
-    int kind1, kind2, kind;
+    enum PyUnicode_Kind kind, kind1, kind2;
     void *buf1, *buf2;
     Py_ssize_t len1, len2, result;
 
@@ -8852,7 +8853,7 @@
     const char *grouping, PyObject *thousands_sep,
     Py_UCS4 *maxchar)
 {
-    unsigned int kind, thousands_sep_kind;
+    enum PyUnicode_Kind kind, thousands_sep_kind;
     char *data, *thousands_sep_data;
     Py_ssize_t thousands_sep_len;
     Py_ssize_t len;
@@ -8951,7 +8952,7 @@
     Py_ssize_t result;
     PyObject* str_obj;
     PyObject* sub_obj;
-    int kind1, kind2, kind;
+    enum PyUnicode_Kind kind, kind1, kind2;
     void *buf1 = NULL, *buf2 = NULL;
     Py_ssize_t len1, len2;
 
@@ -9070,7 +9071,7 @@
                    Py_ssize_t start, Py_ssize_t end,
                    int direction)
 {
-    int kind;
+    enum PyUnicode_Kind kind;
     Py_ssize_t result;
     if (PyUnicode_READY(str) == -1)
         return -2;
@@ -9096,13 +9097,9 @@
           Py_ssize_t end,
           int direction)
 {
-    int kind_self;
-    int kind_sub;
-    void *data_self;
-    void *data_sub;
-    Py_ssize_t offset;
-    Py_ssize_t i;
-    Py_ssize_t end_sub;
+    enum PyUnicode_Kind kind_self, kind_sub;
+    void *data_self, *data_sub;
+    Py_ssize_t offset, i, end_sub;
 
     if (PyUnicode_READY(self) == -1 ||
         PyUnicode_READY(substring) == -1)
@@ -9264,7 +9261,8 @@
 }
 
 static Py_UCS4
-handle_capital_sigma(int kind, void *data, Py_ssize_t length, Py_ssize_t i)
+handle_capital_sigma(enum PyUnicode_Kind kind, void *data,
+                     Py_ssize_t length, Py_ssize_t i)
 {
     Py_ssize_t j;
     int final_sigma;
@@ -9293,8 +9291,8 @@
 }
 
 static int
-lower_ucs4(int kind, void *data, Py_ssize_t length, Py_ssize_t i,
-           Py_UCS4 c, Py_UCS4 *mapped)
+lower_ucs4(enum PyUnicode_Kind kind, void *data, Py_ssize_t length,
+           Py_ssize_t i, Py_UCS4 c, Py_UCS4 *mapped)
 {
     /* Obscure special case. */
     if (c == 0x3A3) {
@@ -9305,7 +9303,8 @@
 }
 
 static Py_ssize_t
-do_capitalize(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 
*maxchar)
+do_capitalize(enum PyUnicode_Kind kind, void *data, Py_ssize_t length,
+              Py_UCS4 *res, Py_UCS4 *maxchar)
 {
     Py_ssize_t i, k = 0;
     int n_res, j;
@@ -9329,7 +9328,8 @@
 }
 
 static Py_ssize_t
-do_swapcase(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 
*maxchar) {
+do_swapcase(enum PyUnicode_Kind kind, void *data, Py_ssize_t length,
+            Py_UCS4 *res, Py_UCS4 *maxchar) {
     Py_ssize_t i, k = 0;
 
     for (i = 0; i < length; i++) {
@@ -9354,8 +9354,8 @@
 }
 
 static Py_ssize_t
-do_upper_or_lower(int kind, void *data, Py_ssize_t length, Py_UCS4 *res,
-                  Py_UCS4 *maxchar, int lower)
+do_upper_or_lower(enum PyUnicode_Kind kind, void *data, Py_ssize_t length,
+                  Py_UCS4 *res, Py_UCS4 *maxchar, int lower)
 {
     Py_ssize_t i, k = 0;
 
@@ -9375,19 +9375,22 @@
 }
 
 static Py_ssize_t
-do_upper(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 
*maxchar)
+do_upper(enum PyUnicode_Kind kind, void *data, Py_ssize_t length,
+         Py_UCS4 *res, Py_UCS4 *maxchar)
 {
     return do_upper_or_lower(kind, data, length, res, maxchar, 0);
 }
 
 static Py_ssize_t
-do_lower(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 
*maxchar)
+do_lower(enum PyUnicode_Kind kind, void *data, Py_ssize_t length,
+         Py_UCS4 *res, Py_UCS4 *maxchar)
 {
     return do_upper_or_lower(kind, data, length, res, maxchar, 1);
 }
 
 static Py_ssize_t
-do_casefold(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 
*maxchar)
+do_casefold(enum PyUnicode_Kind kind, void *data, Py_ssize_t length,
+            Py_UCS4 *res, Py_UCS4 *maxchar)
 {
     Py_ssize_t i, k = 0;
 
@@ -9404,7 +9407,8 @@
 }
 
 static Py_ssize_t
-do_title(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 
*maxchar)
+do_title(enum PyUnicode_Kind kind, void *data, Py_ssize_t length,
+         Py_UCS4 *res, Py_UCS4 *maxchar)
 {
     Py_ssize_t i, k = 0;
     int previous_is_cased;
@@ -9432,11 +9436,12 @@
 
 static PyObject *
 case_operation(PyObject *self,
-               Py_ssize_t (*perform)(int, void *, Py_ssize_t, Py_UCS4 *, 
Py_UCS4 *))
+               Py_ssize_t (*perform)(enum PyUnicode_Kind, void *, Py_ssize_t,
+                                     Py_UCS4 *, Py_UCS4 *))
 {
     PyObject *res = NULL;
     Py_ssize_t length, newlength = 0;
-    int kind, outkind;
+    enum PyUnicode_Kind kind, outkind;
     void *data, *outdata;
     Py_UCS4 maxchar = 0, *tmp, *tmpend;
 
@@ -9490,7 +9495,7 @@
     int use_memcpy;
     unsigned char *res_data = NULL, *sep_data = NULL;
     PyObject *last_obj;
-    unsigned int kind = 0;
+    enum PyUnicode_Kind kind = 0;
 
     fseq = PySequence_Fast(seq, "");
     if (fseq == NULL) {
@@ -9737,7 +9742,7 @@
 {
     PyObject *u;
     Py_UCS4 maxchar;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     if (left < 0)
@@ -9817,7 +9822,7 @@
       PyObject *substring,
       Py_ssize_t maxcount)
 {
-    int kind1, kind2, kind;
+    enum PyUnicode_Kind kind, kind1, kind2;
     void *buf1, *buf2;
     Py_ssize_t len1, len2;
     PyObject* out;
@@ -9909,7 +9914,7 @@
        PyObject *substring,
        Py_ssize_t maxcount)
 {
-    int kind1, kind2, kind;
+    enum PyUnicode_Kind kind, kind1, kind2;
     void *buf1, *buf2;
     Py_ssize_t len1, len2;
     PyObject* out;
@@ -9997,7 +10002,7 @@
 }
 
 static Py_ssize_t
-anylib_find(int kind, PyObject *str1, void *buf1, Py_ssize_t len1,
+anylib_find(enum PyUnicode_Kind kind, PyObject *str1, void *buf1, Py_ssize_t 
len1,
             PyObject *str2, void *buf2, Py_ssize_t len2, Py_ssize_t offset)
 {
     switch (kind) {
@@ -10010,13 +10015,14 @@
         return ucs2lib_find(buf1, len1, buf2, len2, offset);
     case PyUnicode_4BYTE_KIND:
         return ucs4lib_find(buf1, len1, buf2, len2, offset);
-    }
-    assert(0);
-    return -1;
+    default:
+        assert(0);
+        return -1;
+    }
 }
 
 static Py_ssize_t
-anylib_count(int kind, PyObject *sstr, void* sbuf, Py_ssize_t slen,
+anylib_count(enum PyUnicode_Kind kind, PyObject *sstr, void* sbuf, Py_ssize_t 
slen,
              PyObject *str1, void *buf1, Py_ssize_t len1, Py_ssize_t maxcount)
 {
     switch (kind) {
@@ -10029,9 +10035,10 @@
         return ucs2lib_count(sbuf, slen, buf1, len1, maxcount);
     case PyUnicode_4BYTE_KIND:
         return ucs4lib_count(sbuf, slen, buf1, len1, maxcount);
-    }
-    assert(0);
-    return 0;
+    default:
+        assert(0);
+        return -1;
+    }
 }
 
 static PyObject *
@@ -10043,9 +10050,9 @@
     char *buf1 = PyUnicode_DATA(str1);
     char *buf2 = PyUnicode_DATA(str2);
     int srelease = 0, release1 = 0, release2 = 0;
-    int skind = PyUnicode_KIND(self);
-    int kind1 = PyUnicode_KIND(str1);
-    int kind2 = PyUnicode_KIND(str2);
+    enum PyUnicode_Kind skind = PyUnicode_KIND(self);
+    enum PyUnicode_Kind kind1 = PyUnicode_KIND(str1);
+    enum PyUnicode_Kind kind2 = PyUnicode_KIND(str2);
     Py_ssize_t slen = PyUnicode_GET_LENGTH(self);
     Py_ssize_t len1 = PyUnicode_GET_LENGTH(str1);
     Py_ssize_t len2 = PyUnicode_GET_LENGTH(str2);
@@ -10077,7 +10084,7 @@
         if (len1 == 1) {
             /* replace characters */
             Py_UCS4 u1, u2;
-            int rkind;
+            enum PyUnicode_Kind rkind;
             Py_ssize_t index, pos;
             char *src;
 
@@ -10108,7 +10115,7 @@
             }
         }
         else {
-            int rkind = skind;
+            enum PyUnicode_Kind rkind = skind;
             char *res;
             Py_ssize_t i;
 
@@ -10167,7 +10174,7 @@
     else {
         Py_ssize_t n, i, j, ires;
         Py_ssize_t product, new_size;
-        int rkind = skind;
+        enum PyUnicode_Kind rkind = skind;
         char *res;
 
         if (kind1 < rkind) {
@@ -10414,7 +10421,7 @@
 static int
 unicode_compare(PyObject *str1, PyObject *str2)
 {
-    int kind1, kind2;
+    enum PyUnicode_Kind kind1, kind2;
     void *data1, *data2;
     Py_ssize_t len1, len2, i;
 
@@ -10457,7 +10464,7 @@
 PyUnicode_CompareWithASCIIString(PyObject* uni, const char* str)
 {
     Py_ssize_t i;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_UCS4 chr;
 
@@ -10544,7 +10551,7 @@
 PyUnicode_Contains(PyObject *container, PyObject *element)
 {
     PyObject *str, *sub;
-    int kind1, kind2, kind;
+    enum PyUnicode_Kind kind, kind1, kind2;
     void *buf1, *buf2;
     Py_ssize_t len1, len2;
     int result;
@@ -10777,7 +10784,7 @@
     Py_ssize_t start = 0;
     Py_ssize_t end = PY_SSIZE_T_MAX;
     PyObject *result;
-    int kind1, kind2, kind;
+    enum PyUnicode_Kind kind, kind1, kind2;
     void *buf1, *buf2;
     Py_ssize_t len1, len2, iresult;
 
@@ -10872,7 +10879,7 @@
     PyObject *u;
     void *src_data, *dest_data;
     int tabsize = 8;
-    int kind;
+    enum PyUnicode_Kind kind;
     int found;
 
     if (!PyArg_ParseTuple(args, "|i:expandtabs", &tabsize))
@@ -11122,7 +11129,7 @@
 unicode_islower(PyObject *self)
 {
     Py_ssize_t i, length;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     int cased;
 
@@ -11163,7 +11170,7 @@
 unicode_isupper(PyObject *self)
 {
     Py_ssize_t i, length;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     int cased;
 
@@ -11206,7 +11213,7 @@
 unicode_istitle(PyObject *self)
 {
     Py_ssize_t i, length;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     int cased, previous_is_cased;
 
@@ -11260,7 +11267,7 @@
 unicode_isspace(PyObject *self)
 {
     Py_ssize_t i, length;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     if (PyUnicode_READY(self) == -1)
@@ -11296,7 +11303,7 @@
 unicode_isalpha(PyObject *self)
 {
     Py_ssize_t i, length;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     if (PyUnicode_READY(self) == -1)
@@ -11330,7 +11337,7 @@
 static PyObject*
 unicode_isalnum(PyObject *self)
 {
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_ssize_t len, i;
 
@@ -11369,7 +11376,7 @@
 unicode_isdecimal(PyObject *self)
 {
     Py_ssize_t i, length;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     if (PyUnicode_READY(self) == -1)
@@ -11404,7 +11411,7 @@
 unicode_isdigit(PyObject *self)
 {
     Py_ssize_t i, length;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     if (PyUnicode_READY(self) == -1)
@@ -11440,7 +11447,7 @@
 unicode_isnumeric(PyObject *self)
 {
     Py_ssize_t i, length;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     if (PyUnicode_READY(self) == -1)
@@ -11468,7 +11475,7 @@
 int
 PyUnicode_IsIdentifier(PyObject *self)
 {
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_ssize_t i;
     Py_UCS4 first;
@@ -11524,7 +11531,7 @@
 unicode_isprintable(PyObject *self)
 {
     Py_ssize_t i, length;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     if (PyUnicode_READY(self) == -1)
@@ -11619,7 +11626,7 @@
 _PyUnicode_XStrip(PyObject *self, int striptype, PyObject *sepobj)
 {
     void *data;
-    int kind;
+    enum PyUnicode_Kind kind;
     Py_ssize_t i, j, len;
     BLOOM_MASK sepmask;
 
@@ -11657,7 +11664,7 @@
 PyUnicode_Substring(PyObject *self, Py_ssize_t start, Py_ssize_t end)
 {
     unsigned char *data;
-    int kind;
+    enum PyUnicode_Kind kind;
     Py_ssize_t length;
 
     if (PyUnicode_READY(self) == -1)
@@ -11695,7 +11702,7 @@
 static PyObject *
 do_strip(PyObject *self, int striptype)
 {
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_ssize_t len, i, j;
 
@@ -11828,7 +11835,7 @@
     assert(PyUnicode_KIND(u) == PyUnicode_KIND(str));
 
     if (PyUnicode_GET_LENGTH(str) == 1) {
-        const int kind = PyUnicode_KIND(str);
+        const enum PyUnicode_Kind kind = PyUnicode_KIND(str);
         const Py_UCS4 fill_char = PyUnicode_READ(kind, PyUnicode_DATA(str), 0);
         if (kind == PyUnicode_1BYTE_KIND) {
             void *to = PyUnicode_DATA(u);
@@ -11944,7 +11951,7 @@
     Py_ssize_t isize;
     Py_ssize_t osize, squote, dquote, i, o;
     Py_UCS4 max, quote;
-    int ikind, okind;
+    enum PyUnicode_Kind ikind, okind;
     void *idata, *odata;
 
     if (PyUnicode_READY(unicode) == -1)
@@ -12240,7 +12247,7 @@
     PyObject* str_obj;
     PyObject* sep_obj;
     PyObject* out;
-    int kind1, kind2, kind;
+    enum PyUnicode_Kind kind, kind1, kind2;
     void *buf1 = NULL, *buf2 = NULL;
     Py_ssize_t len1, len2;
 
@@ -12317,7 +12324,7 @@
     PyObject* str_obj;
     PyObject* sep_obj;
     PyObject* out;
-    int kind1, kind2, kind;
+    enum PyUnicode_Kind kind, kind1, kind2;
     void *buf1 = NULL, *buf2 = NULL;
     Py_ssize_t len1, len2;
 
@@ -12525,7 +12532,7 @@
     if (!new)
         return NULL;
     if (y != NULL) {
-        int x_kind, y_kind, z_kind;
+        enum PyUnicode_Kind x_kind, y_kind, z_kind;
         void *x_data, *y_data, *z_data;
 
         /* x must be a string too, of equal length */
@@ -12574,7 +12581,7 @@
             }
         }
     } else {
-        int kind;
+        enum PyUnicode_Kind kind;
         void *data;
 
         /* x must be a dict */
@@ -12661,7 +12668,7 @@
     Py_ssize_t fill;
     PyObject *u;
     Py_ssize_t width;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     Py_UCS4 chr;
 
@@ -13135,7 +13142,7 @@
         Py_ssize_t start, stop, step, slicelength, cur, i;
         PyObject *result;
         void *src_data, *dest_data;
-        int src_kind, dest_kind;
+        enum PyUnicode_Kind src_kind, dest_kind;
         Py_UCS4 ch, max_char, kind_limit;
 
         if (PySlice_GetIndicesEx(item, PyUnicode_GET_LENGTH(self),
@@ -13988,7 +13995,7 @@
     PyObject *unicode, *self;
     Py_ssize_t length, char_size;
     int share_wstr, share_utf8;
-    unsigned int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     assert(PyType_IsSubtype(type, &PyUnicode_Type));
@@ -14371,7 +14378,7 @@
     assert(_PyUnicode_CHECK(seq));
 
     if (it->it_index < PyUnicode_GET_LENGTH(seq)) {
-        int kind = PyUnicode_KIND(seq);
+        enum PyUnicode_Kind kind = PyUnicode_KIND(seq);
         void *data = PyUnicode_DATA(seq);
         Py_UCS4 chr = PyUnicode_READ(kind, data, it->it_index);
         item = PyUnicode_FromOrdinal(chr);
diff -r aa153b827d17 Python/_warnings.c
--- a/Python/_warnings.c        Fri Jun 22 22:49:12 2012 -0500
+++ b/Python/_warnings.c        Sat Jun 23 11:04:31 2012 +0300
@@ -500,7 +500,7 @@
     *filename = PyDict_GetItemString(globals, "__file__");
     if (*filename != NULL && PyUnicode_Check(*filename)) {
         Py_ssize_t len;
-        int kind;
+        enum PyUnicode_Kind kind;
         void *data;
 
         if (PyUnicode_READY(*filename))
diff -r aa153b827d17 Python/ast.c
--- a/Python/ast.c      Fri Jun 22 22:49:12 2012 -0500
+++ b/Python/ast.c      Sat Jun 23 11:04:31 2012 +0300
@@ -3738,7 +3738,7 @@
             }
             if (*s & 0x80) { /* XXX inefficient */
                 PyObject *w;
-                int kind;
+                enum PyUnicode_Kind kind;
                 void *data;
                 Py_ssize_t len, i;
                 w = decode_utf8(c, &s, end);
diff -r aa153b827d17 Python/codecs.c
--- a/Python/codecs.c   Fri Jun 22 22:49:12 2012 -0500
+++ b/Python/codecs.c   Sat Jun 23 11:04:31 2012 +0300
@@ -520,7 +520,7 @@
 
     if (PyObject_IsInstance(exc, PyExc_UnicodeEncodeError)) {
         PyObject *res;
-        int kind;
+        enum PyUnicode_Kind kind;
         void *data;
         if (PyUnicodeEncodeError_GetStart(exc, &start))
             return NULL;
@@ -546,7 +546,7 @@
     }
     else if (PyObject_IsInstance(exc, PyExc_UnicodeTranslateError)) {
         PyObject *res;
-        int kind;
+        enum PyUnicode_Kind kind;
         void *data;
         if (PyUnicodeTranslateError_GetStart(exc, &start))
             return NULL;
diff -r aa153b827d17 Python/getargs.c
--- a/Python/getargs.c  Fri Jun 22 22:49:12 2012 -0500
+++ b/Python/getargs.c  Sat Jun 23 11:04:31 2012 +0300
@@ -796,7 +796,7 @@
 
     case 'C': {/* unicode char */
         int *p = va_arg(*p_va, int *);
-        int kind;
+        enum PyUnicode_Kind kind;
         void *data;
 
         if (!PyUnicode_Check(arg))
diff -r aa153b827d17 Python/import.c
--- a/Python/import.c   Fri Jun 22 22:49:12 2012 -0500
+++ b/Python/import.c   Sat Jun 23 11:04:31 2012 +0300
@@ -877,7 +877,7 @@
     Py_ssize_t left, right, dot0, dot1, len;
     Py_ssize_t i, j;
     PyObject *result;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
 
     len = PyUnicode_GET_LENGTH(path);
@@ -1012,7 +1012,7 @@
     struct stat statbuf;
     int err;
     void *data;
-    unsigned int kind;
+    enum PyUnicode_Kind kind;
 
     len = PyUnicode_GET_LENGTH(filename);
     if (len == 0)
diff -r aa153b827d17 Python/traceback.c
--- a/Python/traceback.c        Fri Jun 22 22:49:12 2012 -0500
+++ b/Python/traceback.c        Sat Jun 23 11:04:31 2012 +0300
@@ -230,7 +230,7 @@
     PyObject *lineobj = NULL;
     PyObject *res;
     char buf[MAXPATHLEN+1];
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data;
     _Py_IDENTIFIER(close);
     _Py_IDENTIFIER(open);
@@ -485,7 +485,7 @@
     PyASCIIObject *ascii = (PyASCIIObject *)text;
     Py_ssize_t i, size;
     int truncated;
-    int kind;
+    enum PyUnicode_Kind kind;
     void *data = NULL;
     wchar_t *wstr = NULL;
     Py_UCS4 ch;
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to