| 33 |
#endif |
#endif |
| 34 |
|
|
| 35 |
#include "config.h" |
#include "config.h" |
| 36 |
|
#include "cp932.h" |
| 37 |
#include "crypt64.h" |
#include "crypt64.h" |
|
#include "dt4.h" |
|
| 38 |
#include "expr.h" |
#include "expr.h" |
| 39 |
#include "translate.h" |
#include "translate.h" |
| 40 |
|
|
| 41 |
|
#if USE_DT |
| 42 |
|
#include "dt4.h" |
| 43 |
|
#endif |
| 44 |
|
|
| 45 |
#define N_I (sizeof(WS_T) / sizeof(uint32_t)) |
#define N_I (sizeof(WS_T) / sizeof(uint32_t)) |
| 46 |
#define N_ALU (sizeof(WS_T) / sizeof(ALU_T)) |
#define N_ALU (sizeof(WS_T) / sizeof(ALU_T)) |
| 47 |
#define ALU_BITS (CHAR_BIT * sizeof(ALU_T)) |
#define ALU_BITS (CHAR_BIT * sizeof(ALU_T)) |
| 145 |
int i, j; |
int i, j; |
| 146 |
unsigned c = kcls[n].map[key[n]]; |
unsigned c = kcls[n].map[key[n]]; |
| 147 |
|
|
| 148 |
|
#if USE_DT |
| 149 |
if (3 <= n && n < 7 && kd[n - 3]) |
if (3 <= n && n < 7 && kd[n - 3]) |
| 150 |
{ |
{ |
| 151 |
/* 辞書のケツの文字。後ろにナニヤラキャラクタが来る */ |
/* 辞書のケツの文字。後ろにナニヤラキャラクタが来る */ |
| 234 |
{ |
{ |
| 235 |
kd[n] = NULL; |
kd[n] = NULL; |
| 236 |
} |
} |
| 237 |
|
#endif |
| 238 |
|
|
| 239 |
/* 最後の部分は class map を生成する必要ナシ */ |
/* 最後の部分は class map を生成する必要ナシ */ |
| 240 |
if (n >= 6) |
if (n >= 6) |
| 278 |
kcls[7].map[0x00] |= KCLS_AN; |
kcls[7].map[0x00] |= KCLS_AN; |
| 279 |
} |
} |
| 280 |
|
|
| 281 |
|
#if USE_DT |
| 282 |
unsigned |
unsigned |
| 283 |
dt_get(int kdn, |
dt_get(int kdn, |
| 284 |
int xn, |
int xn, |
| 309 |
#endif |
#endif |
| 310 |
return kd[kdn]->c[n]; |
return kd[kdn]->c[n]; |
| 311 |
} |
} |
| 312 |
|
#endif |
| 313 |
|
|
| 314 |
/* マップから文字を拾ってセット */ |
/* マップから文字を拾ってセット */ |
| 315 |
unsigned |
unsigned |
| 317 |
{ |
{ |
| 318 |
int cnt = 0, i; |
int cnt = 0, i; |
| 319 |
|
|
| 320 |
|
#if USE_DT |
| 321 |
if (3 <= n && n < 7 && kd[n - 3]) |
if (3 <= n && n < 7 && kd[n - 3]) |
| 322 |
{ |
{ |
| 323 |
return dt_get(n - 3, 2, 3, ch); |
return dt_get(n - 3, 2, 3, ch); |
| 333 |
return dt_get(n - 1, 0, 1, ch); |
return dt_get(n - 1, 0, 1, ch); |
| 334 |
return kd[n - 1]->c[1]; |
return kd[n - 1]->c[1]; |
| 335 |
} |
} |
| 336 |
|
#endif |
| 337 |
|
|
| 338 |
#if DEBUG>=3 |
#if DEBUG>=3 |
| 339 |
if (cnt == 0) |
if (cnt == 0) |
| 497 |
printf("key_inc(n=%d,ck=%02X)\n", n, key[n]); |
printf("key_inc(n=%d,ck=%02X)\n", n, key[n]); |
| 498 |
#endif |
#endif |
| 499 |
|
|
| 500 |
|
#if USE_DT |
| 501 |
/* 辞書語はインクリメントしていい約束にする */ |
/* 辞書語はインクリメントしていい約束にする */ |
| 502 |
if (3 <= n && n < 7 && kd[n - 3]) |
if (3 <= n && n < 7 && kd[n - 3]) |
| 503 |
{ |
{ |
| 586 |
key[n] &= 0x7F; |
key[n] &= 0x7F; |
| 587 |
#endif |
#endif |
| 588 |
} |
} |
| 589 |
|
#endif |
| 590 |
|
|
| 591 |
/* 実際に増やしてみる */ |
/* 実際に増やしてみる */ |
| 592 |
assert(n >= 3); |
assert(n >= 3); |