X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/db4413bed9de836cb03b531f499f12d78ef3ed04..d3c91027f319adabab13e92f645fd4e7503ca3d1:/lispref/sequences.texi diff --git a/lispref/sequences.texi b/lispref/sequences.texi index 4228a79c57..06ac8c5f56 100644 --- a/lispref/sequences.texi +++ b/lispref/sequences.texi @@ -1,7 +1,7 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999 -@c Free Software Foundation, Inc. +@c Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @setfilename ../info/sequences @node Sequences Arrays Vectors, Hash Tables, Lists, Top @@ -69,8 +69,8 @@ elements. This section describes functions that accept any kind of sequence. @defun sequencep object -Returns @code{t} if @var{object} is a list, vector, or -string, @code{nil} otherwise. +Returns @code{t} if @var{object} is a list, vector, +string, bool-vector, or char-table, @code{nil} otherwise. @end defun @defun length sequence @@ -78,10 +78,12 @@ string, @code{nil} otherwise. @cindex list length @cindex vector length @cindex sequence length +@cindex char-table length This function returns the number of elements in @var{sequence}. If @var{sequence} is a cons cell that is not a list (because the final @sc{cdr} is not @code{nil}), a @code{wrong-type-argument} error is -signaled. +signaled. For a char-table, the value returned is always one more +than the maximum Emacs character code. @xref{List Elements}, for the related function @code{safe-length}. @@ -109,6 +111,13 @@ signaled. @end example @end defun +@defun string-bytes string +@cindex string, number of bytes +This function returns the number of bytes in @var{string}. +If @var{string} is a multibyte string, this is greater than +@code{(length @var{string})}. +@end defun + @defun elt sequence index @cindex elements of sequences This function returns the element of @var{sequence} indexed by @@ -163,8 +172,8 @@ list. However, the actual values of the properties are shared. @xref{Text Properties}. See also @code{append} in @ref{Building Lists}, @code{concat} in -@ref{Creating Strings}, and @code{vconcat} in @ref{Vectors}, for other -ways to copy sequences. +@ref{Creating Strings}, and @code{vconcat} in @ref{Vector Functions}, +for other ways to copy sequences. @example @group @@ -222,7 +231,7 @@ in the list. Emacs defines four types of array, all one-dimensional: @dfn{strings}, @dfn{vectors}, @dfn{bool-vectors} and @dfn{char-tables}. A vector is a general array; its elements can be any Lisp objects. A string is a -specialized array; its elements must be characters. Each type of array +specialized array; its elements must be characters. Each type of array has its own read syntax. @xref{String Type}, and @ref{Vector Type}. @@ -313,7 +322,7 @@ first element is at index zero. @end group @group (aref "abcdefg" 1) - @result{} 98 ; @r{@samp{b} is @sc{ascii} code 98.} + @result{} 98 ; @r{@samp{b} is @acronym{ASCII} code 98.} @end group @end example @@ -489,14 +498,11 @@ The @code{vconcat} function also allows byte-code function objects as arguments. This is a special feature to make it easy to access the entire contents of a byte-code function object. @xref{Byte-Code Objects}. -The @code{vconcat} function also allows integers as arguments. It -converts them to strings of digits, making up the decimal print -representation of the integer, and then uses the strings instead of the -original integers. @strong{Don't use this feature; we plan to eliminate -it. If you already use this feature, change your programs now!} The -proper way to convert an integer to a decimal number in this way is with -@code{format} (@pxref{Formatting Strings}) or @code{number-to-string} -(@pxref{String Conversion}). +In Emacs versions before 21, the @code{vconcat} function allowed +integers as arguments, converting them to strings of digits, but that +feature has been eliminated. The proper way to convert an integer to +a decimal number in this way is with @code{format} (@pxref{Formatting +Strings}) or @code{number-to-string} (@pxref{String Conversion}). For other concatenation functions, see @code{mapconcat} in @ref{Mapping Functions}, @code{concat} in @ref{Creating Strings}, and @code{append} @@ -539,7 +545,7 @@ integer between 0 and 10. This integer specifies the number of @dfn{extra slots} in the char-table. @cindex parent of char-table - A char-table can have a @dfn{parent}. which is another char-table. If + A char-table can have a @dfn{parent}, which is another char-table. If it does, then whenever the char-table specifies @code{nil} for a particular character @var{c}, it inherits the value specified in the parent. In other words, @code{(aref @var{char-table} @var{c})} returns @@ -703,3 +709,25 @@ This returns @code{t} if @var{object} is a bool-vector, and @code{nil} otherwise. @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. + +@example +(setq bv (make-bool-vector 5 t)) + @result{} #&5"^_" +(aref bv 1) + @result{} t +(aset bv 3 nil) + @result{} nil +bv + @result{} #&5"^W" +@end example + +@noindent +These results make sense because the binary codes for control-_ and +control-W are 11111 and 10111, respectively. + +@ignore + arch-tag: fcf1084a-cd29-4adc-9f16-68586935b386 +@end ignore