Libraries of CamphorScript

0. 依存関係


線でつながれているものは、下にあるライブラリが上にあるライブラリに依存していることを表す。

1. <fixdecl>

includeしているライブラリ:無し
演算子優先順位宣言:
infixl 0(,)
infixr 5(=), (+=), (-=), (=~), (+=~), (-=~), (+=!~), (=!~), (-|=), (-|=~)
infixl 35(+), (-), (+~), (-~)
infixl 40(*), (%), (*~), (/), (/~)
関数・演算子定義:無し

2. <eq_til>

includeしているライブラリ:<fixdecl> 演算子優先順位宣言:無し
関数・演算子定義
定義使い方意味同等の挙動をするC
void (+=~)(char& a;char& z)a+= ~z;zを破壊しながらそれをaに足し合わせるa+=z, z=0;
void (+=~)(char& a,char& b;char& z)(a,b)+= ~z;zを破壊しながらそれをaとbに足し合わせるa+=z, b+=z, z=0;
void (+=~)(char& a;char& z * constant char N)a+= ~z*N;zを破壊しながら、Nをz回aに足すa+=z*N, z=0;
void (-=~)(char& a;char& z)a-= ~z;zを破壊しながらそれをaから引くa-=z, z=0;
void (-=~)(char& a,char& b;char& z)(a,b)-= ~z;zを破壊しながらそれをaやbから引くa-=z, b-=z, z=0;
void (-=~)(char& a;char& z * constant char N)a-= ~z*N;zを破壊しながら、Nをz回aから引くa-=z*N, z=0
void (=~)(char& a;char& z)a= ~z;zを破壊しながらそれをaにコピーa=z, z=0;
void (=~)(char& a,char& b;char& z)(a,b)= ~z;zを破壊しながらそれをaとbにコピーa=z, b=z, z=0;
void (=~)(char& a;char& z * constant char N)a= ~z*N;zを破壊しながら、aをN*zにするa=z*N, z=0;

3. <eq_bang_til>

includeしているライブラリ:<fixdecl>
演算子優先順位宣言:無し
関数・演算子定義
定義使い方意味同等の挙動をするC
void (+=!~)(char& a;char& z)a+= !~z;zを破壊しながら、zの論理否定をaに足し合わせるa+= !z, z=0;
void (+=!~)(char& a,char& b;char& z)(a,b)+= !~z;zを破壊しながら、zの論理否定をaとbに足し合わせるa+= !z, b+= !z, z=0;
void (=!~)(char& a;char& z)a= !~z;zを破壊しながら、zの論理否定をaに代入するa= !z, z=0;
void (=!~)(char& a,char& b;char& z)(a,b)= !~z;zを破壊しながら、zの論理否定をaとbに代入するa= !z, b= !z, z=0;

4. <stdcalc>

includeしているライブラリ:<fixdecl>, <eq_til>, <eq_bang_til>
演算子優先順位宣言:無し
関数・演算子定義
定義使い方意味同等の挙動をするC
void clear(char& a)clear(a);aを0にするa=0;
void (=)(char& a;constant char N)a=N;aに定数Nを代入a=N;
void (+=)(char& a;char& b)a+=b;aにbを足すa+=b;
void (+=)(char& a;constant char N *~ char& z)a+= N * ~z;zを破壊しながら、Nをz回aに足すa += N * z, z=0;
void (-|=~)(char& a;char& b)a -|= ~b;bを破壊しながらそれをaから引くが、aがb以下ならaは0になるa= (a>b ? a-b : 0), b=0;

5. <div>

includeしているライブラリ:<stdcalc>
演算子優先順位宣言:
infixr 5(+<-~), (<-~), (-|=)
infixl 40(/)
関数・演算子定義
定義使い方意味同等の挙動をするC
void (-|=) (char& a; const char N)a -|= N;Nをaから引くが、aがN以下ならaは0になるa= (a>N ? a-N : 0);
void (+=)(char&a,char&b;char&c)(a,b) += c;cの値をaとbとに加えるa+=c, b+=c;
void (+<-~) (char& quot, char& rem; char& a / const char N)(quot, rem)+ <- ~a / N;aをNで割った商をquotに、余りをremに加えるquot += a / N, rem += a % N, a=0;
void sprint(char& x1, char& x2, char& x3 +<-~ char& a)sprint(x1, x2, x3 + <- ~a);aを破壊しながら、aの100の位、aの10の位、aの1の位をそれぞれx1, x2, x3に足し合わせるx3 += a % 10, x2 += (a/10) % 10, x1 += a/100, a=0;

6. <stdcalc2>

includeしているライブラリ:<stdcalc>
演算子優先順位宣言:無し
関数・演算子定義
定義使い方意味同等の挙動をするC
void (+=)(char&a; constant char M * constant char N)a += M*N;定数Mと定数Nの積をaに加えるa += M*N;
void (-=)(char&a; constant char M * constant char N)a -= M*N;定数Mと定数Nの積をaから引くa -= M*N;

7. <conditional>

includeしているライブラリ:<stdcalc2>
演算子優先順位宣言:無し
構文定義
定義使い方意味同等の挙動をするC
syntax unless(~char& a){block}unless(~a){/*block*/}aを0にするのと並行して、元々aが0のときblockの中身を実行する。if(!a){a=0; {/*block*/}}
syntax unless(char& a){block}unless(a){/*block*/}aが0のときblockの中身を実行する。if(!a){/*block*/}
syntax unless(constant char N - char& a){block}unless(N-a){/*block*/}N-aが0のとき、つまりNとaが等しいとき、blockの中身を実行する。if(!(N-a)){/*block*/}

備考: 記号の読み方

一部のライブラリは代表的な演算子がファイル名となっているが、その際の対応表を示す。
= eq
! bang
+ plus
- min
* star
~ til
% per
& and
, com
/ div
: col
< lt
> gt
? q
@ at
| pipe
^ hat