SLIM callbackϢ
Last-modified: 2010-05-07 () 16:18:32 (5115d)
Top / SLIM callbackϢ
- 礳ޤȤڡäɡʬѤ˥
Ϣե롦ե †
- slim
- src/ext/init_exts.c
- src/Makefile.am
integer.c˿ؿɲ †
integer_testʽƤinteger_randΥԡ †
void integer_test(ReactCxt rc, LmnMembrane *mem, LmnAtom a0, LmnLinkAttr t0, LmnAtom a1, LmnLinkAttr t1) { LmnWord n = rand() % a0; lmn_mem_newlink(mem, a1, LMN_ATTR_MAKE_LINK(0), LMN_ATTR_GET_VALUE(t1), n, LMN_INT_ATTR, 0); lmn_mem_push_atom(mem, n, LMN_INT_ATTR); lmn_mem_delete_atom(mem, a0, t0); }
ؿinit_integer()integer_testɲ †
void init_integer(void) { lmn_register_c_fun("integer_set", integer_set, 3); lmn_register_c_fun("integer_srand", integer_srand, 1); lmn_register_c_fun("integer_rand", integer_rand, 2); lmn_register_c_fun("integer_of_string", integer_of_string, 2); lmn_register_c_fun("integer_test", integer_test, 2); <------- srand((unsigned)time(NULL)); }
ѥ †
- slimǥ쥯ȥľ make & make install
ȤäƤߤ †
random = H. '$callback'('integer_test', 100, H). ----> random(20).random(99).
̥եäƿؿɲ †
ή †
- src/ext/graph.c
- src/ext/init_exts.c˽ؿɲ
- src/Makefile.amgraph.cɲ
src/ext/graph.c †
/* Random graph generator */ # include "../lmntal_ext.h" void graph_rand(ReactCxt rc, LmnMembrane *mem, LmnAtom a0, LmnLinkAttr t0, LmnAtom a1, LmnLinkAttr t1) { LmnWord n = rand() % a0; lmn_mem_newlink(mem, a1, LMN_ATTR_MAKE_LINK(0), LMN_ATTR_GET_VALUE(t1), n, LMN_INT_ATTR, 0); lmn_mem_push_atom(mem, n, LMN_INT_ATTR); lmn_mem_delete_atom(mem, a0, t0); } void init_graph(void) { lmn_register_c_fun("graph_rand", graph_rand, 2); }
src/ext/init_exts.c˽ؿɲ †
#include "lmntal.h" void init_integer(void); void init_nlmem(void); void init_atomic(void); void init_io(void); void init_initial_ruleset(void); void init_nd_conf(void); void init_graph(void); <------------ void init_builtin_extensions(void) { init_integer(); init_nlmem(); init_atomic(); init_io(); init_initial_ruleset(); init_nd_conf(); init_graph(); <------------------ }
src/Makefile.amgraph.cɲ †
ext/init_exts.c ext/integer.c ext/atomic.c ext/nlmem.c ext/io.c ext/initial_ruleset.c \ ext/nd_conf.c ext/graph.c \ <-------------------ext/ϤΥե뷲նɲ
ѥ †
- slimǥ쥯ȥľ make & make install
ȤäƤߤ †
random = H. '$callback'('graph_rand', 100, H). ----> random(23).random(84).
ɡ3ʬޤȤ †
/* Random graph generator */ # include "../lmntal_ext.h" /* * (N, H1, H2, H3): * * H* is bound to a random number between 0 and N-1. */ void graph_rand(ReactCxt rc, LmnMembrane *mem, LmnAtom a0, LmnLinkAttr t0, LmnAtom a1, LmnLinkAttr t1, LmnAtom a2, LmnLinkAttr t2, LmnAtom a3, LmnLinkAttr t3) { LmnWord n1 = rand() % a0; LmnWord n2 = rand() % a0; LmnWord n3 = rand() % a0; lmn_mem_newlink(mem, a1, LMN_ATTR_MAKE_LINK(0), LMN_ATTR_GET_VALUE(t1), n1, LMN_INT_ATTR, 0); lmn_mem_push_atom(mem, n1, LMN_INT_ATTR); lmn_mem_newlink(mem, a2, LMN_ATTR_MAKE_LINK(0), LMN_ATTR_GET_VALUE(t2), n2, LMN_INT_ATTR, 0); lmn_mem_push_atom(mem, n2, LMN_INT_ATTR); lmn_mem_newlink(mem, a3, LMN_ATTR_MAKE_LINK(0), LMN_ATTR_GET_VALUE(t3), n3, LMN_INT_ATTR, 0); lmn_mem_push_atom(mem, n3, LMN_INT_ATTR); lmn_mem_delete_atom(mem, a0, t0); } void init_graph(void) { lmn_register_c_fun("graph_rand", graph_rand, 4); }