Mercurial > emacs
comparison src/fns.c @ 18035:edf54f605b36
(Fchar_table_range, Fset_char_table_range):
Make one-element vector work for RANGE.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 30 May 1997 05:11:26 +0000 |
parents | 2873e0dabbc1 |
children | af791b0f0657 |
comparison
equal
deleted
inserted
replaced
18034:0d96c759902b | 18035:edf54f605b36 |
---|---|
1313 return XCHAR_TABLE (char_table)->defalt; | 1313 return XCHAR_TABLE (char_table)->defalt; |
1314 else if (INTEGERP (range)) | 1314 else if (INTEGERP (range)) |
1315 return Faref (char_table, range); | 1315 return Faref (char_table, range); |
1316 else if (VECTORP (range)) | 1316 else if (VECTORP (range)) |
1317 { | 1317 { |
1318 int size = XVECTOR (range)->size; | 1318 if (XVECTOR (range)->size == 1) |
1319 Lisp_Object *val = XVECTOR (range)->contents; | 1319 return Faref (char_table, XVECTOR (range)->contents[0]); |
1320 Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0], | 1320 else |
1321 size <= 1 ? Qnil : val[1], | 1321 { |
1322 size <= 2 ? Qnil : val[2]); | 1322 int size = XVECTOR (range)->size; |
1323 return Faref (char_table, ch); | 1323 Lisp_Object *val = XVECTOR (range)->contents; |
1324 Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0], | |
1325 size <= 1 ? Qnil : val[1], | |
1326 size <= 2 ? Qnil : val[2]); | |
1327 return Faref (char_table, ch); | |
1328 } | |
1324 } | 1329 } |
1325 else | 1330 else |
1326 error ("Invalid RANGE argument to `char-table-range'"); | 1331 error ("Invalid RANGE argument to `char-table-range'"); |
1327 } | 1332 } |
1328 | 1333 |
1346 XCHAR_TABLE (char_table)->defalt = value; | 1351 XCHAR_TABLE (char_table)->defalt = value; |
1347 else if (INTEGERP (range)) | 1352 else if (INTEGERP (range)) |
1348 Faset (char_table, range, value); | 1353 Faset (char_table, range, value); |
1349 else if (VECTORP (range)) | 1354 else if (VECTORP (range)) |
1350 { | 1355 { |
1351 int size = XVECTOR (range)->size; | 1356 if (XVECTOR (range)->size == 1) |
1352 Lisp_Object *val = XVECTOR (range)->contents; | 1357 return Faset (char_table, XVECTOR (range)->contents[0], value); |
1353 Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0], | 1358 else |
1354 size <= 1 ? Qnil : val[1], | 1359 { |
1355 size <= 2 ? Qnil : val[2]); | 1360 int size = XVECTOR (range)->size; |
1356 return Faset (char_table, ch, value); | 1361 Lisp_Object *val = XVECTOR (range)->contents; |
1362 Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0], | |
1363 size <= 1 ? Qnil : val[1], | |
1364 size <= 2 ? Qnil : val[2]); | |
1365 return Faset (char_table, ch, value); | |
1366 } | |
1357 } | 1367 } |
1358 else | 1368 else |
1359 error ("Invalid RANGE argument to `set-char-table-range'"); | 1369 error ("Invalid RANGE argument to `set-char-table-range'"); |
1360 | 1370 |
1361 return value; | 1371 return value; |