SeijiWiki
SLIM callback関連 メモ
の編集
Top
/ SLIM callback関連 メモ
-- 雛形とするページ --
???±??¢Ã???Ñ??¢±
Adsense Arbitrage Contest Beating Major Adsense Arbitragers Along at the Game
BracketName
Farming Recommendations And Traveler's Bag For Incredible Gold
FormattingRules
FrontPage
Help
hyperlink仕様まとめ
InterWiki
InterWikiName
InterWikiSandBox
LINK
MenuBar
PaperWriting
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
QuickTimeInstaller
RecentDeleted
SandBox
SLIM callback関連 メモ
SLIM時間計測
TopPage
uniq
vista - ubuntu8.04(on VMware)間での共有フォルダ設定
Vistaで自動シャットダウン
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
ノート
ラウンジ
研究日誌とうめき
研究日誌とうめき_
研究日誌とつぶやき
研究日誌とぼやき
実験TA シフト表
卒論
卒論タイトル
卒論概要
読み物
[[研究日誌とうめき]] -うえちょこがまとめたページがあったけど、自分用にメモ #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に初期化関数を追加 [#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を追加 [#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/系のファイル群付近に追加 **コンパイル [#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); }
タイムスタンプを変更しない
[[研究日誌とうめき]] -うえちょこがまとめたページがあったけど、自分用にメモ #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に初期化関数を追加 [#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を追加 [#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/系のファイル群付近に追加 **コンパイル [#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); }
テキスト整形のルールを表示する