NYSL
NYSL
#module#defcfunc findUnusedModuleIndex array modules, \local indexindex = 0foreach modulesif cnt != index : breakindex++loopreturn index#global// 以下テストコード、#if 1にして動作#if 0#module test index, var#modinit int p_val, \local l_indexmref l_index, 2var = p_valindex = l_indexmes strf("CREATED #%d (%d)", index, var)return#modtermmes strf("DELETED #%d (%d)", index, var)return#globalnewmod m, test, 0newmod m, test, 1newmod m, test, 2newmod m, test, 3delmod m(1)newmod m, test, 4newmod m, test, 5newmod m, test, 6mes strf("VACANT: #%d", findUnusedModuleIndex(m))delmod m(4)mes strf("VACANT: #%d", findUnusedModuleIndex(m))delmod m(2)mes strf("VACANT: #%d", findUnusedModuleIndex(m))newmod m, test, 7mes strf("VACANT: #%d", findUnusedModuleIndex(m))newmod m, test, 8mes strf("VACANT: #%d", findUnusedModuleIndex(m))newmod m, test, 9mes strf("VACANT: #%d", findUnusedModuleIndex(m))#endif