Raymond Toy pushed to branch issue-316-support-roundtrip-char-casing at cmucl / cmucl

Commits:

2 changed files:

Changes:

  • src/lisp/case-table.c
    1
    +/*
    
    2
    + * DO NOT EDIT.
    
    3
    + *
    
    4
    + * This was generated by (BUILD-CASE-TABLE 6) in
    
    5
    + * src/tools/create-case-table.c.
    
    6
    + */
    
    7
    +
    
    1 8
     #include <stdint.h>
    
    2 9
     #include <stddef.h>
    
    3 10
     
    
    4
    -const uint32_t stage2_1 [64] = {
    
    11
    +const uint32_t stage2_1[64] = {
    
    5 12
         0x00000000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000,
    
    6 13
         0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000,
    
    7 14
         0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000,
    
    ... ... @@ -14,7 +21,8 @@ const uint32_t stage2_1 [64] = {
    14 21
         0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000000,
    
    15 22
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    16 23
     };
    
    17
    -const uint32_t stage2_3 [64] = {
    
    24
    +
    
    25
    +const uint32_t stage2_3[64] = {
    
    18 26
         0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000,
    
    19 27
         0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000,
    
    20 28
         0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000,
    
    ... ... @@ -27,7 +35,8 @@ const uint32_t stage2_3 [64] = {
    27 35
         0x00000020, 0x00000000, 0x00000020, 0x00000020, 0x00000020, 0x00000020,
    
    28 36
         0x00000020, 0x00000020, 0x00000020, 0x0000FF87
    
    29 37
     };
    
    30
    -const uint32_t stage2_4 [64] = {
    
    38
    +
    
    39
    +const uint32_t stage2_4[64] = {
    
    31 40
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    32 41
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    33 42
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -40,7 +49,8 @@ const uint32_t stage2_4 [64] = {
    40 49
         0xFFFF0000, 0x00000001, 0x00000000, 0xFFFF0000, 0x00000001, 0xFFFF0000,
    
    41 50
         0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000
    
    42 51
     };
    
    43
    -const uint32_t stage2_5 [64] = {
    
    52
    +
    
    53
    +const uint32_t stage2_5[64] = {
    
    44 54
         0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000,
    
    45 55
         0x00000001, 0xFFFF0000, 0x00000001, 0x00000000, 0xFFFF0000, 0x00000001,
    
    46 56
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -53,7 +63,8 @@ const uint32_t stage2_5 [64] = {
    53 63
         0xFFFF0000, 0x00000001, 0x00790000, 0xFFFF0000, 0x00000001, 0xFFFF0000,
    
    54 64
         0x00000001, 0xFFFF0000, 0x00000001, 0x00000000
    
    55 65
     };
    
    56
    -const uint32_t stage2_6 [64] = {
    
    66
    +
    
    67
    +const uint32_t stage2_6[64] = {
    
    57 68
         0x0000FF3D, 0xFF2E0000, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    58 69
         0xFF320000, 0xFFFF0000, 0x00000001, 0xFF330000, 0xFF330000, 0xFFFF0000,
    
    59 70
         0x00000001, 0x00000000, 0xFFB10000, 0xFF360000, 0xFF350000, 0xFFFF0000,
    
    ... ... @@ -66,7 +77,8 @@ const uint32_t stage2_6 [64] = {
    66 77
         0x00000001, 0xFF250000, 0xFFFF0000, 0x00000001, 0x00000000, 0x00000000,
    
    67 78
         0xFFFF0000, 0x00000001, 0x00000000, 0x0000FFC8
    
    68 79
     };
    
    69
    -const uint32_t stage2_7 [64] = {
    
    80
    +
    
    81
    +const uint32_t stage2_7[64] = {
    
    70 82
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFE0000, 0x00000000,
    
    71 83
         0x00000002, 0xFFFE0000, 0x00000000, 0x00000002, 0xFFFE0000, 0x00000000,
    
    72 84
         0x00000002, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000,
    
    ... ... @@ -79,7 +91,8 @@ const uint32_t stage2_7 [64] = {
    79 91
         0x00610000, 0x00380000, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    80 92
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001
    
    81 93
     };
    
    82
    -const uint32_t stage2_8 [64] = {
    
    94
    +
    
    95
    +const uint32_t stage2_8[64] = {
    
    83 96
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    84 97
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    85 98
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -92,7 +105,8 @@ const uint32_t stage2_8 [64] = {
    92 105
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xD5D50000, 0xFFFF0000,
    
    93 106
         0x00000001, 0x00A30000, 0xD5D80000, 0x0000D5C1
    
    94 107
     };
    
    95
    -const uint32_t stage2_9 [64] = {
    
    108
    +
    
    109
    +const uint32_t stage2_9[64] = {
    
    96 110
         0x0000D5C1, 0xFFFF0000, 0x00000001, 0x00C30000, 0xFFBB0000, 0xFFB90000,
    
    97 111
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    98 112
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0x0000D5E1, 0x0000D5E4,
    
    ... ... @@ -105,7 +119,8 @@ const uint32_t stage2_9 [64] = {
    105 119
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    106 120
         0x00000000, 0x0000D619, 0x00000000, 0x00000000
    
    107 121
     };
    
    108
    -const uint32_t stage2_10 [64] = {
    
    122
    +
    
    123
    +const uint32_t stage2_10[64] = {
    
    109 124
         0x000000DA, 0x00000000, 0x00000000, 0x000000DA, 0x00000000, 0x00000000,
    
    110 125
         0x00000000, 0x00000000, 0x000000DA, 0x00000045, 0x000000D9, 0x000000D9,
    
    111 126
         0x00000047, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -118,7 +133,8 @@ const uint32_t stage2_10 [64] = {
    118 133
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    119 134
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    120 135
     };
    
    121
    -const uint32_t stage2_13 [64] = {
    
    136
    +
    
    137
    +const uint32_t stage2_13[64] = {
    
    122 138
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    123 139
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    124 140
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -131,7 +147,8 @@ const uint32_t stage2_13 [64] = {
    131 147
         0xFFFF0000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x0000FF7E,
    
    132 148
         0x0000FF7E, 0x0000FF7E, 0x00000000, 0x00000000
    
    133 149
     };
    
    134
    -const uint32_t stage2_14 [64] = {
    
    150
    +
    
    151
    +const uint32_t stage2_14[64] = {
    
    135 152
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    136 153
         0xFFDA0000, 0x00000000, 0xFFDB0000, 0xFFDB0000, 0xFFDB0000, 0x00000000,
    
    137 154
         0xFFC00000, 0x00000000, 0xFFC10000, 0xFFC10000, 0x00000000, 0xFFE00000,
    
    ... ... @@ -144,7 +161,8 @@ const uint32_t stage2_14 [64] = {
    144 161
         0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020,
    
    145 162
         0x00000020, 0x00000020, 0x00000020, 0x00000020
    
    146 163
     };
    
    147
    -const uint32_t stage2_15 [64] = {
    
    164
    +
    
    165
    +const uint32_t stage2_15[64] = {
    
    148 166
         0x00000020, 0x00000020, 0x00000000, 0x00000020, 0x00000020, 0x00000020,
    
    149 167
         0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020,
    
    150 168
         0x00000040, 0x0000003F, 0x0000003F, 0xFFF80000, 0x00000000, 0x00000000,
    
    ... ... @@ -157,7 +175,8 @@ const uint32_t stage2_15 [64] = {
    157 175
         0x00000000, 0xFFFF0000, 0x00000001, 0x00070000, 0xFFFF0000, 0x00000001,
    
    158 176
         0x00000000, 0x00820000, 0x00820000, 0x00820000
    
    159 177
     };
    
    160
    -const uint32_t stage2_16 [64] = {
    
    178
    +
    
    179
    +const uint32_t stage2_16[64] = {
    
    161 180
         0xFFB00000, 0xFFB00000, 0xFFB00000, 0xFFB00000, 0xFFB00000, 0xFFB00000,
    
    162 181
         0xFFB00000, 0xFFB00000, 0xFFB00000, 0xFFB00000, 0xFFB00000, 0xFFB00000,
    
    163 182
         0xFFB00000, 0xFFB00000, 0xFFB00000, 0xFFB00000, 0xFFE00000, 0xFFE00000,
    
    ... ... @@ -170,7 +189,8 @@ const uint32_t stage2_16 [64] = {
    170 189
         0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020,
    
    171 190
         0x00000020, 0x00000020, 0x00000020, 0x00000020
    
    172 191
     };
    
    173
    -const uint32_t stage2_17 [64] = {
    
    192
    +
    
    193
    +const uint32_t stage2_17[64] = {
    
    174 194
         0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020,
    
    175 195
         0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020,
    
    176 196
         0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000050, 0x00000050,
    
    ... ... @@ -183,7 +203,8 @@ const uint32_t stage2_17 [64] = {
    183 203
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    184 204
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001
    
    185 205
     };
    
    186
    -const uint32_t stage2_18 [64] = {
    
    206
    +
    
    207
    +const uint32_t stage2_18[64] = {
    
    187 208
         0xFFFF0000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    188 209
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF0000, 0x00000001,
    
    189 210
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -196,7 +217,8 @@ const uint32_t stage2_18 [64] = {
    196 217
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    197 218
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001
    
    198 219
     };
    
    199
    -const uint32_t stage2_19 [64] = {
    
    220
    +
    
    221
    +const uint32_t stage2_19[64] = {
    
    200 222
         0xFFF10000, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000,
    
    201 223
         0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000,
    
    202 224
         0x00000001, 0xFFFF0000, 0x00000001, 0x0000000F, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -209,7 +231,8 @@ const uint32_t stage2_19 [64] = {
    209 231
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    210 232
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001
    
    211 233
     };
    
    212
    -const uint32_t stage2_20 [64] = {
    
    234
    +
    
    235
    +const uint32_t stage2_20[64] = {
    
    213 236
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    214 237
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    215 238
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -222,7 +245,8 @@ const uint32_t stage2_20 [64] = {
    222 245
         0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000,
    
    223 246
         0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000
    
    224 247
     };
    
    225
    -const uint32_t stage2_21 [64] = {
    
    248
    +
    
    249
    +const uint32_t stage2_21[64] = {
    
    226 250
         0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000,
    
    227 251
         0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000,
    
    228 252
         0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000,
    
    ... ... @@ -235,7 +259,8 @@ const uint32_t stage2_21 [64] = {
    235 259
         0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030,
    
    236 260
         0x00000030, 0x00000030, 0x00000030, 0x00000030
    
    237 261
     };
    
    238
    -const uint32_t stage2_22 [64] = {
    
    262
    +
    
    263
    +const uint32_t stage2_22[64] = {
    
    239 264
         0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030,
    
    240 265
         0x00000030, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    241 266
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -248,7 +273,8 @@ const uint32_t stage2_22 [64] = {
    248 273
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    249 274
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    250 275
     };
    
    251
    -const uint32_t stage2_66 [64] = {
    
    276
    +
    
    277
    +const uint32_t stage2_66[64] = {
    
    252 278
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    253 279
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    254 280
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -261,7 +287,8 @@ const uint32_t stage2_66 [64] = {
    261 287
         0xE3A00000, 0xE3A00000, 0xE3A00000, 0xE3A00000, 0xE3A00000, 0xE3A00000,
    
    262 288
         0xE3A00000, 0xE3A00000, 0xE3A00000, 0xE3A00000
    
    263 289
     };
    
    264
    -const uint32_t stage2_67 [64] = {
    
    290
    +
    
    291
    +const uint32_t stage2_67[64] = {
    
    265 292
         0xE3A00000, 0xE3A00000, 0xE3A00000, 0xE3A00000, 0xE3A00000, 0xE3A00000,
    
    266 293
         0x00000000, 0xE3A00000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    267 294
         0x00000000, 0xE3A00000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -274,7 +301,8 @@ const uint32_t stage2_67 [64] = {
    274 301
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    275 302
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    276 303
     };
    
    277
    -const uint32_t stage2_117 [64] = {
    
    304
    +
    
    305
    +const uint32_t stage2_117[64] = {
    
    278 306
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    279 307
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    280 308
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -287,7 +315,8 @@ const uint32_t stage2_117 [64] = {
    287 315
         0x00000000, 0x00000000, 0x00000000, 0x000075FC, 0x00000000, 0x00000000,
    
    288 316
         0x00000000, 0x0000F11A, 0x00000000, 0x00000000
    
    289 317
     };
    
    290
    -const uint32_t stage2_120 [64] = {
    
    318
    +
    
    319
    +const uint32_t stage2_120[64] = {
    
    291 320
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    292 321
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    293 322
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -300,7 +329,8 @@ const uint32_t stage2_120 [64] = {
    300 329
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    301 330
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001
    
    302 331
     };
    
    303
    -const uint32_t stage2_121 [64] = {
    
    332
    +
    
    333
    +const uint32_t stage2_121[64] = {
    
    304 334
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    305 335
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    306 336
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -313,7 +343,8 @@ const uint32_t stage2_121 [64] = {
    313 343
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    314 344
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001
    
    315 345
     };
    
    316
    -const uint32_t stage2_122 [64] = {
    
    346
    +
    
    347
    +const uint32_t stage2_122[64] = {
    
    317 348
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    318 349
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    319 350
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -326,7 +357,8 @@ const uint32_t stage2_122 [64] = {
    326 357
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    327 358
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001
    
    328 359
     };
    
    329
    -const uint32_t stage2_123 [64] = {
    
    360
    +
    
    361
    +const uint32_t stage2_123[64] = {
    
    330 362
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    331 363
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    332 364
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -339,7 +371,8 @@ const uint32_t stage2_123 [64] = {
    339 371
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    340 372
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001
    
    341 373
     };
    
    342
    -const uint32_t stage2_124 [64] = {
    
    374
    +
    
    375
    +const uint32_t stage2_124[64] = {
    
    343 376
         0x0000FFF8, 0x0000FFF8, 0x0000FFF8, 0x0000FFF8, 0x0000FFF8, 0x0000FFF8,
    
    344 377
         0x0000FFF8, 0x0000FFF8, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
    
    345 378
         0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x0000FFF8, 0x0000FFF8,
    
    ... ... @@ -352,7 +385,8 @@ const uint32_t stage2_124 [64] = {
    352 385
         0x0000FFF8, 0x0000FFF8, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
    
    353 386
         0x00080000, 0x00080000, 0x00080000, 0x00080000
    
    354 387
     };
    
    355
    -const uint32_t stage2_125 [64] = {
    
    388
    +
    
    389
    +const uint32_t stage2_125[64] = {
    
    356 390
         0x0000FFF8, 0x0000FFF8, 0x0000FFF8, 0x0000FFF8, 0x0000FFF8, 0x0000FFF8,
    
    357 391
         0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
    
    358 392
         0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x0000FFF8,
    
    ... ... @@ -365,7 +399,8 @@ const uint32_t stage2_125 [64] = {
    365 399
         0x0000FF9C, 0x0000FF9C, 0x0000FF80, 0x0000FF80, 0x0000FF90, 0x0000FF90,
    
    366 400
         0x0000FF82, 0x0000FF82, 0x00000000, 0x00000000
    
    367 401
     };
    
    368
    -const uint32_t stage2_126 [64] = {
    
    402
    +
    
    403
    +const uint32_t stage2_126[64] = {
    
    369 404
         0x0000FFF8, 0x0000FFF8, 0x0000FFF8, 0x0000FFF8, 0x0000FFF8, 0x0000FFF8,
    
    370 405
         0x0000FFF8, 0x0000FFF8, 0x00080000, 0x00080000, 0x00080000, 0x00080000,
    
    371 406
         0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x0000FFF8, 0x0000FFF8,
    
    ... ... @@ -378,7 +413,8 @@ const uint32_t stage2_126 [64] = {
    378 413
         0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x004A0000, 0x004A0000,
    
    379 414
         0x00090000, 0x00000000, 0x00000000, 0x00000000
    
    380 415
     };
    
    381
    -const uint32_t stage2_127 [64] = {
    
    416
    +
    
    417
    +const uint32_t stage2_127[64] = {
    
    382 418
         0x00000000, 0x00000000, 0x00000000, 0x0000FFF7, 0x00000000, 0x00000000,
    
    383 419
         0x00000000, 0x00000000, 0x00560000, 0x00560000, 0x00560000, 0x00560000,
    
    384 420
         0x00090000, 0x00000000, 0x00000000, 0x00000000, 0x0000FFF8, 0x0000FFF8,
    
    ... ... @@ -391,7 +427,8 @@ const uint32_t stage2_127 [64] = {
    391 427
         0x00000000, 0x00000000, 0x00800000, 0x00800000, 0x007E0000, 0x007E0000,
    
    392 428
         0x00090000, 0x00000000, 0x00000000, 0x00000000
    
    393 429
     };
    
    394
    -const uint32_t stage2_132 [64] = {
    
    430
    +
    
    431
    +const uint32_t stage2_132[64] = {
    
    395 432
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    396 433
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    397 434
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -404,7 +441,8 @@ const uint32_t stage2_132 [64] = {
    404 441
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    405 442
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    406 443
     };
    
    407
    -const uint32_t stage2_133 [64] = {
    
    444
    +
    
    445
    +const uint32_t stage2_133[64] = {
    
    408 446
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    409 447
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    410 448
         0x00000000, 0x00000000, 0x0000001C, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -417,7 +455,8 @@ const uint32_t stage2_133 [64] = {
    417 455
         0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010,
    
    418 456
         0x00000010, 0x00000010, 0x00000010, 0x00000010
    
    419 457
     };
    
    420
    -const uint32_t stage2_134 [64] = {
    
    458
    +
    
    459
    +const uint32_t stage2_134[64] = {
    
    421 460
         0x00000000, 0x00000000, 0x00000000, 0xFFFF0000, 0x00000001, 0x00000000,
    
    422 461
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    423 462
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -430,7 +469,8 @@ const uint32_t stage2_134 [64] = {
    430 469
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    431 470
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    432 471
     };
    
    433
    -const uint32_t stage2_146 [64] = {
    
    472
    +
    
    473
    +const uint32_t stage2_146[64] = {
    
    434 474
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    435 475
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    436 476
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -443,7 +483,8 @@ const uint32_t stage2_146 [64] = {
    443 483
         0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000,
    
    444 484
         0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000
    
    445 485
     };
    
    446
    -const uint32_t stage2_147 [64] = {
    
    486
    +
    
    487
    +const uint32_t stage2_147[64] = {
    
    447 488
         0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000,
    
    448 489
         0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000,
    
    449 490
         0xFFE60000, 0xFFE60000, 0xFFE60000, 0xFFE60000, 0x0000001A, 0x0000001A,
    
    ... ... @@ -456,7 +497,8 @@ const uint32_t stage2_147 [64] = {
    456 497
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    457 498
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    458 499
     };
    
    459
    -const uint32_t stage2_176 [64] = {
    
    500
    +
    
    501
    +const uint32_t stage2_176[64] = {
    
    460 502
         0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000,
    
    461 503
         0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000,
    
    462 504
         0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000, 0xFFD00000,
    
    ... ... @@ -469,7 +511,8 @@ const uint32_t stage2_176 [64] = {
    469 511
         0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030,
    
    470 512
         0x00000030, 0x00000030, 0x00000030, 0x00000030
    
    471 513
     };
    
    472
    -const uint32_t stage2_177 [64] = {
    
    514
    +
    
    515
    +const uint32_t stage2_177[64] = {
    
    473 516
         0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030,
    
    474 517
         0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030,
    
    475 518
         0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030, 0x00000030,
    
    ... ... @@ -482,7 +525,8 @@ const uint32_t stage2_177 [64] = {
    482 525
         0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    483 526
         0x00000000, 0x00000000, 0x2A3F0000, 0x2A3F0000
    
    484 527
     };
    
    485
    -const uint32_t stage2_178 [64] = {
    
    528
    +
    
    529
    +const uint32_t stage2_178[64] = {
    
    486 530
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    487 531
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    488 532
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -495,7 +539,8 @@ const uint32_t stage2_178 [64] = {
    495 539
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    496 540
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001
    
    497 541
     };
    
    498
    -const uint32_t stage2_179 [64] = {
    
    542
    +
    
    543
    +const uint32_t stage2_179[64] = {
    
    499 544
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    500 545
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    501 546
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -508,7 +553,8 @@ const uint32_t stage2_179 [64] = {
    508 553
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    509 554
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    510 555
     };
    
    511
    -const uint32_t stage2_180 [64] = {
    
    556
    +
    
    557
    +const uint32_t stage2_180[64] = {
    
    512 558
         0x00001C60, 0x00001C60, 0x00001C60, 0x00001C60, 0x00001C60, 0x00001C60,
    
    513 559
         0x00001C60, 0x00001C60, 0x00001C60, 0x00001C60, 0x00001C60, 0x00001C60,
    
    514 560
         0x00001C60, 0x00001C60, 0x00001C60, 0x00001C60, 0x00001C60, 0x00001C60,
    
    ... ... @@ -521,7 +567,8 @@ const uint32_t stage2_180 [64] = {
    521 567
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    522 568
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    523 569
     };
    
    524
    -const uint32_t stage2_665 [64] = {
    
    570
    +
    
    571
    +const uint32_t stage2_665[64] = {
    
    525 572
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    526 573
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    527 574
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -534,7 +581,8 @@ const uint32_t stage2_665 [64] = {
    534 581
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    535 582
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    536 583
     };
    
    537
    -const uint32_t stage2_666 [64] = {
    
    584
    +
    
    585
    +const uint32_t stage2_666[64] = {
    
    538 586
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    539 587
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    540 588
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -547,7 +595,8 @@ const uint32_t stage2_666 [64] = {
    547 595
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    548 596
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    549 597
     };
    
    550
    -const uint32_t stage2_668 [64] = {
    
    598
    +
    
    599
    +const uint32_t stage2_668[64] = {
    
    551 600
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    552 601
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    553 602
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -560,7 +609,8 @@ const uint32_t stage2_668 [64] = {
    560 609
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    561 610
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001
    
    562 611
     };
    
    563
    -const uint32_t stage2_669 [64] = {
    
    612
    +
    
    613
    +const uint32_t stage2_669[64] = {
    
    564 614
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    565 615
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    566 616
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -573,7 +623,8 @@ const uint32_t stage2_669 [64] = {
    573 623
         0x00000000, 0x00000000, 0x00000000, 0xFFFF0000, 0x00000001, 0xFFFF0000,
    
    574 624
         0x00000001, 0x8A040000, 0xFFFF0000, 0x00000001
    
    575 625
     };
    
    576
    -const uint32_t stage2_670 [64] = {
    
    626
    +
    
    627
    +const uint32_t stage2_670[64] = {
    
    577 628
         0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001, 0xFFFF0000, 0x00000001,
    
    578 629
         0xFFFF0000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0xFFFF0000,
    
    579 630
         0x00000001, 0xA5280000, 0x00000000, 0x00000000, 0xFFFF0000, 0x00000001,
    
    ... ... @@ -586,7 +637,8 @@ const uint32_t stage2_670 [64] = {
    586 637
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    587 638
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    588 639
     };
    
    589
    -const uint32_t stage2_1020 [64] = {
    
    640
    +
    
    641
    +const uint32_t stage2_1020[64] = {
    
    590 642
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    591 643
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    592 644
         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    
    ... ... @@ -599,7 +651,8 @@ const uint32_t stage2_1020 [64] = {
    599 651
         0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0xFFE00000, 0x00000000,
    
    600 652
         0x00000000, 0x00000000, 0x00000000, 0x00000000
    
    601 653
     };
    
    602
    -const uint32_t stage2_1021 [64] = {
    
    654
    +
    
    655
    +const uint32_t stage2_1021[64] = {
    
    603 656
         0x00000000, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020,
    
    604 657
         0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020,
    
    605 658
         0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020,
    

  • src/tools/create-case-table.lisp
    1
    -(defun build-case-table (&optional (stage2-size 6))
    
    1
    +;; Creates a table of tables that maps a lower case letter to an upper
    
    2
    +;; case letter or an upper case letter to a lower case letter.  This
    
    3
    +;; mapping only works if the roundtrip casing returns the original
    
    4
    +;; character, as required by CLHS.
    
    5
    +;;
    
    6
    +;; STAGE2-SIZE is the number of bits to used for the index of the
    
    7
    +;; second stage table.
    
    8
    +;;
    
    9
    +;; Let C be a 16-bit character code.  C is decomposed into two parts.
    
    10
    +;; The high bits are used as the index into the first table, and the
    
    11
    +;; low bits are used as the index into the second table.  The number
    
    12
    +;; of low bits is STAGE2-SIZE.
    
    13
    +;;
    
    14
    +;; If the second stage table is all zeroes, the table is replaced by
    
    15
    +;; NIL since it contains no valid mapping of lower or upper case
    
    16
    +;; letters.
    
    17
    +;;
    
    18
    +;; Each element of this table is 32-bits long.  The low 16 bits
    
    19
    +;; contains the mapping of C to the corresponding upper case letter.
    
    20
    +;; The high 16 bits maps C to the corresponding lower case letter.
    
    21
    +(defun compute-case-table (stage2-size)
    
    2 22
       (let ((table (make-array (ash 1 (- 16 stage2-size)))))
    
    3 23
         (dotimes (i (length table))
    
    4 24
           (setf (aref table i) (make-array (ash 1 stage2-size)
    
    5 25
                                            :initial-element 0)))
    
    6
    -    (dotimes (i #xFFFF)
    
    7
    -      ;; Compute mapping from lower case to upper case.  The offset is
    
    8
    -      ;; stored in the low 16 bits of the stage2 table.
    
    9
    -      (when (and (/= i (lisp::unicode-upper i))
    
    10
    -		 (= i (lisp::unicode-lower (lisp::unicode-upper i))))
    
    11
    -	  (let ((stage1 (ldb (byte (- 16 stage2-size) stage2-size) i))
    
    12
    -		(stage2 (ldb (byte stage2-size 0) i))
    
    13
    -		(delta (ldb (byte 16 0) (- i (lisp::unicode-upper i)))))
    
    26
    +    (dotimes (i char-code-limit)
    
    27
    +      (let ((stage1 (ldb (byte (- 16 stage2-size) stage2-size) i))
    
    28
    +	    (stage2 (ldb (byte stage2-size 0) i)))
    
    29
    +        ;; Compute mapping from lower case to upper case.  The offset
    
    30
    +        ;; is stored in the low 16 bits of the stage2 table.
    
    31
    +        ;;
    
    32
    +        ;; Only consider characters that have an upper case letter and
    
    33
    +        ;; whose lowercase version returns the original letter.
    
    34
    +        (when (and (/= i (lisp::unicode-upper i))
    
    35
    +		   (= i (lisp::unicode-lower (lisp::unicode-upper i))))
    
    36
    +	  (let ((delta (ldb (byte 16 0) (- i (lisp::unicode-upper i)))))
    
    14 37
     	    (setf (aref (aref table stage1) stage2) delta)))
    
    15
    -      ;; Compute mapping from upper case to lower case.  The offset is
    
    16
    -      ;; stored in the high 16 bits ofthe stage2 table.
    
    17
    -      (when (and (/= i (lisp::unicode-lower i))
    
    18
    -		 (= i (lisp::unicode-upper (lisp::unicode-lower i))))
    
    19
    -	(let ((stage1 (ldb (byte (- 16 stage2-size) stage2-size) i))
    
    20
    -	      (stage2 (ldb (byte stage2-size 0) i))
    
    21
    -	      (delta (ldb (byte 16 0) (- i (lisp::unicode-lower i)))))
    
    22
    -	  (setf (aref (aref table stage1) stage2) (ash delta 16)))))
    
    23
    -    (let ((empty (count-if #'(lambda (x) (every #'zerop x)) table)))
    
    24
    -      (format t "~D non-empty ~D empty~%" (- (length table) empty) empty)
    
    25
    -      (dotimes (k (length table))
    
    26
    -        (let ((empty (count-if-not #'zerop (aref table k))))
    
    27
    -          (when (zerop empty)
    
    28
    -            (setf (aref table k) nil))
    
    29
    -          #+nil
    
    30
    -          (format t "~3D: ~D: ~A~%" k empty (aref table k))))
    
    31
    -      (let ((stage2 (loop for v across table
    
    32
    -                          when v
    
    33
    -                            sum (length v))))
    
    34
    -        (format t "stage1 entries:  ~D~%" (length table))
    
    35
    -        (format t "stage2 entries:  ~D (length ~D)~%"
    
    36
    -                stage2 (ash 1 stage2-size))
    
    37
    -        (format t "total         :  ~D~%" (+ (length table) stage2)))
    
    38
    -      table)))
    
    38
    +        ;; Compute mapping from upper case to lower case.  The offset
    
    39
    +        ;; is stored in the high 16 bits ofthe stage2 table.
    
    40
    +        ;;
    
    41
    +        ;; Only consider characters that have a lower case letter and
    
    42
    +        ;; whose upper case version returns the original letter.
    
    43
    +        (when (and (/= i (lisp::unicode-lower i))
    
    44
    +		   (= i (lisp::unicode-upper (lisp::unicode-lower i))))
    
    45
    +	  (let ((delta (ldb (byte 16 0) (- i (lisp::unicode-lower i)))))
    
    46
    +	    (setf (aref (aref table stage1) stage2) (ash delta 16))))))
    
    47
    +    ;; Find each stage2 table that is all zeroes and replace it with
    
    48
    +    ;; NIL.
    
    49
    +    (dotimes (k (length table))
    
    50
    +      (let ((empty (count-if-not #'zerop (aref table k))))
    
    51
    +        (when (zerop empty)
    
    52
    +          (setf (aref table k) nil))
    
    53
    +        #+nil
    
    54
    +        (format t "~3D: ~D: ~A~%" k empty (aref table k))))
    
    55
    +    table))
    
    39 56
     
    
    57
    +;; Given a case-mapping table TABLE, print some information about the
    
    58
    +;; size of the tables.  This includes the number of empty and
    
    59
    +;; non-empty stage2 tables.  Also print out how many total non-NIL
    
    60
    +;; entries are needed.  This is proportional to the total amount of
    
    61
    +;; memory needed to store all the tables.
    
    62
    +(defun print-table-stats (table stage2-size)
    
    63
    +  (let ((stage1-size (length table))
    
    64
    +        (stage2 (loop for v across table
    
    65
    +                      when v
    
    66
    +                        sum (length v)))
    
    67
    +        (empty (count-if #'null table)))
    
    68
    +    (format t "stage2-size ~D~%" stage2-size)
    
    69
    +    (format t "  stage1 entries:  ~D: " stage1-size)
    
    70
    +    (format t "  ~D non-empty ~D empty~%" (- stage1-size empty) empty)
    
    71
    +    (format t "  stage2 entries:  ~D (length ~D)~%"
    
    72
    +            stage2 (ash 1 stage2-size))
    
    73
    +    (format t "  total         :  ~D~%" (+ (length table) stage2))
    
    74
    +    (+ (length table) stage2)))
    
    75
    +
    
    76
    +(defun find-optimum-size ()
    
    77
    +  (let ((results
    
    78
    +          (first
    
    79
    +           (sort (loop for stage2-size from 1 to 15
    
    80
    +                       collect (list stage2-size
    
    81
    +                                     (print-table-stats
    
    82
    +                                      (compute-case-table stage2-size)
    
    83
    +                                      stage2-size)))
    
    84
    +                 #'<
    
    85
    +                 :key #'second))))
    
    86
    +    (format t "Optimum table size:  stage2-size ~D, space ~D~%"
    
    87
    +            (first results)
    
    88
    +            (second results))))
    
    89
    +
    
    90
    +;; Neatly print the K'th stage2 table TABLE to STREAM.  Each table is
    
    91
    +;; named "stage2_k".
    
    40 92
     (defun print-table (k table stream)
    
    41
    -  (format stream "const uint32_t stage2_~D [~D] = {~%" k (length table))
    
    93
    +  (format stream "~%const uint32_t stage2_~D[~D] = {~%" k (length table))
    
    94
    +  ;; Neatly wrap the entries.
    
    42 95
       (pprint-logical-block (stream nil :prefix "    ")
    
    43 96
         (dotimes (n (length table))
    
    44 97
           (unless (zerop n)
    
    ... ... @@ -49,10 +102,20 @@
    49 102
           (format stream "0x~8,'0x" (aref table n))))
    
    50 103
       (format stream "~%};~%"))
    
    51 104
     
    
    52
    -(defun dump-case-table (pathname table)
    
    105
    +;; Print the case table TABLE to a file named by PATHNAME.
    
    106
    +(defun dump-case-table (pathname table stage2-size)
    
    53 107
       (with-open-file (stream pathname :direction :output :if-exists :supersede)
    
    108
    +    (format stream 
    
    109
    +            "~
    
    110
    +/*
    
    111
    + * DO NOT EDIT.
    
    112
    + *
    
    113
    + * This was generated by (BUILD-CASE-TABLE ~D) in
    
    114
    + * src/tools/create-case-table.c.
    
    115
    + */~2%"
    
    116
    +stage2-size)
    
    54 117
         (format stream "#include <stdint.h>~%")
    
    55
    -    (format stream "#include <stddef.h>~2%")
    
    118
    +    (format stream "#include <stddef.h>~%")
    
    56 119
         ;; First dump each stage2 table
    
    57 120
         (loop for k from 0
    
    58 121
               for s2 across table
    
    ... ... @@ -68,4 +131,9 @@
    68 131
                 do (format stream "    &stage2_~D,~%" k)
    
    69 132
               else
    
    70 133
                 do (format stream "    NULL,~%"))
    
    71
    -    (format stream "};~%")))
    134
    +    (format stream "};~%")
    
    135
    +    (format t "Wrote ~S~%" (namestring stream))))
    
    136
    +
    
    137
    +(defun build-case-table (&key (stage2-size 6) (pathname "./src/lisp/case-table.c"))
    
    138
    +  (let ((table (compute-case-table stage2-size)))
    
    139
    +    (dump-case-table pathname table stage2-size)))