SLIM callback´ØÏ¢ ¥á¥â ¤ÎÊѹ¹ÅÀ
Top / SLIM callback´ØÏ¢ ¥á¥â
- Äɲ䵤줿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
- ºï½ü¤µ¤ì¤¿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
- SLIM callback´ØÏ¢ ¥á¥â ¤Ø¹Ô¤¯¡£
- SLIM callback´ØÏ¢ ¥á¥â ¤Îº¹Ê¬¤òºï½ü
[[¸¦µæÆü»ï¤È¤¦¤á¤]] -¤¦¤¨¤Á¤ç¤³¤¬¤Þ¤È¤á¤¿¥Ú¡¼¥¸¤¬¤¢¤Ã¤¿¤±¤É¡¢¼«Ê¬ÍѤ˥á¥â #contents * ´ØÏ¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë¡¦¥Õ¥©¥ë¥À [#ea9796b7] -slim²¼¤Î --src/ext/init_exts.c --src/Makefile.am * integer.cÆâ¤Ë¿·¤·¤¤´Ø¿ô¤òÄɲà [#w562fa44] **integer_test¤òºîÀ®¡Ê½èÍýÆâÍƤÏinteger_rand¤Î¥³¥Ô¡¼¡Ë [#j742dc12] 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¤òÄɲà [#c18b5f91] 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)); } **¥³¥ó¥Ñ¥¤¥ë [#d83c68cc] -slim¥Ç¥£¥ì¥¯¥È¥êľ²¼¤Ç make & make install **»È¤Ã¤Æ¤ß¤ë [#d302318f] random = H. '$callback'('integer_test', 100, H). ----> random(20).¤ä¤érandom(99).¤ä¤é * ÊÌ¥Õ¥¡¥¤¥ë¤òºî¤Ã¤Æ¿·¤·¤¤´Ø¿ô¤òÄɲà [#w562fa44] **ή¤ì [#qece7b38] -src/ext/graph.c¤òºîÀ® -src/ext/init_exts.c¤Ë½é´ü²½´Ø¿ô¤òÄɲà -src/Makefile.am¤Ëgraph.c¤òÄɲà **src/ext/graph.c¤òºîÀ® [#m7362a2b] /* 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¤Ë½é´ü²½´Ø¿ô¤òÄɲà **src/ext/init_exts.c¤Ë½é´ü²½´Ø¿ô¤òÄɲà [#vdabb560] #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.am¤Ëgraph.c¤òÄɲà **src/Makefile.am¤Ëgraph.c¤òÄɲà [#t0b4254a] 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 **¥³¥ó¥Ñ¥¤¥ë [#z160b3e0] -slim¥Ç¥£¥ì¥¯¥È¥êľ²¼¤Ç make & make install -»È¤Ã¤Æ¤ß¤ë **»È¤Ã¤Æ¤ß¤ë [#j4253ad3] random = H. '$callback'('graph_rand', 100, H). ----> random(23).¤ä¤érandom(84).¤ä¤é ***²þÎÉ¡§3°ú¿ôʬ¤Þ¤È¤á¤ÆÍð¿ôÀ¸À® [#ib06d702] /* 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); }