next up previous contents index
Next: ジェネリック・オブジェクト Up: データ構造 Previous: 中断ゴールを現わす構造

タグ関連のマクロ

KLICのごく低レベルの処理で、これまでに説明してきた、タグ自身、 また、タグを扱う操作に関しては、マクロ化されており、 記述性、可読性の向上、操作の統一を計っている。

Inline文、ジェネリック・オブジェクトの記述など、CレベルでKL1のデータ構造を アクセスする際には、表2.3,2.4 に挙げるマクロを利用して記述することが推奨される。

include/klic/struct.h で記述されている主な関連マクロを 表2.3に纏める。


 

 
Table 2.3: タグ関連のマクロ一覧
マクロ 意味
PTAGBITS ポインタデータに付加されているタグのbit長
PTAGMASK ポインタデータに付加されているタグ部のマスク
VARREF REFのタグ値
CONS CONSへの参照のタグ値
ATOMIC アトミックデータのタグ値
FUNCTOR ファンクタへの参照のタグ値
ptagof(x) xのポインタタグ部分を得る
isatomic(x) xがアトミックデータであることの判定
iscons(x) xがCONSへの参照であることの判定
isfunctor(x) xがファンクタへの参照であることの判定
isref(x) xが参照であることの判定
isstruct(x) xがCONSまたはファンクタへの参照であることの判定
functnotcons(x) xが構造であるときにCONSでないことの判定
atomicnotref(x) xが構造でないときにアトミックデータであることの判定
ATAGBITS アトムデータに付加されているタグのbit長
ATAGMASK アトムデータに付加されているタグのマスク
INT 整数タグ
SYM アトムタグ
atagof(x) xのアトミックタグを得る
isint(x) xが整数データかどうか検査する
issym(x) xのアトムデータかどうか検査する
makeint(n) 整数nをKL1整数データにする
makesym(x) xのアトム番号によりKL1アトムデータを生成する
makeatomic(x) xにアトミックタグ(つまり2bitのみ)を付加する
makeref(x) x のポインタによりKL1 REFデータを生成する
makecons(x) xのポインタによりKL1 CONSデータを生成する
makefunctor(x) xのポインタによりKL1 functorデータを生成する
intval(x) KL1整数データxから整数値を得る
symval(x) KL1アトムデータxからアトム番号を得る
derefone(x) KL1 REFデータxの先を一段手繰る


また、CONS、ファンクタの要素をアクセスするためのマクロを 表2.4に纏める。


 

 
Table 2.4: CONS,ファンクタの要素をアクセスするためのマクロ
マクロ 意味
functor_of(s) sの指すファンクタの主ファンクタ
arg(s, k) sの指すファンクタの第k引数
car_of(x) xの指すCONSのCAR
cdr_of(x) xの指すCONSのCAR
pcar_of(x) xの指すCONSのCARを指すREFセルの内容
pcdr_of(x) xの指すCONSのCDRを指すREFセルの内容



next up previous contents index
Next: ジェネリック・オブジェクト Up: データ構造 Previous: 中断ゴールを現わす構造
Sekita Daigo
1998-05-18