summaryrefslogtreecommitdiffstats
path: root/Modules/unicodedata.c
diff options
context:
space:
mode:
authorFredrik Lundh <fredrik@pythonware.com>2000-09-25 08:07:06 (GMT)
committerFredrik Lundh <fredrik@pythonware.com>2000-09-25 08:07:06 (GMT)
commitcfcea4921865a922744dc168dde5eaccde8fe50b (patch)
tree9f7e75ab875cf3d9115cbef22ee68dd2cb562fda /Modules/unicodedata.c
parent2101348830ff0d65cebd4caf886011f45bcc7618 (diff)
downloadcpython-cfcea4921865a922744dc168dde5eaccde8fe50b.zip
cpython-cfcea4921865a922744dc168dde5eaccde8fe50b.tar.gz
cpython-cfcea4921865a922744dc168dde5eaccde8fe50b.tar.bz2
unicode database compression, step 2:
- fixed attributions - moved decomposition data to a separate table, in preparation for step 3 (which won't happen before 2.0 final, promise!) - use relative paths in the generator script I have a lot more stuff in the works for 2.1, but let's leave that for another day...
Diffstat (limited to 'Modules/unicodedata.c')
-rw-r--r--Modules/unicodedata.c46
1 files changed, 18 insertions, 28 deletions
diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index e15ff27..3a48ba4 100644
--- a/Modules/unicodedata.c
+++ b/Modules/unicodedata.c
@@ -4,17 +4,16 @@
Data was extracted from the Unicode 3.0 UnicodeData.txt file.
-Written by Marc-Andre Lemburg (mal@lemburg.com).
+ Written by Marc-Andre Lemburg (mal@lemburg.com).
+ Modified for Python 2.0 by Fredrik Lundh (fredrik@pythonware.com)
-Copyright (c) Corporation for National Research Initiatives.
+ Copyright (c) Corporation for National Research Initiatives.
------------------------------------------------------------------------ */
#include "Python.h"
#include "unicodedatabase.h"
-#define unicode_db _PyUnicode_Database_GetRecord
-
/* --- Module API --------------------------------------------------------- */
static PyObject *
@@ -134,15 +133,9 @@ unicodedata_category(PyObject *self,
"need a single Unicode character as parameter");
goto onError;
}
- index = (int)unicode_db((int)*PyUnicode_AS_UNICODE(v))->category;
- if (index < 0 ||
- index > sizeof(_PyUnicode_CategoryNames) /
- sizeof(_PyUnicode_CategoryNames[0])) {
- PyErr_Format(PyExc_SystemError,
- "category index out of range: %i",
- index);
- goto onError;
- }
+ index = (int) _PyUnicode_Database_GetRecord(
+ (int) *PyUnicode_AS_UNICODE(v)
+ )->category;
return PyString_FromString(_PyUnicode_CategoryNames[index]);
onError:
@@ -164,15 +157,9 @@ unicodedata_bidirectional(PyObject *self,
"need a single Unicode character as parameter");
goto onError;
}
- index = (int)unicode_db((int)*PyUnicode_AS_UNICODE(v))->bidirectional;
- if (index < 0 ||
- index > sizeof(_PyUnicode_CategoryNames) /
- sizeof(_PyUnicode_CategoryNames[0])) {
- PyErr_Format(PyExc_SystemError,
- "bidirectional index out of range: %i",
- index);
- goto onError;
- }
+ index = (int) _PyUnicode_Database_GetRecord(
+ (int) *PyUnicode_AS_UNICODE(v)
+ )->bidirectional;
return PyString_FromString(_PyUnicode_BidirectionalNames[index]);
onError:
@@ -194,7 +181,9 @@ unicodedata_combining(PyObject *self,
"need a single Unicode character as parameter");
goto onError;
}
- value = (int)unicode_db((int)*PyUnicode_AS_UNICODE(v))->combining;
+ value = (int) _PyUnicode_Database_GetRecord(
+ (int) *PyUnicode_AS_UNICODE(v)
+ )->combining;
return PyInt_FromLong(value);
onError:
@@ -216,7 +205,9 @@ unicodedata_mirrored(PyObject *self,
"need a single Unicode character as parameter");
goto onError;
}
- value = (int)unicode_db((int)*PyUnicode_AS_UNICODE(v))->mirrored;
+ value = (int) _PyUnicode_Database_GetRecord(
+ (int) *PyUnicode_AS_UNICODE(v)
+ )->mirrored;
return PyInt_FromLong(value);
onError:
@@ -238,10 +229,9 @@ unicodedata_decomposition(PyObject *self,
"need a single Unicode character as parameter");
goto onError;
}
- value = unicode_db((int)*PyUnicode_AS_UNICODE(v))->decomposition;
- if (value == NULL)
- return PyString_FromString("");
- else
+ value = _PyUnicode_Database_GetDecomposition(
+ (int) *PyUnicode_AS_UNICODE(v)
+ );
return PyString_FromString(value);
onError: