aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDmitry Antipov2014-05-19 11:49:09 +0400
committerDmitry Antipov2014-05-19 11:49:09 +0400
commit2bcf0551dff645b8c691290adf58dc890b79e745 (patch)
tree3962d715c1f4d8e83e6d874cb7936b01e573a3b9 /src
parent60fc70a8e0bf25d7388fb4c2e31d912c203f561d (diff)
downloademacs-2bcf0551dff645b8c691290adf58dc890b79e745.tar.gz
emacs-2bcf0551dff645b8c691290adf58dc890b79e745.zip
* src/lisp.h (CHECK_BOOLEAN): New function.
* src/alloc.c (Fbool_vector): New function. (syms_of_alloc): Defsubr it. * src/data.c (Qbooleanp): New symbol. (syms_of_data): DEFSYM it. * src/dbusbind.c (xd_signature): Use CHECK_BOOLEAN. * doc/lispref/sequences.texi (Bool-vectors): Mention bool-vector.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog9
-rw-r--r--src/alloc.c20
-rw-r--r--src/data.c3
-rw-r--r--src/dbusbind.c3
-rw-r--r--src/lisp.h7
5 files changed, 38 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 31fe13e074c..06377ba257d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,12 @@
12014-05-19 Dmitry Antipov <dmantipov@yandex.ru>
2
3 * lisp.h (CHECK_BOOLEAN): New function.
4 * alloc.c (Fbool_vector): New function.
5 (syms_of_alloc): Defsubr it.
6 * data.c (Qbooleanp): New symbol.
7 (syms_of_data): DEFSYM it.
8 * dbusbind.c (xd_signature): Use CHECK_BOOLEAN.
9
12014-05-17 Paul Eggert <eggert@cs.ucla.edu> 102014-05-17 Paul Eggert <eggert@cs.ucla.edu>
2 11
3 Assume C99 or later (Bug#17487). 12 Assume C99 or later (Bug#17487).
diff --git a/src/alloc.c b/src/alloc.c
index 7159d1fa747..e808c3d4bf3 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -2174,6 +2174,25 @@ LENGTH must be a number. INIT matters only in whether it is t or nil. */)
2174 return bool_vector_fill (val, init); 2174 return bool_vector_fill (val, init);
2175} 2175}
2176 2176
2177DEFUN ("bool-vector", Fbool_vector, Sbool_vector, 0, MANY, 0,
2178 doc: /* Return a new bool-vector with specified arguments as elements.
2179Any number of arguments, even zero arguments, are allowed.
2180Each argument should be either t or nil.
2181usage: (bool-vector &rest OBJECTS) */)
2182 (ptrdiff_t nargs, Lisp_Object *args)
2183{
2184 ptrdiff_t i;
2185 Lisp_Object vector;
2186
2187 for (i = 0; i < nargs; i++)
2188 CHECK_BOOLEAN (args[i]);
2189
2190 vector = make_uninit_bool_vector (nargs);
2191 for (i = 0; i < nargs; i++)
2192 bool_vector_set (vector, i, !NILP (args[i]));
2193
2194 return vector;
2195}
2177 2196
2178/* Make a string from NBYTES bytes at CONTENTS, and compute the number 2197/* Make a string from NBYTES bytes at CONTENTS, and compute the number
2179 of characters from the contents. This string may be unibyte or 2198 of characters from the contents. This string may be unibyte or
@@ -7102,6 +7121,7 @@ The time is in seconds as a floating point value. */);
7102 defsubr (&Scons); 7121 defsubr (&Scons);
7103 defsubr (&Slist); 7122 defsubr (&Slist);
7104 defsubr (&Svector); 7123 defsubr (&Svector);
7124 defsubr (&Sbool_vector);
7105 defsubr (&Smake_byte_code); 7125 defsubr (&Smake_byte_code);
7106 defsubr (&Smake_list); 7126 defsubr (&Smake_list);
7107 defsubr (&Smake_vector); 7127 defsubr (&Smake_vector);
diff --git a/src/data.c b/src/data.c
index bf863aaed79..4061311e7ba 100644
--- a/src/data.c
+++ b/src/data.c
@@ -54,7 +54,7 @@ Lisp_Object Qend_of_file, Qarith_error, Qmark_inactive;
54Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only; 54Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only;
55Lisp_Object Qtext_read_only; 55Lisp_Object Qtext_read_only;
56 56
57Lisp_Object Qintegerp, Qwholenump, Qsymbolp, Qlistp, Qconsp; 57Lisp_Object Qintegerp, Qwholenump, Qsymbolp, Qlistp, Qconsp, Qbooleanp;
58static Lisp_Object Qnatnump; 58static Lisp_Object Qnatnump;
59Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp; 59Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp;
60Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp; 60Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp;
@@ -3442,6 +3442,7 @@ syms_of_data (void)
3442 3442
3443 DEFSYM (Qlistp, "listp"); 3443 DEFSYM (Qlistp, "listp");
3444 DEFSYM (Qconsp, "consp"); 3444 DEFSYM (Qconsp, "consp");
3445 DEFSYM (Qbooleanp, "booleanp");
3445 DEFSYM (Qsymbolp, "symbolp"); 3446 DEFSYM (Qsymbolp, "symbolp");
3446 DEFSYM (Qkeywordp, "keywordp"); 3447 DEFSYM (Qkeywordp, "keywordp");
3447 DEFSYM (Qintegerp, "integerp"); 3448 DEFSYM (Qintegerp, "integerp");
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 8997e01b068..768e0a11b1c 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -387,8 +387,7 @@ xd_signature (char *signature, int dtype, int parent_type, Lisp_Object object)
387 break; 387 break;
388 388
389 case DBUS_TYPE_BOOLEAN: 389 case DBUS_TYPE_BOOLEAN:
390 if (!EQ (object, Qt) && !EQ (object, Qnil)) 390 CHECK_BOOLEAN (object);
391 wrong_type_argument (intern ("booleanp"), object);
392 sprintf (signature, "%c", dtype); 391 sprintf (signature, "%c", dtype);
393 break; 392 break;
394 393
diff --git a/src/lisp.h b/src/lisp.h
index 67b26ef91c7..88ccaec4070 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -796,7 +796,7 @@ extern int char_table_translate (Lisp_Object, int);
796/* Defined in data.c. */ 796/* Defined in data.c. */
797extern Lisp_Object Qarrayp, Qbufferp, Qbuffer_or_string_p, Qchar_table_p; 797extern Lisp_Object Qarrayp, Qbufferp, Qbuffer_or_string_p, Qchar_table_p;
798extern Lisp_Object Qconsp, Qfloatp, Qintegerp, Qlambda, Qlistp, Qmarkerp, Qnil; 798extern Lisp_Object Qconsp, Qfloatp, Qintegerp, Qlambda, Qlistp, Qmarkerp, Qnil;
799extern Lisp_Object Qnumberp, Qstringp, Qsymbolp, Qt, Qvectorp; 799extern Lisp_Object Qnumberp, Qstringp, Qsymbolp, Qt, Qvectorp, Qbooleanp;
800extern Lisp_Object Qbool_vector_p; 800extern Lisp_Object Qbool_vector_p;
801extern Lisp_Object Qvector_or_char_table_p, Qwholenump; 801extern Lisp_Object Qvector_or_char_table_p, Qwholenump;
802extern Lisp_Object Qwindow; 802extern Lisp_Object Qwindow;
@@ -2510,6 +2510,11 @@ CHECK_CONS (Lisp_Object x)
2510 CHECK_TYPE (CONSP (x), Qconsp, x); 2510 CHECK_TYPE (CONSP (x), Qconsp, x);
2511} 2511}
2512INLINE void 2512INLINE void
2513CHECK_BOOLEAN (Lisp_Object x)
2514{
2515 CHECK_TYPE (EQ (x, Qt) || EQ (x, Qnil), Qbooleanp, x);
2516}
2517INLINE void
2513CHECK_VECTOR (Lisp_Object x) 2518CHECK_VECTOR (Lisp_Object x)
2514{ 2519{
2515 CHECK_TYPE (VECTORP (x), Qvectorp, x); 2520 CHECK_TYPE (VECTORP (x), Qvectorp, x);