diff options
| author | Kenichi Handa | 1997-05-28 04:36:36 +0000 |
|---|---|---|
| committer | Kenichi Handa | 1997-05-28 04:36:36 +0000 |
| commit | 8ac904700f147b40f8b1540b58fd3cefe2da5826 (patch) | |
| tree | ffd62e0f66508fe140f80cd40254b6fb50b27e30 /src | |
| parent | a0615d9071e3b872db54a3d0f1285a53f956f75c (diff) | |
| download | emacs-8ac904700f147b40f8b1540b58fd3cefe2da5826.tar.gz emacs-8ac904700f147b40f8b1540b58fd3cefe2da5826.zip | |
(CHAR_TABLE_REF): Do not check validity of CT.
(CHAR_TABLE_SET): Likewise.
(DOWNCASE_TABLE): Return case-table instead of the contents field.
(UPCASE_TABLE): Likewise.
(DOWNCASE): Use CHAR_TABLE_REF.
(NOCASEP): Use UPCASE1.
(UPCASE1): Use CHAR_TABLE_REF.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lisp.h | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/src/lisp.h b/src/lisp.h index cf2f4b30d86..2571036963c 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -608,22 +608,23 @@ struct Lisp_Vector | |||
| 608 | (((CT)->size & PSEUDOVECTOR_SIZE_MASK) - CHAR_TABLE_STANDARD_SLOTS) | 608 | (((CT)->size & PSEUDOVECTOR_SIZE_MASK) - CHAR_TABLE_STANDARD_SLOTS) |
| 609 | 609 | ||
| 610 | /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII | 610 | /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII |
| 611 | and 8-bit Europeans characters. Do not follow parent. */ | 611 | and 8-bit Europeans characters. For these characters, do not check |
| 612 | #define CHAR_TABLE_REF(CT, IDX) \ | 612 | validity of CT. Do not follow parent. */ |
| 613 | (CHAR_TABLE_P (CT) && IDX >= 0 && IDX < CHAR_TABLE_SINGLE_BYTE_SLOTS \ | 613 | #define CHAR_TABLE_REF(CT, IDX) \ |
| 614 | ? (!NILP (XCHAR_TABLE (CT)->contents[IDX]) \ | 614 | (XFASTINT (IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ |
| 615 | ? XCHAR_TABLE (CT)->contents[IDX] \ | 615 | ? (!NILP (XCHAR_TABLE (CT)->contents[XFASTINT (IDX)])\ |
| 616 | : XCHAR_TABLE (CT)->defalt) \ | 616 | ? XCHAR_TABLE (CT)->contents[XFASTINT (IDX)] \ |
| 617 | : XCHAR_TABLE (CT)->defalt) \ | ||
| 617 | : Faref (CT, IDX)) | 618 | : Faref (CT, IDX)) |
| 618 | 619 | ||
| 619 | /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and | 620 | /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and |
| 620 | 8-bit Europeans characters. */ | 621 | 8-bit Europeans characters. Do not check validity of CT. */ |
| 621 | #define CHAR_TABLE_SET(CT, IDX, VAL) \ | 622 | #define CHAR_TABLE_SET(CT, IDX, VAL) \ |
| 622 | do { \ | 623 | do { \ |
| 623 | if (CHAR_TABLE_P (CT) && IDX >= 0 && IDX < CHAR_TABLE_SINGLE_BYTE_SLOTS) \ | 624 | if (XFASTINT (IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS) \ |
| 624 | XCHAR_TABLE (CT)->contents[IDX] = VAL; \ | 625 | XCHAR_TABLE (CT)->contents[XFASTINT (IDX)] = VAL; \ |
| 625 | else \ | 626 | else \ |
| 626 | Faset (CT, IDX, VAL); \ | 627 | Faset (CT, IDX, VAL); \ |
| 627 | } while (0) | 628 | } while (0) |
| 628 | 629 | ||
| 629 | struct Lisp_Char_Table | 630 | struct Lisp_Char_Table |
| @@ -1315,17 +1316,24 @@ extern char *stack_bottom; | |||
| 1315 | 1316 | ||
| 1316 | #define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) | 1317 | #define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) |
| 1317 | 1318 | ||
| 1319 | /* Variables used locally in the following case handling macros. */ | ||
| 1320 | extern Lisp_Object case_temp1, case_temp2; | ||
| 1321 | |||
| 1318 | /* Current buffer's map from characters to lower-case characters. */ | 1322 | /* Current buffer's map from characters to lower-case characters. */ |
| 1319 | 1323 | ||
| 1320 | #define DOWNCASE_TABLE XCHAR_TABLE (current_buffer->downcase_table)->contents | 1324 | #define DOWNCASE_TABLE current_buffer->downcase_table |
| 1321 | 1325 | ||
| 1322 | /* Current buffer's map from characters to upper-case characters. */ | 1326 | /* Current buffer's map from characters to upper-case characters. */ |
| 1323 | 1327 | ||
| 1324 | #define UPCASE_TABLE XCHAR_TABLE (current_buffer->upcase_table)->contents | 1328 | #define UPCASE_TABLE current_buffer->upcase_table |
| 1325 | 1329 | ||
| 1326 | /* Downcase a character, or make no change if that cannot be done. */ | 1330 | /* Downcase a character, or make no change if that cannot be done. */ |
| 1327 | 1331 | ||
| 1328 | #define DOWNCASE(CH) (XFASTINT (DOWNCASE_TABLE[CH])) | 1332 | #define DOWNCASE(CH) \ |
| 1333 | ((case_temp1 = (CH), \ | ||
| 1334 | case_temp2 = CHAR_TABLE_REF (DOWNCASE_TABLE, case_temp1), \ | ||
| 1335 | NATNUMP (case_temp2)) \ | ||
| 1336 | ? XFASTINT (case_temp2) : case_temp1) | ||
| 1329 | 1337 | ||
| 1330 | /* 1 if CH is upper case. */ | 1338 | /* 1 if CH is upper case. */ |
| 1331 | 1339 | ||
| @@ -1333,7 +1341,7 @@ extern char *stack_bottom; | |||
| 1333 | 1341 | ||
| 1334 | /* 1 if CH is neither upper nor lower case. */ | 1342 | /* 1 if CH is neither upper nor lower case. */ |
| 1335 | 1343 | ||
| 1336 | #define NOCASEP(CH) (XFASTINT (UPCASE_TABLE[CH]) == (CH)) | 1344 | #define NOCASEP(CH) (UPCASE1 (CH) == (CH)) |
| 1337 | 1345 | ||
| 1338 | /* 1 if CH is lower case. */ | 1346 | /* 1 if CH is lower case. */ |
| 1339 | 1347 | ||
| @@ -1345,7 +1353,11 @@ extern char *stack_bottom; | |||
| 1345 | 1353 | ||
| 1346 | /* Upcase a character known to be not upper case. */ | 1354 | /* Upcase a character known to be not upper case. */ |
| 1347 | 1355 | ||
| 1348 | #define UPCASE1(CH) (XFASTINT (UPCASE_TABLE[CH])) | 1356 | #define UPCASE1(CH) \ |
| 1357 | ((case_temp1 = (CH), \ | ||
| 1358 | case_temp2 = CHAR_TABLE_REF (UPCASE_TABLE, case_temp1), \ | ||
| 1359 | NATNUMP (case_temp2)) \ | ||
| 1360 | ? XFASTINT (case_temp2) : case_temp1) | ||
| 1349 | 1361 | ||
| 1350 | extern Lisp_Object Vascii_downcase_table; | 1362 | extern Lisp_Object Vascii_downcase_table; |
| 1351 | 1363 | ||