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;