プログラミング言語 Lua その3
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/10/14(土) 13:13:52前々スレ http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
前スレ http://pc8.2ch.net/test/read.cgi/tech/1063711237/
本家 http://www.lua.org/
lua-users http://lua-users.org/
LuaForge http://luaforge.net/
Lua 5.1 リファレンスマニュアル(日本語訳)
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html
0002デフォルトの名無しさん
2006/10/14(土) 13:18:27/ =.\
// ̄\ .\
/| |へノ⌒| //\
\ \_// .\
\ = / \
\/ \
∧∧∧∧\
( `/) >ヽ∧
/ / / `∀> ∧∧
◇( イ◇ ( ,つ`∀´>
/ヽ )) ヽ )ヽ )と , イ
(_/(_/(_/(_/ノ(_/⊂ノ> )J
/ ̄Y ̄`|/ ̄^Y ̄ヽ/ ̄ ̄Y `´ ̄\
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
このスレはキムチ軍の奇襲により占領されました
0003デフォルトの名無しさん
2006/10/14(土) 13:28:44でも、ここのtable.clone関数は浅いコピーしかやってくれない模様。
色々と不足してるっぽいし、パッチとか投げたら喜ばれるのやもしれず……。
0004デフォルトの名無しさん
2006/10/14(土) 13:31:55ちょw
0005デフォルトの名無しさん
2006/10/15(日) 00:39:00実際のゲームとかphotoshopとかに組み込まれている奴って
テーブル関係の関数をどういう風に実装してんのかな
0006デフォルトの名無しさん
2006/10/15(日) 12:16:50とりあえず保守を兼ねて思いついたことを書くと、テーブルを書き出す前に
まず_Gとかを再帰的に舐めて関数テーブルを自力で作れば、関数名も書き出せて
復元できるようになるのでは?と思った。まだ試してないけど。
0007デフォルトの名無しさん
2006/10/15(日) 20:38:34面白いな
テクニックとか盗めるし
0008デフォルトの名無しさん
2006/10/16(月) 13:09:03見つけたけど、誰か使っている人いる?
ttp://www.gentee.com/index.htm
0009デフォルトの名無しさん
2006/10/16(月) 18:33:32消えうせろ
>>8
タイトルをよく読め
0010デフォルトの名無しさん
2006/10/16(月) 20:55:10ここはLuaだけじゃなくて、LightWeight全般もサブで取り扱うスレです。
前スレをよく読め
0011デフォルトの名無しさん
2006/10/16(月) 22:17:34あとせっかく立ててくれたまとめWikiを忘れたらだめだよ。
[関連]
Lua/組み込み系言語 Wiki*
http://wikiwiki.jp/lua/
0012デフォルトの名無しさん
2006/10/16(月) 23:13:17余力があったらソースを解説したらいいんじゃないの
0013デフォルトの名無しさん
2006/10/17(火) 18:57:43そのWikiってこのスレのまとめWikiだったのか!
0014デフォルトの名無しさん
2006/10/17(火) 19:24:210015デフォルトの名無しさん
2006/10/17(火) 20:01:310016デフォルトの名無しさん
2006/10/17(火) 23:43:190017デフォルトの名無しさん
2006/10/19(木) 07:28:170018デフォルトの名無しさん
2006/10/19(木) 20:08:410019デフォルトの名無しさん
2006/10/19(木) 20:33:56function makeoverload(...)
local funcs={...}
return function(...) local args={...} return funcs[#args+1](...) end
end
function funcA()
print("引数なし")
end
function funcB(a)
print("1引数", a)
end
function funcC(a, b)
print("2引数", a, b)
end
func = makeoverload(funcA, funcB, funcC)
func()
func(123)
func(123, 456)
0020デフォルトの名無しさん
2006/10/19(木) 21:26:060021デフォルトの名無しさん
2006/10/19(木) 22:55:08Programming in Lua の2版には、確か ... ではなく arg の方を使えって書いてあったような気がした。
0022デフォルトの名無しさん
2006/10/21(土) 23:36:500023デフォルトの名無しさん
2006/10/22(日) 22:46:38置換する関数が標準であればいいのに
Luaのgsubは使い方が判りづらくてウンコだ
0024デフォルトの名無しさん
2006/10/24(火) 19:13:220025デフォルトの名無しさん
2006/10/24(火) 22:39:440026デフォルトの名無しさん
2006/10/25(水) 22:01:410027デフォルトの名無しさん
2006/10/26(木) 07:11:130028デフォルトの名無しさん
2006/10/27(金) 07:35:230029デフォルトの名無しさん
2006/10/29(日) 20:30:040030デフォルトの名無しさん
2006/10/30(月) 18:50:040031デフォルトの名無しさん
2006/10/30(月) 19:51:42luaL_newmetatableで作成されたメタテーブルを持つユーザーデータならtnameを返し、それ以外ならtype()の結果を返す。
たとえばio.openで開いたファイルなら"FILE*"という文字列になる。
debugライブラリを使ってるのがマズイ
function type_ex(o)
local t = type(o)
if t=="userdata" then
local m = getmetatable(o)
if m then
for k,v in pairs(debug.getregistry()) do
if m==v then
if type(k)~="string" then
return tostring(k)
end
return k
end
end
end
end
return t
end
0032デフォルトの名無しさん
2006/11/01(水) 06:24:320033デフォルトの名無しさん
2006/11/02(木) 18:54:59↑の人が実装する
0034デフォルトの名無しさん
2006/11/07(火) 01:36:18というテーブルがあって、
temp[2]で200を取得することって出来ない?
0035デフォルトの名無しさん
2006/11/07(火) 14:23:55temp[2]は'aaa'になる。
嫌なら
temp[2] = temp.x みたいにするとか。
0036デフォルトの名無しさん
2006/11/07(火) 19:59:45循環参照にも対応してるはず。
テーブルを渡すとそのテーブルを復元するコードを返す。
loadstring(save_table(t))()で元のテーブルのコピー。
↓をlua.exeに食わせると(ry
print((string.gsub([==[function save_table(data)@;assert(type(data)=="table")@
;local s,l,c={},"",""@;local function dump(x)@;;local t,r=type(x),nil@;;if t==
"nil" or t=="boolean" or t=="number" then@;;;r=tostring(x)@;;elseif t=="string
" then@;;;if x:find("[%[%]]") then@;;;;x=x:gsub("%%", "%%%%"):gsub("%[", "%%("
):gsub("%]", "%%)")@;;;;r="(u[["..x.."]])"@;;;else@;;;;r=" [["..x.."]] "@;;;en
d@;;elseif t=="table" then@;;;if s[x] then@;;;;r="m[\""..s[x].."\"]"@;;;else@;
;;;assert((not getmetatable(x)) or (not getmetatable(x).__tostring))@;;;;local
k=tostring(x)@;;;;s[x]=k@;;;;l=l.." m[\""..k.."\"]={}"@;;;;r="s(\""..k.."\",{
"@;;;;for k,v in pairs(x) do@;;;;;r=r.."["..dump(k).."]="..dump(v)..","@;;;;en
d@;;;;r=r.."})"@;;;end@;;end@;;return r@;end@;s[data] = "r"@;for k,v in pairs(
data) do@;;c = c.." r["..dump(k).."]="..dump(v)@;end@;return [[do local r,m={}
,{r=r}local function s(n,t)local r=m[n]for k,v in pairs(t)do r[k]=v end return
r end local function u(s)return s:gsub("%%%)","]"):gsub("%%%(","["):gsub("%%%
%","%%")end]]..l..c.." return r end"@end]==], "\n",""):gsub("%s*@%s*", "\n")
:gsub(";", "\t")))
003736
2006/11/08(水) 17:21:17print((string.gsub([==[function save_table(data)@;assert(type(data)=="table")@
;local s,l,c,e,a={},"","",false,false@;local function dump(x)@;;local t,r=type
(x),nil@;;if t=="nil" or t=="boolean" or t=="number" then@;;;r=tostring(x)@;;e
lseif t=="string" then@;;;if x:find("[%[%]]") then@;;;;x=x:gsub("%%", "%%%%"):
gsub("%[", "%%("):gsub("%]", "%%)")@;;;;r="(u[["..x.."]])"@;;;;e=true@;;;else@
;;;;r=" [["..x.."]] "@;;;end@;;elseif t=="table" then@;;;if s[x] then@;;;;r="m
['"..s[x].."']"@;;;else@;;;;assert((not getmetatable(x)) or (not getmetatable(
x).__tostring))@;;;;local k=tostring(x)@;;;;s[x]=k@;;;;l=l.." m['"..k.."']={}"
@;;;;r="s('"..k.."',{"@;;;;for k,v in pairs(x) do@;;;;;r=r.."["..dump(k).."]="
..dump(v)..","@;;;;end@;;;;r=r.."})"@;;;;a=true@;;;end@;;end@;;return r@;end@;
s[data] = "r"@;for k,v in pairs(data) do@;;c = c.." r["..dump(k).."]="..dump(v
)@;end@;return "do local r,m={},{}m.r=r"@;;..((a and " local function s(n,t)lo
cal r=m[n]for k,v in pairs(t)do r[k]=v end return r end") or "")@;;..((e and "
local function u(s)return s:gsub('%%%)',']'):gsub('%%%(','['):gsub('%%%%','%%
')end") or "")@;;..l..c.." return r end"@end]==],"\n",""):gsub("%s*@%s*", "\n"
):gsub(";", "\t")))
003836
2006/11/08(水) 17:26:29--tableは保存しておきたいテーブル
dump = save_table(table)
--または dump = string.dump(loadstring(save_table(table)))
--ファイルに書き出す
f = io.open("hoge.lua", "w")
f:write(dump)
f:close()
--元のテーブルが復元される
table = dofile("hoge.lua")
function、thread、userdataはもちろん対応してない
0039デフォルトの名無しさん
2006/11/08(水) 19:47:35lua_resumeを呼んで帰ってきたときに、それまでスタックに積んでいたものが見事に
なくなります。lua_call系では消えずに残っているようですが…仕様なのかバグなのか。
マニュアルに書いてあるlua_resumeを使うときはlua_newthreadで新しくスレッドを
作ってから使えっていうのはこういうことなのですね…。
0040デフォルトの名無しさん
2006/11/10(金) 18:38:07うpろだ使えよ
0041デフォルトの名無しさん
2006/11/23(木) 12:09:360042デフォルトの名無しさん
2006/11/23(木) 13:52:08lua_State *L=lua_open();
luaL_loadstring(L,"function Add(x,y)\r\n return x+y \r\nend\r\n");
//printf("%s\n",lua_typename(L, lua_type(L, -1)));
lua_getglobal(L, "Add");
//printf("%s\n",lua_typename(L, lua_type(L, -1)));
//printf("%s\n",lua_typename(L, lua_type(L, 1)));
lua_pushnumber(L, 1.2);
//printf("%s\n",lua_typename(L, lua_type(L, -1)));
lua_pushnumber(L, 2.3);
//printf("%s\n",lua_typename(L, lua_type(L, -1)));
if(lua_pcall(L, 2, 1, 0) != 0){
printf("残念賞:%s\n",lua_tostring(L, -1));
}
printf("%f\n",lua_tonumber(L, -1));
lua_pop(L, 1);
lua_close(L);
これだけで動くと思うんだが、lua_pcallした後は
「残念賞:attempt to call a nil value」
合間のprintfを有効にすると
function,nil,function,number,number って出る。
初っ端から駄目駄目な俺に誰か助言をくれ〜
0043デフォルトの名無しさん
2006/11/23(木) 14:09:21残念!
0044デフォルトの名無しさん
2006/11/23(木) 14:57:13FAQ
loadstringは評価しない。callしる。
0046デフォルトの名無しさん
2006/12/01(金) 04:10:140047デフォルトの名無しさん
2006/12/02(土) 01:21:16そう定義されてるから仕方が無い
0048デフォルトの名無しさん
2006/12/02(土) 03:19:41この挙動は真っ当ではないと思わないか
0049デフォルトの名無しさん
2006/12/02(土) 03:38:02むしろ"=="の意味からいったら真っ当な気さえする。
演算子をつかってboost.spirit並みの拡張をしたい
というなら話はべつだが。
0050デフォルトの名無しさん
2006/12/02(土) 03:59:33意味的な意味で
>むしろ"=="の意味からいったら真っ当な気さえする。
__eqよんだ上で返値を無視すりゃいいじゃん
0051デフォルトの名無しさん
2006/12/02(土) 13:39:17いいんじゃん。単に言語設計上のポリシーの問題では?
>__eqよんだ上で返値を無視すりゃいいじゃん
無視するぐらいなら、呼ばなきゃいいじゃん
0052デフォルトの名無しさん
2006/12/02(土) 13:55:08別にいいと思う。それより
意味的な意味で ← この日本語がどうかと思う。意味がわからん。
0053デフォルトの名無しさん
2006/12/02(土) 14:52:21スクリプト実行時にその時比較される値によって実行されたりされなかったりするんだよ?
その上で「まぁべつにいいんじゃねヽ(´ー`)ノ」という意味でいいって言ってるんだよね?
だから処世術なんてききたくないっていってんだよばかばかまんこ
0054デフォルトの名無しさん
2006/12/02(土) 16:00:59という設計思想なんでしょ。
不必要なことはしないというだけで、別に不完全とは思わないなあ。
0055デフォルトの名無しさん
2006/12/02(土) 17:13:580056デフォルトの名無しさん
2006/12/02(土) 17:16:18定義をしてくれ
言語設計ポリシーの結果として選択された仕様を
完全か否かなんて議論はきわめて不毛だし。
0057デフォルトの名無しさん
2006/12/02(土) 17:17:14仮にそういう設計思想なんだとして、だったら__eqなんて作らせないでしょ?
0058デフォルトの名無しさん
2006/12/02(土) 17:18:58>スクリプト実行時にその時比較される値によって実行されたりされなかったりするんだよ?
で、何が困るの?
困ることが無いなら、比較速度がかなり速くなる分、
いまの実装の方が完全なんだけど。
わかる?お前定義の「完全な言語」なんてどうでいいんだよアホ。
0059デフォルトの名無しさん
2006/12/02(土) 17:20:22はぁ?バカか?
お前__eqの意味すら理解してないんじゃないのか?
0060デフォルトの名無しさん
2006/12/02(土) 17:23:070061デフォルトの名無しさん
2006/12/02(土) 17:24:49君らばかだなホント
0062デフォルトの名無しさん
2006/12/02(土) 17:34:220063デフォルトの名無しさん
2006/12/02(土) 22:46:40彼がなぜ__eqが同一のオブジェクトでも
実行されて欲しかったのかは謎のまま。
0064デフォルトの名無しさん
2006/12/02(土) 23:59:37そんな事書くとまた出てきちゃうだろ。
JavaのequalsとかC++のoperator==とかは同一オブジェクトでも
呼び出されるから彼の要求が特別に変というわけではない気がする。
まぁ結局は>55なんだが。
0065デフォルトの名無しさん
2006/12/03(日) 01:11:57挙動が気に入らなきゃvm書き換えりゃいいだけの話なんだし
0066デフォルトの名無しさん
2006/12/05(火) 12:29:24それに意味があるかどうかというより、
不可能なことがある、ってのがちょっと気持ち悪いとは思う。
所詮スクリプトなんだし、そこまで求めないけど。
0067デフォルトの名無しさん
2006/12/05(火) 13:19:17>不可能なことがある、ってのがちょっと気持ち悪いとは思う。
ナポレオン乙
0068デフォルトの名無しさん
2006/12/09(土) 08:01:03さっぱりわけが分からない
0069デフォルトの名無しさん
2006/12/09(土) 09:07:09オーバーロードが一切出来ない言語できないなw
バカなお前じゃw
0070デフォルトの名無しさん
2006/12/09(土) 09:18:340071デフォルトの名無しさん
2006/12/09(土) 13:46:11>所詮スクリプトなんだし、そこまで求めないけど。
ちゃんと読めよ。
0072デフォルトの名無しさん
2006/12/09(土) 18:38:16アホかお前。お前がちゃんと読めよ。
>所詮スクリプトなんだし、そこまで求めないけど。
スクリプトじゃなければ、そこまで求めるんだろうが。
スクリプトじゃなくて、オーバーロードできない言語だと、不可能だらけ。
アホな66は使えません。
0073デフォルトの名無しさん
2006/12/09(土) 19:09:10という雰囲気にひとつ例を出したに過ぎない66に対して、
72の粘着っぷりは異常。
0074デフォルトの名無しさん
2006/12/09(土) 19:49:33なんかよほど言い負けた感を持ったらしいとしか思えん、何が原因かは不明だが。
0075デフォルトの名無しさん
2006/12/10(日) 18:35:050076デフォルトの名無しさん
2006/12/10(日) 19:08:12スルーしとけばよかったのに。
0077デフォルトの名無しさん
2006/12/12(火) 18:59:03もうLuaで鉄板?
0078デフォルトの名無しさん
2006/12/13(水) 01:25:310079デフォルトの名無しさん
2006/12/13(水) 11:43:37どんなものかを知るためにぜひやってほしいにょ
0080デフォルトの名無しさん
2006/12/13(水) 19:41:44俺もsquirrelを推したいけど別にLuaの変なとこを指摘することもないな
むしろLuaのほうが環境整ってるせいでsquirrelのほうが使いづらい感が…
0081デフォルトの名無しさん
2006/12/14(木) 02:02:30”環境”って日本語ドキュメント?binder?eclipseのplugin?
各apiを実行するとどういう風にstackがアクセスされるのかのきちんとした仕様の明示はほしい
これは外人もいってたけど
0082デフォルトの名無しさん
2006/12/14(木) 08:23:13前も書いたけどluabindのあるなしの問題
stackなんか考えるのだるいじゃん
0083デフォルトの名無しさん
2006/12/14(木) 09:06:07データの送受はインスタンスや配列の中身を直接アクセスするだけで大抵すんじゃうし
native closureの初期下時の組み込みとnative closure内での引数取得と
script側のclosureをcallするとき引数を積むくらいだよstack使うのなんて
実際必要ないからbinderが発達しないんだと思う
0084デフォルトの名無しさん
2006/12/16(土) 10:08:48標準だったり"++"と"+="があったり、いいかも。
ただ、配列とテーブルが違ったり、ジェネレーターとコルーチンが
違ったり、Luaに比べてやや複雑か。気になったのは、
・Luaだとtbl.abcとtbl["abc"]は同じ意味だけどsquirrelでも
同じ方法はある?
・classとtableの関係は?
・参照カウンタ+GCの意味は循環参照検出にGCを使うという意味?
パフォーマンスにはどんな影響が?
あたりか。
0085デフォルトの名無しさん
2006/12/16(土) 14:23:14できるよー
>・classとtableの関係は?
ハッシュテーブルの基盤を使ってclassが作られてるようなかんじ?
>・参照カウンタ+GCの意味は循環参照検出にGCを使うという意味?
そうみたい。
でもまともに書いてれば循環参照なんてありえんし
コンパイルオプションで参照カウンタオンリーにしてしまえ
0086デフォルトの名無しさん
2006/12/17(日) 14:35:45luaのcoroutineはどうなってるの?
0087デフォルトの名無しさん
2006/12/18(月) 00:25:35state切り替え
coroutine.create()から呼ばれるluaE_newthread()見れば、新しいlua_State作ってるのがわかる
0088デフォルトの名無しさん
2007/01/01(月) 20:05:520089デフォルトの名無しさん
2007/01/02(火) 02:35:200090デフォルトの名無しさん
2007/01/02(火) 08:20:310091デフォルトの名無しさん
2007/01/05(金) 04:39:10俺はbrainf*ckだな
0092デフォルトの名無しさん
2007/01/05(金) 15:18:31まず見ることがないじゃないかw
0093デフォルトの名無しさん
2007/01/09(火) 00:18:29最近Luaを知って調べ始めたんだが、自作プログラムの外部スクリプトとして
Luaを組み込む方法が全然見つからないんだが、どこへ行けば詳しく書いてるだろうか?
0094デフォルトの名無しさん
2007/01/09(火) 00:36:49ソースに付属しているインタープリタみれば一発じゃん。
0095デフォルトの名無しさん
2007/01/09(火) 00:56:16すまん、ソースダウンロードしてみたがさっぱりわからなかった。
Boostとかだと、〜をinlcudeしろ、〜.libのあるところにパスを通せ、といった記述があるのだが、
そういうのが全然見当たらないんだが・・・
0096デフォルトの名無しさん
2007/01/09(火) 01:03:260097デフォルトの名無しさん
2007/01/09(火) 01:17:19d!
やっと解説してるところが見つかった。
0098デフォルトの名無しさん
2007/01/09(火) 19:59:01で、どこにあったの?
0099デフォルトの名無しさん
2007/01/10(水) 00:14:33http://www.codeproject.com/cpp/luaincpp.asp
ただ、ビルドはできたが読み込む際のluaopen_ioで落ちる。
ちょっと作業する時間なかったので、原因はまだ調べてない。
0100デフォルトの名無しさん
2007/01/10(水) 20:07:13http://www.compuphase.com/pawn/pawn.htm
だれも使ってなさそうな、組み込み言語
0101デフォルトの名無しさん
2007/01/11(木) 22:24:14質問なんですが、C++側でlua_Stateをいくつか作ったとき、そのlua_State間で
C++の関数を通じてテーブルの参照渡しをすることはできますか?
どうも値渡しならスタックを再帰でゴリゴリやってできそうな感じですが…。
0102デフォルトの名無しさん
2007/01/12(金) 18:30:38lua_xmove かレジストリで良いのかな?
0103デフォルトの名無しさん
2007/01/12(金) 22:49:52lua_xmoveもレジストリも同じglobal stateのスレッド同士じゃないとだめ。
0104101
2007/01/13(土) 17:04:49もう少し方法を考えてみようと思います。
ありがとうございました。
0105デフォルトの名無しさん
2007/01/24(水) 14:39:15別にLuaが好きなわけじゃないんだからね!
0106デフォルトの名無しさん
2007/01/26(金) 13:07:45cdeclなのが気に食わないのはどうしたらいいものか...
0107デフォルトの名無しさん
2007/02/08(木) 05:10:19string.char(string.byte(str, x, y))
としてるんだけど、これであってるのかなあ。
Lua 2日目の初心者です。
0108デフォルトの名無しさん
2007/02/09(金) 06:24:110109デフォルトの名無しさん
2007/02/09(金) 16:26:000110デフォルトの名無しさん
2007/02/09(金) 17:56:11昔からいっぱい使われてるじゃないか。
0111デフォルトの名無しさん
2007/02/09(金) 17:56:420112デフォルトの名無しさん
2007/02/10(土) 04:55:56string.subはstring.gsubとおなじで文字列置換だと思ってた。
正直すまんかった。
0113デフォルトの名無しさん
2007/02/10(土) 13:23:010114デフォルトの名無しさん
2007/02/10(土) 21:12:44FarCryもつかってたな
0115デフォルトの名無しさん
2007/02/11(日) 06:31:15日本人よ、アニメ絵ゲームで萌えてる場合じゃないぞ!
0116デフォルトの名無しさん
2007/02/11(日) 14:37:36今検索したら日本語版も出そうだな。
http://www.4gamer.net/news.php?url=/DataContents/game/0412.html
stackless pythonをサーバー側・クライアント側ともに使ってるらしい。
0117デフォルトの名無しさん
2007/02/16(金) 22:15:17http://sourceforge.net/projects/nesla/
0118デフォルトの名無しさん
2007/02/17(土) 00:54:05function f1(e)
setfenv(1,e) ;print(a)
end
function f2(f)
local a=123 ;f(getfenv(1))
end
f2(f1)
で123が表示されてほしいんだけど。
debug.getlocalとか使えばなんとかなるんだろうけど。
getlocalとgetupvalueだけ何でdebug扱いなんだろう。
速度?
0119デフォルトの名無しさん
2007/02/17(土) 12:23:250120118
2007/02/21(水) 21:35:09これが出来ないとf1への引数指定をするしかないよね。
f2のローカル変数が増えて且つf1でそれを使う場合
f1の引数宣言をどんどん追加する羽目になるんだよなー。
Cのマクロ展開的に気楽に処理をまとめようとする時
>>118見たいに出来ると便利なんだけど。
-------
話変わるけど、luabind使って
a=luabind_class_a() --luabindで定義したクラス生成
b=luabind_class_b() --luabindで定義したクラス生成
a.p=b ; b.p=a
a=nil ; b=nil
collectgarbage("collect")
ってやっても回収されないような気がする。
(pはluabindでdef_readwrite指定してない)
循環さえしてなければ回収されるっぽい。
そもそもdef_readwrite指定してpに代入すること
自体がまずいのかな?
luabind使ってる人、意見ヨロ。
0121118
2007/02/21(水) 21:38:11そもそもdef_readwrite指定してpに代入すること
=> そもそもdef_readwrite指定してないpに代入すること
0122118
2007/02/21(水) 21:43:47118は最初f1をf2のローカル関数にしてたけど他でも参照しようとして
外部に出した時の話です。
0123デフォルトの名無しさん
2007/02/21(水) 22:08:28print(e.a)じゃだめなの?もしくはgetfenv(f2)ではどうなる?
getfenv(1)というのがわからんな。ソース読んだ方が早い
0125118
2007/02/21(水) 22:20:39setfenv(1,e) ;print(a)
end
function f2(f)
setfenv(1,setmetatable({},{__index=_G}))
a=123 ;f(getfenv(1))
end
f2(f1)
これなら動くんだけどねぇ。
0126デフォルトの名無しさん
2007/02/21(水) 23:20:32すまん。見てたが良くわからないから
偉い人が降臨するのを待った方がいいと思った。
でもローカル変数はenvironmentが持ってるわけじゃないし
(Function Prototypeが持ってるぽい)
他の関数はスコープの外だから無理だと思うよ。
table:functionの形式にしてselfに持たせるのはどう?
0127118
2007/02/22(木) 00:27:58いえいえ半分愚痴なんで。
たとえば>>118を以下の様に書き換えると
a=456
function f1(e)
setfenv(1,e) ;print(a) -- 123が表示
end
function f2(f)
--ここからシンタックスシュガー
local org_env=getfenv(1)
local local_env={}
setfenv(1,setmetatable(local_env,{__index=org_env}))
--ここまでシンタックスシュガー
-- aはローカル
a=124
f(local_env)
-- print($a) グローバルなaを表示 =>
print(org_env["a"]) -- 456が表示
end
f2(f1)
print(a) -- 456が表示
関数先頭でローカル環境設定して
むしろlocalが指定されていないときをlocal変数
と解釈し、Rubyみたく$a見たいに記述された時を
グローバル変数と解釈するほうが安全なようなきがする。
関数内でlocal宣言し忘れてうっかりグローバル汚す
心配もないし。
0128118
2007/02/22(木) 02:37:14luabindのほうが大問題に思えてきた
class 'abc'
function abc:__init(name) self.name=name ; print("initialize:"..self.name) end
function abc:__finalize() print("finalize:"..self.name) end
a=abc("1")
b=abc("2")
a.p=b;b.p=a --循環
a=nil;b=nil
collectgarbage("collect")
これも__finalizeが呼ばれない模様
上記コードのaもbもuserdataで多分GCがuserdata内部で
持ってる参照を追ってないためリークしてるのではと
予想してみたけど、どうでしょ。
0129デフォルトの名無しさん
2007/02/22(木) 12:27:46>>118で何を実現したかったのか見えなかったんだけど、
setfenvとかはあくまでグローバルテーブルが取れるだけだし、
localとupvalueが取れないのは仕様上しょうがない・・・。
debugライブラリ使ってもいいけど、安全上の問題が・・・とかマニュアルに書いてある。
んで、今luaのソースちょっと見てみたら、
ローカル変数は数値インデックスで管理されてて、テーブルになってない。
バイトコード上ではほぼ名前は省かれてて、「このインデックスのローカルにこのインデックスのローカルを代入」みたいな
処理になってると思われる。
グローバル変数をlocalに代入してから処理したほうが高速、といわれるのはこういう理由なのね。
グローバル汚す可能性についてはグローバルのメタテーブルの__newindexをいじくって
制限をつければいいと思う。
0130118
2007/02/22(木) 19:38:37tolua++ってコードジェネレーター系ですよね。
tolua++て>>128みたいなことって出来ます?例えば
a=ABC:new()
b=ABC:new()
a.p=b;b.p=a --aとbで循環参照させる。
a=nil;b=nil
collectgarbage("collect")
出来るとしたら、これでC++側のABCの実体のデストラクタ
って呼ばれます?
>グローバル汚す可能性についてはグローバルのメタテーブルの__newindexをいじくって
誰かがそんなことやってましたね。
0131デフォルトの名無しさん
2007/02/23(金) 03:51:29newしたものを普通のテーブルと同じように扱ってるところに問題がない?
userdataの可能性が高いし、そのままメンバー追加してどうなるかはluabindの実装によるかも。
tolua++では、new()で生成すると手動でdeleteが必要。
new_local()または クラス名() で生成すればガベコレに任せる。
local a=TestClass()
local b=TestClass()
local ax = { p = a }
local bx = { p = b }
a=nil;b=nil
ax=nil;bx=nil
collectgarbage(0)
これならちゃんと回収されてる。(Lua5.0の場合)
0132118
2007/02/24(土) 00:04:45てゆうか、それ循環してないし。
例え循環させても、テーブルは循環してても当然回収されるので
>>130みたくラッピングすればluabindでも当然回収される。
>>userdataの可能性が高いし、そのままメンバー追加してどうなるかはluabindの実装によるかも。
luabind的にはuserdataだけど一応メタテーブル設定して大丈夫になっています。
>>128にも書いたけど、おそらくuserdataからそれに関連づけされた
luaオブジェクトへの参照をGCが追跡できて無いのでリークしてると思う。
5.0ではuserdataに環境は設定できないけど5.1では出来るようになって
いる。5.1でそうした理由は多分”userdata->その環境table”のパス
をGCでおえるようにして循環参照を検出して回収可能にする為だと思います。
(ぐぐったらそれっぽい議論がされてる。)
おそらくluabindが5.1に対応しきれてないのではと予想して対策を検討中。
0134デフォルトの名無しさん
2007/02/24(土) 04:44:20あ・・・ほんとだぜんぜん循環してないorz
あとLua5.0でもフルユーザーデータにはメタテーブルもてたけどね。
lightuserdataの扱いが変わっただけかと。
問題はメタテーブルの__newindexとかで実際何をやってるかということだけど・・・
0135デフォルトの名無しさん
2007/03/10(土) 15:00:020136デフォルトの名無しさん
2007/03/18(日) 02:28:50Squirrel側から呼ばせるC++側の関数で
戻り値としてあるクラスのインスタンスをPushするにはどうすればいいんだろう?
0137デフォルトの名無しさん
2007/03/29(木) 21:09:520138デフォルトの名無しさん
2007/04/06(金) 23:54:07ttp://www.lua.org/news.html
0139デフォルトの名無しさん
2007/04/09(月) 14:51:00squirrel.libだけで741KBってどうなんですか?
スクリプトエンジンとか組み込むの初めてなので標準的な尺度がいまいちわかりません。
コンパイルかけたファイルしか使わないと考えればいろいろと削れる部分はあるんでしょうけど、
そういう使い方するのが普通なんですかね?
Luaってどのくらいのサイズなんでしょうか?
0140デフォルトの名無しさん
2007/04/09(月) 20:17:31自分でexe作成して確認してみな。
そっちのが手っ取り早いぞ。
0141デフォルトの名無しさん
2007/04/10(火) 09:23:05それでかすぎな気がする
デバッグ情報はってない?
あとstdlibとかなしでそのサイズ?
0142139
2007/04/10(火) 18:40:41プログラムサイズが小さくなるような最適化設定にしてビルドしたら664KBでした。
両方ともreleaseです。
>>139
一応、プロパティの『デバッグ情報の形式』というところは無効になっています。
0144デフォルトの名無しさん
2007/04/10(火) 19:05:160145デフォルトの名無しさん
2007/04/10(火) 19:28:56Linux/gcc-4.1.2だとストリップ前が403926バイト、後が295940バイト
Linux/gcc-3.3.6だとストリップ前が390954バイト、後が281116バイト
…Luaと比べると非常に大きいな。
0146デフォルトの名無しさん
2007/04/10(火) 21:07:090147デフォルトの名無しさん
2007/04/10(火) 21:53:40配布ではバイナリ互換性が怪しくなってない?
GCCのバージョンを揃えないとリンクに失敗するとか(←これ本当?)
PerlもRubyもPythonもPHPもLuaもオールCで書かれているのはその辺の事情
と思う。
FirefoxやOpenOfficeはC++で別に問題ないが、オプソのスクリプトエンジンの
ジャンルはC++は駄目でCが適切らしい.
0148139
2007/04/10(火) 22:12:21ttp://www.wanderer.jp/diary/200702.html
ここのサイトの人がコンパイルかけたら270KBくらいだった言ってたり…
VS2005でビルドしてたんですが、gccでメイクしたら450KBでした。
うーん、まだ何かあるのかな?
0149デフォルトの名無しさん
2007/04/10(火) 22:25:40オープンでも C++ の実装も結構あるよ。
JDK, AVM2, Poly/ML, StrongTalk とか。
俺も C で書いた方が良いと思うけどね。
0150デフォルトの名無しさん
2007/04/10(火) 22:44:39JDKがC++と判明して、オプソ界では扱いづらいな...と思われてたりして。
0151デフォルトの名無しさん
2007/04/10(火) 22:48:23昔からソースは公開されていたし、nm すればソース見ないでも C++ だって
分かる人には分かっていたから大丈夫だよ。
0152デフォルトの名無しさん
2007/04/10(火) 22:52:18あー、そうなんだ。
0153デフォルトの名無しさん
2007/04/11(水) 06:46:140154デフォルトの名無しさん
2007/04/11(水) 07:38:08VS2005で、SquirrelをDLL化して
Releaseビルド220Kだよ
0155139
2007/04/11(水) 13:13:13それって『構成の種類』をdllに設定してビルドするってことですか?
たしかにsquirrel.dllが170KBくらいで軽くなっているんですが、
sqstdlib.dllがエラーで作成できない…。このリンクエラーどうしました?
0156139
2007/04/11(水) 15:34:58libのサイズってコンパイルさせるために必要なデータが入ってるから
dllより重くなるみたいですね。知りませんでした。
実行ファイルのサイズに影響する分のサイズは二つのlibでだいたい270KBくらいなんだと思います。
ありがとうございました。
0157デフォルトの名無しさん
2007/04/11(水) 16:46:14Rubyは作者が、オブジェクト指向の言語をオブジェクト指向の言語で書きにくいと言ってる。
>>153
どの辺が?
サイズ大きいのは別に害じゃないと思うけど
0158デフォルトの名無しさん
2007/04/22(日) 00:44:070159デフォルトの名無しさん
2007/04/28(土) 20:45:470160デフォルトの名無しさん
2007/05/08(火) 17:11:310161デフォルトの名無しさん
2007/05/09(水) 20:26:56http://wikiwiki.jp/lua/?Squirrel
Squirrelの参考リンク参考になりました。
サンクス。
0162デフォルトの名無しさん
2007/05/13(日) 11:16:32Squirrelで
sq_open使うと
ハンドルされていない例外 : System.TypeLoadException: アセンブリ 'squirreltest, V
ersion=0.0.0.0, Culture=neutral, PublicKeyToken=null' から型 'SQVM' を読み込めま
せん。
at main()
みたいなメッセージでる。調べたけどわからん
助けて
0163デフォルトの名無しさん
2007/05/13(日) 11:33:09なんでこうなるのかよくわからんけど
0164デフォルトの名無しさん
2007/05/13(日) 11:41:18自己解決したら、解決法をかけとあれほど・・・
0165デフォルトの名無しさん
2007/05/13(日) 11:52:471. MyProject.cpp ファイルに次のコードを含みます。typedef struct _t_Struct *myStruct;
2. 手順 1 で探したコードをの後、次のコードを追加します。 struct _t_Struct
{
};
を書いて
t_Structの部分をSQVMにしたら動いた
プログラム初心者なんで意味がよくわからないし本当に治ってるのかわからないけど
0166デフォルトの名無しさん
2007/05/16(水) 15:52:01今ゲームに組み込んでるのでそこで得た知識をいずれ記事にしてまとめるかも
コードのどこを削るかとか、Windows以外で使うときにメモリ確保部分をどう書き換えるかとか
0167デフォルトの名無しさん
2007/05/16(水) 17:29:10マジで期待したいです。
0168デフォルトの名無しさん
2007/05/16(水) 23:03:00ttp://d.hatena.ne.jp/xtalco/
0169デフォルトの名無しさん
2007/05/18(金) 00:35:540170デフォルトの名無しさん
2007/05/18(金) 20:11:56ざっと目を通しただけなので細かいところはわからないけど、
C++への組み込みに使用するとき、スタックを意識せずによいみたい。
残念なのは、ソースがVC依存ぽいところ。
0171デフォルトの名無しさん
2007/05/23(水) 03:05:54むしろ、レス見てると、gcc依存っぽいが。
0172デフォルトの名無しさん
2007/05/23(水) 17:33:52xtal-language - Google Code
http://code.google.com/p/xtal-language/
こっちを出さないと
0173デフォルトの名無しさん
2007/05/23(水) 20:38:360174デフォルトの名無しさん
2007/05/23(水) 22:20:10おまー、mixiのluaコミュでも同じ質問してるだろ
0175デフォルトの名無しさん
2007/05/23(水) 22:38:270176デフォルトの名無しさん
2007/05/23(水) 23:36:38なんか凄いところで紹介されてるね
■404 Blog Not Found
君は新言語xtalを知っているか?
ttp://blog.livedoor.jp/dankogai/archives/50836939.html
0177デフォルトの名無しさん
2007/05/23(水) 23:59:34ver5.1使ってるんですけど日本語化パッチが5.02までしかないみたいなんで
sjisに対応できないんですよ。まあ出るのを待ちますか。
0178デフォルトの名無しさん
2007/05/24(木) 00:01:39自分で改造するんだ!
0179デフォルトの名無しさん
2007/05/24(木) 07:36:570180デフォルトの名無しさん
2007/05/24(木) 14:31:10これはどう?
Lua@空想具現化プログラミング
http://hammm.dw.land.to/lua/
0181デフォルトの名無しさん
2007/05/26(土) 21:53:290182デフォルトの名無しさん
2007/05/26(土) 22:25:110183デフォルトの名無しさん
2007/05/30(水) 16:12:03C++ネイティブからOpenGL使っているところを、一部分のOpenGL関数だけ
Luaから呼びたいんですけど。
0184デフォルトの名無しさん
2007/05/30(水) 17:36:39WikiLuaだっけ
0185デフォルトの名無しさん
2007/05/30(水) 18:38:340186デフォルトの名無しさん
2007/05/30(水) 19:06:52自分で書いて命令増やしたりしてたな。
HDDと共に吹っ飛んでもう手元にないが。
0187デフォルトの名無しさん
2007/06/02(土) 16:37:36GCCのABIがかわったのは、C・C++関係ないだろ。
0188デフォルトの名無しさん
2007/06/02(土) 16:39:26は、どうした?
0189デフォルトの名無しさん
2007/06/06(水) 20:10:290190デフォルトの名無しさん
2007/06/07(木) 07:23:060191デフォルトの名無しさん
2007/06/07(木) 20:10:15squirrel.dllを作ろうとするのですが、失敗します・・・
うまくできた人いない?
0192デフォルトの名無しさん
2007/06/07(木) 20:21:05「ダイナミック ライブラリ (.dll)」を選べばいいんですよね?
あれ?あ、できました。
何でできなかったんだろ・・・。
ところで、
sqstdlib は、DLL化できないのですが、これってもしかして、付属のライブラリが使えないことを意味するのでしょうか?
0193191
2007/06/07(木) 20:51:45一旦、squirrel プロジェクトで、lib\ に Squirrel.libを吐いておいて、
sqstdlib プロジェクトで、プロパティ→構成プロパティ→リンカ→→入力 で、
..\lib\squirrel.lib をパスに加えたら、コンパイル通りました。
これでいいのかな?
これで上手くいっているのか、わからないのですが、
他言語(Delphi)から、使ってみようと思います。
ああ、ヘッダーかかなきゃ・・・
0194191
2007/06/07(木) 20:57:48sq.exe 348K
sqstdlib.dll 348K
なんかサイズが、マズイ気がします。
もしかして、squirrel.dllの中身全部、sqstdlib.dllにも入っちゃってるんでしょうか?
(..\lib\squirrel.libつっこんだんだから当り前か・・・)
別プロジェクト作って、一つのDLLにまとめた方が手っとり早いのですかね?
0195デフォルトの名無しさん
2007/06/07(木) 22:39:140196デフォルトの名無しさん
2007/06/07(木) 23:43:220198デフォルトの名無しさん
2007/06/07(木) 23:53:13え、あ、もしかして、zlibみたいに、.oでリンクできるかってことか?
できるんかいな・・・
Delphiと、結合となると、BCCもってきていコンパイルか('A`)
どっちにせよだな・・・
0199デフォルトの名無しさん
2007/06/08(金) 07:14:400200デフォルトの名無しさん
2007/06/08(金) 07:50:470201デフォルトの名無しさん
2007/06/08(金) 08:52:20ひとつも教えてやってもいないじゃないかw
0202191
2007/06/08(金) 17:30:58普段、VS.net使わないから、いやに手こずったぜ・・・
作り方は、後でかくぜ
0203191
2007/06/08(金) 17:48:50VS.net 2005 proでコンパイルを確認。
squirrel_2.1.1_stable が解凍されているとして、
・squirrel_dll ディレクトリを作る
・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・ファイル→追加→既存のプロジェクト で、 squirrel_dll を追加
・プロジェクト名が、squirrel になっているので、squirrel_dll に変更
・squirrel_dll の関連づけられたファイルを一旦全部削除
・プロジェクト → 新しいフィルタ で、フィルタを作って、
ソリューションエクスプローラーで、フィルタ名を squirrel に変更
・ソリューションエクスプローラーで、フィルタ squirrel を選択して、
右クリック→追加→既存の項目 で、..\squirrel ディレクトリ の .h と .cpp を全部追加
・同様に、プロジェクト → 新しいフィルタ で、フィルタを作って、
ソリューションエクスプローラーで、フィルタ名を sqstdlib に変更
・ソリューションエクスプローラーで、フィルタ sqstdlib を選択して、
右クリック→追加→既存の項目 で、..\sqstdlib ディレクトリ の .h と .cpp を全部追加
・プロジェクト→プロパティで、
・構成プロパティ→全般→構成の種類 を、「ダイナミック ライブラリ (.dll)」に設定
・構成プロパティ→全般→出力ディレクトリを、「..\bin」に設定
・構成プロパティ→リンカ→全般→出力ファイルを、「$(OutDir)\squirrel.dll」に設定
・あとは、ビルド→squirrel_dll のビルドで、
bin\ に、348KBの squirrel.dll ができていたら成功ー
面倒なら、フィルタは作らんでもいいけど・・・
0204191
2007/06/08(金) 17:49:38たぶん、普段 VC使っている人なら見なくてもできる。
0205デフォルトの名無しさん
2007/06/08(金) 17:55:47これ面白そうだね。でもまだバージョンが1.0未満か
0206191
2007/06/08(金) 18:22:03> ・squirrel_dll ディレクトリを作る
> ・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・squirrel_dll ディレクトリを作る
・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・squirrel\squirrel_dll.dsp に名前を変えておく
・squirrel\squirrel_dll.dsp を VS.netで開く(新しいプロジェクトに変換する)
0207191
2007/06/08(金) 18:22:50> ・squirrel_dll ディレクトリを作る
> ・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・squirrel_dll ディレクトリを作る
・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・squirrel_dll\squirrel_dll.dsp に名前を変えておく
・squirrel_dll\squirrel_dll.dsp を VS.netで開く(新しいプロジェクトに変換する)
0208デフォルトの名無しさん
2007/06/08(金) 20:26:11環境は、Windowsです。
ためしに、sq.exeを対応させてみようとしているのですが、微妙な状況です。
素(そのままコンパイルした)のsq.exe に、
---- multi_byte.nut ------
// 表が怖い
print("噂のソフト\n")
-----------------------
を食わせてみた場合
・SJISは、エラー
sjis.nut line = (2) column = (10) : error unrecognised escaper char
Error [unrecognised escaper char]
・UTF-8N は問題なく通る?
出力は、UTF8だが、ターミナルの文字コードをPoderosaで、UTF-8にすると問題なく見られる。
・UTF-16 LE-BOM付き は問題なく通る?
出力が、UTF-16になっているがUTF-16のターミナルを持たないので確認できない。
となったのですが、
これは、素で、UNICODE対応していると見てよいのでしょうか?
SQUNICODEしなくてよいのかな?
0209デフォルトの名無しさん
2007/06/08(金) 20:28:54http://muffin.cias.osakafu-u.ac.jp/~matumoto/cgi-bin/xt.cgi?prog/squirrel_lang
> Unicode
>
> デフォルトではSquirrelの文字列はプレーン8ビットASCII文字となる。
> しかし、VMにシンボル'_UNICODE'がdefineされているなら、
> コンパイラとAPIで文字が16ビットとして扱われる。
0210デフォルトの名無しさん
2007/06/08(金) 20:44:06_UNICDOEをプリプロセッサの定義に設定して、コンパイルしたのですが、
今度は、
>>208のファイルで、
・sjis
・UTF-8N
・UTF-16 LE-BOM
でどれも、
Error [?????????????8・?8?8?8?
と出てしまい、実行できません。
困りました・・・。
0211デフォルトの名無しさん
2007/06/08(金) 20:47:25ちなみに、_UNICODEを定義すると
// hello
print("hello")
とだけ書いたファイルでも
Error [?????????????8・?8?8?8?
といわれてしまいます。
0212デフォルトの名無しさん
2007/06/08(金) 21:28:300213デフォルトの名無しさん
2007/06/12(火) 16:39:38バグなのか、sq.exeで、途中でfilenameが変わって、ファイルが読み込めないという、
不可解な挙動をして、読み込みエラーを吐くので、_UNICODE 見合わせる方向です。
ソースをみると、一応、_UNICODEなくても、BOM付きファイルのUTF16 LE, UTF-16 BE、UTF-8が、
ちゃんと考慮されているようなので、(sqstd_loadfile付近)
_UNICODE使わずに、UTF-16でやってみようと思います。
>>212
多言語から利用したいので、たぶん使えないのですよ・・・
参考にするのはできると思いますが・・・
0214デフォルトの名無しさん
2007/06/12(火) 18:36:04残念ながら、_UNICODEなしで、UTF-16は駄目のようです。
_io_file_lexfeed_UCS2_LE あたりを見ればわかるのですが、
wchar_t を char にキャストしていますので、日本語がつぶれてしまいます。
UTF-8では、そのようなことは起きないようですので、
_UNICODEなしの場合は、UTF-8を使いましょう。
という結論です。
0215デフォルトの名無しさん
2007/06/12(火) 18:50:36すげえなこれ。マジかよ
0216デフォルトの名無しさん
2007/06/12(火) 19:08:56sq.exe で、動作確認をしていたのですが、単に、プロジェクト sq が参照している、
プロジェクト squirrel とプロジェクト sqstdlib の_UNICODE が定義されていないだけでした。
VS.netでは、プロパティのプリプロセッサ設定です。
(つまり、_UNICODEの定義された objと、されていないobjを混ぜていた。そりゃ駄目だわー)
VS.netに、慣れてないせいにしておきます!
>>215
_UNICODE を定義(#define)していない場合の話です。
_UNICODE 定義時は、wchar_t → wchar_t になり、ちゃんと読めます。
0217デフォルトの名無しさん
2007/06/12(火) 20:59:10> 多言語から利用したいので、たぶん使えないのですよ・・・
kwsk
0218デフォルトの名無しさん
2007/06/13(水) 02:56:41SqPlusはテンプレートベースの、スタック操作とか減らすためのライブラリというように見えたのですが、
違うのかな?
テンプレートベース=C++べったりなので、そのまま多言語から使うのは難しいという認識です。
いや、よく見ていないのですが・・・
これから見てみます。
0219デフォルトの名無しさん
2007/06/13(水) 11:14:11遅レスですまんけど、
たんにコンソール出力がUNICODEに対応してないからじゃないのかな
エラー出力をフックして、
コード変更してみたらどうかな
0221デフォルトの名無しさん
2007/06/13(水) 17:06:56squirrelの追記。
プロジェクト sq などの、printを使うプロジェクトの場合、文字化けする(コンソールに?????と出力される)ので、
setlocale( LC_ALL, "" );
を最初の方に入れてロケールの設定をしておくこと。
0222デフォルトの名無しさん
2007/06/13(水) 17:22:45SetThreadLocaleとかのAPIを呼び出してるのかな
0223デフォルトの名無しさん
2007/06/15(金) 11:15:20いときってどうやる?
0224デフォルトの名無しさん
2007/06/15(金) 12:11:08すみません。ちょっと忙しいのでなかなか取り掛かれません。
自分はLuaを使ったことはないし、スクリプトをいじるのも今回が初めてですし、
プログラマとしても経験不足なのは否めないのであまり期待されても困るのですが、
squirrelを使い始めたばかりの人が参考に出来るくらいの情報を提供する自信はあるので、
そのうち必ずやります。
0225デフォルトの名無しさん
2007/06/16(土) 01:37:01補足。
APIに、externだけでなくて、 __declspec(dllexport)つけとかないと、
DLLとして外部に関数を解放できない。
俺アフォw
- #define SQUIRREL_API extern
+ #define SQUIRREL_API extern __declspec(dllexport)
0226デフォルトの名無しさん
2007/06/17(日) 15:29:22Cで定義した変数をLuaのグローバル変数にして、
Lua側で値を変更するとC側でも変更されてるようにならないかな?
userdataかlightuserdataあたりを使うんだろうけど、、、
0227デフォルトの名無しさん
2007/06/18(月) 09:38:11無理やりluaの実数書き込んだり読んだりできるようにluaを書き換えるのは
大した手間じゃないと思うぞ
0228デフォルトの名無しさん
2007/06/19(火) 16:55:22何の話?
0229デフォルトの名無しさん
2007/06/20(水) 23:38:230230デフォルトの名無しさん
2007/06/21(木) 00:10:56遺精か。あんまり頻繁にあるようなら病院逝けよ。お大事に。
0231デフォルトの名無しさん
2007/06/21(木) 00:30:350232デフォルトの名無しさん
2007/06/26(火) 19:09:550233デフォルトの名無しさん
2007/06/26(火) 19:15:330234デフォルトの名無しさん
2007/06/26(火) 19:34:060235デフォルトの名無しさん
2007/06/28(木) 21:53:59ぅあ?
0236デフォルトの名無しさん
2007/06/28(木) 21:58:04ルア
0237デフォルトの名無しさん
2007/06/28(木) 21:58:44英語だとルナだから ルアじゃない?
0238デフォルトの名無しさん
2007/06/28(木) 22:06:53誤爆じゃねーじゃん
0239デフォルトの名無しさん
2007/06/28(木) 22:30:300240デフォルトの名無しさん
2007/06/28(木) 22:54:580241デフォルトの名無しさん
2007/06/29(金) 00:08:090242デフォルトの名無しさん
2007/06/29(金) 14:58:300243デフォルトの名無しさん
2007/06/29(金) 18:25:03プログラミング言語ぅあ その4
0244デフォルトの名無しさん
2007/06/29(金) 21:14:150245デフォルトの名無しさん
2007/06/29(金) 21:19:090246デフォルトの名無しさん
2007/06/29(金) 21:28:27あと2〜3年だな
0247デフォルトの名無しさん
2007/06/29(金) 22:27:28計算するって本当ですか?
あとインデックスが0じゃなくて1から始まるらしいんですけど、何故なんでしょう・・・
この点が無ければ、スクリプト言語で今のところ最有力候補なんですが・・・
0248デフォルトの名無しさん
2007/06/29(金) 23:00:05配列とハッシュ表が区別されない同一のデータ構造なのは本当。
でも、ふつうに配列と使っているときには、配列用のパートにつっこまれてハッシュなんか計算しないよ。
つまり効率が気になるようなら、そこは効率わるくならないようになっている
と考えてよい。
なぜ1から始まるかは知らん。
0249デフォルトの名無しさん
2007/06/30(土) 08:13:120250デフォルトの名無しさん
2007/06/30(土) 11:21:38その辺を改良したのがsquirrelなんじゃね?
squirrelもなんかよみにくね?
0251デフォルトの名無しさん
2007/06/30(土) 16:17:40?
0252デフォルトの名無しさん
2007/06/30(土) 19:16:39じゃあすくいっれるの読み方も>>235に考えてもらおうぜ
0253デフォルトの名無しさん
2007/06/30(土) 22:07:23どうもありがとうございます。配列の件よく分かりました。
あとSquirrelってのは知りませんでした・・・ちゃんとスレ読んでなくてすみません
Squirrel、いいですね、検討してみます
0254デフォルトの名無しさん
2007/07/01(日) 13:26:38超遅くてごめんレスありがとう。そんなすごいこと可能なら検討してみる。
でも、ぅあ書き換えるってかなりの手間じゃないかな、、、
0255デフォルトの名無しさん
2007/07/01(日) 13:58:450256デフォルトの名無しさん
2007/07/02(月) 02:35:070257デフォルトの名無しさん
2007/07/02(月) 08:41:18別の人でよければ
GCで時間くわれないからゲームで重宝してます。
0258デフォルトの名無しさん
2007/07/02(月) 08:42:02squirrel2.1.2 の動きがあるね
0259デフォルトの名無しさん
2007/07/02(月) 23:24:140260デフォルトの名無しさん
2007/07/02(月) 23:25:180261デフォルトの名無しさん
2007/07/02(月) 23:27:270262デフォルトの名無しさん
2007/07/07(土) 16:34:440263デフォルトの名無しさん
2007/07/07(土) 16:44:260264デフォルトの名無しさん
2007/07/10(火) 11:37:13VC++2k3での使い方
頼む
0265264
2007/07/10(火) 12:22:55プロジェクト作ってサンプルソース加える
本家でdownload binaries (ここで違うサイトへ飛ぶ) download lua-----vc6_lib.zipをダウンロード
プロジェクトのフォルダに解凍したもの突っ込む
includeのフォルダの中身をソリューションエクスプローラーのヘッダーファイルのところに放り込む
lua5.1.libをソリューションエクスプローラーのリソースファイルのところに放り込む
あとはプロジェクトのプロパティで
全般のマネージ拡張をいいえ
リンカの入力 特定ライブラリの無視をlibcmtd
これで実行できた
マネージ拡張の部分変えなくてもコンパイルとリンクは普通に通るから何が原因か訳分からなかった
チラシの裏だったかもしれないがとりあえず
0266デフォルトの名無しさん
2007/07/13(金) 20:41:43使ってる国内の市販ゲームってほんとうにあるの?
0267デフォルトの名無しさん
2007/07/13(金) 20:53:240268デフォルトの名無しさん
2007/07/14(土) 01:13:39国内では知らないが
海外含めればFarCryとかRagnarokOnline(ホムンクルス用)か?
0269デフォルトの名無しさん
2007/07/14(土) 12:48:59組込言語を使う場合、
・全ての処理を記述する
・部分的に処理を記述する(敵の移動ルーチンなど)
どっちが良いのかな?
0270デフォルトの名無しさん
2007/07/14(土) 13:01:16・分離が必要な部分のみを記述する(敵の移動ルーチンなど)
0271デフォルトの名無しさん
2007/07/14(土) 13:29:28なんかうまくいかない
参考にしているCソースのFFTは基本が再帰呼び出しなんだが
ポインタなぞ使えないし
色々やってみたが、ナンカ Arithmeric fireldなんとかって出てエラーになりよる
もう頭が沸騰しそうだぉ
0272デフォルトの名無しさん
2007/07/14(土) 14:41:09C側からLua内のテーブルにアクセスする場合
ttp://tgws.fromc.jp/wiki/lua/index.php?%CC%DC%C5%AA%CA%CC
↑を使うと「table.member.value」のような形の値にはアクセスできますが
table[1].value のような配列形のテーブルに入っている値にはアクセスできません。
実現する方法はありますか?
0273デフォルトの名無しさん
2007/07/14(土) 16:14:39そのURLのどこを参考にしてるのかわからんけど・・・
キーの値としてpushstringしてるところをpushnumberにすればいいんじゃないの?
0274デフォルトの名無しさん
2007/07/14(土) 18:57:10ケースバイケースじゃね?
全部スクリプトでいいならその方がらくできそうだし
0275デフォルトの名無しさん
2007/07/14(土) 19:08:190276デフォルトの名無しさん
2007/07/14(土) 21:43:310277デフォルトの名無しさん
2007/07/14(土) 22:47:130278デフォルトの名無しさん
2007/07/14(土) 23:54:440279デフォルトの名無しさん
2007/07/15(日) 00:48:460280デフォルトの名無しさん
2007/07/15(日) 00:49:570281デフォルトの名無しさん
2007/07/15(日) 00:59:04Luaもパクリンしまくりですよ。
0282デフォルトの名無しさん
2007/07/15(日) 01:08:20構文にしか目がいかないヘタレ発見
0283デフォルトの名無しさん
2007/07/15(日) 01:12:02いや、Rubyのパクリ方は酷い
オリジナリティなんてない
他の言語と比較するなんておこがましい
0284デフォルトの名無しさん
2007/07/15(日) 01:16:34上手くアセンブル出来ていて、それが有用ならオリジナリティなんて要らないでしょ
俺はまともにスレッドを扱える様になるまで使う気は無いけど
0285デフォルトの名無しさん
2007/07/15(日) 01:21:17具体的に何がどう酷いの?
どうせパクリ元の言語なんて知らずに見聞だけで言ってるんでしょ?
プログラミング言語の歴史を少しでも知ってたら、
「パクるなんて酷い」なんてとてもいえないんだがね。
おこがましいのは無知なお前。
0286デフォルトの名無しさん
2007/07/15(日) 01:27:030287デフォルトの名無しさん
2007/07/15(日) 01:59:360288デフォルトの名無しさん
2007/07/15(日) 02:11:010289デフォルトの名無しさん
2007/07/15(日) 02:19:040290デフォルトの名無しさん
2007/07/15(日) 02:22:100291デフォルトの名無しさん
2007/07/15(日) 02:23:39Delphiパクった上に、J++までパクッたあげく文法は、C似だし
最近は、関数型言語まで朴楼としている
0292デフォルトの名無しさん
2007/07/15(日) 02:28:11パクリとかは関係無いし、どーでもいいことだってことを理解しないと前に進めません。
Rubyをパクった言語もいくつも生まれています。
0293デフォルトの名無しさん
2007/07/15(日) 02:30:02だから自分って誰だよ...
君のレスだけ迷子になってるっぽかったから聞いてあげたのに。
0294デフォルトの名無しさん
2007/07/15(日) 02:34:28はいはい、自分じゃないと思うならいちいち反応しなくていいよw
バカだなw
お前は2chでそうやっていちいち迷子のレスを案内してやってのかいw
0295デフォルトの名無しさん
2007/07/15(日) 02:41:180296デフォルトの名無しさん
2007/07/15(日) 02:47:15すまん。見てたが良くわからないから
偉い人が降臨するのを待った方がいいと思った。
でもローカル変数はenvironmentが持ってるわけじゃないし
(Function Prototypeが持ってるぽい)
他の関数はスコープの外だから無理だと思うよ。
table:functionの形式にしてselfに持たせるのはどう?
0297デフォルトの名無しさん
2007/07/15(日) 03:31:15>お前は2chでそうやっていちいち迷子のレスを案内してやってのかいw
見ていて可哀想だなと思った時だけだよ。
0298デフォルトの名無しさん
2007/07/15(日) 11:58:49かわいそうなのはお前なんだけどなw
0299デフォルトの名無しさん
2007/07/15(日) 12:44:33毎行wつくのがうざwww
0300デフォルトの名無しさん
2007/07/15(日) 12:50:26偉い人が降臨するのを待った方がいいと思った。
0301デフォルトの名無しさん
2007/07/15(日) 13:02:21どうして >126 がコピペされているんだろう。
126を書いたので気になる。間違ってるならそう言ってくれよう。
0302デフォルトの名無しさん
2007/07/15(日) 13:29:460303デフォルトの名無しさん
2007/07/15(日) 15:00:56そんな無理に頑張らなくても、もう終わりで良いんじゃない?
0304デフォルトの名無しさん
2007/07/15(日) 15:04:580305デフォルトの名無しさん
2007/07/15(日) 15:18:50お前が必死に引き伸ばしてるんだろうが。バカだな・・・。
0306デフォルトの名無しさん
2007/07/15(日) 15:22:39バカだと思ったらレスしなきゃ良いんじゃね?
w 付けるのも止められたんだしw
0307デフォルトの名無しさん
2007/07/15(日) 15:36:480308デフォルトの名無しさん
2007/07/15(日) 16:32:24ちょっと期待しちゃった俺がばかだった( ´・ω・)
0309デフォルトの名無しさん
2007/07/15(日) 16:59:030310デフォルトの名無しさん
2007/07/15(日) 17:17:560311デフォルトの名無しさん
2007/07/15(日) 17:43:060312デフォルトの名無しさん
2007/07/15(日) 17:46:26バグあったら最悪。大抵デバッグで詰まるし
結局緊急時とかは既成のCとか使っちゃうわけだし?
0313デフォルトの名無しさん
2007/07/15(日) 17:54:56バカかお前。
お前がまず「もう終わりで良いんじゃない?」と思ったんだから、
レスしなきゃいいだろうがバーカ。
0314デフォルトの名無しさん
2007/07/15(日) 18:07:59虚しいのう...
0315デフォルトの名無しさん
2007/07/15(日) 18:11:42というか、バカなんだから理解できないだろ?
0316デフォルトの名無しさん
2007/07/15(日) 18:13:01ここはぅあのスレですよ。喧嘩をしたいのなら他所でやって頂けませんか。
0317デフォルトの名無しさん
2007/07/15(日) 18:14:21あまりにも程度が低過ぎてワラタ。お前面白いからもっと頑張れw
0318デフォルトの名無しさん
2007/07/15(日) 18:14:270319デフォルトの名無しさん
2007/07/15(日) 18:15:39お前もガンバレよ、そのネット難民の生活をなw
0320デフォルトの名無しさん
2007/07/15(日) 18:16:57何だっけ? レッテル貼るのは反論出来ない時のごまかしなんだっけかw
0321デフォルトの名無しさん
2007/07/15(日) 18:17:44低脳二人がこの合戦にはまると、まさにエンドレスサマー
0322デフォルトの名無しさん
2007/07/15(日) 18:18:53えw
お前レッテルの意味わかってるの?w
0323デフォルトの名無しさん
2007/07/15(日) 18:21:30ちょっと面白かったわ。
0324デフォルトの名無しさん
2007/07/15(日) 18:21:54事態はますます混迷を深めていきます。
0325デフォルトの名無しさん
2007/07/15(日) 18:31:090326デフォルトの名無しさん
2007/07/15(日) 18:32:03まぁよくがんばったよ。
散々やっときながら、"ちょっと面白かったわ"と、
"俺は余裕だった、ちょっとアラシをからかってやっただけ"
という演出をするところがなかなか将来有望。
そんな演出を入れてみても、
傍から見るとどっちもアラシにしか見えないんだけどね。
0327デフォルトの名無しさん
2007/07/15(日) 18:33:410328デフォルトの名無しさん
2007/07/15(日) 18:35:210329デフォルトの名無しさん
2007/07/15(日) 18:40:45匿名の全体主義こそすべて
0330デフォルトの名無しさん
2007/07/15(日) 19:27:00俺は傍観してるよ。>>327 は誰だか知らん。
0331デフォルトの名無しさん
2007/07/15(日) 22:17:160332デフォルトの名無しさん
2007/07/15(日) 22:24:400333デフォルトの名無しさん
2007/07/16(月) 01:07:470334デフォルトの名無しさん
2007/07/16(月) 23:52:400335デフォルトの名無しさん
2007/07/17(火) 00:44:330336デフォルトの名無しさん
2007/07/17(火) 00:55:29rubyのは オ マ ー ジ ュ な
パクリとオマージュは紙一重だけど
rubyのはオマージュだと言える
だいたいパクリで成り立ってる言語なんてあるのか
0337デフォルトの名無しさん
2007/07/17(火) 01:23:440338デフォルトの名無しさん
2007/07/17(火) 01:26:200339デフォルトの名無しさん
2007/07/17(火) 01:48:10パクりで成り立ってない言語なんてあるのか
の間違いじゃないの?
まあ俺が言ってるのはその「オマージュ」なんだろうけど
0340デフォルトの名無しさん
2007/07/17(火) 12:04:38具体的に言うとあるゲーム(説明のために簡単にブロック崩しにしておく)の初期値
ユーザ側でスクリプトを作ることが出来るゲーム(カルネジのような)を作ろうと思ってるんだが
ステージごとに初期位置可変なのでLua側に大域変数として全部与えてLuaから必要な変数だけ使う形にしたい。けどどう実現するべきか分からない
上から出来たら簡単だろうなーと思う順に言うと
1 C側からLuaに初期値を与えることが出来る関数がある
2 ユーザ型とかいうの使って色々やると値を作れる
3 変数読む為だけのCの関数を作る
0341デフォルトの名無しさん
2007/07/17(火) 16:44:11lua_getfield( L, -1, "test" );
と
lua_pushstring( L, "test" );
lua_gettable( L, -2 );
って何が違うの?
0342デフォルトの名無しさん
2007/07/17(火) 21:00:19>>166さんをマジで期待したいぜ・・・
0343デフォルトの名無しさん
2007/07/18(水) 14:51:43どっちも同じ。
テーブルからキーが文字列の値を取り出すことは
頻繁にあるから前者が用意されているのよ。
0344デフォルトの名無しさん
2007/07/18(水) 20:24:00何が難しい?
0345デフォルトの名無しさん
2007/07/18(水) 22:08:00Java好きはSquirrelが好きって感じだね
0346デフォルトの名無しさん
2007/07/18(水) 23:44:030347デフォルトの名無しさん
2007/07/19(木) 02:49:10Lua好きがRuby好きとは限らない罠
0348デフォルトの名無しさん
2007/07/19(木) 04:28:49ホスト言語からの大域変数の取得でいきなり、つまづいた
今はできたけど・・・
APIリファレンスは、日本語のものがあって助かるんだけど、
リファレンスの説明だけじゃ、わかんなくて、本家にもAPIの使用例が全然ないので、
これ、何に使うのってことが一杯・・・
何かするにも手探り状態
もっとも肝心なのは、関数呼び出しとか、変数の取得などの効果的なラッピングの方法なんだけど。
まさか、ホスト側でSquirrel APIそのまま使うわけにもいくまい。
C++じゃないんで、SqurrelPlusなどつかえなくて(参考にはしてるが、なかなかにきっかい)
>>345
Ruby好きだけど、Squirrelの方が文法は好きだよ
0349デフォルトの名無しさん
2007/07/19(木) 08:08:190350デフォルトの名無しさん
2007/07/19(木) 08:18:33ぅあはM。
に決まってんだろ
0351デフォルトの名無しさん
2007/07/19(木) 22:29:43言語使用が違うからCやjavaから単純に移植というわけにはいかないので
どなたかC2LUAやらjava2luaのようなトランスレーターを知っていたら
是非教えて貰いたいのだけど
0352デフォルトの名無しさん
2007/07/20(金) 02:55:30少し考えれば判る事だろ。
それとFFTがFINAL FANTASY TACTICSだとかいう
逆上脊髄反射ネタも禁止な。
0353デフォルトの名無しさん
2007/07/20(金) 04:03:01にある再帰版のFFTならluaに移植できるんじゃない?
0354デフォルトの名無しさん
2007/07/20(金) 07:13:510355デフォルトの名無しさん
2007/07/20(金) 07:35:02これ汚ねえなー
デリゲート渡したいだけなのに、何だよbindenvって
0356デフォルトの名無しさん
2007/07/20(金) 22:21:27ネタ元はRigidChipsスレみたいなのでこっちに書き込み。
>>http://game11.2ch.net/test/read.cgi/gameama/1182042852/498
実装が間違ってないとして・・・
64点なら1万回繰り返して4秒程度だったので(Core2Duo)
実用も可能そう。
luaソース:http://hammm.dw.land.to/lua/fft.lua
0357デフォルトの名無しさん
2007/07/23(月) 02:35:570358デフォルトの名無しさん
2007/07/23(月) 02:36:330359デフォルトの名無しさん
2007/07/24(火) 11:53:01Xtalいいよね。
早く1.0にならないかなぁ
0360デフォルトの名無しさん
2007/07/24(火) 18:39:571.0になってもバグフィックスぐらいで殆ど機能変わらないと思うぞ。
てか早く1.0になって欲しかったら沢山使ってバグ報告しようぜ。
0361デフォルトの名無しさん
2007/07/24(火) 19:12:45"1" == 1はnullが返って1 == "1"はエラーとか。
前者がC++からsend使ってて
後者がXsrcで存在しないString::op_eq_r_Intを呼んでるせいだと思うんだが。
0362デフォルトの名無しさん
2007/07/25(水) 07:22:080363デフォルトの名無しさん
2007/07/25(水) 19:14:560364デフォルトの名無しさん
2007/07/25(水) 23:15:37なかなか面白い
Pascalの文法に近いので、Pascalのサンプルやチュートリアルをluaでも動くようにしたらいいのではないだろうか
googleのソースコード検索で探してみたが、あまりヒットしなかった
0365デフォルトの名無しさん
2007/07/25(水) 23:46:40例えばFunc0っていう関数の途中でyieldしてC++側に制御戻した後、
次にresumeするとFunc1という関数の最初から始まるようにする感じ。
単純にC++からの関数呼び出しでやると、yieldのところでエラー出てしまい、その後resumeしても戻らないんだが・・・。
0366デフォルトの名無しさん
2007/07/26(木) 01:54:570367デフォルトの名無しさん
2007/07/26(木) 02:14:500368デフォルトの名無しさん
2007/07/26(木) 13:09:04チュートリアルの、lua_tolstringのところに
Because Lua has garbage collection, there is no guarantee that the pointer returned by lua_tolstring will be valid after the corresponding value is removed from the stack.
ってあるから、ガベージコレクタで解放されるものだと思っています。
0369デフォルトの名無しさん
2007/07/26(木) 23:57:05Luaのスクリプト側で次にresumeして戻る位置を決めるんじゃなくて、C++側から切り替えたい場合どうすればいいのかな、と。
ちょっと記述不足だった。すまん。
0370デフォルトの名無しさん
2007/07/27(金) 13:53:530371チラシの裏
2007/07/27(金) 20:51:33lua.hの代わりに、lua.hppをインクルードする、っと
0372デフォルトの名無しさん
2007/07/28(土) 19:30:450373デフォルトの名無しさん
2007/08/01(水) 16:40:05SqPlusのソースを呼んでいるのですが、
SquirrelObjectで使っている、sq_addref というAPIがあり、
リファレンスによると、参照カウンタのインクリメントとあるのですが、
これって、つまり、C++側で作成した SquirrelObject で束縛?するためでしょうか?
sq_addref を sq_release しない限りは、squirrelが勝手に開放しないということで
あってるでしょうか?
0374デフォルトの名無しさん
2007/08/01(水) 16:41:13SqPlusのソースを呼んでいるのですが、
SquirrelObjectで使っている、sq_addref というAPIがあります。
リファレンスによると、参照カウンタのインクリメントとあるのです。
これは、つまり、C++側で作成した SquirrelObject で HSQOBJECT を束縛?するためでしょうか?
sq_addref を sq_release しない限りは、squirrelが勝手に開放しないということで
あってるでしょうか?
0375デフォルトの名無しさん
2007/08/01(水) 19:17:53けどその理解で多分間違ってないと思う
0376デフォルトの名無しさん
2007/08/01(水) 19:39:200377デフォルトの名無しさん
2007/08/01(水) 21:08:24- sq_addrefで参照カウンタが+1
- sq_releaseで参照カウンタが-1 (0となったらsq_resetobjectが呼ばれる)
0378デフォルトの名無しさん
2007/08/01(水) 22:04:59あ、いや、参照カウンタ知らないわけではないすw
HSQOBJECTを保持するときは、こうやって参照カウンタをいじるのがその流儀なのね、思っただけなので。
0379デフォルトの名無しさん
2007/08/02(木) 16:53:20SqPlusの SquirrelVM.cpp の SquirrelVM::RunScript を見ています。
sq_gettopでスタック位置を確認しながら、見ていたのですが、
この関数、スタック操作が、間違ってませんか?
sq_callが成功した時点で、二つスタックが残っているので、
sq_popで2つポップしないといけないはず・・・。
バージョンは、ersion 2.1.1 stable
(でもHISTORYみてたら、
-sq_call() doesn't pop the closure (just the params) って書いてあるんだよなあ)
SquirrelObject SquirrelVM::RunScript(const SquirrelObject &o,SquirrelObject *_this)
{
SquirrelObject ret;
sq_pushobject(_VM,o._o); //スタックに残る
if(_this) {
sq_pushobject(_VM,_this->_o); //引数1
}
else {
sq_pushroottable(_VM); //引数1
}
if(SQ_SUCCEEDED(sq_call(_VM,1,SQTrue,SQ_CALL_RAISE_ERROR))) {
// 成功したら、スタックに戻り値が残る
ret.AttachToStackObject(-1);
sq_pop(_VM,1); // sq_pop(_VM,2);では?
return ret;
}
sq_pop(_VM,1); // 失敗したら、スタックに
throw SquirrelError();
}
0380デフォルトの名無しさん
2007/08/02(木) 16:55:10throw SquirrelError();
}
なんで、そう思ったかというと、
testSqPlus2.cppが残っているはずのスタック(戻り値)を全然考慮してないからなんですけど
0381デフォルトの名無しさん
2007/08/02(木) 17:03:52バージョンとHISTORYは、SqPlusじゃなくて、Squirrelのですね。
SqPlusのバージョンは、stable 25でした。
0382デフォルトの名無しさん
2007/08/02(木) 18:30:480383デフォルトの名無しさん
2007/08/02(木) 18:48:57どっちも日本人なのか・・・
0384デフォルトの名無しさん
2007/08/02(木) 19:09:04同じバグかYO!\(^o^)/
サンクス。
おれの判断は正しかったようだ。
つか、公式フォーラムくらい検索しろ > 俺
コミッターもメンテナーにも日本人居るのなw
0385デフォルトの名無しさん
2007/08/03(金) 04:06:58コード大きくなたり重くなったりするの?
0386デフォルトの名無しさん
2007/08/03(金) 07:27:170387デフォルトの名無しさん
2007/08/04(土) 21:27:010388デフォルトの名無しさん
2007/08/04(土) 21:37:39参加したのか?
0389デフォルトの名無しさん
2007/08/04(土) 22:18:340390デフォルトの名無しさん
2007/08/04(土) 22:58:17・上野氏(みんな読んでるLuaマニュアルの訳者)によるLua紹介。
「遺伝子関連のプログラムを組む上で最も都合が良かった」
・Luaの速度がXtalとPnutsから比較対象にされてた
・Xtalは頑張って作ってる印象。作者ナイスキャラ
・Squirrelは上野氏が一言触れた程度
その他はプレゼン中にチャットログ(Lingr)が流れる奴とか、嘘だらけのmatzプレゼンとか、いろいろ。
全体的には演者のレベルが結構高かった印象。
体調が最悪じゃなければなかなか良かった。
0391デフォルトの名無しさん
2007/08/05(日) 03:55:44連発してたね。気持ちはわかるがもうちょっとおちつけとw
0392デフォルトの名無しさん
2007/08/05(日) 19:33:36Luaメジャーじゃん?と思った
0393デフォルトの名無しさん
2007/08/06(月) 03:09:030394デフォルトの名無しさん
2007/08/06(月) 08:06:31山田君ざぶとん1枚あげて!
0395デフォルトの名無しさん
2007/08/06(月) 22:48:18http://ll.jus.or.jp/2007/
これかー
LuaLuaっていうからわからんだじゃねーか
Luaだけじゃねえw
つか、Luaの話すくねえw
0396デフォルトの名無しさん
2007/08/06(月) 23:57:530397デフォルトの名無しさん
2007/08/07(火) 02:37:50テクスチャへの描画とか、実際に使う際の普遍的なチップスとかって
載ってますのん?
そういうのは、Game Programming Gems買えって事かな?(そろえたら、赤本よりたけええけどよぉおぉ)
0398デフォルトの名無しさん
2007/08/07(火) 02:38:250399デフォルトの名無しさん
2007/08/07(火) 04:06:386巻でLuaが扱われてるよね。
読んでないけど、どうなんだろう
0400デフォルトの名無しさん
2007/08/08(水) 01:12:02すでに、適用範囲広がってるな。
普通に、L魂でいいんじゃないのか?
0401デフォルトの名無しさん
2007/08/08(水) 01:27:34ぅあのL?
0402デフォルトの名無しさん
2007/08/08(水) 01:55:240403デフォルトの名無しさん
2007/08/08(水) 03:01:53確かだ一回目でHaskellが取り上げられてるはずだが?
すでにどころか最初から適用範囲も何もあったもんじゃなかったんじゃねえの。
0404デフォルトの名無しさん
2007/08/08(水) 04:15:12うむ、Cleanの説明で「速い!」って言ってるの見て、これはカテゴリ違うよなーとは思った。
言語まわりの新しい動きをおさえつつ、中心軸はlightweightに置くって感じで理解している・・・
Javaに関してはJythonとかJRubyとかの絡みが主かと。
今後スクリプト言語が動くプラットフォームとして、JavaなのかDLRなのか、みたいな。
そういう流れでは、JLuaとかIronLuaはでないのかと。
lua-lのほう見るとつくってる人は居るっぽいな。
0405デフォルトの名無しさん
2007/08/08(水) 04:31:460406デフォルトの名無しさん
2007/08/09(木) 00:24:370407デフォルトの名無しさん
2007/08/09(木) 14:48:530408デフォルトの名無しさん
2007/08/10(金) 23:53:060409デフォルトの名無しさん
2007/08/11(土) 10:52:370410デフォルトの名無しさん
2007/08/11(土) 13:11:250411デフォルトの名無しさん
2007/08/11(土) 18:57:010412デフォルトの名無しさん
2007/08/13(月) 03:00:30企画者とか。
0413デフォルトの名無しさん
2007/08/19(日) 21:03:14もう三ヶ月経ってますよ。ちょっと焦らしすぎじゃーないですかね?
0414デフォルトの名無しさん
2007/08/19(日) 21:38:34おれは我慢ならん
0415デフォルトの名無しさん
2007/08/19(日) 22:07:07これらの言語が糞じゃなくてぅあが糞だというのなら、それはお前の主観であって
他人に押し付けるものではないよ
0416デフォルトの名無しさん
2007/08/19(日) 22:14:12C++やJavaやC#がそうだとは一言も言ってないが
0417デフォルトの名無しさん
2007/08/19(日) 22:16:140418デフォルトの名無しさん
2007/08/19(日) 22:22:010419デフォルトの名無しさん
2007/08/19(日) 22:25:06恐らく普段から人の話を聞かない自己中な人間なんだろうね。
糞言語判定委員乙
0420デフォルトの名無しさん
2007/08/19(日) 22:46:340421デフォルトの名無しさん
2007/08/19(日) 22:59:140422デフォルトの名無しさん
2007/08/19(日) 23:05:422.糞言語かどうかは俺が決める事
3.糞言語かどうかは俺が決める事
4.糞言語かどうかは俺が決める事
5.糞言語かどうかは俺が決める事
決め付は良くない。
0423デフォルトの名無しさん
2007/08/19(日) 23:09:170424デフォルトの名無しさん
2007/08/19(日) 23:25:440425424
2007/08/19(日) 23:27:040426デフォルトの名無しさん
2007/08/19(日) 23:52:530427デフォルトの名無しさん
2007/08/20(月) 00:02:590428デフォルトの名無しさん
2007/08/20(月) 01:02:36お前が糞だとは一言も言ってないが
0429デフォルトの名無しさん
2007/08/20(月) 08:06:520430デフォルトの名無しさん
2007/08/20(月) 08:25:170431デフォルトの名無しさん
2007/08/20(月) 08:27:260432デフォルトの名無しさん
2007/08/20(月) 08:33:550433デフォルトの名無しさん
2007/08/20(月) 09:29:10またこれか
学習しろ俺
0434デフォルトの名無しさん
2007/08/20(月) 14:18:58その代わりPerlたんは俺の嫁だからな
0435デフォルトの名無しさん
2007/08/20(月) 23:00:02◯( ´∀` )◯ < 僕は、LISPちゃん!
\ / └────────────
_/ __ \_
(_/ \_)
lll
0436デフォルトの名無しさん
2007/08/20(月) 23:13:00当たる。
0437デフォルトの名無しさん
2007/08/20(月) 23:25:120438デフォルトの名無しさん
2007/08/21(火) 00:14:12それ以外の自家製オナニーライブラリは糞と言っていい。
Cで書き直せグズ
0439デフォルトの名無しさん
2007/08/21(火) 00:49:140440デフォルトの名無しさん
2007/08/21(火) 02:20:190441デフォルトの名無しさん
2007/08/21(火) 02:49:19/ :: ヽ
/ \ / |
(∂| | ・ ・丿 |
ヽ| "" "" |
| ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\ /__/ / < やっぱぅあはすげえや!
/ヽ /\ \_________________
0442166
2007/08/22(水) 18:11:01ごめん、もうめんどくさくなってすっぽかすつもりでした
かなり投げやりですがとりあえず約束は守りましたよ〜
0443デフォルトの名無しさん
2007/08/22(水) 21:08:02URLを張ってくれ
0444デフォルトの名無しさん
2007/08/22(水) 22:14:060445デフォルトの名無しさん
2007/08/22(水) 23:31:20何をどう直すつもりなのかも.
0446デフォルトの名無しさん
2007/08/23(木) 00:18:17その辺をちょっと書き足しました
0447デフォルトの名無しさん
2007/08/23(木) 00:53:40delegateの使い方が無茶苦茶だよ
threadあたりは突込みどころが多すぎてもう
0448デフォルトの名無しさん
2007/08/23(木) 11:11:51速度に関しては確かにはっきりと言えることじゃないですね
delegateは非常駐っぽいことをやる方法がこれしか思いつかなかったので…
突っ込みどころあるなら具体的に言ってもらえると助かります。個人的にそれを期待して書いてみたというのもあるので
0449デフォルトの名無しさん
2007/08/23(木) 11:27:580450デフォルトの名無しさん
2007/08/23(木) 23:20:45としかリアクションが思い浮かばない
0451デフォルトの名無しさん
2007/08/23(木) 23:25:17ナシって、
>その使い方ならゲームでも大丈夫でしょうが、
>スクリプトでガリガリ計算を行うようだと速度面で問題になってくると思います。
この部分か?他に見当たらないが。
これは当然の話で、裏づけも糞もないだろ、と思う。
0452デフォルトの名無しさん
2007/08/23(木) 23:43:10実際のデータがなかったら何も言っていないのといっしょだよこういう話は
0453デフォルトの名無しさん
2007/08/23(木) 23:47:00はいはい。お前は口を出すとマイナスにしかならないから黙っててねこういう話は
0454デフォルトの名無しさん
2007/08/24(金) 00:13:42>>452が何をいってるのかちゃんと理解できてるか?
キレてるのだけはわかるんだが
黙ってろとかどんだけだよ
0455デフォルトの名無しさん
2007/08/24(金) 00:20:080456デフォルトの名無しさん
2007/08/24(金) 01:25:58Squirrelのことだったらまだしもそれ以前に用語の使い方がおかしかったりとか
そういう指摘もあるだろうなあ、と
それはもう未熟っぷりを晒す覚悟でしたのでいいのですが、
Squirrelに関する間違いはここで出して欲しいです。それをまとめたいので。
特に>>448さんのdelegateに関しては具体的に理由を聞きたいです
常駐、非常駐的なことをするのって他に方法あるんですかね?
個人的にそこら辺は死活問題なんですよね
0457デフォルトの名無しさん
2007/08/24(金) 01:26:540458デフォルトの名無しさん
2007/08/24(金) 01:46:54最初から真面目にやろうとしてないじゃん。
スレは荒れるし、入門者が間違った知識覚える恐れもあるし、
やる気無いんだったら別にやらなくていいから、変なこと書かないでくれ。
0459デフォルトの名無しさん
2007/08/24(金) 01:48:57なにキレてんの?
0460デフォルトの名無しさん
2007/08/24(金) 01:50:07間違いを指摘するやる気もないなら、お前が黙ってろって話だと思うよ
0461デフォルトの名無しさん
2007/08/24(金) 01:54:45黙ってろとかどんだけだよ
>>458
書かないでくれとかどんだけだよ
どおおおんだけええええええ
0462デフォルトの名無しさん
2007/08/24(金) 02:04:020463デフォルトの名無しさん
2007/08/24(金) 02:13:18どんだけ〜言われたのが相当気に障ったのか相当気に入ったのか知らないけど
書きたいだけならどっか他のとこで発散してきてくれると助かる
0464デフォルトの名無しさん
2007/08/24(金) 02:28:00luaってそういう言語だったっけ
複数手前のスクリプトのステートメントを参照できる変数があって
それを一部書き換えてevalできるとか
すごいプログラムがかけそうだが
0465デフォルトの名無しさん
2007/08/24(金) 02:47:24キレてんのはお前だろ。どっかいってね。
0466デフォルトの名無しさん
2007/08/24(金) 03:49:14常駐、非常駐的なことってのがよくわからないんだけど
いらなくなったら消すテーブルの名前をあらかじめ決めておいて
スクリプトの中でいらなくなったら消すものはそのテーブル内に定義しておいて
そのテーブルをいらなくなったら消す
じゃだめなの?
0467デフォルトの名無しさん
2007/08/24(金) 07:54:030468デフォルトの名無しさん
2007/08/24(金) 17:56:15リファレンスにある関数登録みたいなやり方でテーブルを登録するってことですか
そうかー、普通そうするのか
0469デフォルトの名無しさん
2007/08/24(金) 18:07:590470デフォルトの名無しさん
2007/08/25(土) 00:12:03どうも納得されてるみたいだけど
常駐、非常駐的なことってのが未だに謎なので少し説明してよ
>リファレンスにある関数登録みたいなやり方
ってどこのこと?
あまりにニッチな要求に応えなくちゃならんならスクリプトでどうにかしようとするより
squirrelのソースコードいじるほうが利口な場合もあるかもしれないよ?
0471デフォルトの名無しさん
2007/08/25(土) 00:41:37いるものは残して、いらないものは消す。おっしゃってる通りのことをやりたいだけです。
ルートテーブルに全部のスクリプト読み込んでたら、そういう区別ができないじゃないですか
>>リファレンスにある関数登録みたいなやり方
>ってどこのこと?
SQFUNCTION型の関数をルートテーブルに登録するやつみたいなやり方…、じゃないんですか?
0472デフォルトの名無しさん
2007/08/25(土) 01:46:07APIでやるならそのとおり
↓みたいなスクリプトをルートテーブルをpushしたあとdofileしちゃってもいいし
tmptable <-
{
a = function(v) { return v + 1; },
v1 = 0,
v2 = 3.1415
};
0473デフォルトの名無しさん
2007/08/27(月) 11:16:30166はコンパイラを削ってつかっている予感
常駐の意味がよくわからないけど、
がんばって使ってる感がいいね
0474デフォルトの名無しさん
2007/08/29(水) 22:09:09http://www.codeplex.com/Nua
0475デフォルトの名無しさん
2007/08/29(水) 23:09:000476デフォルトの名無しさん
2007/08/30(木) 01:12:360477デフォルトの名無しさん
2007/08/30(木) 01:22:530478デフォルトの名無しさん
2007/08/30(木) 20:47:360479デフォルトの名無しさん
2007/09/01(土) 13:13:08Squirrel - Lua/組み込み系言語 Wiki*
http://wikiwiki.jp/lua/?Squirrel
こっちにもないんだけど・・・roz
0480デフォルトの名無しさん
2007/09/01(土) 13:18:28そういうこと考えないのか?
0481デフォルトの名無しさん
2007/09/01(土) 13:41:26お!はてなのやる気のないゲームプログラマさんのページか!
dクスだぜ
じっくりよむぜ
0482デフォルトの名無しさん
2007/09/02(日) 21:09:16lua_State *L = lua_open();
int* hoge = new int;
lua_register(L, "hoge", hogehoge);
luaL_dofile( L, "hoge.lua");
この時、関数hogehoge内で変数hogeをいじりたいのですが、
どうすればいいのでしょうか?
グローバルに置くとかしか解決方法がないのならあきらめますが…
0483デフォルトの名無しさん
2007/09/03(月) 16:01:58思ったんですが、そのやり方で登録した関数はスクリプト側から呼び出せないんじゃないでしょうか
0484デフォルトの名無しさん
2007/09/04(火) 11:57:00その関数に変数の参照を渡す必要があります。
たぶんテーブルで囲んであげればいいです。Lua のコードで書くとこんな感じ。
function hogehoge(box)
box[1] = 456
end
local hoge = {123}
hogehoge(hoge) -- ここで hoge の内容が変わる
0485デフォルトの名無しさん
2007/09/04(火) 15:04:00http://www.eonclash.com/ViewProduct.php?ProductID=24
0486デフォルトの名無しさん
2007/09/04(火) 19:15:48DelphiとFPCをサポートしてる?
0487デフォルトの名無しさん
2007/09/04(火) 20:50:51lua_register(L, "hoge", hogehoge);
を
lua_pushlightuserdata(L, static_cast<void*>(hoge));
lua_pushcclosure(L, hogehoge, 1);
lua_setglobal(L, "hoge");
に変えればいんじゃね?
hogehogeの中身は
int hogehoge(lua_State *L)
{
int* hoge = static_cast<int*>(lua_touserdata(L, lua_upvalueindex(1)));
// hogeを使っていろいろ
}
あと、hogeはどこでdeleteするの?
delete後にhogehogeを呼ばれたらアウト
0488デフォルトの名無しさん
2007/09/11(火) 02:21:22object.hpp:256 ---------
template<class LHS, class RHS>
typename enable_binary<bool,LHS,RHS>::type
operator!=(LHS const& lhs, RHS const& rhs)
{
return !(lhs < rhs); // '<' => '==' の間違い?
}
---------
luabinder の意見求む!!
0489デフォルトの名無しさん
2007/09/18(火) 15:27:050490デフォルトの名無しさん
2007/09/18(火) 23:28:090491デフォルトの名無しさん
2007/09/19(水) 21:23:460492デフォルトの名無しさん
2007/09/22(土) 20:39:470493デフォルトの名無しさん
2007/09/23(日) 19:05:000494デフォルトの名無しさん
2007/09/24(月) 00:30:350495デフォルトの名無しさん
2007/09/24(月) 00:37:35ぅあ
0496デフォルトの名無しさん
2007/09/28(金) 17:42:45∞ ぅゎ ょぅι゛ょ っょぃ
┃( '-') 、(;´д`)
┣ノ、 )= 三 )n ) Σ
〉 / / <
0497デフォルトの名無しさん
2007/10/14(日) 12:47:04C言語として
=> lua_gettable等がlongjmpかますので
C++と一緒に使うのは相当つらい。
C++言語として
=> 上記問題は解決する(longjmpでは無く
throwつかうから)がluaとリンクするプログラム
は全てC++でコンパイルする羽目になる
C++言語として&LUA_APIをextern "C"として宣言
=> 割合ましだが、相変わらずLuaとリンクする
プログラムは-fexceptions等をつけてコンパイル
する必要あり。
意見よろ
0498デフォルトの名無しさん
2007/10/14(日) 13:27:270499デフォルトの名無しさん
2007/10/14(日) 14:09:07>C++言語として&LUA_APIをextern "C"として宣言
Cのライブラリを使う予定がない場合はextern "C"無しでもいいかも。
LuaのソースコードがそのままC++でコンパイルできると知った時はちょっと感動したもんだ。
0500497
2007/10/14(日) 14:43:32やっぱそれが妥当ですかねぇ。
ただ、Cのライブラリ使う場合Cのライブラリを-fexceptions付き
でコンパイルしないといけないので(lua->Cライブラリ->luaが起こる
場合)、ソースが手に入ることが前提になるんだよね。
linux&gccな環境でソースが手に入らないことはまれだろうけど。
0501デフォルトの名無しさん
2007/10/14(日) 15:38:22何が変わるの?
0502497
2007/10/14(日) 16:26:57えーっと、gccの話ね。(VCにも似たオプションがあったはず)
関数呼び出しが”C++<1:try> => C<2> => C++<3:throw>” となる場合
<2>の部分のスタックをまき戻す為の情報を付加しているんだと
思う。自信ないけど。
これが無いと例外発生時にAbortしてしまう。
>>499の例で言うと、
lua(C++) => C言語ライブラリ => lua_gettable(...)
なんて場合、lua_gettable内で発生した例外が
C言語ライブラリ内を通ることになる。
0503デフォルトの名無しさん
2007/10/14(日) 16:57:07つけてもつけなくても素通りするだけで変わらないと思ってたけど、
つけないと abort しちゃうのか。
http://gcc.gnu.org/onlinedocs/gcc-4.2.2/gcc/Code-Gen-Options.html
-fexceptions
"... However, you may need to enable this option when compiling C code that needs to interoperate properly with exception handlers written in C++. ..."
なんかぼかして書いてあるけど、そういうことね。
ありがと。
0504デフォルトの名無しさん
2007/10/24(水) 19:54:400505デフォルトの名無しさん
2007/10/27(土) 13:51:35しC++側からその関数を呼び出すとlua_pcallのところで失敗します。きちん
とluaopen_math()なども呼び出しているのですが・・・
同じ経験がある人とかいませんか?
0506デフォルトの名無しさん
2007/10/27(土) 16:48:44lua_pcallの戻り値とエラーメッセージは?
それを確認すると解決の糸口が見つかると思う。
0507デフォルトの名無しさん
2007/10/27(土) 17:29:12スタックからpopするところでエラーが出ていました。引数はきちんと
スタックにつんでいるので問題ないと思うんですが・・・
標準ライブラリを使わない関数とかは普通に実行できるんで、全く理由が
分かりません。
0508デフォルトの名無しさん
2007/10/27(土) 17:55:590509507
2007/10/27(土) 18:26:57lua_getglobal(m_L, "hoge");
lua_pcall(m_L, 0, 1, 0); //ここでエラー
int ret = static_cast<int>(lua_tonumber(m_L, -1));
//luaファイルで定義した関数
function hoge
return math.random(100);
end
luaL_loadfile()は呼び出し済みです。
0511デフォルトの名無しさん
2007/10/27(土) 19:52:02luaopen_math呼んで無いじゃん。
呼んでる部分を含めた再現ソースを見せなさい。
0512507
2007/10/27(土) 22:31:55スタックトップのエラーメッセージを調べたら引数が足りないというエラー
でした。マニュアルにはmath.randomの定義は以下のように書いてあったので
普通に通るもんだと思っていたんですが・・・
「引数無しで呼ばれると、math.random は [0,1) の範囲の実数の疑似乱数を
返す。数値 n を渡すと、math.random は [1,n] の範囲の整数の疑似乱数を
返す。 2つの引数 l と u を渡して呼んだときは、 math.random は [l,u]
の範囲の整数の疑似乱数を返す。」
引数を2個で渡すとエラーは出なくなったんですが、常に0が返ってきます。
引数0個だと正常に動作します。何なんでしょうね。
>>511
luaopen_mathは呼んでいます。
0513デフォルトの名無しさん
2007/10/27(土) 23:22:03再現する最小限のソースを全て晒したら?
省略する奴に限って、省略したところに問題があるのはよくある話だから。
0514デフォルトの名無しさん
2007/11/02(金) 01:34:460515デフォルトの名無しさん
2007/11/02(金) 03:54:430516デフォルトの名無しさん
2007/11/02(金) 04:49:280517デフォルトの名無しさん
2007/11/02(金) 08:13:59LLでしょTJS2って
0518デフォルトの名無しさん
2007/11/02(金) 08:19:06http://eonclash.com/ViewProduct.php?ProductID=26
0519デフォルトの名無しさん
2007/11/02(金) 15:32:46スレタイ嫁
ここはLL全般じゃなくてぅあのスレだ。
つっても過疎ってるから俺は構わないけど。
0520デフォルトの名無しさん
2007/11/02(金) 18:55:19List[2]={"name","addr","phone"}
List[n]={"name","addr","phone"}
このような記述のList.luaがあるとして、これをrequireした後に書き出しすると、
List[4]={"name","addr","phone"}
List[1]={"name","addr","phone"}
List[3]={"name","addr","phone"}
List[2]={"name","addr","phone"}
のように、順序が崩れてしまいます。
テーブルのソートとはどのように行うのでしょうか?
0521デフォルトの名無しさん
2007/11/02(金) 19:04:321から始まる数値キーなら
for i,v in ipairs(List) do ... end
で回せばキーの順序はずれないと思うんだけどな。
実際ソートするならこれだけど。
table.sort(table, function(a,b) return a.x < b.x end)
みたいな。
ただこれでソートするにしても、テーブルは配列状(キーは1から始まる数値)である必要がある。
0522デフォルトの名無しさん
2007/11/02(金) 19:07:27ありがとうございます。
現在のところ、
List[2]={"name","addr","phone"}
List[3]={"name","addr","phone"}
List[n]={"name","addr","phone"}
などのように1から始まる保証は無く、かつ数値が2, 3, 5, 6, 8, ...のように
飛び番になる可能性もあります。
実際のところ、処理上は問題は出ないのですが、
ログを取った際の可読性の問題でソート可能であればしたいのです。
0523デフォルトの名無しさん
2007/11/02(金) 19:22:39Listとは別に、
sort_table[1]={no=5,"name","addr","phone"}
sort_table[2]={no=1,"name","addr","phone"}
sort_table[3]={no=13,"name","addr","phone"}
....
って形に詰めなおして>>521みたいにnoでソートすればおk
0524デフォルトの名無しさん
2007/11/02(金) 23:05:56前スレ嫁。ここはLL全般のスレだ。
お前が構おうが構うまいがな。
0525デフォルトの名無しさん
2007/11/02(金) 23:27:58お前が構おうが構うまいがここはスレタイ通りLuaのスレだ。
ここが何のスレかを知るのになぜ前スレを読む必要がある?
LL全般について議論したいのならお前がLLスレを立てればいいだけのこと。
0526デフォルトの名無しさん
2007/11/02(金) 23:45:50前スレみるまでもなく>>8-11辺りでわかるんじゃ?
スレも半分超えてるのになんで今更突然……。
0527デフォルトの名無しさん
2007/11/03(土) 01:00:15LL一般扱ってたらスレがいくらあっても足りないぜ
0528デフォルトの名無しさん
2007/11/03(土) 05:06:28はいはい、新参が知ったかすんな。
>>527
何が一杯一杯なの?
つうか、お前過疎ってるから構わないって言った癖に意味不明すぎんな。
0529デフォルトの名無しさん
2007/11/03(土) 08:40:49次スレ(いつになるかわからんけど)のスレタイは変えたほうが良いかもね。
0530デフォルトの名無しさん
2007/11/03(土) 08:48:29勝手に連立政権にされちゃ迷惑だ。
0531デフォルトの名無しさん
2007/11/03(土) 10:53:29LL特集になぜかLuaは入れてもらえないことが多いんだこれが
0532デフォルトの名無しさん
2007/11/03(土) 11:07:19Webサーバとの組み合わせを指向してないからかな?
0533デフォルトの名無しさん
2007/11/03(土) 11:28:57違う。
組み込み言語全般のスレ。
過去ログ嫁
スレタイは、前回、組み込み言語にしろって言ったのに、
Luaだけにしやがっただけで
0534デフォルトの名無しさん
2007/11/03(土) 11:35:560535デフォルトの名無しさん
2007/11/03(土) 11:39:37ワロタw
まさしくその通りw
0536デフォルトの名無しさん
2007/11/03(土) 11:59:15そうですw
0537デフォルトの名無しさん
2007/11/03(土) 12:51:30このスレ用のwikiもURLはluaだけど、LLならOKってなってるでしょ。
http://wikiwiki.jp/lua/
「情報が錯綜する」ってバカですか。
錯綜するほど情報が出てないでしょ。
むしろ組み込み言語の情報が集まった方がいい。
>>534=535=536
そうじゃない。前スレではLL全般ということで同意がとれていていた。
0538デフォルトの名無しさん
2007/11/03(土) 12:55:10そんなに煽りに反応しなくて良いよ。
0539デフォルトの名無しさん
2007/11/03(土) 12:56:14なんだかんだでスレタイは変わらなかったんだよ。
前スレDAT落ちしてる上に、1年以上も前の話だから、
忘れてる人も多いだろうし、最近来た人が知らないのはしょうがない。
0540デフォルトの名無しさん
2007/11/03(土) 12:56:41てか、ここ一年未満の新参が増えて、古参はluaをもう見放したのか?
0541デフォルトの名無しさん
2007/11/03(土) 13:13:340542デフォルトの名無しさん
2007/11/03(土) 15:21:49ノシ 前スレからいます。
テンプレがあまり良くないよね。
前スレの終り頃はゴタゴタしてて急だったから立ててくれた人を責められないけど。
人も集まってるみたいだしテンプレを考えるにはいい機会かも。
できたら>11のWikiに書いておくと。
0543デフォルトの名無しさん
2007/11/04(日) 21:18:36民主主義は多数決で決まるんだよ、ばかがw
0544デフォルトの名無しさん
2007/11/04(日) 22:29:070545デフォルトの名無しさん
2007/11/04(日) 23:50:22このLL全般でやってる現在でさえスローペースなんだよ? 全然意味がわからない。
0546デフォルトの名無しさん
2007/11/04(日) 23:52:22えー、Lua専用にしようという意見があるみたいなんですが、
別にレスも多いわけではないしそういった話が出る理由がわかりません。
……なんか、ごめん……。
0547デフォルトの名無しさん
2007/11/05(月) 00:06:05今Lua専用なんだから格別の理由がなければそのままだろ.
過疎スレは過疎スレなりに3スレまで来てるんだし
わざわざ総合にするって話が出る理由がわかりません.
0548デフォルトの名無しさん
2007/11/05(月) 00:16:03統合と言うことでいいんじゃない?
現状うまくいってるところを、わざわざ乱すこともないと思う。
0549デフォルトの名無しさん
2007/11/05(月) 00:17:560550デフォルトの名無しさん
2007/11/05(月) 01:23:03ここが『Lua専用』だと思ってる奴って前スレとか持ち出すまでもなくこのスレ読んでないんじゃないかと。
0551デフォルトの名無しさん
2007/11/05(月) 01:34:36とりあえず、Wikiでも作ってみようかと思うんだが必要?
694 :デフォルトの名無しさん:2006/03/17(金) 09:57:30
このスレのWikiを作ろうかって話なんだから
看板はLuaで一応Luaの情報メインだけど
アプリ組み込み系なら多少の脱線はあり、ぐらいでいいだろ。
メジャーな言語は他所でやってくれ。
695 ::2006/03/17(金) 17:49:21
LightWeightLanguageがでかすぎるから。
やっぱ組み込み向けscriptつーことで
701 :デフォルトの名無しさん:2006/03/18(土) 21:36:56
なしてそこまでLightWeightLanguageでまとめたがるのか
明らかにLua wikiの方がわかりやすいタイトルと思うのだが
703 :デフォルトの名無しさん:2006/03/19(日) 02:18:56
このスレが、LightWeightLanguageの情報OKってなったからだろ。
LuaだけでWikiほんとに必要か?
マニュアルだけで結構十分じゃない?w
このスレの情報の出具合からいっても、
Wikiつくっても寂れるの見えてない?
↑前スレですでに総合スレにする流れになってたし、
そもそも前スレでも総合的に扱ってたはず。
このスレの最初のほうにも書いてあるし。
0552デフォルトの名無しさん
2007/11/05(月) 08:40:28お前、これまでの話聴いてなかったのか?
0553デフォルトの名無しさん
2007/11/05(月) 09:30:03・・・
ほんとにもう・・・乱してるのがおまえらだよ にわか
0554デフォルトの名無しさん
2007/11/05(月) 13:32:10上でさんざんでているsquirrelはなんだと思っているんだろう
0555デフォルトの名無しさん
2007/11/05(月) 18:26:14http://sourceforge.net/projects/squirrel-sql/
検索ついでにテンプレ用にsquirrel関連を拾っておくか
The programming language Squirrel
http://www.squirrel-lang.org/
http://sourceforge.net/projects/squirrel/
SqPlus http://sourceforge.net/projects/sqplus/
Squirrel Shell http://sourceforge.net/projects/squirrelsh/
0556デフォルトの名無しさん
2007/11/05(月) 20:42:18"squirrel"でこのスレを検索すれば、
lua専用スレじゃないということは、前スレを見るまでも無くあきらかだな。
0557デフォルトの名無しさん
2007/11/06(火) 01:52:370558デフォルトの名無しさん
2007/11/06(火) 02:00:57squirrelはこのスレでいいのは事実
0559デフォルトの名無しさん
2007/11/10(土) 06:44:52【Lua】LightWeightLanguage統合【squirrel】
【Lua】組み込み言語統合【squirrel】
0560デフォルトの名無しさん
2007/11/10(土) 07:04:420561デフォルトの名無しさん
2007/11/10(土) 07:22:32そうすりゃSquirrelスレが立つ心配も無さそうだしな
…ところで、次スレの話はまだ早すぎないか?
何だか、自分超元気なのに次期国王の話を聞かされる王様の気分だ
0562デフォルトの名無しさん
2007/11/10(土) 07:48:54なんか違和感あったんだよな。
0563デフォルトの名無しさん
2007/11/10(土) 08:19:440564デフォルトの名無しさん
2007/11/10(土) 09:02:580565デフォルトの名無しさん
2007/11/10(土) 09:48:25なかなかいいんじゃないかな
>>562
このスレがLuaで機能してるから他の言語くるな、なんて
質問しかしないような奴がいいそうなこったな
0566デフォルトの名無しさん
2007/11/10(土) 11:07:010567デフォルトの名無しさん
2007/11/10(土) 11:51:300568デフォルトの名無しさん
2007/11/10(土) 12:28:24・アプリ組み込み用
・軽量小規模言語
・他にスレがない
あたりかな。巷のLLとはちょっと違う気がする。
LL自体定義があるのかよくわからないが。
0569デフォルトの名無しさん
2007/11/10(土) 13:11:20ニワカ乙
0570デフォルトの名無しさん
2007/11/10(土) 13:43:20そんなとこだろうな というか
ずっとそんなスレのつもりだった
0571デフォルトの名無しさん
2007/11/10(土) 14:09:13いや、組み込む話題については、歓迎かも知れんけど
0572デフォルトの名無しさん
2007/11/10(土) 14:19:33PHPは組み込みあったっけ。
0573デフォルトの名無しさん
2007/11/10(土) 15:45:11そっち系の話題は向こうのスレじゃあんま出ないしな。
いや、もちろん出してもスレ違い扱いされたりはしないだろうが。
0574デフォルトの名無しさん
2007/11/10(土) 23:40:43>571-573 のニュアンスを加えて文章にしてみた。
[[
アプリケーション組み込み用の小規模言語についてのスレです。
話題の中心はLua、Squirrelですが他の言語もOK。
]]
0575デフォルトの名無しさん
2007/11/10(土) 23:46:170576デフォルトの名無しさん
2007/11/11(日) 03:59:09> 【Lua】組み込み言語統合【squirrel】
に一票
0577デフォルトの名無しさん
2007/11/11(日) 06:37:50よろしくお願いします。
1,luaの実行を内部から一時停止、外部から再開する方法にcoroutine以外のやり方はありますか?
2,luaの実行を外部から一時停止&再開することはできますか?
3,フックされた関数からluaを一時停止させることはできますか?
0578577
2007/11/11(日) 07:45:09「スレタイ変更とは関係ありません」でした><
0579デフォルトの名無しさん
2007/11/12(月) 20:12:361、2はファイバorスレッドorプロセスが絡む話なの?
そうであればやり様はいくらでも有る。実行コンテキストを
変えずにという意味であれば他に方法は無いと思う。
3、”フックされた関数”=>”Luaから呼ばれたC言語の関数”という
意味であればlua_yieldを使うかcocoを使うか。
0580デフォルトの名無しさん
2007/11/14(水) 01:03:42フック関数からyieldできるなんて意外でした。
ありがとうございます。
0581デフォルトの名無しさん
2007/11/14(水) 15:41:09gdbやvcのような環境でデバッグできませんか?
0582デフォルトの名無しさん
2007/11/14(水) 16:11:03だけど、Lua専用IDEからならできるよ
Decoaだっけ
0583デフォルトの名無しさん
2007/11/14(水) 23:55:43Decodaは割合評判いいらしいね。
他に名前聞いたものとしては
VSLua(有料)
LuaEdit(無料・微妙というか未完成)
wxLuaにもビジュアルデバッガついてたような気がするけど、embed環境で動かせるかどうかは不明。
0584デフォルトの名無しさん
2007/11/17(土) 19:26:16>>593
Decodaいいですね。組み込みで使いたかったです。
LuaEditも試してみたのですが、luaをdllにする必要があるのと、
そのdllのバージョンを合わせるのが大変で途中でやめてしまいました。
luaの自作ライブラリをdllにしてしまった方が早そうな感じです。
どもでした。
0585デフォルトの名無しさん
2007/11/17(土) 19:36:030586デフォルトの名無しさん
2007/11/17(土) 21:47:01continueでしょうか、nextでしょうか?
ttp://uri.sakura.ne.jp/~cosmic/yuno/lab/lua5_manual_ja.html
この辺を参考にしているのですが、breakなどしか見当たらなくて困っています。
0587デフォルトの名無しさん
2007/11/17(土) 22:15:10何故か無い
0588デフォルトの名無しさん
2007/11/17(土) 22:32:33海外でもこの話題ちらほら見かけるけど。何故無いのかは知らない。
"continue" construct in Lua loops
ttp://lua-users.lua.org/lists/lua-l/2006-12/msg00440.html
0589デフォルトの名無しさん
2007/11/17(土) 23:11:01レスありがとうございました。
0590デフォルトの名無しさん
2007/11/18(日) 05:35:000591デフォルトの名無しさん
2007/11/18(日) 14:31:58breakも必要なときは返値で判定。
0592デフォルトの名無しさん
2007/11/18(日) 15:05:18コード汚そう。
0593デフォルトの名無しさん
2007/11/18(日) 15:55:190594デフォルトの名無しさん
2007/11/18(日) 15:57:24continueあったほうがそりゃ素直に書けるしなあ。
0595デフォルトの名無しさん
2007/11/18(日) 18:31:11汚いじゃん
0596デフォルトの名無しさん
2007/11/18(日) 18:35:45最悪レベルの汚さだと思う
0597デフォルトの名無しさん
2007/11/20(火) 00:10:47ttp://staff.aist.go.jp/yutaka.ueno/lua/docsjp.html
0598デフォルトの名無しさん
2007/11/20(火) 00:47:150599デフォルトの名無しさん
2007/11/20(火) 01:21:05実現したら自分へのクリスマスプレゼントにする……っ!
0600デフォルトの名無しさん
2007/11/20(火) 01:26:390601デフォルトの名無しさん
2007/11/20(火) 15:30:260602デフォルトの名無しさん
2007/11/21(水) 08:30:15まあそれでも別に困らんかったから、
改造してまで付けるほどでもないなワシは
0603デフォルトの名無しさん
2007/11/21(水) 23:13:33文字化けする2バイト文字の一覧のようなものってどこかに載っていないでしょうか?
0604デフォルトの名無しさん
2007/11/22(木) 00:40:33文字化けはエスケープシーケンスのせい。
"abc"じゃなくて[[abc]]使うといい。
0605デフォルトの名無しさん
2007/11/30(金) 11:15:33入門Luaプログラミング
http://www.amazon.co.jp/dp/4797342722/
0606デフォルトの名無しさん
2007/11/30(金) 12:58:19期待age
0607デフォルトの名無しさん
2007/11/30(金) 14:01:170608デフォルトの名無しさん
2007/12/08(土) 15:22:140609デフォルトの名無しさん
2007/12/08(土) 16:49:380610デフォルトの名無しさん
2007/12/08(土) 23:14:42そういえば以前にも一回読めなくなったときがあったけど、
そのときはサイト全体が読めなかった。
0611デフォルトの名無しさん
2007/12/09(日) 09:57:13うあーー
ac.jpなのを忘れてた orz
保存しとけばよかった
つーか、ac.jpの人って、卒業したら消えるんだよな・・・大抵
0612デフォルトの名無しさん
2007/12/09(日) 10:09:160613デフォルトの名無しさん
2007/12/09(日) 15:36:33googleキャッシュかInternet archive行けばまだ間に合う
0614デフォルトの名無しさん
2007/12/16(日) 01:31:140615デフォルトの名無しさん
2007/12/18(火) 17:31:29グローバルステートを含めすべての内容をコピーすることは可能ですか?
0616デフォルトの名無しさん
2007/12/21(金) 01:33:58スレッドで使って下の関数をコールするとsuspendでC++側に処理を返したときに
a、bのデータが壊れてしまいます。
function CallSuspend(i, j, k, l, m, n, o)
{
local a = 23;
local b = 32;
while(1)
{
suspend();
print("i = " + i + "\n");
print("j = " + j + "\n");
print("k = " + k + "\n");
print("l = " + l + "\n");
print("a = " + a + "\n");
print("b = " + b + "\n");
break;
}
}
0617616
2007/12/21(金) 01:40:57suspendはwakeupでまたスクリプトを起動するのだから、引数の数だけポップする意味がわかりません。
これはバグなのでしょうか?
ちなみに自分の使っているsquirrelのバージョンは2.1.1です。
SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror)
{
SQObjectPtr res;
if(v->Call(v->GetUp(-(params+1)),params,v->_top-params,res,raiseerror?true:false)){
v->Pop(params);//pop closure and args ←※ここ
if(retval){
v->Push(res); return SQ_OK;
}
return SQ_OK;
}
else {
v->Pop(params);
return SQ_ERROR;
}
if(!v->_suspended)
v->Pop(params);
return sq_throwerror(v,_SC("call failed"));
}
0618デフォルトの名無しさん
2007/12/21(金) 10:05:070619デフォルトの名無しさん
2007/12/21(金) 10:54:35どういうことですか?
知っていることがあるなら教えてください。お願いします。
0620デフォルトの名無しさん
2007/12/21(金) 11:04:12>この関数はすべての引数をpopし、スタック上のこのクロージャを取り除く。
>もしretvalがtrueであるなら、クロージャの戻り値がpush される。
>もし関数実行がsq_suspendvmによって中断されたなら、クロージャと引数はスタックから自動的にpopされない。
しかし、自分が実際に追ってみた限りではsuspendでsq_callを抜けた後に引数をポップする処理は実行されています。
それがlocal a,bを破壊しているようなのです。
0621デフォルトの名無しさん
2007/12/21(金) 22:08:56とりあえずなにがしたいのか書こうよ
「これはバグですか?」じゃ作者に失礼すぎるぞ
てめーを卑下しまくる前にちょっとは他人のことを考えようよ
0622デフォルトの名無しさん
2007/12/21(金) 22:20:18616の関数を実行して無事に終了したいだけです。
suspendで処理がC++に帰った後、sq_wakeupvmでスクリプトを再実行したらstackからlocal a,bが消えていて
printでnullを参照してしまうという問題を解決したいんです。
0623デフォルトの名無しさん
2007/12/21(金) 22:29:42ここは作者の掲示板ではないが、
現象が再現するミニマムコードを掲載して、仕様と挙動が異なっている点を報告したうえで、
それがバグかどうかを質問する、ってのは別に失礼でも何でもないと思うけどな。
0624デフォルトの名無しさん
2007/12/21(金) 23:39:26これは現象が再現しない断片コードだし、仕様を取り違えてるし
そもそも一定の条件を満たしていると自分では思えるというだけで
相手に失礼ではないなんてまたどこまで自分勝手な理屈だよ
常識的に考えておかしいだろ
0625デフォルトの名無しさん
2007/12/21(金) 23:46:38>>616は現象が再現しない、って試したの?
あと作者でもないのに、作者に失礼すぎるぞ、なんて言うのも充分に自分勝手な理屈だと思うけどな
0626デフォルトの名無しさん
2007/12/21(金) 23:47:13もったいぶらないで教えてやれよ。
無駄レスが多すぎる。
0627デフォルトの名無しさん
2007/12/21(金) 23:55:38残念ながら2chとはそういう場所なのです。
0628デフォルトの名無しさん
2007/12/21(金) 23:59:24この際原点に戻ろうじゃないか
入門Luaプログラミング
http://www.amazon.co.jp/dp/4797342722/
0629デフォルトの名無しさん
2007/12/22(土) 00:07:36そんな、作者に失礼とか自分勝手とか卑下しまくってるとか言わんでも…
ちなみに俺はよく分からんけど、>>616の動作は期待に反している感じはする。仕様は知らない。
0630デフォルトの名無しさん
2007/12/22(土) 00:10:01断片だから試せない
>あと作者でもないのに、作者に失礼すぎるぞ、なんて言うのも充分に自分勝手な理屈だと思うけどな
俺作者だよ
当然のことながらsquirrelのじゃないけどね
作ってるものが馬鹿からバグ呼ばわりされたときどんな気持ちになるかは分かってるつもり
0631デフォルトの名無しさん
2007/12/22(土) 00:55:43試してないのなら「再現しない」などと断定するなよ。
>>617の箇所のコードを書いた人間の身になって考えると、確かに
一部のコードを載せられて「これはバグか?」と言われるのは
面白いものではないだろうし反論したいことも沢山あるだろうが、
質問に対する回答は一切無く、その感情に任せて馬鹿とか自分勝手とかてめー呼ばわり
するだけってのは作者であろうがなかろうが人間性を疑ってしまう。
0632デフォルトの名無しさん
2007/12/22(土) 01:22:15そうしないと使い方がおかしいかどうかすらわからん。
予想:引数の数を間違えてる
0633デフォルトの名無しさん
2007/12/22(土) 02:02:250634デフォルトの名無しさん
2007/12/22(土) 02:15:540635デフォルトの名無しさん
2007/12/22(土) 02:20:350636デフォルトの名無しさん
2007/12/22(土) 02:26:24断片で不完全なものは試せるはずがない試せないものは再現するはずがない
再現するかどうか観察しなくても断片で動かないんだから再現するはずない
事実を述べてるにすぎないよ
>質問に対する回答は一切無く
ちょっとずつリードしてあげてるじゃん
すぐに解決策が示されるとでも思ったか?俺の人間性が疑われようが甘えはゆるさん
0637デフォルトの名無しさん
2007/12/22(土) 02:58:27甘えを許そうが許しまいがお前さんの勝手だが、それをスレ住人に強要するなよ
レス数はとても少ないがここは色んな人間が見てる
自分のポリシーを他人に強要したり、それを守れない人間を罵倒したいのなら自分の掲示板でやれ
0638デフォルトの名無しさん
2007/12/22(土) 03:22:11function CallSuspend1(i, j, k, l, m, n, o)
{
local a = 10;
local b = 20;
print("Enter CallSuspend1\n");
while (1) {
suspend("abc");
print("i = " + i + "\n");
print("j = " + j + "\n");
print("k = " + k + "\n");
print("l = " + l + "\n");
print("a = " + a + "\n");
print("b = " + b + "\n");
break;
}
print("Leave CallSuspend1\n");
return "done.";
}
local co = newthread(CallSuspend1);
print("Call CallSuspend1\n");
local ret = co.call(1,2,3,4,5,6,7);
print("ret = " + ret + "\n");
print("Wakeup CallSuspend1\n");
ret = co.wakeup();
print("ret = " + ret + "\n");
0639638
2007/12/22(土) 03:23:12Call CallSuspend1
Enter CallSuspend1
ret = abc
Wakeup CallSuspend1
i = 1
j = 2
k = 3
l = 4
a = (null : 0x00000000)
b = (null : 0x00000000)
Leave CallSuspend1
ret = done.
0640638
2007/12/22(土) 03:36:38if (!v->_suspended) v->Pop(params);
に変更して同じコードを実行すると
Call CallSuspend1
Enter CallSuspend1
ret = abc
Wakeup CallSuspend1
i = 1
j = 2
k = 3
l = 4
a = 10
b = 20
Leave CallSuspend1
ret = done.
0641デフォルトの名無しさん
2007/12/22(土) 03:46:14ありがとう!
やっぱり他の人がやってもそうなるんですかー
638さんはスクリプトから実行しているようですが、
自分はC++から呼び出して実行してました。
>>640
自分も同じ方法で対処するしかないのかなと思ってました。
これって結局仕様なんですか?
0642638
2007/12/22(土) 03:48:05function CallSuspend2(i, j, k, l, m) {
local a = 10;
local b = 20;
print("Enter CallSuspend2\n");
while (1) {
suspend("abc");
print("i = " + i + "\n");
print("j = " + j + "\n");
print("k = " + k + "\n");
print("l = " + l + "\n");
print("m = " + m + "\n");
print("a = " + a + "\n");
print("b = " + b + "\n");
break;
}
print("Leave CallSuspend2\n");
return "done.";
}
local co1 = newthread(CallSuspend2);
local co2 = newthread(CallSuspend2);
local co3 = newthread(CallSuspend2);
print("Call CallSuspend2\n");
co1.call(1,2,3,4,5);
co2.call(10,20,30,40,50);
co3.call(100,200,300,400,500);
co2.wakeup();
co1.wakeup();
co3.wakeup();
0643638
2007/12/22(土) 03:49:23Call CallSuspend2
Enter CallSuspend2
Enter CallSuspend2
Enter CallSuspend2
i = 10
j = 20
k = 30
l = 40
m = 50
a = 10
b = 20
Leave CallSuspend2
i = 1
j = 2
k = 3
l = 4
m = 5
a = 10
b = 20
Leave CallSuspend2
i = 100
j = 200
k = 300
l = 400
m = 500
a = 10
b = 20
Leave CallSuspend2
0645638
2007/12/22(土) 04:05:19if (!v->_suspended) v->Pop(params);
でsuspendしているときはスタックを整えていないことから考えるとバグかも
0646デフォルトの名無しさん
2007/12/22(土) 04:06:59Squirrel全然分からん(昔Hello World試したくらい) けど、勉強がてら俺も>>616試したら同じ結果になった。
ちなみに引数の数を 7つから変更(呼び出し元も変更)していくと、
3つになったところでbが正常になり、2つになるとaもbも正常になった。
これが仕様だとすると何か根本的根本的に使い方間違ってんのかな?
sq_call とか sq_wakeupvm とかの引数とか色々変えてみたけど、勉強がてらなんでまだよく分からん。
整理できたら多少空気読みつつ晒してみる
0647デフォルトの名無しさん
2007/12/22(土) 04:08:590648デフォルトの名無しさん
2007/12/22(土) 04:10:37あまりバグバグ言うとまた五月蝿くなるからやめとけ
0649632
2007/12/22(土) 04:13:48おわびにってことで俺もしらべてたんだが、既に638 で結論でてた…
function test(i,j,k,l,m) {
local a = 10;
local b = 20;
for (a=0;a<10;a++) {
suspend();
print("a=" + a + "\n");
print("b=" + b + "\n");
}
print("done");
}
a <- newthread(test);
a.call(1,2,3,4,5);
while (a.getstatus() == "suspended") {
a.wakeup();
}
こんなかんじのコードで簡単に再現できる。test の引数の数を減らすと
ローカル変数が破壊されなくて止まらなくなるので、sq_call での引数の解放でローカル変数を
破壊してるという、641の推測は正しいと思う。どういった修正が適切かは断言できないけど、
バグなのは間違いないので、本家に報告したほうがよさそう。
自分の手元でこの種のスレッドの suspend を使ったコードはいたるところにあるんだが
なんでいままでトラブルなかったんだろう、とおもってコードを見直したら、
パラメータは bindenv したオブジェクトのメンバ経由で渡してて、引数を全くつかってなかったよ^^;
0650デフォルトの名無しさん
2007/12/22(土) 04:15:59まさにまさに!
自分もまさか4つ以上引数を渡すのはダメとかそういう仕様じゃないよな?
でもこんなイージーなバグがあるわけないよな?
てな具合にずっと悩んでたんです!
0651デフォルトの名無しさん
2007/12/22(土) 04:26:04だからバグだバグだと騒ぐなと
0652デフォルトの名無しさん
2007/12/22(土) 04:42:000653デフォルトの名無しさん
2007/12/22(土) 04:47:46スタック上にローカル変数があろうが無かろうが、suspend時点でのスタック変数を引数の数だけ問答無用で開放してしまうのか。
なんで>>646みたいに現象は引数の数に変化を受けると。
で、単に使い方が悪いのかバグなのかは不明だけど、
squirrelのコードを>>640の通りに変更すれば少なくとも、この問題は解決、と。
0654649
2007/12/22(土) 04:56:400655デフォルトの名無しさん
2007/12/22(土) 05:08:02ところどころ動詞やらが可笑しいけど伝わるな
Unknown table ってのは内部用のローカル変数のテーブルか何かなのかね?
他のスレも見てみたけど本家のフォーラムって意外と閲覧数少ないんだな・・・
0656デフォルトの名無しさん
2007/12/22(土) 09:53:250657デフォルトの名無しさん
2007/12/22(土) 10:28:100658デフォルトの名無しさん
2007/12/22(土) 11:48:48前スレ&現行スレ嫁
0659デフォルトの名無しさん
2007/12/22(土) 15:55:020660デフォルトの名無しさん
2007/12/22(土) 23:29:26http://squirrel-lang.org/forums/2318/ShowThread.aspx#2318
0661デフォルトの名無しさん
2007/12/23(日) 00:00:33結論としてはやっぱりバグで、修正方法は>>640の通りだったと。
発見された>>616氏、本家に報告されたほげげ氏、その他検証された方々乙でした。
0662デフォルトの名無しさん
2007/12/23(日) 00:03:02報告乙
0663デフォルトの名無しさん
2007/12/23(日) 00:05:59621のこと忘れてるぞ
椰子の煽りがなければ住人もここまで迅速に動かなかっただろう
0664デフォルトの名無しさん
2007/12/23(日) 00:09:110665デフォルトの名無しさん
2007/12/24(月) 03:36:260666デフォルトの名無しさん
2007/12/24(月) 06:09:14A5、256ページで\2310ってちょっと高くないかな、、、こんなもんか
買った人レビュー希望
0667デフォルトの名無しさん
2007/12/24(月) 07:01:02値段はまあ普通だろうね
マイナー言語の一種だし・・・
Erlang入門なんて同じ値段で200ページしかない。
ともかく日本語で出たことが快挙
0668デフォルトの名無しさん
2007/12/24(月) 11:33:56入門書としてはこれくらいの長さのほうがとっつきやすいかも。
Lua触るの初めてでしたが、読みやすくて、なかなかよかったです。
奥付みてみたら、2008年1月3日初版第一刷発行とか書いてあってワラタ
0669デフォルトの名無しさん
2007/12/24(月) 11:47:05実際の発売日よりも1ヶ月くらい未来の日付になっているのでしょうか?
ttp://q.hatena.ne.jp/1153656810
0670デフォルトの名無しさん
2007/12/25(火) 00:55:20第一部が基本文法。標準ライブラリとか。さくっと読める
第二部がアルゴリズム実装しながらその他機能。結構いろいろ詰まってる。
第三部がC言語との連携その他。
入門ならこの厚さがちょうど手頃でいいかも。
0671デフォルトの名無しさん
2007/12/25(火) 01:17:43実際に使い出して結構経つ俺には、どのぐらい役に立つのかなぁ。
0672デフォルトの名無しさん
2007/12/25(火) 05:18:46第三部ってどの程度ページある?
ここがある程度詳しく書かれているなら買ってみてもいいかなあ
0673デフォルトの名無しさん
2007/12/25(火) 13:28:19第三部の内訳
第9章 Luaを拡張してみる - 13
第10章 Luaのモダンな機能 - 15
第11章 C言語との連携 - 13
第12章 Luaの組込み - 10
0674デフォルトの名無しさん
2007/12/25(火) 14:21:04詳しい情報さんきゅ
帰ったら注文するわ
0675デフォルトの名無しさん
2007/12/31(月) 01:59:290676デフォルトの名無しさん
2007/12/31(月) 02:29:49というより見られなくなってたのはほんの短期間だった
floatのスペルミスはどうにかならないかなあ
0677デフォルトの名無しさん
2007/12/31(月) 02:33:56分からんから、見たかった人は今のうちに見ておくのが良いかと。
0678デフォルトの名無しさん
2007/12/31(月) 02:40:16保存しとこう。
0679デフォルトの名無しさん
2007/12/31(月) 07:40:09でもac.jpですから、今のうちということですな
0680デフォルトの名無しさん
2007/12/31(月) 15:23:23かなり長い間見れなかったような気がするんだが。
まあどっちだっていいんだけど。
0681デフォルトの名無しさん
2008/01/01(火) 00:52:150682デフォルトの名無しさん
2008/01/02(水) 02:20:120683デフォルトの名無しさん
2008/01/02(水) 02:40:09今年も、組み込み言語が流行るといいな!
0684デフォルトの名無しさん
2008/01/09(水) 20:52:060685デフォルトの名無しさん
2008/01/10(木) 09:07:06>test.cpp:
>Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
>Error: 外部シンボル '_luaL_newstate' が未解決(D:\P\BORLANDC\TEST.OBJ が参照)
>Error: 外部シンボル '_luaL_loadfile' が未解決(D:\P\BORLANDC\TEST.OBJ が参照)
>(以下略)
こんな感じでリンクできないんですがどうしたらいいですか。
パスは通ってると思うんです。lua 5.1.2です。
0686デフォルトの名無しさん
2008/01/10(木) 10:45:48勘だけどextern "C" かな。src/lua.hの代わりにetc/lua.hppを使ってみるとか。
0687685
2008/01/10(木) 16:12:220688デフォルトの名無しさん
2008/01/10(木) 21:31:190689685
2008/01/10(木) 21:46:05extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
main(){
double z;
lua_State *L = lua_open();
lua_dofile(L, "add.lua");
}
0690685
2008/01/10(木) 21:47:080691デフォルトの名無しさん
2008/01/10(木) 21:49:42VCでコンパイルされたライブラリをリンクするときに良くある問題。
詳しくはぐぐればわかると思う。細かいことは忘れた。
0692デフォルトの名無しさん
2008/01/10(木) 22:00:540693デフォルトの名無しさん
2008/01/10(木) 22:09:060694デフォルトの名無しさん
2008/01/10(木) 22:28:070695デフォルトの名無しさん
2008/01/10(木) 22:39:24lua_dofileでぐぐれば代替コードが見つかる。
0696デフォルトの名無しさん
2008/01/10(木) 22:46:010697685
2008/01/11(金) 01:32:18普段はbccでは簡単なものしか作ってないしライブラリやリンク設定は自信ないですが。
ヘルプ見て作業フォルダにbcc32.cfg,ilink.cfgを作り
-L"libraryパス";"パス"
-I"includeパス"
などとやりました。頭をわざと--Lとやったら
>エラー E2075: コンフィグレーションファイル中の オプションの間違い : --LD:\〜略
とエラーになるので読んでるとは思うんですが。
685ではもう5個くらいlua_関数があって全部おなじようなエラーです。
lua_dofileはぐぐりました。
685にあるようにヘッダ読んで_luaL_loadfileまではいくようです。
lua_openも_luaL_newstateに置き換わってる。
バイナリエディタでLuaLib.libをのぞくと2つとも文字列は見つかるようです。
そこからは俺の実力ではどうにも。
691でしょか。
0698685
2008/01/11(金) 01:35:45すんません
0699デフォルトの名無しさん
2008/01/11(金) 03:24:270700デフォルトの名無しさん
2008/01/11(金) 05:23:440701デフォルトの名無しさん
2008/01/11(金) 06:57:05そりゃ無理にきまっとる
0702デフォルトの名無しさん
2008/01/11(金) 07:41:100703デフォルトの名無しさん
2008/01/11(金) 08:17:26D:\lua-5.1.2\src>rename luac.c luac.c_
D:\lua-5.1.2\src>bcc32 -I. -D_isatty=isatty *.c
(略)
D:\lua-5.1.2\src>rename *.exe lua.exe
D:\lua-5.1.2\src>lua
Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
>
0704685
2008/01/11(金) 09:01:590705デフォルトの名無しさん
2008/01/12(土) 13:59:52--xxx.lua
require "xxx"
module("xxx",package.seeall)
function xxx_func()
table.insert(......
--xxx/table.lua
require "xxx"
module("xxx.table",package.seeall)
xxx_func()
--main.lua
require "xxx.table"
を実行するとxxx.luaのtable.insertがnilになってる。理由はxxx.table
のモジュールで"insert"を探しに行ってしまっている為。
問題はxxx.luaだけで使うと問題が起きずxxx/table.lua経由で
使用すると問題が起きるという事だけど、この問題の本質って
なんだろう?xxx.”table” 見たいな標準ライブラリと同じ名前の
モジュールを作成したこと?
0706デフォルトの名無しさん
2008/01/12(土) 16:19:01moduleはxxx.luaの環境を自身のモジュールのテーブルに変更する(この場合_G.xxx)。
つまりtable.insertはxxx.table.insertになる。
moduleにpackage.seeallを指定するとxxx.tableが存在しなかった場合に_G.tableを見に行くようになる。
回避策としてはtable.insertを_G.table.insertにすればいいと思うよ。
めんどくさかったらxxx.luaの先頭で
local table=table
それはそうと、そのコードだと外からxxx_funcを使いたい時にxxx.xxx_funcって書く必要があって不便じゃないか?
0707705
2008/01/12(土) 16:43:02>local table=table
まさにそれをやってとりあえず回避してます。
ただそうなると後からの拡張に備えるならばxxxで呼び出している
_Gの全てのメンバに対してそれをやらないと安全でない事に。
そうなるとpackage.seeallの役割って・・・。
0708デフォルトの名無しさん
2008/01/13(日) 00:27:18ただの手抜き道具。
安全云々なら
local _G = _G
module("xxx")
でオシマーイ。
0709デフォルトの名無しさん
2008/01/14(月) 10:57:54今は仕方なくグローバルに置いてるのですが。
0710デフォルトの名無しさん
2008/01/14(月) 13:40:53Lua だとこんな。
> f = (function ()
local v = 0
return function ()
v = v + 1
return v
end
end)()
> print(v)
nil
> print(f())
1
> print(f())
2
> print(f())
3
> print(v)
nil
0711デフォルトの名無しさん
2008/01/14(月) 14:19:30ttp://muffin.cias.osakafu-u.ac.jp/~matumoto/cgi-bin/xt.cgi?prog/squirrel_lang
ここに静的変数について説明があるけど、これじゃ駄目なのか?
0712デフォルトの名無しさん
2008/01/14(月) 15:47:49>>710
真似てみて以下のようなコードを書きましたが、
実行時しても、111が出力されました。
function func()
{
v <- 0;
return function() {
return ++v;
}();
}
print(func());
print(func());
print(func());
>>711
クラスのメンバ変数でしか使えなく、さらに書き換えが無理なので、使い勝手が悪そうです。
0713デフォルトの名無しさん
2008/01/14(月) 16:12:55{ local v = 0; function count() { return ++v; }}
こんな感じのことがしたいのかな。Luaなら
do local v = 0; function count() v = v + 1; return v; end; end
0714デフォルトの名無しさん
2008/01/14(月) 16:14:01インスタンスを作成すると、そのクラスのスロットの追加変更が効かなくなるってのは
仕様として分かるんだが、静的メンバまで変更不可になるのはどうにかしてしてほしい。
0715デフォルトの名無しさん
2008/01/14(月) 16:19:38vの初期化がfunc呼出し毎に毎回起こってないかな。
外側のfunctionを適用した結果のreturn function...のfunctionがfuncの値になるんよ。
0716デフォルトの名無しさん
2008/01/14(月) 16:24:310717709
2008/01/14(月) 16:31:53以下のように書き直してみたところうまく動きました。
local v = 0; では駄目で v <- 0; にする必要があるみたいです。
動作原理がいまいちわかっていないので詳しく追ってみます。
local f = (function() {
v <- 0;
return function() {return ++v;}
})();
print(f());
print(f());
print(f());
0718デフォルトの名無しさん
2008/01/14(月) 17:16:55それグローバル変数 v が確保されてるだけだよ
>>710 の例ぽいことは squirrel なら generator つかえば簡単にできるけど、
それはあくまで「その中に閉じた変数」であって、全体で共有される static 変数じゃない。
用途的にstatic なら、名前に気をつけつつグローバルにおくしかないはず。
0719デフォルトの名無しさん
2008/01/14(月) 18:07:210720デフォルトの名無しさん
2008/01/14(月) 18:11:450721デフォルトの名無しさん
2008/01/14(月) 18:58:14ノベルはある?
0722デフォルトの名無しさん
2008/01/14(月) 19:07:550723709
2008/01/14(月) 19:08:23> それグローバル変数 v が確保されてるだけだよ
<- はlocalをつけずに初期化するためだけのものだと思ってました。
もっと勉強しないと駄目ですね。
0724デフォルトの名無しさん
2008/01/14(月) 19:32:29そりゃ、Cぐらいにしかないからだろ。
あれば使うよ。
0725デフォルトの名無しさん
2008/01/14(月) 21:28:01> 同人ゲーム?
> ノベルはある?
あるはずなのは知ってるんだが具体名は知らなかったり...
0726デフォルトの名無しさん
2008/01/14(月) 21:30:38> 関数内の静的変数なんて、C言語使いしか使わん
オブジェクト指向言語のインスタンス変数は多用されるわけだが
0727デフォルトの名無しさん
2008/01/14(月) 21:53:52そうだよ。
何がいいたいの?
0728デフォルトの名無しさん
2008/01/14(月) 22:00:27Squirrelとなると皆無な余寒
0729デフォルトの名無しさん
2008/01/14(月) 22:00:42↑↓
あるメソッドとメンバがあってメンバ変数名がメソッドが属するオブジェクトにローカルである
こう?
0730デフォルトの名無しさん
2008/01/14(月) 22:13:550731デフォルトの名無しさん
2008/01/14(月) 22:24:46ありがとう。
0732デフォルトの名無しさん
2008/01/15(火) 12:17:55Alcotの「フェアチャイルド」方面にSquirrelの予感
使ってるのかどうか確信が持てないのだけどね
0733デフォルトの名無しさん
2008/01/15(火) 12:57:10>>616みたいなバグがまだどんだけ潜んでるか分からないし
0734デフォルトの名無しさん
2008/01/15(火) 13:35:040735デフォルトの名無しさん
2008/01/15(火) 13:39:150736685
2008/01/16(水) 12:52:20ぐぐってmakefileが見つかったけどうまくいかないんで、
tlib lua.lib /C +lapi.obj,lua.lst
tlib lua.lib /C +lauxlib.obj ,lua.lst
tlib lua.lib /C +lbaselib.obj ,lua.lst
(略)
と、luaのsrcすべての.objからmylua.lib作ったんですが、
>ilink32 c0x32.obj cw32.lib import32.lib mylua.lib test.obj
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_luaO_log2' が未解決(...\MYLUA.LIB|ltable が参照)
Error: 外部シンボル '_luaO_nilobject_' が未解決(...\MYLUA.LIB|ltm が参照)
(以下同様)
仕方ないのでgrepしてluaO_がlobject.hに見つかったので(あとturboFloatエラーも検索して)
>ilink32 c0x32.obj lobject.obj test.obj cw32.lib import32.lib mylua.lib
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
>c0x32.exe
8.000000desu
add.luaで3+5、とりあえずは出来ました。ライブラリの作り方おかしいでしょか。
0737デフォルトの名無しさん
2008/01/19(土) 15:31:29ざっと見たところ出来ることとしては
・プロトコル解析処理の追加
・解析結果を利用したカスタムパケットフィルタリング
・統計情報の収集等。
などが出来そうですが、サンプルとか情報少ない・・・。
使ってる人います?
0738デフォルトの名無しさん
2008/01/19(土) 15:32:350739デフォルトの名無しさん
2008/01/19(土) 16:01:560740デフォルトの名無しさん
2008/01/20(日) 15:13:20プロトコル解析につかってるよ。
特にバイナリフォーマットのパケットだと解析できた方が便利だよ〜。
0741737
2008/01/21(月) 00:03:16Dissectorの機能を使用してですか?
wiresharkのリファレンスみただけではどうも
全体像がいまいち分かりにくいです。
どっか纏まったサイトあります?
0742デフォルトの名無しさん
2008/01/21(月) 19:44:31その方面だと思うんだけど
商業作にはまだと確認しました
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/trunk/kirikiri2/src/plugins/win32/squirrel
プラギンはあるんですねー
アドベンチャー系だとコルーチンの使いでがあるところがあるか微妙ですが
0743デフォルトの名無しさん
2008/01/21(月) 19:48:090744デフォルトの名無しさん
2008/01/21(月) 21:51:02LuaならLuaでシナリオをいわばハードコードするの?
0745デフォルトの名無しさん
2008/01/21(月) 21:53:590746740
2008/01/22(火) 21:48:29dissector使ってますよ。
http://wiki.wireshark.org/Lua
↑を参考にして、あとは試行錯誤の繰り返しですね・・・
0748デフォルトの名無しさん
2008/01/23(水) 22:35:01DSL見ててmurglaLuaが良いと思ったんですが、
ほかにお勧めのものありますか?
0749デフォルトの名無しさん
2008/01/23(水) 22:36:340750デフォルトの名無しさん
2008/01/24(木) 00:11:030751デフォルトの名無しさん
2008/01/24(木) 00:11:43lua_qtとLua-Gtkだ
0752デフォルトの名無しさん
2008/01/24(木) 00:15:580753748
2008/01/25(金) 00:12:41参考にしてみる。ちょっとサイズでかいけど。
0754デフォルトの名無しさん
2008/01/25(金) 01:07:070755748
2008/01/25(金) 22:30:19現状、なぜかエラーがでて、Lua-gtkが使えてないが、
結構期待が持てる。でもドキュメント類が少ない。。。
まあ、サンプルコード見る限りわかりやすそうではあるが、発展途上って感じもする。
murgaLuaはFLTKベースで、ちょっと癖はあるがGUIBuilderにfuluidとか使える。
あと、検索すると使ってる人結構いるのな。これも結構簡単そう。
lua-qtはqtのない環境なので見てません。
wxPythonはサイズ的に却下。Luaとは桁が違う。
0756デフォルトの名無しさん
2008/01/25(金) 23:11:340757デフォルトの名無しさん
2008/01/26(土) 00:39:270758デフォルトの名無しさん
2008/01/26(土) 00:39:46どんなエラー?
Lua-Gtkのドキュメントは全然無いけど、GTK自体のドキュメントは豊富だからそっちを参考にしたほうが良い。
PyGTKやRuby/GTKのドキュメントが読みやすいと思う。
0759デフォルトの名無しさん
2008/01/28(月) 20:05:56lua: error loading module 'gtk' from file './gtk.so':
./gtk.so: undefined symbol: gtk_builder_new
0760デフォルトの名無しさん
2008/02/03(日) 17:33:52マニュアルの一番上にも書いていますが、内容を
http://wikiwiki.jp/lua/?FrontPage に移そうかと思っています。
他によい場所などありますか?
0761デフォルトの名無しさん
2008/02/03(日) 20:14:59いつもお世話になってます
大学を卒業なされて日本語マニュアル置けなくなったんですか?
自分としては見られればどこでもいいです
0762デフォルトの名無しさん
2008/02/04(月) 13:23:47おお、おつかれさんです。
そちらでよいかと思われます。
0763デフォルトの名無しさん
2008/02/04(月) 13:26:41LLスレが軒並み荒れてるのにここが荒れてなくてw 実感した
0764デフォルトの名無しさん
2008/02/04(月) 14:35:40http://ja.wikipedia.org/wiki/%E8%BB%BD%E9%87%8F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
>ここでいう「軽さ」はプログラマの負担の軽重を指し、実行速度やメモリ消費量に優れているという意味ではない。
知らなかった・・・
0765デフォルトの名無しさん
2008/02/04(月) 14:40:240766デフォルトの名無しさん
2008/02/04(月) 15:46:310767デフォルトの名無しさん
2008/02/04(月) 15:49:12まあWikipediaが絶対というわけじゃないしな。
あとLuaのページに
>LuaはライブラリとしてC言語を実装している。
って書いてあったんで晒しsage
俺が消してきます
0768デフォルトの名無しさん
2008/02/04(月) 16:18:51We use the term "lightweight languages" to describe some of the common features of these new languages.
The term "lightweight" refers not to actual functionality, but to the idea that these languages are easy to acquire, learn, and use.
Examples that would fall into this category include Perl, Python, Ruby, Scheme (and scsh), and Curl.
http://ll1.ai.mit.edu/cfp.html
http://ll1.ai.mit.edu/
0769デフォルトの名無しさん
2008/02/04(月) 16:59:21確かに全く逆.というか,日本語版は英語版を否定する内容になってるな.
まぁ日本語のLL界隈は変なの沢山湧いてるしな.
0770デフォルトの名無しさん
2008/02/04(月) 17:29:540771デフォルトの名無しさん
2008/02/04(月) 18:14:110772デフォルトの名無しさん
2008/02/04(月) 18:33:500773デフォルトの名無しさん
2008/02/04(月) 18:34:46専用スレ
0774デフォルトの名無しさん
2008/02/04(月) 23:33:45LuaのJIT対応版だって
LuaJIT ? a Just-In-Time Compiler for Lua.
The LuaJIT Project
http://luajit.org/
0775デフォルトの名無しさん
2008/02/05(火) 07:54:330776デフォルトの名無しさん
2008/02/05(火) 08:27:390777デフォルトの名無しさん
2008/02/05(火) 11:15:08各種ライブラリ紹介スレ2
http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/
スレチっぽいのでやってないがあっちにもこっち貼った方がいいのかな。
0778デフォルトの名無しさん
2008/02/05(火) 22:01:50Luaはそのままで十分に速いからウンコな文法でも許されてるんだろうに
0779デフォルトの名無しさん
2008/02/05(火) 23:04:540780デフォルトの名無しさん
2008/02/06(水) 10:03:320781デフォルトの名無しさん
2008/02/06(水) 10:35:49組み込む系の用途がメインの言語と処理系のスレ、ってことで
いいと思う。
0782デフォルトの名無しさん
2008/02/07(木) 07:41:190783デフォルトの名無しさん
2008/02/07(木) 20:15:57http://luaforge.net/projects/lua-tcc/
0784デフォルトの名無しさん
2008/02/08(金) 01:06:33つうか、tccならC内でもcを実行できるだろ。
0785デフォルトの名無しさん
2008/02/08(金) 18:36:35Io Language
http://pc11.2ch.net/test/read.cgi/tech/1201100624/
0786デフォルトの名無しさん
2008/02/08(金) 18:46:070787デフォルトの名無しさん
2008/02/08(金) 19:05:020788デフォルトの名無しさん
2008/02/08(金) 19:15:080789デフォルトの名無しさん
2008/02/08(金) 20:45:540790デフォルトの名無しさん
2008/02/09(土) 01:29:48ただ、実際に組み込んで使っている人いるのかな・・・
組み込みサンプルやドキュメントが少なすぎてなんつーか('A`)
0791デフォルトの名無しさん
2008/02/10(日) 20:35:17http://park7.wakwak.com/~blackbox/
0792デフォルトの名無しさん
2008/02/10(日) 21:19:53超乙
つか、ニコニコ技術部 の人か?w
応援しとるよ
0793デフォルトの名無しさん
2008/02/10(日) 21:24:35スレちですが、せっかくなので Netinstaller 対応しませんか?
0794791
2008/02/10(日) 23:04:440795デフォルトの名無しさん
2008/02/18(月) 06:45:340796デフォルトの名無しさん
2008/02/18(月) 07:55:090797デフォルトの名無しさん
2008/02/18(月) 11:31:46sq.exeを動かす環境がビッグエンディアンじゃないと、
バイトコードがそのまま実行できない
まあ、当たり前なんだが、みんなどうやって解決してるの?
0798デフォルトの名無しさん
2008/02/18(月) 23:18:36それってWi○?
0799デフォルトの名無しさん
2008/02/18(月) 23:24:29それぞれ一つの関数を使っていたりするから
(sqstd_writeとか?もう一つ上の関数だったかも。うろ覚え)
そういうところでまとめてスワップさせてるな、俺は。
んでコード改変したものをコンバート用のツールとして使うと。
0800797
2008/02/19(火) 12:28:23まあ、あえて何かは言わないけど、
今の据え置きってリトルエンディアンの方が少なくね?
>>799
やっぱ、それしかないのね
なんかうまい方法があればなーと、思ったんですが、
楽はできないですね
ありがとうです
0801デフォルトの名無しさん
2008/02/19(火) 17:03:33だったらエンディアン変換くらい対応しといてくれと思ったりするよね
あと読み込みとか書き込みのところでfopenとか使うの止めて欲しい。
あらかじめファイル読み込んだバッファを渡すとかいう風にすればどんな環境でも対応できるのに・・・
0802デフォルトの名無しさん
2008/02/19(火) 17:41:07エンディアン変換は同意なんだが、後者は普通にそうなってるだろう
sq_compile, sq_compilebuffer, sq_readclosure, sq_writeclosure と全部抽象化されてるぞ?
sqstdlib では fopen つかってるけど、これは実装用のライブラリだし、あと、
直接つかってるわけではなくて、1段階抽象化してあるんで、sqstdio.cpp のあたまの
関数いくつか書きなすだけだから、どちらかというと親切な部類にはいると思う。
0803デフォルトの名無しさん
2008/02/20(水) 12:44:02EclipseにLuaEclipse入れて動作させて見たところ
ConsoleViewに
<terminated> test.lua [Lua Standalone Application] hogehoge\lua5.1.exe test.lua
と出てしまいます。手打ちで
>hogehoge\lua5.1.exe test.lua
としたときはちゃんと結果が表示されたのですが
EclipseのConsoleViewに結果を表示させるには
何かおまじないが必要なのでしょうか?
0804デフォルトの名無しさん
2008/02/21(木) 21:12:13http://pc11.2ch.net/test/read.cgi/dtm/1194648279/216
0805デフォルトの名無しさん
2008/02/22(金) 07:17:150806デフォルトの名無しさん
2008/02/22(金) 16:29:420807デフォルトの名無しさん
2008/02/22(金) 16:30:290808デフォルトの名無しさん
2008/02/23(土) 20:47:20http://www.watch.impress.co.jp/game/docs/20080223/gdc_home.htm
0809デフォルトの名無しさん
2008/02/23(土) 22:57:40Luaハジマタ\('o`)/
0810デフォルトの名無しさん
2008/02/23(土) 23:06:410811797
2008/02/23(土) 23:20:59やっつけのパッチ当てたけど、需要ある?
0812デフォルトの名無しさん
2008/02/24(日) 01:48:06というか本家にフィードバックしようぜ
0813デフォルトの名無しさん
2008/02/24(日) 03:09:28うぉ、日本メーカーでLua使用って公開したところはほとんど記憶にないから、
結構インパクトあるねぇ
そういや今GDCの季節かぁ
0814デフォルトの名無しさん
2008/02/24(日) 08:58:560815デフォルトの名無しさん
2008/02/24(日) 12:30:51改変したソースも公開してくれよ
0816767
2008/02/24(日) 14:51:34WikiのSquirrelのページに添付させてもらいました。
SQ_BIGENDIANを定義しておくと、出力が強制的にBEになるです。
やっつけなので、これを基に、ちゃんとした対応をしてくれると嬉しいなあ。
ちなみに、出力したバイトコードが、ビッグエンディアンな環境で動作することは確認済み。
でも、SQ64と_UNICODEは知らん。
_UNICODEはこれからやるかも。
最後に、スレ住人&Wikiの管理人さんアリガトー(゚∀゚)
0818デフォルトの名無しさん
2008/02/24(日) 17:24:11>Squirrelについては、「メモリの消費量は増してしまうが、それだけの価値がある」という白石氏。
>プログラムの7割はSquirrelを使用しているという。
ですって。
0819デフォルトの名無しさん
2008/02/24(日) 17:28:30つかこのスレに書いてる人いそうだなw
0820デフォルトの名無しさん
2008/02/24(日) 19:22:53スクエニが使っているという情報はでかい
Squirrelを採用する企業もこれからかなり増えるんじゃないか
いい感じ
0821デフォルトの名無しさん
2008/02/24(日) 20:17:18開発効率に対する姿勢が比較的アメリカ型なスクエニがこういう方法をとったことは不思議ではない。
C/C++(&内製の半端なスクリプト言語)一辺倒から離れられないプログラマや企業はいよいよ
ついていけなくなるかもね。
0822デフォルトの名無しさん
2008/02/24(日) 20:26:54基本的にスクリプト言語の方が習得難度が低いからね。
まぁその歴史的なしがらみが大きな障壁になるのかもしれないけどさ。
1言語しか扱えないニセグラマとか猿スクリプタとか。
0823デフォルトの名無しさん
2008/02/24(日) 20:40:34プロでそんな人はいなさそう
むしろ、メモリの動的確保が信じられないとか、そっちの方が使わない理由だろう
0824デフォルトの名無しさん
2008/02/25(月) 01:33:21オレはそれならSCE派だな。Nintendoは趣味じゃねー。
0825デフォルトの名無しさん
2008/02/25(月) 01:37:01そこまで考えれたらいっぱしのマネージャークラス?
0826デフォルトの名無しさん
2008/02/25(月) 07:39:050827デフォルトの名無しさん
2008/02/25(月) 07:56:22という時代じゃないし
0828デフォルトの名無しさん
2008/02/25(月) 14:24:07別に任天堂本体が使ってる訳じゃあんめえ
スクエニでしょ
0829デフォルトの名無しさん
2008/02/25(月) 15:59:460830デフォルトの名無しさん
2008/02/25(月) 19:35:14DSの開発言語の標準がC++らしいので、Nintendo自体もSquirrelに
まんざらではない可能性も。
0831デフォルトの名無しさん
2008/02/25(月) 21:29:10WiiはともかくDSにSquirrelはない。メモリ的に
0832デフォルトの名無しさん
2008/02/25(月) 21:36:22スクエニつーかリードプログラマの趣味じゃね?>Squirrel
カリカリチューンとかいってもLuaとかSquirrelで全部やろうとしたらそら重いけども。
単なるイベントハンドラとして使うだけならどっちでも大して変わらんでしょ。
LuaPlayerでゲーム作るノリでゲーム中の全オブジェクトの管理・更新をLuaとかSquirrelとかで書いちゃう人って結構多いの?
0833デフォルトの名無しさん
2008/02/25(月) 22:20:35積極的に開発にフィードバックしてくれたら良いけどな
ただ日本企業にそこまで期待できるか実際のところ何ともいえないけど
0834デフォルトの名無しさん
2008/02/25(月) 23:23:490835デフォルトの名無しさん
2008/02/25(月) 23:35:58ちょっと前まで過疎スレだったのに
0836デフォルトの名無しさん
2008/02/25(月) 23:37:430837デフォルトの名無しさん
2008/02/25(月) 23:38:170838デフォルトの名無しさん
2008/02/26(火) 00:21:49うちでも採用検討しようかな
0839デフォルトの名無しさん
2008/02/26(火) 01:34:26>>811さりげなさ過ぎて気付かなかったw
>>616のバグもめでたく正式に修正されたみたいね
-fixed a coroutine bug
0840デフォルトの名無しさん
2008/02/26(火) 21:37:58あと、上のほうでSquirrelでJITみたいな話がありましたが、
ちょっと前にJITをつけたものを公開してます。
速度的にはあまり早くなりませんし、コードも汚いですがよろしければどうぞ。
ttp://muffin.cias.osakafu-u.ac.jp/~matumoto/cgi-bin/xt.cgi?prog/sqjit
0841デフォルトの名無しさん
2008/02/26(火) 22:14:17神乙
きっとスクエニの人もあなたの翻訳は見ているでしょう
0842デフォルトの名無しさん
2008/02/26(火) 23:31:53koukai sitakerya koukai sitemo iiyo
oreha iranai kedo ne
0843デフォルトの名無しさん
2008/02/27(水) 15:54:40ちょwwww
SquirrelJITってwすげえw
速くならないのは残念ですね。いま時はVM実行でもプロセサが速いから吸収しちゃうのかね
0844デフォルトの名無しさん
2008/02/27(水) 21:40:380845デフォルトの名無しさん
2008/02/28(木) 08:20:37>SCEはLua(C)で、NintendoはSquirrel(C++)か。
LuaがC++対応じゃないみたいに見えるからやめれ。
LuaのC++との相性はSquirrelと同程度だろう
0846デフォルトの名無しさん
2008/02/28(木) 12:08:01から、相性が同程度ってのは疑問だなぁ。Lua ってそのあたりなんか最近変わった?
0847デフォルトの名無しさん
2008/02/28(木) 19:12:32ここんとこ、少し解説してくれまいか?
0848デフォルトの名無しさん
2008/02/28(木) 22:08:060849デフォルトの名無しさん
2008/02/28(木) 23:28:01マニュアルの「C言語のAPIからSquirrelの値への強参照の維持」のところ以降を参照
以下使い方の例の一つ:複数のsquirrelのクロージャをC側で保持して任意に呼び分け
前準備
1. スクリプトをコンパイル
2. スタック上のクロージャを、sq_getstackobject でHSQOBJECT として参照保持
3. スタック上のはとりあえず必要ないので sq_pop で解放
4. 必要な分だけこれを繰り返す
使う場合
1. スタックに HSQOBJECT として参照してるクロージャを sq_pushobject で積む
2. sq_call でそのクロージャを呼びだす
LUA でおなじようなことをしようとすると、なにかしら名前をつけてグローバルのテーブルか
レジストリにいれとくとかして、それをいちいちスタック上で取り出すような処理が必要なはず。
squirrel だと、任意のオブジェクトに対する参照をC側でもてるので、
(強参照なので、参照されてる限り消えない)、使うときだけまたスタックに積む、という使い方ができる。
値を set するにはスタック介さないとダメだけど、get だけならAPIで直接ぬくこともできる。
制御の本体を C 側でおこなってる場合でも、この機構があるおかげで、Squirrel 側のオブジェクトの
とりまわしがすごい楽にできる。
sqplus を使うと、このあたり関連の処理が SquirrelObject としてラッピングしてあって、
値の代入から配列/辞書としての操作まで、全部 Cからのメソッド呼び出しで
簡単にできるようになってる。
0850デフォルトの名無しさん
2008/02/29(金) 00:09:18>LUA でおなじようなことをしようとすると、なにかしら名前をつけてグローバルのテーブルか
>レジストリにいれとくとかして、それをいちいちスタック上で取り出すような処理が必要なはず。
ここ以外はLuaと機能の差がないという解釈でOK?
Luaでもちょっとした(数行の)関数かけば解決しちゃうような。
もちろんその手間はかかるけど。
>強参照なので、参照されてる限り消えない
Luaでもレジストリに保存されている限り消えない。
>get だけならAPIで直接ぬくこともできる。
もうちょっと詳しく書いていただけると助かります。
>SquirrelObject としてラッピングしてあって
luabind::objectでも同様にしている。
0851デフォルトの名無しさん
2008/02/29(金) 00:22:140852デフォルトの名無しさん
2008/02/29(金) 00:54:33なんだって! そんな便利なものがあったのかよ!
0853デフォルトの名無しさん
2008/02/29(金) 01:27:20まあラッピングすればねー。
SqurrelObject は例示としてはよくなかったね。
Cの名前空間との関連を管理するコードを自前で書かないと
いけないってのはちょっとうれしくないぁと。
それをしなくて良い分親和性が高いってのは納得いただけるかと。
>getだけなら
sq_objbool とかそのへん
あと、話はそれるけど、言語文法もかねw>C言語との親和性
begin/end がどうしても慣れなかった……
0854デフォルトの名無しさん
2008/02/29(金) 04:54:19スタック操作とか、参照カウンタとか頭こんがらがってくる
C++じゃなかったからtemplate library 使ってないせいもあるんだろうけどさ。
みんなやっぱりその辺のbinding使ってるの?**Plusとかみたいなの
>>849
強参照ってそんなときに使うのか・・・
0855デフォルトの名無しさん
2008/02/29(金) 07:57:010856デフォルトの名無しさん
2008/02/29(金) 12:13:320857デフォルトの名無しさん
2008/02/29(金) 14:34:16うまいこといったつもりか!
0858デフォルトの名無しさん
2008/02/29(金) 15:42:34スタックはややこしいよね……。
テンプレートは使ったり使わなかったりかな。単純な関数呼び出しぐらい
なら、普通に書いたほうがわかりやすいので。
0859デフォルトの名無しさん
2008/02/29(金) 18:37:04結局スタック操作から逃れられなかったなあ。
操作をできるだけ簡略化しようとして変態的になっていく不思議。
スタックの取得とかはこんなん。
lua_Var var = Lua.peek(-1);
↑Luaが扱うオブジェクトなら何でも入る共有体クラス
関数呼び出しはこんなん。
( Lua.global()["object"]["setPosition"] << 1.0 << 12.3 << 0.4 )(3, 0);
0860デフォルトの名無しさん
2008/03/01(土) 00:10:39luaのバージョンも進んでいるうえ、VS2008も販売された今では、
サポート放置されたライブラリには手が出しにくいです。
0861デフォルトの名無しさん
2008/03/01(土) 00:29:400862デフォルトの名無しさん
2008/03/01(土) 00:44:46最小限の関数だけエクスポートして積極的にLua側に
ロジック追い出すように練り直した方が良いと思うけど。
0863デフォルトの名無しさん
2008/03/01(土) 00:46:58http://code.rasterbar.com/luabind/wiki
0864デフォルトの名無しさん
2008/03/01(土) 08:56:590865デフォルトの名無しさん
2008/03/01(土) 09:32:40変態っぽいw
でも関数呼び出し面白い
>>864
スタックは仕組みがわかってても、日常のプログラミングでつかわないから疲れる
で、Squirrelは基本ライブラリですらスタック周りのバグがあったりして、
ソースみながら理解しようとしても信用できずに不安(もちろんパッチなげたけどさ)
0866デフォルトの名無しさん
2008/03/01(土) 09:33:45DMonkeyもスレ違いじゃないよね?
0867デフォルトの名無しさん
2008/03/01(土) 10:09:03<< 1.0 << 12.3 << 0.4ってのは何を渡してるの?(3,0)は関数呼び出しって分かるけど。
>>865
バグについてkwsk
確かにスタック操作は煩雑だよね。特に開放。忘れたらリソース食いつぶすって点で
new-deleteに通じるものがある。
Squirrel使う予定なんだけど、やっぱりスタック操作の理解を深めるためにバインダは
自作したほうがいいかな。
0868デフォルトの名無しさん
2008/03/01(土) 10:22:28情報処理試験の勉強をするのがよいとおもう。
0869デフォルトの名無しさん
2008/03/01(土) 10:43:45> 自作したほうがいいかな。
Squirrel Wikiのバインディングを一通り試してみてからでも遅くはないと思う。
http://wiki.squirrel-lang.org/
どっちにしろ、1から書くには大変だと思うので。
>>867
バグkwsk覚えてない。SqPlusのバグだったかも。
>>867も言うような pop忘れだったと思う。
俺が見た時は、安定版にパッチが取り込まれてなかった。
大分前、去年の話だけどね。
他にも似たようなところがあるかもしれない。
0870デフォルトの名無しさん
2008/03/01(土) 10:48:13まぁ車輪の再発明もいいところだが、バインダ作るよ。できたら公開するぽ
0871デフォルトの名無しさん
2008/03/01(土) 10:51:39>>869
とりあえずSqPlusのソースを読み始めたところ。SqPlusと似たインターフェイスになりそう。
名前空間何にしよう。とりあえずsqbindでいいか。
0873デフォルトの名無しさん
2008/03/01(土) 13:13:31ストリームみたいにしたいなら
gcall<<"object"<<"setPosition"<<arg<<1.0<<3.0<<-2.0<<end;
みたいにマニュピレータつかった方が見やすいと思うけど
0874デフォルトの名無しさん
2008/03/01(土) 14:17:150875859
2008/03/01(土) 14:20:12その辺は考えてなかった。
0876デフォルトの名無しさん
2008/03/01(土) 14:59:38a << 1.0 の戻り値はどんなオブジェクトになっとるの?
a と同じオブジェクトを返しているのですかね。
ということは、メソッドチェーンみたいなのでも可能か・・・
a.push(1.0).push(12.3).push(0.4).call(3, 0)
みたいな
0877デフォルトの名無しさん
2008/03/01(土) 15:59:30SqPlusを読んで勉強中。
SquirrelObjectのコピーコンストラクタだけど、以前保持していたオブジェクトへのハンドル
はsq_releaseしなくて平気なんだろうか。
operator=ではちゃんとsq_releaseしてるし、バグだよなぁ・・・やっぱり。
0878デフォルトの名無しさん
2008/03/01(土) 17:21:12アホス つってきまつ
0879デフォルトの名無しさん
2008/03/02(日) 02:02:22なんでもいいけど一行でcallできるのと
一行でnative closure登録できるようにしとけば
他はほとんどつかわんよ
0880デフォルトの名無しさん
2008/03/02(日) 06:28:46それを人はバインダと呼ぶ
0881デフォルトの名無しさん
2008/03/02(日) 11:54:53ttp://colon.nsf.jp/lua/
MSVC用なんで需要なさそうだけど^^
0882デフォルトの名無しさん
2008/03/02(日) 12:48:58ソースコードのほうはいいけど、test.luaのほうの文字コードがぶっ壊れてるように見えるんですが。
str = "\\5爐!Eェ殉\\}柔檻5\"xさぜ\"ェ殉柔爐さ檻Exぜ!}"
pat = "[^檻]*"
testf( 1, str, pat, "xさぜ\"ェ殉柔爐さ" )
これってテスト用だからわざとだったりします?
でも、SJISじゃないって警告が8箇所出てたりもします。
0883デフォルトの名無しさん
2008/03/02(日) 13:13:04漢字コードの境界部分を多く含むようにしてあるので
フォントによっては表示すらできません
0884デフォルトの名無しさん
2008/03/02(日) 14:01:30GCの負荷を分散するわけだからどうしても重くなるよね。
やっぱLuaかな・・・
0885デフォルトの名無しさん
2008/03/02(日) 14:17:15つ ベンチマーク
って、ゲームとかの組み込みだろうから、単純計算しても参考にならんわな。
実際の簡単なゲームの比較ベンチマークでもあれば、いんだろうけどね。
0886デフォルトの名無しさん
2008/03/02(日) 14:35:37当然参照カウンタ型のデメリットも把握してたはずだが・・・
一般的なLua型にもデメリットはあるが今現在
決定的なアルゴリズムはないのだからとりあえず一般的な型(Lua型)
にしときゃよかったのに。
0887デフォルトの名無しさん
2008/03/02(日) 15:14:03どっかに記事なかったかな。
0888デフォルトの名無しさん
2008/03/02(日) 15:17:210889デフォルトの名無しさん
2008/03/02(日) 15:28:28特にPCは
専用機(コンソール)だと各世代の寿命と段差が大きいが
0890デフォルトの名無しさん
2008/03/02(日) 16:46:14リファレンスカウントを選んだのはちゃんと理由はある。
http://wiki.squirrel-lang.org/default.aspx/SquirrelWiki/LuaComparedToSquirrel.html
俺がSquirrelを使ってる理由はリファレンスカウントだから。理由は>>888。
巨大なリソースを組み込みスクリプト側で扱う設計にしてるなら、リファレンスカウント
のありがたみが分かるはず。
折角GCつき言語採用してるのに、リソース開放のためにdispose()とかダサいよ。
0891デフォルトの名無しさん
2008/03/02(日) 16:55:030892デフォルトの名無しさん
2008/03/02(日) 20:00:03Squirrelバインダ製作中。とりあえずC++からSquirrel呼び出しは、
SquirrelVM vm;
int value = sq_cast<int>( vm.getRootTable()[ "foo" ] );
vm.getRootTable()[ "bar" ] = "BarString";
vm.getRootTable()[ "setPosition" ]( 1.0f, 2.0f );
vm.beginCall( vm.getRootTable[ "setPosition" ] )
.param( 1.0f )
.param( 1.0f )
.endCall();
みたいな感じに。
SquirrelからC++呼び出しが面倒くさい。Sqplusみたいにテンプレートを駆使した
バインダにするか、それともネイティブクロージャを楽に登録できるようにするだけに
するか、悩みどころ。
0893デフォルトの名無しさん
2008/03/03(月) 07:50:12まあ「俺の好みだからほっとけ!」いわれればもうなにもいうことないけど
リファレンスカウント型には毎度のカウンタ操作による負担が重いという弱点があり
そこを嫌われてマイノリティなのは事実だから仕方ないよ。
0894デフォルトの名無しさん
2008/03/03(月) 08:58:58マイノリティか?海外で大人気のPythonは参照カウント&GC式だぞ。Squirrelと同じ。
Pythonのスタックレス版はどっかのネトゲのサーバーに使われてたはず。
>毎度のカウンタ操作による負担が重いという弱点
これそのままメリットなんだよね。マーク&スイープGCは回収している間プログラムが
とまるって事実は忘れちゃいけない。参照カウントはGCのコストをちょっとずつ払って
いるから、止まることは無い。
一般的に嫌われてるってのはただ単に>>893の個人的な感想じゃないか?
両者のメリット・デメリットを把握して運用するのが重要だと思う。
0895デフォルトの名無しさん
2008/03/03(月) 09:44:53PHPとかIoもやね。あとObjective-Cも。
0896デフォルトの名無しさん
2008/03/03(月) 11:17:30ttp://pc11.2ch.net/test/read.cgi/tech/1203611273/182
0897デフォルトの名無しさん
2008/03/03(月) 14:32:21凄くみにくい言い争いに発展してるんだがwww
0898デフォルトの名無しさん
2008/03/03(月) 19:00:16参照カウントにも利点があることが分かったよ。なんとなく。
あと、英語が読めないと開き直ることに、利点がないのも分かった。はっきりと。
0899デフォルトの名無しさん
2008/03/03(月) 20:15:59Squirrelバインダ製作中。ただ、作ってるうちにSqPlusへの理解が深まったせいで、SqPlus
使えばいいんじゃね?みたいな雰囲気に。もうだめぽ
とりあえず
DefineClass< SampleClass >( "SampleClass", vm )
.constructor()
.method( "testFunction", &SampleClass::testFunction )
.method( "testFunction2", &SampleClass::testFunction2 );
のようにバインドできるようにしたけど、これから作りこんでいくかどうか悩んでる。
メンバ関数ポインタの配列をsq_get/settypetagを使って設定してるけど、
使い方間違ってるぽ\(^o^)/オワタ
0900デフォルトの名無しさん
2008/03/04(火) 00:46:02さらに需要ないんだろうなあ
0901881
2008/03/04(火) 00:50:25メール欄に881ってw
0902デフォルトの名無しさん
2008/03/04(火) 07:56:42うーん、この辺が入門としてはお勧めかな。
ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-13308-7
割と大きい図書館ならおいてあるよ。
マーク&すいーぷの欠点はそのとおり。
0903デフォルトの名無しさん
2008/03/04(火) 08:42:52どっちがいいかな?とアンケート。
1.
void foo( cpp_ptr<TestClass> arg )
{
0904デフォルトの名無しさん
2008/03/04(火) 08:45:230905デフォルトの名無しさん
2008/03/04(火) 08:55:511.
void foo( cpp_ptr<TestClass> arg )
{
/*なにか処理*/
}
2.
void foo( TestClass* arg )
{
/*何か処理*/
}
//ヘッダファイルのどこか
SQPP_DECLARE_CLASS( TestClass );
2はSqPlusと同じ方法。1は代替案って感じ。
基本型以外は全部C++のクラスと仮定してエクスポートしてもいいんだけど…
(そうしたらSQPP_DECLARE_CLASSいらない)
0906デフォルトの名無しさん
2008/03/04(火) 13:18:02というか逃げられない(GCしないという選択肢がない)分、有害ですらありうるな。
0907デフォルトの名無しさん
2008/03/04(火) 13:31:54GC一般の話題は専用スレがあります。
過疎スレですからそちらを使って頂けないでしょうか。
Garbage Collection (GC)について語るスレ
http://pc11.2ch.net/test/read.cgi/tech/1141646850/
0908デフォルトの名無しさん
2008/03/04(火) 13:47:301
0909デフォルトの名無しさん
2008/03/04(火) 14:15:57GC使わないようなコード書くなら、組み込み言語使う意味が大幅に薄れるような。
そんな涙ぐましい努力をするくらいなら最初からC/C++で書くよ。
俺も参照カウントが優れた方法だとは思わないが、こと組み込み向けならば
メリットがあると個人的には思うよ。
0910デフォルトの名無しさん
2008/03/05(水) 01:08:52マジックナンバーばっかで何を根拠に調整してんのか
よくわからんしなぁ。
0911デフォルトの名無しさん
2008/03/05(水) 08:12:59うん、だから何度もいってるように「俺の好みだからほっとけ」といわれれば何もいうことはないよ。
「実行速度は遅くてもいい」って人には参照カウント式で十分なわけだから。
それでは十分じゃないって人が多いから議論になるわけで。
0912デフォルトの名無しさん
2008/03/05(水) 08:24:510913デフォルトの名無しさん
2008/03/05(水) 11:43:390914デフォルトの名無しさん
2008/03/05(水) 16:16:32dクス
でも結局一般的な型以外は全部C++のオブジェ
クトと仮定することにしたよ。SqPlusがこの方式
を採用してない理由はなにか問題があるんだろうか…
実際運用してみないと分からないか。
>>911
リファレンスカウント&マークスイープGCのハイブ
リット型って言うほど実行速度遅いの?
今妄想してる組み込み向け言語ではリファレンスカ
ウント採用しようかと思ってるんだが(´Д`;)
Flashでゲーム作ったことあるんだけど、GCで止まる
のは心臓に悪かった。それとBitmapDataが必要なく
なったら明示的に破棄しないといけないのがGC言語
なのになんでさ?って思った。
って経験からリファレンスカウント式を採用しようと
思ったわけなんだが…
>>912
一般GCじゃなくて組み込み言語のGCの話題だし
ここでいいんでない
0915デフォルトの名無しさん
2008/03/05(水) 18:30:46明らかにGC一般の話だろ。
0916デフォルトの名無しさん
2008/03/05(水) 20:00:370917デフォルトの名無しさん
2008/03/05(水) 20:54:49って話にすりかえるのがまずいんですよ。
ダメといわれた言語使ってる人が不愉快でしょ。
組込み向け言語全般で共有してるスレなんだから、
各言語の優劣とかの議論に結びつく話は自重する方向で行こうよ。
0918デフォルトの名無しさん
2008/03/05(水) 20:59:070919デフォルトの名無しさん
2008/03/05(水) 23:31:21カラーリングだけなら他のエディタでもできるし
0920デフォルトの名無しさん
2008/03/06(木) 08:26:41一回実行させた後にスタック弄って値与えるとか?
初期値与える物と与えない物がある、ついでに変数名は変わるんで
引数として値を与える以外の方法でお願い
具体的に言うとRigidChipsのLUAの挙動を再現したい
0921デフォルトの名無しさん
2008/03/06(木) 11:40:46Squirrel内にあるデータ構造をC++に渡すには
どのような方法がございますか?
0922デフォルトの名無しさん
2008/03/06(木) 16:05:00なんか納得いかない。
class abc {
v = 0;
};
local a = abc();
local b = abc();
a.v = 1;
b.v = 2;
a = b;
b.v = 3;
print("a = "+ a.v + "\n");
で出力
a = 3
0923デフォルトの名無しさん
2008/03/06(木) 16:37:260924デフォルトの名無しさん
2008/03/06(木) 17:29:59レスありがとうございます。
なるほど、そうするとホスト側でメタメソッドとかで下手にいじらないほうがよさそうですねぇ。
0925デフォルトの名無しさん
2008/03/06(木) 18:20:45意味がわからないな。たとえば始めにbarに5をセットしても
プログラム内部にbar=0と書いてあればそこでクリアされてしまう
"初期値を設定"と"挙動を再現"とは絶対無関係でしょ
挙動を再現するならゲームでいうセーブロードの処理を自分で
組み込んで、必要ならセーブデータ改変するとかじゃないか
0926デフォルトの名無しさん
2008/03/06(木) 19:53:21RigidChips用のスクリプトがこんな感じ(LUAの言語仕様おかしいかもしれないが気にしないでくれ)
val{
a (max=10,min=-10,default=0)
}
lua{
if _key(0)==1 begin a=a+1 end
if _key(1)==1 begin a=a-1 end
}
って感じなんだが
aの初期値を与えてないと値なくてエラー起きるってのをどうにかしたい
(プログラムでvalの部分一度解析させてLUAのファイルに落とし込み実行して
グローバル変数として宣言させるとかだろうか?
0927デフォルトの名無しさん
2008/03/06(木) 20:32:35何が分からなくて、何がしたいのかさっぱりわからない。
0928デフォルトの名無しさん
2008/03/06(木) 20:44:49したいこと 初期値を与えたい
初期値であって引数じゃないのが問題
初期値はvalって部分で与えられてる
luaのプログラムは別に用意されてる(luaの中で変数宣言しない事もあるのでそのまま実行するとnilだ言われる)
0929デフォルトの名無しさん
2008/03/06(木) 21:25:38から実行すればいい話なんじゃねーの。
0930デフォルトの名無しさん
2008/03/06(木) 21:32:490931デフォルトの名無しさん
2008/03/06(木) 21:39:31それにRigid Chipsの ページ覗いたらlua内で用いる場合は
すべて大文字にするって書いてあるけどなんでAじゃないんだ?
0932デフォルトの名無しさん
2008/03/06(木) 21:48:58うろ覚えのまま、雰囲気だけ伝えようとガーっと書いてったもんで
大文字ってのも言われて思い出したぐらいでした
グローバルテーブルにてきとーに値の詰む方法調べてるんですが…
コンパイルとdofileだけしかまだ理解出来てないんで難しい…
とりあえず一歩前進した気がします。ありがとうございます。
0933デフォルトの名無しさん
2008/03/06(木) 22:03:17RigidChips を例に出すから余計に混乱した。殆ど関係なかったな。
既に言われてるように、スクリプトを実行する前に、
変数に初期値を代入しておけばいいだけのことだよ。
まぁがんばれ。
0934デフォルトの名無しさん
2008/03/06(木) 22:17:43最初にa=0って書けばいいのがわからなかったのか
それでも_key()がないっエラーでるだろうから頑張れ
0935デフォルトの名無しさん
2008/03/06(木) 22:27:50>最初にa=0って書けばいい
これkwsk。グローバルに詰むのを簡単に実現できるって事ですか?
_key()はCの関数を呼ぶ方法とか、そこらへんでやってる人がいるのでそれ参考にしてどうにかなりそうです
0936デフォルトの名無しさん
2008/03/06(木) 22:30:39ようは未初期化の変数触っててヤバイって話なのかな。
0937デフォルトの名無しさん
2008/03/06(木) 22:32:39もう少し…もう少しでRigidChipsのモデルを現実に引っ張り出せる…
0938デフォルトの名無しさん
2008/03/06(木) 23:02:25lua.exeでdofile("hoge.lua")したらaがnil だってエラーでたなら
hoge.luaの始めのあたりにa=0とでも書いとけっていってる
あまりに初歩的すぐるから次からもっと勉強してからおいでってこと
0939デフォルトの名無しさん
2008/03/06(木) 23:39:28(非常に稀に呼ばれるLUA内のサブルーチンでnilがあった時にエラーが出るはずがいきなりリセットが掛かりそのまま最初から?)
変数維持したままプログラムの再loadとかも出来るんでしょうか?
とりあえずリファレンスのテーブルとスタックの辺り読んだ感じだと
valで初期値が与えられている変数全部にlua_pushnumberとlua_setglobal適用してやれば良い気がしてるんですが…
0940デフォルトの名無しさん
2008/03/07(金) 00:06:130941デフォルトの名無しさん
2008/03/07(金) 00:18:51言われた通りにやった方が楽ではないかという心理で
とりあえず原因不明のエラー\(^o^)/今日はもう寝て明日続きやってみます
0942デフォルトの名無しさん
2008/03/07(金) 02:00:22Val {
Handle(default=0,min=-20,max=20,step=5)
}
Key {
2:Handle(step=-0.5) //キー2(初期値←)が押されてる間handle-0.5
3:Handle(step=0.5) //キー3(初期値→)が押されてる間handle+0.5
}
こんなのが出てくるんだけど、これはいったいどうなってるんだろう?
Keyはテーブルではなさそうだし、luaではキーワード付き引数は使えないはず。
RigidChipsの内部で解析されてるんだろうか。
0943デフォルトの名無しさん
2008/03/07(金) 04:06:47lua{}ブロック内以外は、Luaとは無関係。
内部で解析されてる、で合ってる。
0944デフォルトの名無しさん
2008/03/07(金) 08:54:420945デフォルトの名無しさん
2008/03/07(金) 09:20:150946デフォルトの名無しさん
2008/03/07(金) 10:13:180947デフォルトの名無しさん
2008/03/07(金) 12:07:020948デフォルトの名無しさん
2008/03/07(金) 12:22:41に一票。
0949デフォルトの名無しさん
2008/03/07(金) 12:56:350950デフォルトの名無しさん
2008/03/07(金) 13:11:27統合いらなくね?
【Lua】組み込み言語【squirrel】
0951デフォルトの名無しさん
2008/03/07(金) 13:17:54あと細かいがSquirrelのSは大文字で
0952デフォルトの名無しさん
2008/03/07(金) 14:20:01【Lua】組み込み言語総合【Squirrel】
に一票で。
0953デフォルトの名無しさん
2008/03/07(金) 14:56:14に一票
0954デフォルトの名無しさん
2008/03/07(金) 15:43:15wikiあるんだからリンクあんま要らんかも。長いけど、まあ参考にして貰えれば。
Squirrelの話題も増えてたし、Luaじゃなくて組み込み全体のスレにするっていうのは可決でいいよね?
↓↓↓
LuaやSquirrelなど、組み込み用途で使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/
その他参考URLは>>2
■過去スレ
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/ (前スレ)
その2 http://pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
■関連してるかもしれないスレ
【Perl,PHP】LLバトルロワイヤル【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1188997302/
Io Language
http://pc11.2ch.net/test/read.cgi/tech/1201100624/
Garbage Collection (GC)について語るスレ
http://pc11.2ch.net/test/read.cgi/tech/1141646850/
各種ライブラリ紹介スレ2(ゲ制作)
http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/
0955デフォルトの名無しさん
2008/03/07(金) 15:43:37■Lua
ttp://www.lua.org/ (本家)
ttp://lua-users.org/ (lua-users)
ttp://luaforge.net/ (LuaForge)
ttp://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html(5.1マニュアル和訳)
■Squirrel
ttp://www.squirrel-lang.org/ (本家)
ttp://sourceforge.net/projects/squirrel/
ttp://sourceforge.net/projects/sqplus/ (SqPlus)
ttp://sourceforge.net/projects/squirrelsh/ (Squirrel Shell)
ttp://wikiwiki.jp/lua/?Squirrel_Lang%2Ftoc(wiki内2.1マニュアル和訳)
■他、前スレに載ってた言語
The Pawn language(だれも使ってなさそうな、組み込み言語)
ttp://www.compuphase.com/pawn/pawn.htm
NullLogic Embedded Scripting Language
ttp://sourceforge.net/projects/nesla/
Xtal(ゲーム向け。スタックを意識しなくていい?)
ttp://d.hatena.ne.jp/xtalco/
ttp://code.google.com/p/xtal-language/
ttp://blog.livedoor.jp/dankogai/archives/50836939.html
0956デフォルトの名無しさん
2008/03/07(金) 16:32:40【Lua】組み込み言語総合【Squirrel】
に一票
0957デフォルトの名無しさん
2008/03/07(金) 17:19:25リンクは同じものを省略した。まあ参考程度に。
>954の文章の方がすっきりしてていいな。
あと関連スレのLLとGCはなくてもいいんじゃね。
--
プログラム言語の処理系をアプリケーションに組み込む話と
それに適した言語についてのスレです。話題の中心はLuaと
Squirrelですが他の言語もこの趣旨に沿う範囲でOK。
関連スレ
2 part forth
http://pc11.2ch.net/test/read.cgi/tech/1073673931/
●●●●TCL/TKなら俺に聞け 2●●●●
http://pc11.2ch.net/test/read.cgi/tech/1177998764/
ECMAScript デス 3
http://pc11.2ch.net/test/read.cgi/tech/1190160481/
「コンパイラ・スクリプトエンジン」相談室12
http://pc11.2ch.net/test/read.cgi/tech/1188688416/
参考URL
Lua言語の紹介
http://staff.aist.go.jp/yutaka.ueno/lua/docsjp.html
入門Luaプログラミング
http://www.amazon.co.jp/dp/4797342722/
0958デフォルトの名無しさん
2008/03/07(金) 19:06:480959デフォルトの名無しさん
2008/03/07(金) 20:17:18ここは?目的別が初級者向けな気がするけど
0960デフォルトの名無しさん
2008/03/07(金) 22:56:100961デフォルトの名無しさん
2008/03/08(土) 08:37:38に一票
0962デフォルトの名無しさん
2008/03/08(土) 09:37:35http://pc11.2ch.net/test/read.cgi/tech/1141646850/
0963デフォルトの名無しさん
2008/03/08(土) 11:29:360964962
2008/03/08(土) 20:28:560965デフォルトの名無しさん
2008/03/08(土) 23:20:20>957は要らないと書いているので要るという意見がでるのは重要。
ところで>954と>957は微妙に意味は違うが>954でまとまるのかな。
954ならアプリケーションの言葉を入れて欲しい。
↓↓↓
LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
0966デフォルトの名無しさん
2008/03/08(土) 23:31:140967デフォルトの名無しさん
2008/03/09(日) 01:07:36> 使われるプログラミング言語についてのスレッドです
よいと思います
0968デフォルトの名無しさん
2008/03/09(日) 06:43:360969デフォルトの名無しさん
2008/03/10(月) 05:02:23CVSのでーたってかんたんによみこめるの?
0970デフォルトの名無しさん
2008/03/10(月) 06:14:45うん、簡単。
checkoutでリポジトリから読み込んで手元にコピーができるよ。
0971デフォルトの名無しさん
2008/03/10(月) 11:07:510972デフォルトの名無しさん
2008/03/10(月) 14:29:170973デフォルトの名無しさん
2008/03/10(月) 19:30:29ファイル入力って書いてあるじゃん。
0974デフォルトの名無しさん
2008/03/10(月) 19:44:33でーたってかんたんって書いてあるじゃん。
0975デフォルトの名無しさん
2008/03/10(月) 21:53:21答えてる方は意地が悪いな
0976デフォルトの名無しさん
2008/03/10(月) 22:12:27お前が教えてあげればいいだけなのにな
0977デフォルトの名無しさん
2008/03/10(月) 22:48:410978デフォルトの名無しさん
2008/03/10(月) 22:53:55俺たちはその回答を待っててやればいいのさ
0979デフォルトの名無しさん
2008/03/10(月) 23:42:530980デフォルトの名無しさん
2008/03/10(月) 23:44:54糞だな。
0981デフォルトの名無しさん
2008/03/10(月) 23:48:590982デフォルトの名無しさん
2008/03/11(火) 00:25:050983デフォルトの名無しさん
2008/03/11(火) 01:05:350984デフォルトの名無しさん
2008/03/11(火) 08:01:48エクセルでもつかえよ
0985デフォルトの名無しさん
2008/03/11(火) 13:07:09【Lua】組み込み系言語総合【Squirrel】
http://pc11.2ch.net/test/read.cgi/tech/1205208141/
0986デフォルトの名無しさん
2008/03/11(火) 16:07:020987デフォルトの名無しさん
2008/03/11(火) 17:14:070988デフォルトの名無しさん
2008/03/11(火) 17:46:510989デフォルトの名無しさん
2008/03/11(火) 20:23:190990デフォルトの名無しさん
2008/03/11(火) 20:38:07CSVファイル専用の関数が標準であるわけではないので、
「関数一つで簡単に解析できる」という意味ならたしかに簡単じゃない。
ただ正規表現は標準であるし、難易度はsquirrelやxtalなんかの他のスクリプト言語と変わらんぞ。
>>983
もともと組み込みや設定ファイル用に作られた言語なので、標準出力は当然ライブラリ扱い。
これはバイナリサイズを小さく保つことに貢献しているともいえるな。
0991デフォルトの名無しさん
2008/03/11(火) 21:14:13煽りに冷静に返すその姿に萌え
0992デフォルトの名無しさん
2008/03/11(火) 21:32:04俺も萌えた
0993デフォルトの名無しさん
2008/03/11(火) 21:35:520994デフォルトの名無しさん
2008/03/11(火) 23:21:56..local ls={}
..local ti=table.insert
..for l in io.lines(f) do
....local function sep(l)
....local ws={}
....for w in l:gmatch"([^,]*),?" do ti(ws,w) end
....return ws end
....ti(ls,sep(l))
..end
return ls end
0995デフォルトの名無しさん
2008/03/11(火) 23:24:110996デフォルトの名無しさん
2008/03/11(火) 23:36:26Excelの出力したcsvで数値以外のが混じってる場合だと問題起きそう。
"とか改行の入った文字列とかで。
0997デフォルトの名無しさん
2008/03/12(水) 01:15:340998デフォルトの名無しさん
2008/03/12(水) 01:17:31/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/
/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0999デフォルトの名無しさん
2008/03/12(水) 01:17:54,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、
'r ´ ヽ、ン、
_,'==─- -─==', i__
/::::::i イ iゝ、イ人レ/_ルヽイ i |:::::::/
/:::::::::レリイi (ヒ_] ヒ_ン ).| .|、i .||:::::/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
__ _____ ______
,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、
'r ´ ヽ、ン、
,'==─- -─==', i
i イ iゝ、イ人レ/_ルヽイ i |
_レリイi (ヒ_] ヒ_ン ).| .|、i .||__
/:::::::::!Y!"" ,___, "" 「 !ノ i |:::::::/
/::::::::::::(L.',. ヽ _ン L」 ノ| .|::::/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
1000デフォルトの名無しさん
2008/03/12(水) 01:18:16,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、
'r ´ ヽ、ン、
_人人人人人人人人人人人人_ ,'==─- -─==', i
> ゆっくりしていってね!!!< i イ iゝ、イ人レ/_ルヽイ i |
 ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄ レリイi (ヒ_] ヒ_ン ).| .|、i .||
_!Y!"" ,___, "" 「 !ノ i | __
/::::: (L.',. ヽ _ン L」 ノ| .|:::::::/
/:::::::: | ||ヽ、 ,イ| ||イ| /::::::::/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。