Mercurial > cpython-lru_cache-weakref
annotate Modules/unicodedata.c @ 21283:d4907cdcc299 legacy-trunk
Use an immutable tuple for __slots instead of a mutable list
Bump version number
| author | Andrew M. Kuchling <amk@amk.ca> |
|---|---|
| date | Fri, 07 Dec 2001 14:22:13 +0000 |
| parents | 38d0bd0fa7f2 |
| children | c454b76d51e7 |
| rev | line source |
|---|---|
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 /* ------------------------------------------------------------------------ |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 unicodedata -- Provides access to the Unicode 3.0 data base. |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 Data was extracted from the Unicode 3.0 UnicodeData.txt file. |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 |
|
14835
96d31a143857
unicode database compression, step 2:
Fredrik Lundh <fredrik@pythonware.com>
parents:
14818
diff
changeset
|
7 Written by Marc-Andre Lemburg (mal@lemburg.com). |
|
96d31a143857
unicode database compression, step 2:
Fredrik Lundh <fredrik@pythonware.com>
parents:
14818
diff
changeset
|
8 Modified for Python 2.0 by Fredrik Lundh (fredrik@pythonware.com) |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 |
|
14835
96d31a143857
unicode database compression, step 2:
Fredrik Lundh <fredrik@pythonware.com>
parents:
14818
diff
changeset
|
10 Copyright (c) Corporation for National Research Initiatives. |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 ------------------------------------------------------------------------ */ |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 #include "Python.h" |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
15 #include "ucnhash.h" |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
16 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
17 /* character properties */ |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
19 typedef struct { |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
20 const unsigned char category; /* index into |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
21 _PyUnicode_CategoryNames */ |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
22 const unsigned char combining; /* combining class value 0 - 255 */ |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
23 const unsigned char bidirectional; /* index into |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
24 _PyUnicode_BidirectionalNames */ |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
25 const unsigned char mirrored; /* true if mirrored in bidir mode */ |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
26 } _PyUnicode_DatabaseRecord; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
27 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
28 /* data file generated by Tools/unicode/makeunicodedata.py */ |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
29 #include "unicodedata_db.h" |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
30 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
31 static const _PyUnicode_DatabaseRecord* |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
32 _getrecord(PyUnicodeObject* v) |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
33 { |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
34 int code; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
35 int index; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
36 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
37 code = (int) *PyUnicode_AS_UNICODE(v); |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
38 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
39 if (code < 0 || code >= 65536) |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
40 index = 0; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
41 else { |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
42 index = index1[(code>>SHIFT)]; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
43 index = index2[(index<<SHIFT)+(code&((1<<SHIFT)-1))]; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
44 } |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
45 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
46 return &_PyUnicode_Database_Records[index]; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
47 } |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
48 |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 /* --- Module API --------------------------------------------------------- */ |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
50 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 static PyObject * |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
52 unicodedata_decimal(PyObject *self, PyObject *args) |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 PyUnicodeObject *v; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 PyObject *defobj = NULL; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 long rc; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
57 |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
58 if (!PyArg_ParseTuple(args, "O!|O:decimal", &PyUnicode_Type, &v, &defobj)) |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
59 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 if (PyUnicode_GET_SIZE(v) != 1) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 PyErr_SetString(PyExc_TypeError, |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
62 "need a single Unicode character as parameter"); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
63 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
65 rc = Py_UNICODE_TODECIMAL(*PyUnicode_AS_UNICODE(v)); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 if (rc < 0) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
67 if (defobj == NULL) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 PyErr_SetString(PyExc_ValueError, |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
69 "not a decimal"); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
70 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
71 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
72 else { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
73 Py_INCREF(defobj); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
74 return defobj; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
75 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
76 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 return PyInt_FromLong(rc); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
78 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
79 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
80 static PyObject * |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
81 unicodedata_digit(PyObject *self, PyObject *args) |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
82 { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
83 PyUnicodeObject *v; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
84 PyObject *defobj = NULL; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
85 long rc; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
86 |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
87 if (!PyArg_ParseTuple(args, "O!|O:digit", &PyUnicode_Type, &v, &defobj)) |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
88 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 if (PyUnicode_GET_SIZE(v) != 1) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 PyErr_SetString(PyExc_TypeError, |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
91 "need a single Unicode character as parameter"); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
92 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
94 rc = Py_UNICODE_TODIGIT(*PyUnicode_AS_UNICODE(v)); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
95 if (rc < 0) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
96 if (defobj == NULL) { |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
97 PyErr_SetString(PyExc_ValueError, "not a digit"); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
98 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
99 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
100 else { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
101 Py_INCREF(defobj); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
102 return defobj; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
103 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
104 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
105 return PyInt_FromLong(rc); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
106 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
107 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
108 static PyObject * |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
109 unicodedata_numeric(PyObject *self, PyObject *args) |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
110 { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
111 PyUnicodeObject *v; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
112 PyObject *defobj = NULL; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
113 double rc; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
114 |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
115 if (!PyArg_ParseTuple(args, "O!|O:numeric", &PyUnicode_Type, &v, &defobj)) |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
116 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
117 if (PyUnicode_GET_SIZE(v) != 1) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
118 PyErr_SetString(PyExc_TypeError, |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
119 "need a single Unicode character as parameter"); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
120 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
121 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
122 rc = Py_UNICODE_TONUMERIC(*PyUnicode_AS_UNICODE(v)); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
123 if (rc < 0) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
124 if (defobj == NULL) { |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
125 PyErr_SetString(PyExc_ValueError, "not a numeric character"); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
126 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
127 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
128 else { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
129 Py_INCREF(defobj); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
130 return defobj; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
131 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
132 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
133 return PyFloat_FromDouble(rc); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
134 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
135 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
136 static PyObject * |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
137 unicodedata_category(PyObject *self, PyObject *args) |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
138 { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
139 PyUnicodeObject *v; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
140 int index; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
141 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
142 if (!PyArg_ParseTuple(args, "O!:category", |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
143 &PyUnicode_Type, &v)) |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
144 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
145 if (PyUnicode_GET_SIZE(v) != 1) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
146 PyErr_SetString(PyExc_TypeError, |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
147 "need a single Unicode character as parameter"); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
148 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
149 } |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
150 index = (int) _getrecord(v)->category; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
151 return PyString_FromString(_PyUnicode_CategoryNames[index]); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
152 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
153 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
154 static PyObject * |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
155 unicodedata_bidirectional(PyObject *self, PyObject *args) |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
156 { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
157 PyUnicodeObject *v; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
158 int index; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
159 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
160 if (!PyArg_ParseTuple(args, "O!:bidirectional", |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
161 &PyUnicode_Type, &v)) |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
162 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
163 if (PyUnicode_GET_SIZE(v) != 1) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
164 PyErr_SetString(PyExc_TypeError, |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
165 "need a single Unicode character as parameter"); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
166 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
167 } |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
168 index = (int) _getrecord(v)->bidirectional; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
169 return PyString_FromString(_PyUnicode_BidirectionalNames[index]); |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
170 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
171 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
172 static PyObject * |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
173 unicodedata_combining(PyObject *self, PyObject *args) |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
174 { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
175 PyUnicodeObject *v; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
176 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
177 if (!PyArg_ParseTuple(args, "O!:combining", |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
178 &PyUnicode_Type, &v)) |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
179 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
180 if (PyUnicode_GET_SIZE(v) != 1) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
181 PyErr_SetString(PyExc_TypeError, |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
182 "need a single Unicode character as parameter"); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
183 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
184 } |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
185 return PyInt_FromLong((int) _getrecord(v)->combining); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
186 } |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
187 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
188 static PyObject * |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
189 unicodedata_mirrored(PyObject *self, PyObject *args) |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
190 { |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
191 PyUnicodeObject *v; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
192 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
193 if (!PyArg_ParseTuple(args, "O!:mirrored", |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
194 &PyUnicode_Type, &v)) |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
195 return NULL; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
196 if (PyUnicode_GET_SIZE(v) != 1) { |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
197 PyErr_SetString(PyExc_TypeError, |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
198 "need a single Unicode character as parameter"); |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
199 return NULL; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
200 } |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
201 return PyInt_FromLong((int) _getrecord(v)->mirrored); |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
202 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
203 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
204 static PyObject * |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
205 unicodedata_decomposition(PyObject *self, PyObject *args) |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
206 { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
207 PyUnicodeObject *v; |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
208 char decomp[256]; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
209 int code, index, count, i; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
210 |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
211 if (!PyArg_ParseTuple(args, "O!:decomposition", |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
212 &PyUnicode_Type, &v)) |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
213 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
214 if (PyUnicode_GET_SIZE(v) != 1) { |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
215 PyErr_SetString(PyExc_TypeError, |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
216 "need a single Unicode character as parameter"); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
217 return NULL; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
218 } |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
219 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
220 code = (int) *PyUnicode_AS_UNICODE(v); |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
221 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
222 if (code < 0 || code >= 65536) |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
223 index = 0; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
224 else { |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
225 index = decomp_index1[(code>>DECOMP_SHIFT)]; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
226 index = decomp_index2[(index<<DECOMP_SHIFT)+ |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
227 (code&((1<<DECOMP_SHIFT)-1))]; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
228 } |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
229 |
|
21112
38d0bd0fa7f2
unicodedata_decomposition(): sprintf -> PyOS_snprintf.
Tim Peters <tim.peters@gmail.com>
parents:
18752
diff
changeset
|
230 /* high byte is number of hex bytes (usually one or two), low byte |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
231 is prefix code (from*/ |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
232 count = decomp_data[index] >> 8; |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
233 |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
234 /* XXX: could allocate the PyString up front instead |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
235 (strlen(prefix) + 5 * count + 1 bytes) */ |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
236 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
237 /* copy prefix */ |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
238 i = strlen(decomp_prefix[decomp_data[index] & 255]); |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
239 memcpy(decomp, decomp_prefix[decomp_data[index] & 255], i); |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
240 |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
241 while (count-- > 0) { |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
242 if (i) |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
243 decomp[i++] = ' '; |
|
21112
38d0bd0fa7f2
unicodedata_decomposition(): sprintf -> PyOS_snprintf.
Tim Peters <tim.peters@gmail.com>
parents:
18752
diff
changeset
|
244 assert((size_t)i < sizeof(decomp)); |
|
38d0bd0fa7f2
unicodedata_decomposition(): sprintf -> PyOS_snprintf.
Tim Peters <tim.peters@gmail.com>
parents:
18752
diff
changeset
|
245 PyOS_snprintf(decomp + i, sizeof(decomp) - i, "%04X", |
|
38d0bd0fa7f2
unicodedata_decomposition(): sprintf -> PyOS_snprintf.
Tim Peters <tim.peters@gmail.com>
parents:
18752
diff
changeset
|
246 decomp_data[++index]); |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
247 i += strlen(decomp + i); |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
248 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
249 |
|
16090
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
250 decomp[i] = '\0'; |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
251 |
|
8ac40d48a581
compress unicode decomposition tables (this saves another 55k)
Fredrik Lundh <fredrik@pythonware.com>
parents:
14835
diff
changeset
|
252 return PyString_FromString(decomp); |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
253 } |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
254 |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
255 /* -------------------------------------------------------------------- */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
256 /* unicode character name tables */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
257 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
258 /* data file generated by Tools/unicode/makeunicodedata.py */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
259 #include "unicodename_db.h" |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
260 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
261 /* -------------------------------------------------------------------- */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
262 /* database code (cut and pasted from the unidb package) */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
263 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
264 static unsigned long |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
265 _gethash(const char *s, int len, int scale) |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
266 { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
267 int i; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
268 unsigned long h = 0; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
269 unsigned long ix; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
270 for (i = 0; i < len; i++) { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
271 h = (h * scale) + (unsigned char) toupper(s[i]); |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
272 ix = h & 0xff000000; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
273 if (ix) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
274 h = (h ^ ((ix>>24) & 0xff)) & 0x00ffffff; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
275 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
276 return h; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
277 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
278 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
279 static int |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
280 _getname(Py_UCS4 code, char* buffer, int buflen) |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
281 { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
282 int offset; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
283 int i; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
284 int word; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
285 unsigned char* w; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
286 |
|
18752
92f81449e16c
Kill a warning on the SGI compiler.
Fred Drake <fdrake@acm.org>
parents:
16977
diff
changeset
|
287 if (code >= 65536) |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
288 return 0; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
289 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
290 /* get offset into phrasebook */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
291 offset = phrasebook_offset1[(code>>phrasebook_shift)]; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
292 offset = phrasebook_offset2[(offset<<phrasebook_shift) + |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
293 (code&((1<<phrasebook_shift)-1))]; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
294 if (!offset) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
295 return 0; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
296 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
297 i = 0; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
298 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
299 for (;;) { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
300 /* get word index */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
301 word = phrasebook[offset] - phrasebook_short; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
302 if (word >= 0) { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
303 word = (word << 8) + phrasebook[offset+1]; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
304 offset += 2; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
305 } else |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
306 word = phrasebook[offset++]; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
307 if (i) { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
308 if (i > buflen) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
309 return 0; /* buffer overflow */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
310 buffer[i++] = ' '; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
311 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
312 /* copy word string from lexicon. the last character in the |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
313 word has bit 7 set. the last word in a string ends with |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
314 0x80 */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
315 w = lexicon + lexicon_offset[word]; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
316 while (*w < 128) { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
317 if (i >= buflen) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
318 return 0; /* buffer overflow */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
319 buffer[i++] = *w++; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
320 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
321 if (i >= buflen) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
322 return 0; /* buffer overflow */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
323 buffer[i++] = *w & 127; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
324 if (*w == 128) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
325 break; /* end of word */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
326 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
327 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
328 return 1; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
329 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
330 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
331 static int |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
332 _cmpname(int code, const char* name, int namelen) |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
333 { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
334 /* check if code corresponds to the given name */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
335 int i; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
336 char buffer[NAME_MAXLEN]; |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
337 if (!_getname(code, buffer, sizeof(buffer))) |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
338 return 0; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
339 for (i = 0; i < namelen; i++) { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
340 if (toupper(name[i]) != buffer[i]) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
341 return 0; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
342 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
343 return buffer[namelen] == '\0'; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
344 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
345 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
346 static int |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
347 _getcode(const char* name, int namelen, Py_UCS4* code) |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
348 { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
349 unsigned int h, v; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
350 unsigned int mask = code_size-1; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
351 unsigned int i, incr; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
352 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
353 /* the following is the same as python's dictionary lookup, with |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
354 only minor changes. see the makeunicodedata script for more |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
355 details */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
356 |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
357 h = (unsigned int) _gethash(name, namelen, code_magic); |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
358 i = (~h) & mask; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
359 v = code_hash[i]; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
360 if (!v) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
361 return 0; |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
362 if (_cmpname(v, name, namelen)) { |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
363 *code = v; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
364 return 1; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
365 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
366 incr = (h ^ (h >> 3)) & mask; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
367 if (!incr) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
368 incr = mask; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
369 for (;;) { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
370 i = (i + incr) & mask; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
371 v = code_hash[i]; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
372 if (!v) |
|
16662
89c1ccef5ce8
stupid typo (for some reason, this only caused problems on OpenVMS).
Fredrik Lundh <fredrik@pythonware.com>
parents:
16200
diff
changeset
|
373 return 0; |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
374 if (_cmpname(v, name, namelen)) { |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
375 *code = v; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
376 return 1; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
377 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
378 incr = incr << 1; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
379 if (incr > mask) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
380 incr = incr ^ code_poly; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
381 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
382 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
383 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
384 static const _PyUnicode_Name_CAPI hashAPI = |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
385 { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
386 sizeof(_PyUnicode_Name_CAPI), |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
387 _getname, |
|
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
388 _getcode |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
389 }; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
390 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
391 /* -------------------------------------------------------------------- */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
392 /* Python bindings */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
393 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
394 static PyObject * |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
395 unicodedata_name(PyObject* self, PyObject* args) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
396 { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
397 char name[NAME_MAXLEN]; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
398 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
399 PyUnicodeObject* v; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
400 PyObject* defobj = NULL; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
401 if (!PyArg_ParseTuple(args, "O!|O:name", &PyUnicode_Type, &v, &defobj)) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
402 return NULL; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
403 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
404 if (PyUnicode_GET_SIZE(v) != 1) { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
405 PyErr_SetString(PyExc_TypeError, |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
406 "need a single Unicode character as parameter"); |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
407 return NULL; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
408 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
409 |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
410 if (!_getname((Py_UCS4) *PyUnicode_AS_UNICODE(v), |
|
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
411 name, sizeof(name))) { |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
412 if (defobj == NULL) { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
413 PyErr_SetString(PyExc_ValueError, "no such name"); |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
414 return NULL; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
415 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
416 else { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
417 Py_INCREF(defobj); |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
418 return defobj; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
419 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
420 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
421 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
422 return Py_BuildValue("s", name); |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
423 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
424 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
425 static PyObject * |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
426 unicodedata_lookup(PyObject* self, PyObject* args) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
427 { |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
428 Py_UCS4 code; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
429 Py_UNICODE str[1]; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
430 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
431 char* name; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
432 int namelen; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
433 if (!PyArg_ParseTuple(args, "s#:lookup", &name, &namelen)) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
434 return NULL; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
435 |
|
16666
e9fcb46c1f2c
renamed internal functions to avoid name clashes under OpenVMS
Fredrik Lundh <fredrik@pythonware.com>
parents:
16662
diff
changeset
|
436 if (!_getcode(name, namelen, &code)) { |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
437 PyErr_SetString(PyExc_KeyError, "undefined character name"); |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
438 return NULL; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
439 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
440 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
441 str[0] = (Py_UNICODE) code; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
442 return PyUnicode_FromUnicode(str, 1); |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
443 } |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
444 |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
445 /* XXX Add doc strings. */ |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
446 |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
447 static PyMethodDef unicodedata_functions[] = { |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
448 {"decimal", unicodedata_decimal, METH_VARARGS}, |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
449 {"digit", unicodedata_digit, METH_VARARGS}, |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
450 {"numeric", unicodedata_numeric, METH_VARARGS}, |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
451 {"category", unicodedata_category, METH_VARARGS}, |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
452 {"bidirectional", unicodedata_bidirectional, METH_VARARGS}, |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
453 {"combining", unicodedata_combining, METH_VARARGS}, |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
454 {"mirrored", unicodedata_mirrored, METH_VARARGS}, |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
455 {"decomposition",unicodedata_decomposition, METH_VARARGS}, |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
456 {"name", unicodedata_name, METH_VARARGS}, |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
457 {"lookup", unicodedata_lookup, METH_VARARGS}, |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
458 {NULL, NULL} /* sentinel */ |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
459 }; |
|
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
460 |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
461 static char *unicodedata_docstring = "unicode character database"; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
462 |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
463 DL_EXPORT(void) |
|
13651
8a063423e0b7
Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents:
12196
diff
changeset
|
464 initunicodedata(void) |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
465 { |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
466 PyObject *m, *d, *v; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
467 |
|
16977
0b4c57a25977
Be a bit more strict in setting up the export of the C API for this
Fred Drake <fdrake@acm.org>
parents:
16666
diff
changeset
|
468 m = Py_InitModule3( |
|
0b4c57a25977
Be a bit more strict in setting up the export of the C API for this
Fred Drake <fdrake@acm.org>
parents:
16666
diff
changeset
|
469 "unicodedata", unicodedata_functions, unicodedata_docstring); |
|
16200
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
470 if (!m) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
471 return; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
472 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
473 d = PyModule_GetDict(m); |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
474 if (!d) |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
475 return; |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
476 |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
477 /* Export C API */ |
|
3484670c37f2
Move uchhash functionality into unicodedata (after the recent
Fredrik Lundh <fredrik@pythonware.com>
parents:
16091
diff
changeset
|
478 v = PyCObject_FromVoidPtr((void *) &hashAPI, NULL); |
|
16977
0b4c57a25977
Be a bit more strict in setting up the export of the C API for this
Fred Drake <fdrake@acm.org>
parents:
16666
diff
changeset
|
479 if (v != NULL) { |
|
0b4c57a25977
Be a bit more strict in setting up the export of the C API for this
Fred Drake <fdrake@acm.org>
parents:
16666
diff
changeset
|
480 PyDict_SetItemString(d, "ucnhash_CAPI", v); |
|
0b4c57a25977
Be a bit more strict in setting up the export of the C API for this
Fred Drake <fdrake@acm.org>
parents:
16666
diff
changeset
|
481 Py_DECREF(v); |
|
0b4c57a25977
Be a bit more strict in setting up the export of the C API for this
Fred Drake <fdrake@acm.org>
parents:
16666
diff
changeset
|
482 } |
|
11981
d7a4a5ae2dae
Module unicodedata -- Provides access to the Unicode 3.0 data base.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
483 } |
