関数仕様 - オブジェクト

nptのドキュメントです。
参照元:ANSI Common Lisp npt

関数仕様

lisp.hに記載されている下記の関数仕様を示します。

■オブジェクト生成
int lisp_character_(addr x, unicode value);
void lisp_fixnum(addr x, fixnum value);
int lisp_float_(addr x, float value);
int lisp_double_(addr x, double value);
int lisp_long_double_(addr x, long double value);

■値取得
int lisp_zero_p(addr value);
int lisp_plus_p(addr value);
int lisp_minus_p(addr value);
void lisp_get_character(addr pos, unicode *ret);
void lisp_get_fixnum(addr pos, fixnum *ret);
int lisp_get_float_(addr pos, float *ret);
int lisp_get_double_(addr pos, double *ret);
int lisp_get_long_double_(addr pos, long double *ret);

■package
int lisp_package_(addr x, addr pos);
int lisp_package8_(addr x, const void *str);
int lisp_package16_(addr x, const void *str);
int lisp_package32_(addr x, const void *str);

■intern
int lisp_intern_(addr x, addr package, addr name);
int lisp_intern8_(addr x, const void *package, const void *name);
int lisp_intern16_(addr x, const void *package, const void *name);
int lisp_intern32_(addr x, const void *package, const void *name);

■reader
int lisp_reader_(addr x, addr str);
int lisp_reader8_(addr x, const void *str);
int lisp_reader16_(addr x, const void *str);
int lisp_reader32_(addr x, const void *str);

■pathname
int lisp_pathname_(addr x, addr name);
int lisp_pathname8_(addr x, const void *str);
int lisp_pathname16_(addr x, const void *str);
int lisp_pathname32_(addr x, const void *str);
int lisp_namestring_(addr x, addr path);

■オブジェクト生成

Lispオブジェクト生成の関数です。

int lisp_character_(addr x, unicode value);
void lisp_fixnum(addr x, fixnum value);
int lisp_float_(addr x, float value);
int lisp_double_(addr x, double value);
int lisp_long_double_(addr x, long double value);

脱出関数lisp_character_

int lisp_character_(addr x, unicode value);

入力: value unicode文字
出力: x hold変数
戻り値: 脱出時に0以外

valueをUnicodeとして扱い、文字型のオブジェクトを生成します。
valueがサロゲートペアで予約されているコードであるか、 あるいはUnicodeの範囲を超えている場合はエラーです。

関数lisp_fixnum

void lisp_fixnum(addr x, fixnum value);

入力: value 整数
出力: x hold変数

fixnumで表される整数オブジェクトを生成します。

脱出関数lisp_float_

int lisp_float_(addr x, float value);

入力: value 浮動小数
出力: x hold変数
戻り値: 脱出時に0以外

single-float型の浮動小数オブジェクトを生成します。
valueinfnanの場合はエラーです。

脱出関数lisp_double_

int lisp_double_(addr x, double value);

入力: value 浮動小数
出力: x hold変数
戻り値: 脱出時に0以外

double-float型の浮動小数オブジェクトを生成します。
valueinfnanの場合はエラーです。

脱出関数lisp_long_double_

int lisp_long_double_(addr x, long double value);

入力: value 浮動小数
出力: x hold変数
戻り値: 脱出時に0以外

long-float型の浮動小数オブジェクトを生成します。
valueinfnanの場合はエラーです。

■値取得

オブジェクトの値を取得する関数です。

int lisp_zero_p(addr value);
int lisp_plus_p(addr value);
int lisp_minus_p(addr value);
void lisp_get_character(addr pos, unicode *ret);
void lisp_get_fixnum(addr pos, fixnum *ret);
int lisp_get_float_(addr pos, float *ret);
int lisp_get_double_(addr pos, double *ret);
int lisp_get_long_double_(addr pos, long double *ret);

関数lisp_zero_p

int lisp_zero_p(addr value);

入力: value オブジェクト
戻り値: bool値

valueがhold変数の場合は、内容が評価されます。
valueが実数でありかつ0である場合に0以外が返却されます。

関数lisp_plus_p

int lisp_plus_p(addr value);

入力: value オブジェクト
戻り値: bool値

valueがhold変数の場合は、内容が評価されます。
valueが実数でありかつ0を超えている場合に0以外が返却されます。
0は含まれません。

関数lisp_minus_p

int lisp_minus_p(addr value);

入力: value オブジェクト
戻り値: bool値

valueがhold変数の場合は、内容が評価されます。
valueが実数でありかつ0をより小さい場合に0以外が返却されます。
0は含まれません。

関数lisp_get_character

void lisp_get_character(addr pos, unicode *ret);

入力: pos 文字型オブジェクト
出力: ret unicode文字

posがhold変数の場合は、内容が評価されます。
文字型のコードをretに返却します。

関数lisp_get_fixnum

void lisp_get_fixnum(addr pos, fixnum *ret);

入力: pos fixnum型オブジェクト
出力: ret fixnum型整数

posがhold変数の場合は、内容が評価されます。
LISPTYPE_FIXNUM型オブジェクトから値をretに返却します。

脱出関数lisp_get_float_

int lisp_get_float_(addr pos, float *ret);

入力: pos 実数型オブジェクト
出力: ret 浮動小数
戻り値: 脱出時に0以外

posがhold変数の場合は、内容が評価されます。
possingle-float型の場合は値をretに返却します。
それ以外の実数型の場合はsingle-floatにcastして返却します。

脱出関数lisp_get_double_

int lisp_get_double_(addr pos, double *ret);

入力: pos 実数型オブジェクト
出力: ret 浮動小数
戻り値: 脱出時に0以外

