aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/data.c')
-rw-r--r--src/data.c28
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;
84static Lisp_Object Qsymbol, Qstring, Qcons, Qmarker, Qoverlay; 84static Lisp_Object Qsymbol, Qstring, Qcons, Qmarker, Qoverlay;
85static Lisp_Object Qfloat, Qwindow_configuration, Qwindow; 85static Lisp_Object Qfloat, Qwindow_configuration, Qwindow;
86Lisp_Object Qprocess; 86Lisp_Object Qprocess;
87static Lisp_Object Qcompiled_function, Qbuffer, Qframe, Qvector; 87static Lisp_Object Qcompiled_function, Qfunction_vector, Qbuffer, Qframe, Qvector;
88static Lisp_Object Qchar_table, Qbool_vector, Qhash_table; 88static Lisp_Object Qchar_table, Qbool_vector, Qhash_table;
89static Lisp_Object Qsubrp, Qmany, Qunevalled; 89static Lisp_Object Qsubrp, Qmany, Qunevalled;
90Lisp_Object Qfont_spec, Qfont_entity, Qfont_object; 90Lisp_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
443DEFUN ("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
440DEFUN ("char-or-string-p", Fchar_or_string_p, Schar_or_string_p, 1, 1, 0, 451DEFUN ("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);