C++ 標準ライブラリー互換演算

この節では、C++ の標準ライブラリーから引用された、パステルステッチの型とプリミティブ演算を規定する。

C++ 互換整数型

C++ 互換整数型 (C++ compatible integer types) は、C++ の整数型をパステルステッチの値としてラップしたものである。C++ の intmax_t と unitmax_t が利用できる。これらの型の名前は intmax%tc plus plusuintmax%tc plus plus である。型の名前とは、型を指定するための有名ベクトルである。これらの型の名前は ^type 演算子の右辺として使用できる。

パステルステッチの自然数、浮動小数点数、文字列と C++ 互換整数型の intmax_t, unitmax_t は、^convert 演算子により、すべての組み合わせで変換が可能である。C++ 互換整数型と C++ 互換整数型との変換は、ホスト言語の仕様に従う。パステルステッチの自然数および浮動小数点数と C++ 互換整数型との変換では、オーバーフローが発生する場合の動作は実装により異なる。また、パステルステッチの浮動小数点数と C++ 互換整数型との変換で、オーバーフローが発生しない場合、誤差は 1 以下である。パステルステッチの文字列から C++ 互換整数型への変換で、変換に失敗した場合は、ブーリアン型の false に変換される。

C++ 互換整数型に対して以下のプリミティブ演算を使用できる。複数の引数を持つプリミティブ演算では、すべての引数の型が同じでなくてはならない。また、戻り値の型は引数の型と同じである。ただし、0 による除算が発生する場合には、戻り値はブーリアン型の false である。

演算指定子 引数 意味
moduloc plus plus 1, 2 剰余
bitwise andc plus plus 1, 2 ビットごとの論理積
bitwise inclusive orc plus plus 1, 2 ビットごとの論理和
bitwise exclusive orc plus plus 1, 2 ビットごとの排他的論理和
bitwise notc plus plus main ビットごとの論理否定
shift leftc plus plus 1, 2 左方向のビットシフト
shift rightc plus plus 1, 2 右方向のビットシフト

それぞれのプリミティブ演算の仕様は C++ の対応する演算の仕様に従う。また、実装によっては、パステルステッチの自然数型に対して、これらのプリミティブ演算を使用できる。

限界値

C++ の numeric_limits クラステンプレートとの互換性のため、numeric%limitsc plus plus プリミティブ演算を使用できる。このプリミティブ演算は type 引数と limit 引数を取る。type 引数には intmax%tc plus plus 有名ベクトルと uintmax%tc plus plus 有名ベクトルを指定できるほか、実装によっては natural numbermainfloating point numbermain を指定できる。limit 引数には以下の表にある有名ベクトルを指定できる。

limit 引数の値 戻り値の型
is%specializedc plus plus ブーリアン
minc plus plus 指定された型
maxc plus plus 指定された型
lowestc plus plus 指定された型
digitsc plus plus 自然数
digits10c plus plus 自然数
max%digits10c plus plus 自然数
is%signedc plus plus ブーリアン
is%integerc plus plus ブーリアン
is%exactc plus plus ブーリアン
radixc plus plus 自然数
epsilonc plus plus 指定された型
round_errorc plus plus 指定された型
min%exponentc plus plus 自然数
min%exponent10c plus plus 自然数
max%exponentc plus plus 自然数
max%exponent10c plus plus 自然数
has%infinityc plus plus ブーリアン
has%quiet%NaNc plus plus ブーリアン
has%signaling%NaNc plus plus ブーリアン
has%denormc plus plus 実装により異なる
has%denorm%lossc plus plus ブーリアン
infinityc plus plus 指定された型
quiet%NaNc plus plus 指定された型
signaling%NaNc plus plus 指定された型
denorm%minc plus plus 指定された型
is_iec559c plus plus ブーリアン
is_boundedc plus plus ブーリアン
is_moduloc plus plus ブーリアン
trapsc plus plus ブーリアン
tinyness%beforec plus plus ブーリアン
round%stylec plus plus 実装により異なる

limit 引数の値が is%specializedc plus plus 有名ベクトルであるとき、numeric%limitsc plus plus プリミティブ演算 が type 引数で指定された型に対応しているかどうかを返す。他の場合はホスト言語の仕様に従う。

数学

C++ の以下の数学的な関数に対して、固有名が同じで姓が c plus plus であるプリミティブ演算が使用できる。C++ で 1 引数である関数はパステルステッチでは引数 main を取る。C++ で 2 引数である関数はパステルステッチでは引数 12 を取る。引数と戻り値の型はいずれもパステルステッチの浮動小数点数型である。

ただし、アスタリスクを付けたものは、将来の言語仕様のために予約されている。

以下のプリミティブ演算は戻り値がブーリアン型である。

以下は C++ では定数であるが、パステルステッチではプリミティブ演算である。

文字列フォーマット

C++ の ostringstream クラスのラッパーとして formatc plus plus プリミティブ演算が提供される。このプリミティブ演算は以下の引数を取り、main 引数に指定された値を文字列に変換して、それを戻り値とする。引数の意味は、C++ での同名のメンバー変数またはメンバー関数に準じる。

引数
main(後述)
boolalphaブーリアン
showbaseブーリアン
showpointブーリアン
showposブーリアン
skipwsブーリアン
unitbufブーリアン
uppercaseブーリアン
decブーリアン
hexブーリアン
octブーリアン
fixedブーリアン
scientificブーリアン
internalブーリアン
leftブーリアン
rightブーリアン
width自然数
precision自然数
locale(未定)
fill自然数

main を除く引数は省略可能である。ブーリアン型の引数は省略すると false とみなされる。これは C++ の ostringstream クラスのデフォルトとは一致しない場合がある。自然数型の引数を省略した場合は C++ の ostringstream クラスのデフォルトが使われる。

main 引数には以下の型を使用できる。

locale 引数は将来の言語仕様のために予約されている。

fill 引数は文字のコードを自然数で指定する。

ファイル入出力

ファイル入出力のためファイルポインター型が提供される。これは C++ の FILE * 型のラッパーである。ファイルポインター型の名前となる有名ベクトルは FILE pointerc plus plus である。

ファイル入出力のため以下のプリミティブ演算が提供される。

fclose プリミティブ演算はファイルポインター型の main 引数を取り、ファイルを閉じる。

fflush プリミティブ演算はファイルポインター型の main 引数を取り、バッファーをフラッシュする。

fopen プリミティブ演算は文字列型の filename 引数と mode 引数を取り、ファイルを開く。戻り値はファイルポインター型である。

freopen プリミティブ演算は文字列型の filename 引数と mode 引数、ファイルポインター型の stream 引数を取り、ファイルを開き直す。戻り値はファイルポインター型である。

is valid FILE pointer プリミティブ演算はファイルポインター型の main 引数を取り、ファイルポインターがヌルポインターであれば false を、そうでなければ true を返す。

read file プリミティブ演算はファイルポインター型の main 引数を取り、ファイル全体の内容を文字列型で返す。

write to file プリミティブ演算はファイルポインター型の stream 引数と文字列型の string 引数を取り、ファイルに文字列を書き込む。

stdin, stdout, stderr プリミティブ演算は引数を取らず、ファイルポインター型の値を返す。