Function: bool-vector-not
bool-vector-not is a function defined in data.c.
Signature
(bool-vector-not A &optional B)
Documentation
Compute ~A, set complement.
If optional second argument B is given, store result into B. A and B must be bool vectors of the same length. Return the destination vector.
Probably introduced at or before Emacs version 24.4.
Source Code
// Defined in /usr/src/emacs/src/data.c
{
EMACS_INT nr_bits;
bits_word *bdata, *adata;
ptrdiff_t i;
CHECK_BOOL_VECTOR (a);
nr_bits = bool_vector_size (a);
if (NILP (b))
b = make_uninit_bool_vector (nr_bits);
else
{
CHECK_BOOL_VECTOR (b);
if (bool_vector_size (b) != nr_bits)
wrong_length_argument (a, b, Qnil);
}
bdata = bool_vector_data (b);
adata = bool_vector_data (a);
for (i = 0; i < nr_bits / BITS_PER_BITS_WORD; i++)
bdata[i] = BITS_WORD_MAX & ~adata[i];
if (nr_bits % BITS_PER_BITS_WORD)
{
bits_word mword = bits_word_to_host_endian (adata[i]);
mword = ~mword;
mword &= bool_vector_spare_mask (nr_bits);
bdata[i] = bits_word_to_host_endian (mword);
}
return b;
}