Langphilia! /
KL1 /
KLIC-C /
Generator Objects, 2001-10-26
Generator Objects
Usage in KLIC-KL1 Language
フックした変数を具体化することによってメッセージを送る。
変数の値を読み込もうとすると何らかの計算が行なわれる。
random_numbers
- 前提
- システムで nrand48 が使えること。
- new +Range (+Seed)
- Seed を種として [0,Range) の乱整数列を生成する random_numbers を作る。
- unify
- 乱数を car に持つストリームを返す。
- print
- RANDOM@アドレス と表示する。
Usage in KLIC-C Language
klic/gg_methtab.h
- 前提
- include する前にマクロ GGUSE_MY_* を必要に応じて定義しておくこと。
GGDEF_* して GGUSE_MY_* を定義した後、GGDEF_NEW の前に include する。
- 変数 struct generator_object_method_table GG_method_table
- 関数 q* GG_STD_UNIFY()
- 関数 long GG_STD_PRINT()
- 関数 q* GG_STD_GC()
- 関数 long GG_STD_REGIST()
- 関数 long GG_STD_DEALLOCATE()
- 関数 q* GG_STD_CLOSE()
- 関数 q GG_STD_SUSPEND()
klic/gg_macro.h
- 前提
- 型 GG_OBJ_TYPE を定義すること。
- 宣言 GG_USE_CLASS(class)
- 宣言 GGDEF_NEW(), GGDEF_UNIFY(), GGDEF_PRINT(), GGDEF_GC(),
GGDEF_REGIST(), GGDEF_DEALLOCATE(), GGDEF_CLOSE(),
GGDEF_GENERIC(), GGDEF_SUSPEND(), GGDEF_GENERATE()
- q class:new (long GG_ARGC, q GG_ARGV[], q* g_allocp)
- 宣言 GG_STD_DECL_FOR_NEW
- GG_rappend(pref), GG_body(fa)
- 型 GG_method_table, GG_method_table0(class), GG_method_table1(class)
- `class'_g_generator_method_table
- 定数 GG_OBJ_SIZE
- 定数 const char* GG_CLASS_NAME_STRING
- 定数 q GG_SUCCEEDED, GG_GCREQUEST
- 関数 q* G_MAKE_THE_NEW_GOAL()
- 関数 (q*) do_shallow_unify(), do_shallow_unify_value()
- 関数 q* G_SUSPEND()
- 関数 q GG_MAKE_HOOK_VAR()
- 関数 void GG_FAIL, GG_ERROR_IN_NEW (const char* errmsg)
- GG_ERROR_IN_IN は誤り。
- 関数 void GG_RETURN, GG_TERMINATE, GG_SUSPEND(var)
- 関数 void GG_RETURN_FROM_NEW(var),
GG_RETURN_FROM_PRINT, GG_RETURN_FROM_GC(newgobj)
- 関数 void GGSET_NEWOBJ(newgobj), GGSET_NEWOBJ_IN_NEWGEN(newgobj),
GGSET_NEWOBJ_FOR_NEW(newgobj, type)
- 関数 void GGset_myself_for_new
- 関数 void GGSET_INTARG, GGSET_INTARG_FOR_NEW (var, argv_i)
- 関数 void GGSET_INTARG_WITHIN_RANGE(var, argv_i, llim, ulim)
- 関数 GGSET_NEW_CONS(var), GGSET_VAR(self)
- 関数 void GG_DEREF, GG_DEREF_FOR_NEW (q& x)
- 関数 void GG_DEREF_AND_TEST(q& x, susp)
- 関数 GG_UNIFY, GG_KL1_UNIFY (x, y)
- 関数 void GG_TRY_TO_ALLOC(new, type, size, gc_request)
- 関数 GG_PUTC(x), GG_PRINT(x), GG_PRINT_KL1_TERMS(x, b, s)
- 関数 void GG_SUSPEND_GOAL(var, goal)
- GG_SWITCH_ON_TERM(cons, atomic, funct, dobj, susp)
klic/ge_exref.h
runtime/ge_exref.c
runtime/gg_shbusy.c
runtime/gg_shvar.c
runtime/random.c
Copyright 2001, TAKAGI Yusuke.