diff options
Diffstat (limited to 'src/data.c')
| -rw-r--r-- | src/data.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/src/data.c b/src/data.c index 93cc57e9f2c..6a21ad44720 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -84,7 +84,7 @@ Lisp_Object Qinteger; | |||
| 84 | static Lisp_Object Qsymbol, Qstring, Qcons, Qmarker, Qoverlay; | 84 | static Lisp_Object Qsymbol, Qstring, Qcons, Qmarker, Qoverlay; |
| 85 | static Lisp_Object Qfloat, Qwindow_configuration, Qwindow; | 85 | static Lisp_Object Qfloat, Qwindow_configuration, Qwindow; |
| 86 | Lisp_Object Qprocess; | 86 | Lisp_Object Qprocess; |
| 87 | static Lisp_Object Qcompiled_function, Qbuffer, Qframe, Qvector; | 87 | static Lisp_Object Qcompiled_function, Qfunction_vector, Qbuffer, Qframe, Qvector; |
| 88 | static Lisp_Object Qchar_table, Qbool_vector, Qhash_table; | 88 | static Lisp_Object Qchar_table, Qbool_vector, Qhash_table; |
| 89 | static Lisp_Object Qsubrp, Qmany, Qunevalled; | 89 | static Lisp_Object Qsubrp, Qmany, Qunevalled; |
| 90 | Lisp_Object Qfont_spec, Qfont_entity, Qfont_object; | 90 | Lisp_Object Qfont_spec, Qfont_entity, Qfont_object; |
| @@ -219,8 +219,11 @@ for example, (type-of 1) returns `integer'. */) | |||
| 219 | return Qwindow; | 219 | return Qwindow; |
| 220 | if (SUBRP (object)) | 220 | if (SUBRP (object)) |
| 221 | return Qsubr; | 221 | return Qsubr; |
| 222 | if (COMPILEDP (object)) | 222 | if (FUNVECP (object)) |
| 223 | return Qcompiled_function; | 223 | if (FUNVEC_COMPILED_P (object)) |
| 224 | return Qcompiled_function; | ||
| 225 | else | ||
| 226 | return Qfunction_vector; | ||
| 224 | if (BUFFERP (object)) | 227 | if (BUFFERP (object)) |
| 225 | return Qbuffer; | 228 | return Qbuffer; |
| 226 | if (CHAR_TABLE_P (object)) | 229 | if (CHAR_TABLE_P (object)) |
| @@ -437,6 +440,14 @@ DEFUN ("byte-code-function-p", Fbyte_code_function_p, Sbyte_code_function_p, | |||
| 437 | return Qnil; | 440 | return Qnil; |
| 438 | } | 441 | } |
| 439 | 442 | ||
| 443 | DEFUN ("funvecp", Ffunvecp, Sfunvecp, 1, 1, 0, | ||
| 444 | doc: /* Return t if OBJECT is a `function vector' object. */) | ||
| 445 | (object) | ||
| 446 | Lisp_Object object; | ||
| 447 | { | ||
| 448 | return FUNVECP (object) ? Qt : Qnil; | ||
| 449 | } | ||
| 450 | |||
| 440 | DEFUN ("char-or-string-p", Fchar_or_string_p, Schar_or_string_p, 1, 1, 0, | 451 | DEFUN ("char-or-string-p", Fchar_or_string_p, Schar_or_string_p, 1, 1, 0, |
| 441 | doc: /* Return t if OBJECT is a character or a string. */) | 452 | doc: /* Return t if OBJECT is a character or a string. */) |
| 442 | (object) | 453 | (object) |
| @@ -2208,15 +2219,15 @@ or a byte-code object. IDX starts at 0. */) | |||
| 2208 | { | 2219 | { |
| 2209 | int size = 0; | 2220 | int size = 0; |
| 2210 | if (VECTORP (array)) | 2221 | if (VECTORP (array)) |
| 2211 | size = XVECTOR (array)->size; | 2222 | size = ASIZE (array); |
| 2212 | else if (COMPILEDP (array)) | 2223 | else if (FUNVECP (array)) |
| 2213 | size = XVECTOR (array)->size & PSEUDOVECTOR_SIZE_MASK; | 2224 | size = FUNVEC_SIZE (array); |
| 2214 | else | 2225 | else |
| 2215 | wrong_type_argument (Qarrayp, array); | 2226 | wrong_type_argument (Qarrayp, array); |
| 2216 | 2227 | ||
| 2217 | if (idxval < 0 || idxval >= size) | 2228 | if (idxval < 0 || idxval >= size) |
| 2218 | args_out_of_range (array, idx); | 2229 | args_out_of_range (array, idx); |
| 2219 | return XVECTOR (array)->contents[idxval]; | 2230 | return AREF (array, idxval); |
| 2220 | } | 2231 | } |
| 2221 | } | 2232 | } |
| 2222 | 2233 | ||
| @@ -3326,6 +3337,7 @@ syms_of_data () | |||
| 3326 | Qwindow = intern_c_string ("window"); | 3337 | Qwindow = intern_c_string ("window"); |
| 3327 | /* Qsubr = intern_c_string ("subr"); */ | 3338 | /* Qsubr = intern_c_string ("subr"); */ |
| 3328 | Qcompiled_function = intern_c_string ("compiled-function"); | 3339 | Qcompiled_function = intern_c_string ("compiled-function"); |
| 3340 | Qfunction_vector = intern_c_string ("function-vector"); | ||
| 3329 | Qbuffer = intern_c_string ("buffer"); | 3341 | Qbuffer = intern_c_string ("buffer"); |
| 3330 | Qframe = intern_c_string ("frame"); | 3342 | Qframe = intern_c_string ("frame"); |
| 3331 | Qvector = intern_c_string ("vector"); | 3343 | Qvector = intern_c_string ("vector"); |
| @@ -3351,6 +3363,7 @@ syms_of_data () | |||
| 3351 | staticpro (&Qwindow); | 3363 | staticpro (&Qwindow); |
| 3352 | /* staticpro (&Qsubr); */ | 3364 | /* staticpro (&Qsubr); */ |
| 3353 | staticpro (&Qcompiled_function); | 3365 | staticpro (&Qcompiled_function); |
| 3366 | staticpro (&Qfunction_vector); | ||
| 3354 | staticpro (&Qbuffer); | 3367 | staticpro (&Qbuffer); |
| 3355 | staticpro (&Qframe); | 3368 | staticpro (&Qframe); |
| 3356 | staticpro (&Qvector); | 3369 | staticpro (&Qvector); |
| @@ -3387,6 +3400,7 @@ syms_of_data () | |||
| 3387 | defsubr (&Smarkerp); | 3400 | defsubr (&Smarkerp); |
| 3388 | defsubr (&Ssubrp); | 3401 | defsubr (&Ssubrp); |
| 3389 | defsubr (&Sbyte_code_function_p); | 3402 | defsubr (&Sbyte_code_function_p); |
| 3403 | defsubr (&Sfunvecp); | ||
| 3390 | defsubr (&Schar_or_string_p); | 3404 | defsubr (&Schar_or_string_p); |
| 3391 | defsubr (&Scar); | 3405 | defsubr (&Scar); |
| 3392 | defsubr (&Scdr); | 3406 | defsubr (&Scdr); |