Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/make_ctype.py @ 83447:678564fc0962 3.3
#17789: test_random now works with unittest test discovery. Patch by Zachary Ware.
| author | Ezio Melotti <ezio.melotti@gmail.com> |
|---|---|
| date | Fri, 19 Apr 2013 05:45:27 +0300 |
| parents | 65d5ecefd50d |
| children |
| rev | line source |
|---|---|
|
71557
65d5ecefd50d
Fix missing or wrong shebangs and missing executable bits for scripts (#10318)
Éric Araujo <merwok@netwok.org>
parents:
43509
diff
changeset
|
1 #!/usr/bin/env python3 |
|
43509
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 """Script that generates the ctype.h-replacement in stringobject.c.""" |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 NAMES = ("LOWER", "UPPER", "ALPHA", "DIGIT", "XDIGIT", "ALNUM", "SPACE") |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 print(""" |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 #define FLAG_LOWER 0x01 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 #define FLAG_UPPER 0x02 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 #define FLAG_ALPHA (FLAG_LOWER|FLAG_UPPER) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 #define FLAG_DIGIT 0x04 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 #define FLAG_ALNUM (FLAG_ALPHA|FLAG_DIGIT) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 #define FLAG_SPACE 0x08 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 #define FLAG_XDIGIT 0x10 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 static unsigned int ctype_table[256] = {""") |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 for i in range(128): |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 c = chr(i) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 flags = [] |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 for name in NAMES: |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 if name in ("ALPHA", "ALNUM"): |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 continue |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 if name == "XDIGIT": |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 method = lambda: c.isdigit() or c.upper() in "ABCDEF" |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 else: |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 method = getattr(c, "is" + name.lower()) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 if method(): |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 flags.append("FLAG_" + name) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 rc = repr(c) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 if c == '\v': |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 rc = "'\\v'" |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 elif c == '\f': |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 rc = "'\\f'" |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 if not flags: |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 print(" 0, /* 0x%x %s */" % (i, rc)) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 else: |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 print(" %s, /* 0x%x %s */" % ("|".join(flags), i, rc)) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 for i in range(128, 256, 16): |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 print(" %s," % ", ".join(16*["0"])) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 print("};") |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 print("") |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 for name in NAMES: |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 print("#define IS%s(c) (ctype_table[Py_CHARMASK(c)] & FLAG_%s)" % |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
47 (name, name)) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
48 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 print("") |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
50 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 for name in NAMES: |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
52 name = "is" + name.lower() |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 print("#undef %s" % name) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 print("#define %s(c) undefined_%s(c)" % (name, name)) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 print(""" |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
57 static unsigned char ctype_tolower[256] = {""") |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
59 for i in range(0, 256, 8): |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 values = [] |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 for i in range(i, i+8): |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
62 if i < 128: |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 c = chr(i) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 if c.isupper(): |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
65 i = ord(c.lower()) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 values.append("0x%02x" % i) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
67 print(" %s," % ", ".join(values)) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
69 print("};") |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
70 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
71 print(""" |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
72 static unsigned char ctype_toupper[256] = {""") |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
73 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
74 for i in range(0, 256, 8): |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
75 values = [] |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
76 for i in range(i, i+8): |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 if i < 128: |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
78 c = chr(i) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
79 if c.islower(): |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
80 i = ord(c.upper()) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
81 values.append("0x%02x" % i) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
82 print(" %s," % ", ".join(values)) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
83 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
84 print("};") |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
85 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
86 print(""" |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
87 #define TOLOWER(c) (ctype_tolower[Py_CHARMASK(c)]) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
88 #define TOUPPER(c) (ctype_toupper[Py_CHARMASK(c)]) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 #undef tolower |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
91 #define tolower(c) undefined_tolower(c) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
92 #undef toupper |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 #define toupper(c) undefined_toupper(c) |
|
4a72fc5dfb79
Silly script I'd rather not throw away.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
94 """) |
