Npt documentation.
Reference: ANSI Common Lisp npt
The following function specifications are described in lisp.h.
void lisp_cons(addr x, addr car, addr cdr);
void lisp_vector(addr x, size_t size);
void lisp_list(addr x, ...);
void lisp_lista(addr x, ...);int lisp_getelt_(addr x, addr pos, size_t index);
int lisp_setelt_(addr pos, size_t index, addr value);
int lisp_length_(addr pos, size_t *ret);
int lisp_reverse_(addr x, addr pos);
int lisp_nreverse_(addr x, addr pos);void lisp_car(addr x, addr list);
void lisp_cdr(addr x, addr list);
void lisp_carcdr(addr x, addr y, addr list);
void lisp_setf_car(addr cons, addr value);
void lisp_setf_cdr(addr cons, addr value);
void lisp_setf_carcdr(addr cons, addr car, addr cdr);int lisp_string8_(addr x, const void *str);
int lisp_string16_(addr x, const void *str);
int lisp_string32_(addr x, const void *str);
int lisp_string_getc_(addr pos, size_t i, unicode *c);int lisp_strvect_getc(addr pos, size_t i, unicode *c);
int lisp_strvect_length(addr pos, size_t *ret);Function of the creating sequense.
void lisp_cons(addr x, addr car, addr cdr);
void lisp_vector(addr x, size_t size);
void lisp_list(addr x, ...);
void lisp_lista(addr x, ...);lisp_consvoid lisp_cons(addr x, addr car, addr cdr);
Input: car, cdr, Object
Output: x, hold variableCreate a cons object.
If car is NULL, NIL is specified.
If cdr is NULL, NIL is specified.
If the car is a hold variable, the content is specified.
If the cdr is a hold variable, the content is specified.
lisp_vectorvoid lisp_vector(addr x, size_t size);
Input: size, Length of the sequence.
Output: x, hold variableCreate a one-dimensional array object.
It is a special object of type simple-vector.
lisp_listvoid lisp_list(addr x, ...);
Input: Variable arguments
Output: x, hold variableCreates a list object with variable arguments as elements.
The variable argument takes an addr and is terminated by NULL.
If the argument is a hold variable, use the content.
Example.
lisp_fixnum(x, 10);
lisp_fixnum(y, 20);
lisp_fixnum(z, 30);
lisp_list(x, x, y, z, NULL);
x -> (10 20 30)lisp_listavoid lisp_lista(addr x, ...);
Input: Variable arguments
Output: x, hold variableCreates a list object with variable arguments as elements.
This is almost equivalent to list* in Common Lisp, where the final element is the list cdr.
The variable argument takes an addr and is terminated with NULL.
Unlike list*, it returns NIL if no element is found.
If the argument is a hold variable, use the content.
Example.
lisp_fixnum(x, 10);
lisp_fixnum(y, 20);
lisp_fixnum(z, 30);
lisp_lista(x, x, y, z, NULL);
x -> (10 20 . 30)Function of the sequense operation.
int lisp_getelt_(addr x, addr pos, size_t index);
int lisp_setelt_(addr pos, size_t index, addr value);
int lisp_length_(addr pos, size_t *ret);
int lisp_reverse_(addr x, addr pos);
int lisp_nreverse_(addr x, addr pos);lisp_getelt_int lisp_getelt_(addr x, addr pos, size_t index);
Input: pos, sequence
Input: index
Output: x, hold variable
Return: Non-zero when escaping.Returns the index-th element of the sequence pos.
If pos is a hold variable, its contents are used.
lisp_setelt_int lisp_setelt_(addr pos, size_t index, addr value);
Input: pos, sequnece
Input: index
Input: value, hold variable
Return: Non-zero when escaping.Sets the index-th element of the sequence pos to value.
If pos, value is a hold variable, the content is used.
lisp_length_int lisp_length_(addr pos, size_t *ret);
Input: pos, sequence
Output: ret, number of elements
Return: Non-zero when escaping.Returns the number of elements in the sequence pos.
If pos is a hold variable, the content is used.
lisp_reverse_int lisp_reverse_(addr x, addr pos);
Input: pos, sequence
Output: x, hold variable
Return: Non-zero when escaping.The reverse order of the pos is returned.
If pos is a hold variable, the content is used.
Because the sequence is newly created, the original sequence is not destroyed.
lisp_nreverse_int lisp_nreverse_(addr x, addr pos);
Input: pos, sequence
Output: x, hold variable
Return: Non-zero when escaping.The reverse order of the pos is returned.
If pos is a hold variable, the content is used.
Destroy the sequence without creating a new one.
Function of the cons.
void lisp_car(addr x, addr list);
void lisp_cdr(addr x, addr list);
void lisp_carcdr(addr x, addr y, addr list);
void lisp_setf_car(addr cons, addr value);
void lisp_setf_cdr(addr cons, addr value);
void lisp_setf_carcdr(addr cons, addr car, addr cdr);lisp_carvoid lisp_car(addr x, addr list);
Input: list
Output: x, hold variableGet the car of the list.
The list can be specified with cons or NIL.
lisp_cdrvoid lisp_cdr(addr x, addr list);
Input: list
Output: x, hold variableGet the cdr of the list.
The list can be specified with cons or NIL.
lisp_carcdrvoid lisp_carcdr(addr x, addr y, addr list);
Input: list
Output: x, y, hold variableReturn car of list to x and cdr to y. The list can be specified with cons or NIL.
lisp_setf_carvoid lisp_setf_car(addr cons, addr value);
Input: cons
Input: value, ObjectIf value is a hold variable, the content is used.
Set the value to the car part of the cons.
lisp_setf_cdrvoid lisp_setf_cdr(addr cons, addr value);
Input: cons
Input: value, ObjectIf value is a hold variable, the content is used.
Set the value to the cdr part of the cons.
lisp_setf_carcdrvoid lisp_setf_carcdr(addr cons, addr car, addr cdr);
Input: cons
Input: car, cdr, ObjectIf car, cdr are hold variables, their contents are used.
Set the car to the car part of the cons.
Set the cdr to the cdr part of the cons.
Function of the string.
int lisp_string8_(addr x, const void *str);
int lisp_string16_(addr x, const void *str);
int lisp_string32_(addr x, const void *str);
int lisp_string_getc_(addr pos, size_t i, unicode *c);lisp_string8_int lisp_string8_(addr x, const void *str);
int lisp_string16_(addr x, const void *str);
int lisp_string32_(addr x, const void *str);
Input: str, string
Output: x, hold variable
Return: Non-zero when escaping.Returns a string object.
It is a special object of type simple-string.
str specifies a string to be stored in the object.
The memory format of str is as follows.
lisp_string16_Explained in lisp_string8_.
lisp_string32_Explained in lisp_string8_.
lisp_string_getc_int lisp_string_getc_(addr pos, size_t i, unicode *c);
Input: pos, string
Input: i, index
Output: c, character
Return: Non-zero when escaping.Get the value of a character from a strvect object.
If pos is a hold variable, the content is used.
Function of strvect, which is an object for simple-string.
int lisp_strvect_getc(addr pos, size_t i, unicode *c);
int lisp_strvect_length(addr pos, size_t *ret);lisp_strvect_getcint lisp_strvect_getc(addr pos, size_t i, unicode *c);
Input: pos, Object
Input: i, Index
Output: c, Character
Return: Normal: 0, Error: non-zeroGet the value of a character from a strvect object.
This function is for retrieving a character from a string without escaping.
Unlike lisp_string_getc_, it does not support array objects.
If it is not a strvect type object, the function exits with the return value -1.
If i is more than the number of characters, it exits with the return value 1.
If the character is returned to c, the function exits with the return value 0.
lisp_strvect_lengthint lisp_strvect_length(addr pos, size_t *ret);
Input: pos, Object
Output: ret, Length of a string.
Return: Normal: 0, Error: non-zeroGet the length of a string from the strvect object.
This function gets the length of a string without escaping.
Unlike lisp_length_, it works only with strvect objects.
If it is not a strvect type object, the function exits with the return value -1.
If the length of the string is returned to ret, the function exits with the return value 0.