diff options
| author | Dmitry Antipov | 2014-05-19 11:49:09 +0400 |
|---|---|---|
| committer | Dmitry Antipov | 2014-05-19 11:49:09 +0400 |
| commit | 2bcf0551dff645b8c691290adf58dc890b79e745 (patch) | |
| tree | 3962d715c1f4d8e83e6d874cb7936b01e573a3b9 /src | |
| parent | 60fc70a8e0bf25d7388fb4c2e31d912c203f561d (diff) | |
| download | emacs-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/ChangeLog | 9 | ||||
| -rw-r--r-- | src/alloc.c | 20 | ||||
| -rw-r--r-- | src/data.c | 3 | ||||
| -rw-r--r-- | src/dbusbind.c | 3 | ||||
| -rw-r--r-- | src/lisp.h | 7 |
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 @@ | |||
| 1 | 2014-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 | |||
| 1 | 2014-05-17 Paul Eggert <eggert@cs.ucla.edu> | 10 | 2014-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 | ||
| 2177 | DEFUN ("bool-vector", Fbool_vector, Sbool_vector, 0, MANY, 0, | ||
| 2178 | doc: /* Return a new bool-vector with specified arguments as elements. | ||
| 2179 | Any number of arguments, even zero arguments, are allowed. | ||
| 2180 | Each argument should be either t or nil. | ||
| 2181 | usage: (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; | |||
| 54 | Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only; | 54 | Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only; |
| 55 | Lisp_Object Qtext_read_only; | 55 | Lisp_Object Qtext_read_only; |
| 56 | 56 | ||
| 57 | Lisp_Object Qintegerp, Qwholenump, Qsymbolp, Qlistp, Qconsp; | 57 | Lisp_Object Qintegerp, Qwholenump, Qsymbolp, Qlistp, Qconsp, Qbooleanp; |
| 58 | static Lisp_Object Qnatnump; | 58 | static Lisp_Object Qnatnump; |
| 59 | Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp; | 59 | Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp; |
| 60 | Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp; | 60 | Lisp_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. */ |
| 797 | extern Lisp_Object Qarrayp, Qbufferp, Qbuffer_or_string_p, Qchar_table_p; | 797 | extern Lisp_Object Qarrayp, Qbufferp, Qbuffer_or_string_p, Qchar_table_p; |
| 798 | extern Lisp_Object Qconsp, Qfloatp, Qintegerp, Qlambda, Qlistp, Qmarkerp, Qnil; | 798 | extern Lisp_Object Qconsp, Qfloatp, Qintegerp, Qlambda, Qlistp, Qmarkerp, Qnil; |
| 799 | extern Lisp_Object Qnumberp, Qstringp, Qsymbolp, Qt, Qvectorp; | 799 | extern Lisp_Object Qnumberp, Qstringp, Qsymbolp, Qt, Qvectorp, Qbooleanp; |
| 800 | extern Lisp_Object Qbool_vector_p; | 800 | extern Lisp_Object Qbool_vector_p; |
| 801 | extern Lisp_Object Qvector_or_char_table_p, Qwholenump; | 801 | extern Lisp_Object Qvector_or_char_table_p, Qwholenump; |
| 802 | extern Lisp_Object Qwindow; | 802 | extern 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 | } |
| 2512 | INLINE void | 2512 | INLINE void |
| 2513 | CHECK_BOOLEAN (Lisp_Object x) | ||
| 2514 | { | ||
| 2515 | CHECK_TYPE (EQ (x, Qt) || EQ (x, Qnil), Qbooleanp, x); | ||
| 2516 | } | ||
| 2517 | INLINE void | ||
| 2513 | CHECK_VECTOR (Lisp_Object x) | 2518 | CHECK_VECTOR (Lisp_Object x) |
| 2514 | { | 2519 | { |
| 2515 | CHECK_TYPE (VECTORP (x), Qvectorp, x); | 2520 | CHECK_TYPE (VECTORP (x), Qvectorp, x); |