Function: aref
aref is a function defined in data.c.
Signature
(aref ARRAY IDX)
Documentation
Return the element of ARRAY at index IDX.
ARRAY may be a vector, a string, a char-table, a bool-vector, a record, or a byte-code object. IDX starts at 0.
Probably introduced at or before Emacs version 20.4.
Aliases
svref (obsolete since 27.1)
cl-svref
avl-tree--node-branch
Source Code
// Defined in /usr/src/emacs/src/data.c
{
register EMACS_INT idxval;
CHECK_FIXNUM (idx);
idxval = XFIXNUM (idx);
if (STRINGP (array))
{
int c;
ptrdiff_t idxval_byte;
if (idxval < 0 || idxval >= SCHARS (array))
args_out_of_range (array, idx);
if (! STRING_MULTIBYTE (array))
return make_fixnum ((unsigned char) SREF (array, idxval));
idxval_byte = string_char_to_byte (array, idxval);
c = STRING_CHAR (SDATA (array) + idxval_byte);
return make_fixnum (c);
}
else if (BOOL_VECTOR_P (array))
{
if (idxval < 0 || idxval >= bool_vector_size (array))
args_out_of_range (array, idx);
return bool_vector_ref (array, idxval);
}
else if (CHAR_TABLE_P (array))
{
CHECK_CHARACTER (idx);
return CHAR_TABLE_REF (array, idxval);
}
else
{
ptrdiff_t size = 0;
if (VECTORP (array))
size = ASIZE (array);
else if (COMPILEDP (array) || RECORDP (array))
size = PVSIZE (array);
else
wrong_type_argument (Qarrayp, array);
if (idxval < 0 || idxval >= size)
args_out_of_range (array, idx);
return AREF (array, idxval);
}
}