[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r117125: * src/lisp.h (CHECK_BOOLEAN): New function.
From: |
Dmitry Antipov |
Subject: |
[Emacs-diffs] trunk r117125: * src/lisp.h (CHECK_BOOLEAN): New function. |
Date: |
Mon, 19 May 2014 07:50:05 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 117125
revision-id: address@hidden
parent: address@hidden
committer: Dmitry Antipov <address@hidden>
branch nick: trunk
timestamp: Mon 2014-05-19 11:49:09 +0400
message:
* 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.
modified:
doc/lispref/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-6155
doc/lispref/sequences.texi
sequences.texi-20091113204419-o5vbwnq5f7feedwu-6209
src/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1438
src/alloc.c alloc.c-20091113204419-o5vbwnq5f7feedwu-252
src/data.c data.c-20091113204419-o5vbwnq5f7feedwu-251
src/dbusbind.c dbusbind.c-20091113204419-o5vbwnq5f7feedwu-7961
src/lisp.h lisp.h-20091113204419-o5vbwnq5f7feedwu-253
=== modified file 'doc/lispref/ChangeLog'
--- a/doc/lispref/ChangeLog 2014-05-17 08:11:31 +0000
+++ b/doc/lispref/ChangeLog 2014-05-19 07:49:09 +0000
@@ -1,3 +1,7 @@
+2014-05-19 Dmitry Antipov <address@hidden>
+
+ * sequences.texi (Bool-vectors): Mention bool-vector.
+
2014-05-17 Paul Eggert <address@hidden>
Assume C99 or later (Bug#17487).
=== modified file 'doc/lispref/sequences.texi'
--- a/doc/lispref/sequences.texi 2014-05-15 14:59:02 +0000
+++ b/doc/lispref/sequences.texi 2014-05-19 07:49:09 +0000
@@ -811,7 +811,7 @@
and the length cannot be changed once the bool-vector is created.
Bool-vectors are constants when evaluated.
- There are two special functions for working with bool-vectors; aside
+ There are three special functions for working with bool-vectors; aside
from that, you manipulate them with same functions used for other kinds
of arrays.
@@ -820,6 +820,32 @@
each one initialized to @var{initial}.
@end defun
address@hidden bool-vector &rest objects
+This function creates and returns a bool-vector whose elements are the
+arguments, @var{objects}, each of them should be either @code{t} or @code{nil}.
+Note that the printed form represents up to 8 boolean values as a single
+character:
+
address@hidden
address@hidden
+(bool-vector t nil t nil)
+ @result{} #&4"^E"
+(bool-vector)
+ @result{} #&0""
address@hidden group
address@hidden example
+
+If you want to print a bool-vector in a way similar to other vectors,
+you can use @code{vconcat} function:
+
address@hidden
address@hidden
+(vconcat (bool-vector nil t nil t))
+ @result{} [nil t nil t]
address@hidden group
address@hidden example
address@hidden defun
+
@defun bool-vector-p object
This returns @code{t} if @var{object} is a bool-vector,
and @code{nil} otherwise.
@@ -873,9 +899,8 @@
Return the number of elements that are @code{t} in bool vector @var{a}.
@end defun
- Here is an example of creating, examining, and updating a
-bool-vector. Note that the printed form represents up to 8 boolean
-values as a single character.
+ Here is another example of creating, examining, and updating a
+bool-vector:
@example
(setq bv (make-bool-vector 5 t))
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2014-05-17 08:11:31 +0000
+++ b/src/ChangeLog 2014-05-19 07:49:09 +0000
@@ -1,3 +1,12 @@
+2014-05-19 Dmitry Antipov <address@hidden>
+
+ * lisp.h (CHECK_BOOLEAN): New function.
+ * alloc.c (Fbool_vector): New function.
+ (syms_of_alloc): Defsubr it.
+ * data.c (Qbooleanp): New symbol.
+ (syms_of_data): DEFSYM it.
+ * dbusbind.c (xd_signature): Use CHECK_BOOLEAN.
+
2014-05-17 Paul Eggert <address@hidden>
Assume C99 or later (Bug#17487).
=== modified file 'src/alloc.c'
--- a/src/alloc.c 2014-04-28 16:59:41 +0000
+++ b/src/alloc.c 2014-05-19 07:49:09 +0000
@@ -2174,6 +2174,25 @@
return bool_vector_fill (val, init);
}
+DEFUN ("bool-vector", Fbool_vector, Sbool_vector, 0, MANY, 0,
+ doc: /* Return a new bool-vector with specified arguments as elements.
+Any number of arguments, even zero arguments, are allowed.
+Each argument should be either t or nil.
+usage: (bool-vector &rest OBJECTS) */)
+ (ptrdiff_t nargs, Lisp_Object *args)
+{
+ ptrdiff_t i;
+ Lisp_Object vector;
+
+ for (i = 0; i < nargs; i++)
+ CHECK_BOOLEAN (args[i]);
+
+ vector = make_uninit_bool_vector (nargs);
+ for (i = 0; i < nargs; i++)
+ bool_vector_set (vector, i, !NILP (args[i]));
+
+ return vector;
+}
/* Make a string from NBYTES bytes at CONTENTS, and compute the number
of characters from the contents. This string may be unibyte or
@@ -7102,6 +7121,7 @@
defsubr (&Scons);
defsubr (&Slist);
defsubr (&Svector);
+ defsubr (&Sbool_vector);
defsubr (&Smake_byte_code);
defsubr (&Smake_list);
defsubr (&Smake_vector);
=== modified file 'src/data.c'
--- a/src/data.c 2014-04-28 01:29:44 +0000
+++ b/src/data.c 2014-05-19 07:49:09 +0000
@@ -54,7 +54,7 @@
Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only;
Lisp_Object Qtext_read_only;
-Lisp_Object Qintegerp, Qwholenump, Qsymbolp, Qlistp, Qconsp;
+Lisp_Object Qintegerp, Qwholenump, Qsymbolp, Qlistp, Qconsp, Qbooleanp;
static Lisp_Object Qnatnump;
Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp;
Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp;
@@ -3442,6 +3442,7 @@
DEFSYM (Qlistp, "listp");
DEFSYM (Qconsp, "consp");
+ DEFSYM (Qbooleanp, "booleanp");
DEFSYM (Qsymbolp, "symbolp");
DEFSYM (Qkeywordp, "keywordp");
DEFSYM (Qintegerp, "integerp");
=== modified file 'src/dbusbind.c'
--- a/src/dbusbind.c 2014-05-17 08:11:31 +0000
+++ b/src/dbusbind.c 2014-05-19 07:49:09 +0000
@@ -387,8 +387,7 @@
break;
case DBUS_TYPE_BOOLEAN:
- if (!EQ (object, Qt) && !EQ (object, Qnil))
- wrong_type_argument (intern ("booleanp"), object);
+ CHECK_BOOLEAN (object);
sprintf (signature, "%c", dtype);
break;
=== modified file 'src/lisp.h'
--- a/src/lisp.h 2014-05-17 08:11:31 +0000
+++ b/src/lisp.h 2014-05-19 07:49:09 +0000
@@ -796,7 +796,7 @@
/* Defined in data.c. */
extern Lisp_Object Qarrayp, Qbufferp, Qbuffer_or_string_p, Qchar_table_p;
extern Lisp_Object Qconsp, Qfloatp, Qintegerp, Qlambda, Qlistp, Qmarkerp, Qnil;
-extern Lisp_Object Qnumberp, Qstringp, Qsymbolp, Qt, Qvectorp;
+extern Lisp_Object Qnumberp, Qstringp, Qsymbolp, Qt, Qvectorp, Qbooleanp;
extern Lisp_Object Qbool_vector_p;
extern Lisp_Object Qvector_or_char_table_p, Qwholenump;
extern Lisp_Object Qwindow;
@@ -2510,6 +2510,11 @@
CHECK_TYPE (CONSP (x), Qconsp, x);
}
INLINE void
+CHECK_BOOLEAN (Lisp_Object x)
+{
+ CHECK_TYPE (EQ (x, Qt) || EQ (x, Qnil), Qbooleanp, x);
+}
+INLINE void
CHECK_VECTOR (Lisp_Object x)
{
CHECK_TYPE (VECTORP (x), Qvectorp, x);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r117125: * src/lisp.h (CHECK_BOOLEAN): New function.,
Dmitry Antipov <=