posがhold変数の場合は、内容が評価されます。
posdouble-float型の場合は値をretに返却します。
それ以外の実数型の場合はdouble-floatにcastして返却します。

脱出関数lisp_get_long_double_

int lisp_get_long_double_(addr pos, long double *ret);

入力: pos 実数型オブジェクト
出力: ret 浮動小数
戻り値: 脱出時に0以外

posがhold変数の場合は、内容が評価されます。
poslong-float型の場合は値をretに返却します。
それ以外の実数型の場合はlong-floatにcastして返却します。

■package

packageの関数です。

int lisp_package_(addr x, addr pos);
int lisp_package8_(addr x, const void *str);
int lisp_package16_(addr x, const void *str);
int lisp_package32_(addr x, const void *str);

脱出関数lisp_package_

int lisp_package_(addr x, addr pos);

入力: pos package-designator
出力: x hold変数
戻り値: 脱出時は0以外

posが表す名前のpackageを返却します。
posがhold変数の場合は、内容が使用されます。

脱出関数lisp_package8_

int lisp_package8_(addr x, const void *str);
int lisp_package16_(addr x, const void *str);
int lisp_package32_(addr x, const void *str);

入力: str Unicode文字列
出力: x hold変数
戻り値: 脱出時は0以外

strが表す名前のpackageを返却します。
Unicode文字列の詳細はlisp_string8_関数をご確認ください。

脱出関数lisp_package16_

lisp_package8_で解説

脱出関数lisp_package32_

lisp_package8_で解説

■intern

internの関数です。

int lisp_intern_(addr x, addr package, addr name);
int lisp_intern8_(addr x, const void *package, const void *name);
int lisp_intern16_(addr x, const void *package, const void *name);
int lisp_intern32_(addr x, const void *package, const void *name);

脱出関数lisp_intern_

int lisp_intern_(addr x, addr package, addr name);

入力: package package-designatorかnil
入力: name 文字列
出力: x hold変数
戻り値: 脱出時は0以外

packagenameで表す名前のsymbolをinternします。
packagenilNULLの場合は*package*の値が使用されます。
packagenameがhold変数の場合は、内容が使用されます。

脱出関数lisp_intern8_

int lisp_intern8_(addr x, const void *package, const void *name);
int lisp_intern16_(addr x, const void *package, const void *name);
int lisp_intern32_(addr x, const void *package, const void *name);

入力: package Unicode文字列かNULL
入力: name Unicode文字列
出力: x hold変数
戻り値: 脱出時は0以外

packagenameで表す名前のsymbolをinternします。
packageNULLの場合は*package*の値が使用されます。
Unicode文字列の詳細はlisp_string8_関数をご確認ください。

脱出関数lisp_intern16_

lisp_intern8_で解説

脱出関数lisp_intern32_

lisp_intern8_で解説

■reader

readerによる読み込みの関数です。

int lisp_reader_(addr x, addr str);
int lisp_reader8_(addr x, const void *str);
int lisp_reader16_(addr x, const void *str);
int lisp_reader32_(addr x, const void *str);

脱出関数lisp_reader_

int lisp_reader_(addr x, addr str);

入力: str 文字列
出力: x hold変数
戻り値: 脱出時に0以外

文字列のstrをreaderで読み込みます。
read-from-string関数と同等です。
何も読み込めなかったときはNULLが返却されます。
NULLかどうかはlisp_null_p関数で確認できます。
strがhold変数の場合は、内容が使用されます。

脱出関数lisp_reader8_

int lisp_reader8_(addr x, const void *str);
int lisp_reader16_(addr x, const void *str);
int lisp_reader32_(addr x, const void *str);

入力: str Unicode文字列
出力: x hold変数
戻り値: 脱出時は0以外

文字列のstrをreaderで読み込みます。
read-from-string関数と同等です。
何も読み込めなかったときはNULLが返却されます。
NULLかどうかはlisp_null_p関数で確認できます。
Unicode文字列の詳細はlisp_string8_関数をご確認ください。

脱出関数lisp_reader16_

lisp_reader8_で解説

脱出関数lisp_reader32_

lisp_reader8_で解説

■pathname

pathnameの関数です。

int lisp_pathname_(addr x, addr name);
int lisp_pathname8_(addr x, const void *str);
int lisp_pathname16_(addr x, const void *str);
int lisp_pathname32_(addr x, const void *str);
int lisp_namestring_(addr x, addr path);

脱出関数lisp_pathname_

int lisp_pathname_(addr x, addr name);

入力: name pathname-designator
出力: x hold変数
戻り値: 脱出時は0以外

文字列nameをpathnameに変換します。
parse-namestring関数と同等です。
nameがhold変数の時は、内容が使用されます。

脱出関数lisp_pathname8_

int lisp_pathname8_(addr x, const void *str);
int lisp_pathname16_(addr x, const void *str);
int lisp_pathname32_(addr x, const void *str);

入力: str Unicode文字列
出力: x hold変数
戻り値: 脱出時は0以外

文字列strをpathnameに変換します。
parse-namestring関数と同等です。
Unicode文字列の詳細はlisp_string8_関数をご確認ください。

脱出関数lisp_pathname16_

lisp_pathname8_で解説

脱出関数lisp_pathname32_

lisp_pathname8_で解説

脱出関数lisp_namestring_

int lisp_namestring_(addr x, addr path);

入力: path pathname-designator
出力: x hold変数
戻り値: 脱出時に0以外

pathnameオブジェクトでpathを文字列に変換します。
namestring関数と同等です。
pathがhold変数の時は、内容が使用されます。