% 関数仕様 - オブジェクト
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_fixnumvoid 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型の浮動小数オブジェクトを生成します。
valueがinfかnanの場合はエラーです。
lisp_double_int lisp_double_(addr x, double value);
入力: value 浮動小数
出力: x hold変数
戻り値: 脱出時に0以外
double-float型の浮動小数オブジェクトを生成します。
valueがinfかnanの場合はエラーです。
lisp_long_double_int lisp_long_double_(addr x, long double value);
入力: value 浮動小数
出力: x hold変数
戻り値: 脱出時に0以外
long-float型の浮動小数オブジェクトを生成します。
valueがinfかnanの場合はエラーです。
オブジェクトの値を取得する関数です。
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_pint lisp_zero_p(addr value);
入力: value オブジェクト
戻り値: bool値
valueがhold変数の場合は、内容が評価されます。
valueが実数でありかつ0である場合に0以外が返却されます。
lisp_plus_pint lisp_plus_p(addr value);
入力: value オブジェクト
戻り値: bool値
valueがhold変数の場合は、内容が評価されます。
valueが実数でありかつ0を超えている場合に0以外が返却されます。
0は含まれません。
lisp_minus_pint lisp_minus_p(addr value);
入力: value オブジェクト
戻り値: bool値
valueがhold変数の場合は、内容が評価されます。
valueが実数でありかつ0をより小さい場合に0以外が返却されます。
0は含まれません。
lisp_get_charactervoid lisp_get_character(addr pos, unicode *ret);
入力: pos 文字型オブジェクト
出力: ret unicode文字
posがhold変数の場合は、内容が評価されます。
文字型のコードをretに返却します。
lisp_get_fixnumvoid 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変数の場合は、内容が評価されます。
posがsingle-float型の場合は値をretに返却します。
それ以外の実数型の場合はsingle-floatにcastして返却します。
lisp_get_double_int lisp_get_double_(addr pos, double *ret);
入力: pos 実数型オブジェクト
出力: ret 浮動小数
戻り値: 脱出時に0以外
posがhold変数の場合は、内容が評価されます。
posがdouble-float型の場合は値をretに返却します。
それ以外の実数型の場合はdouble-floatにcastして返却します。
lisp_get_long_double_int lisp_get_long_double_(addr pos, long double *ret);
入力: pos 実数型オブジェクト
出力: ret 浮動小数
戻り値: 脱出時に0以外
posがhold変数の場合は、内容が評価されます。
posがlong-float型の場合は値をretに返却します。
それ以外の実数型の場合はlong-floatにcastして返却します。
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の関数です。
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以外
packageにnameで表す名前のsymbolをinternします。
packageがnilかNULLの場合は*package*の値が使用されます。
packageとnameが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以外
packageにnameで表す名前のsymbolをinternします。
packageがNULLの場合は*package*の値が使用されます。
Unicode文字列の詳細はlisp_string8_関数をご確認ください。
lisp_intern16_lisp_intern8_で解説
lisp_intern32_lisp_intern8_で解説
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の関数です。
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変数の時は、内容が使用されます。