トップページtech
1001コメント318KB

【Lua】組み込み系言語総合【Squirrel】

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2008/03/11(火) 13:02:21
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
0951デフォルトの名無しさん2009/05/06(水) 23:46:11
単なる先祖返りなわけないだろ

ちゃんと計算されてる。アングルとか
0952デフォルトの名無しさん2009/05/07(木) 00:47:42
最近、Squirrelはポロポロと新しいバインダが出回るな。
0953デフォルトの名無しさん2009/05/07(木) 01:49:18
>>952
そうなん?みてみたいからポインタよろ
0954デフォルトの名無しさん2009/05/07(木) 02:11:32
>>953
事件は2ちゃんねるで起こってるんじゃない。公式フォーラムで起こってるんだ!
0955デフォルトの名無しさん2009/05/07(木) 03:14:51
ttp://squirrel-lang.org/forums/thread/3198.aspx

これか。コードが整理されてて sqplus よりはるかにわかりやすいですな
getter/setter の実装がちょっとトリッキーなのが要注意なかんじ。
0956デフォルトの名無しさん2009/05/07(木) 03:17:58
ttp://squirrel-lang.org/forums/thread/3129.aspx

すぐ下にもう一つあった^^; なるほどぽろぽろだな
0957デフォルトの名無しさん2009/05/09(土) 23:57:59
scratイイ!luaから乗り換えようかな
0958デフォルトの名無しさん2009/05/10(日) 09:14:24

           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
0959デフォルトの名無しさん2009/05/20(水) 12:32:10
lua_tointeger の unsgined int バージョンが欲しいんだけど、
strtoul(lua_tostring(L, -1), NULL, 0) みたいにするしかないの?
0960デフォルトの名無しさん2009/05/20(水) 12:36:11
(unsigned int)lua_tonumber(L,-1) じゃだめなん?
0961デフォルトの名無しさん2009/05/20(水) 17:20:34
C/C++とバインドするときの話なら別の論となるが、
スクリプト上のプログラミングならunsigned整数など考えないで済むコードを書いた方が楽だぞ。
0962デフォルトの名無しさん2009/05/20(水) 21:01:47
色コードが書いてあるテキストファイルを読み込みたいんだけど、
"0xAARRGGBB" の形式で書いてあるから lua_tointeger だと読めないんだよね

そうか lua_tonumber は double だから 32ビット符号なしでもちゃんと変換できるのかな?
試してみます
09639622009/05/20(水) 21:34:17
テキストファイルというか lua でかいた設定ファイルという感じね
0964デフォルトの名無しさん2009/05/21(木) 07:26:38
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

0965デフォルトの名無しさん2009/05/21(木) 07:42:45
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Luaまピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0966デフォルトの名無しさん2009/05/21(木) 13:39:45
Luaのコメントが//か#だったら最高だったんだが...
-- だと構文ハイライトされないエディタで見たときにコードに埋もれてよく見えん。
0967デフォルトの名無しさん2009/05/21(木) 14:21:38
そういう人は squirrel にうつると精神衛生的には楽になるよ!
0968デフォルトの名無しさん2009/05/21(木) 15:29:42
Luaの向上心のなさは最低レベルだから
宗教論争の火種になりそうな「改良」は、いくら提案してもむだだと思う。
0969デフォルトの名無しさん2009/05/21(木) 22:07:43
-- は伝統的な構文だからもっと賢いエディタを使えばよろし
0970デフォルトの名無しさん2009/05/21(木) 23:01:14
>>968
向上心のなさ、というか後方互換性が最大限に考慮されている気がする。
だから、商用プロダクトにも安心して採用できるんだろうけど。

最近、web周りでRubyとかRailsとかも使っているんだが
バージョン上がると全然違う挙動とか、書き方換わったりするのがザラだったりするんだが、これが結構キツイ
書籍が出ても、すぐ陳腐化しちゃったり…書籍の日本語訳が出たころには、次のかなり変わったバージョンがなんて
(Ruby 1.8はいいんだけど、Railsは本当にヒドイw
しかも次期バージョンで他のフレームワークと統合されるのが決定しててちょオマ…)
0971デフォルトの名無しさん2009/05/21(木) 23:49:52
//でコメントか。
AngelScriptの出番だな!
0972デフォルトの名無しさん2009/05/21(木) 23:57:55
いやさ、エディタにあわせてライブラリ諸々変更なんて
誰も本気で言わないから
0973デフォルトの名無しさん2009/05/22(金) 00:29:20
つーかそんな程度もカスタマイズできないエディタを持っていることと
そんな程度も我慢できない根性でLuaを選んだ自分の浅はかさを呪うがいい
0974デフォルトの名無しさん2009/05/22(金) 09:56:26
我慢しないで、カスタマイズができる「普通の」テキストエディタを使ってください
0975デフォルトの名無しさん2009/05/22(金) 12:52:22
自分は普通にエディタ使うけど、客が使ってくれるとは限らないじゃない。
メモ帳で開けないから、設定ファイルの拡張子は xml じゃなくて txt にしてくれと言われたのに。
0976デフォルトの名無しさん2009/05/22(金) 12:58:22
メモ帳で開くような設定ファイルを XML にする時点で仕様バグといってもいい。まじで。
0977デフォルトの名無しさん2009/05/22(金) 13:02:46
それは拡張子xmlをメモ帳に関連付けるだけで良かったんじゃないか
0978デフォルトの名無しさん2009/05/22(金) 13:33:11
細かく設定したいから、可能な限り設定項目多くしてくれといわれたので、
ini形式よりもxmlのほうが楽だったんだよね。

メモ帳に関連付けるだけで終わりだし、そもそもxmlエディタいれればそれで終わりなのに。
0979デフォルトの名無しさん2009/05/22(金) 14:35:22
xmlなんかは1行目に文字コードセットが定義されているから、
下手にメモ帳で開いて保存すると、文字コード変わっちゃうしメンドクサイことになりますよね
あと、xmlはMSからエディタ出てるけど微妙に使いづらいのが難点

個人的に、スクリプト言語で使うオススメの設定フォーマットはJSONだと思う
0980デフォルトの名無しさん2009/05/22(金) 14:37:08
素人さんにさわらせる場合は CSV 以上のものは使っちゃダメだってのが経験則
0981デフォルトの名無しさん2009/05/22(金) 14:41:20
>>980
同感ですな
xmlは素人には無理
フォーマット決めうちなtxtか、ini程度でokな気がする
0982デフォルトの名無しさん2009/05/22(金) 16:29:30
質問。
C からlua の関数を呼ぶ -> 呼ばれた関数は、lua 内の別の関数 A そのものを返す -> C 側でそれを保持して、必要なときに A を呼びだす

てことをやりたいんだけど、どうすればいいですか?
lua の関数オブジェクトやみたいなのをスタックから取得する関数が見当たらないのですが。

lua_getglobal(L, "getfunc");
lua_call(L, 0, 1);
myfunc = スタック[-1]からlua関数を取得

... しばらくたってから ...

myfunc をスタックにpush
lua_call(...)

ということがやりたいです。

0983デフォルトの名無しさん2009/05/22(金) 17:09:08
>>982
Lua はオブジェクトを直接C側で参照する機構を持たない。よって単純には出来ない。

一般的には luaL_ref を使ってオブジェクトのリファレンス(絶対重ならないint値)をとって、
それをつかってレジストリテーブルにつっこんでおいて、必要になったらそのリファレンスを
つかってレジストリテーブルから引っ張り出してくる、という手法がとられる。

そんなややこしいのはいやじゃって人は、リファレンスを C側で保持できる squirrel オススメ
0984デフォルトの名無しさん2009/05/22(金) 17:58:18
いまのプロジェクトにはC縛りがあるのでC++なsqurrelはダメなんです。
luaL_ref が一番素直そうなのでそれでやってみます。どうもありがとう。
0985デフォルトの名無しさん2009/05/23(土) 00:58:12
SquirrelってC++だっけ?
bindは確かにC++だが、直叩きだったらCの範疇でいけたような・・・
0986デフォルトの名無しさん2009/05/23(土) 01:07:48
squirrel のソース自体は c++ だよ。
class でなくて struct なのは趣味かね。

ただ、インターフェース的には全部C合わせなので、普通にリンクして使える。
例外とかも全く使ってないから問題になるところはどこにもない。
プロジェクトが C縛りってのがいまどきだと意味不明だねぇ
0987デフォルトの名無しさん2009/05/23(土) 08:11:35
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

0988デフォルトの名無しさん2009/05/23(土) 09:07:00
テーブルAのメソッドBを引数Cで呼んで戻り値D, Eを得たいんだけど、

// スタック初期化
lua_settop(L, 0)
// A::Bをpush
lua_getglobal(L, "A")
lua_pushstring(L, "B")
lua_gettable(L, -2)
// 暗黙の引数selfをpush
lua_getglobal(L, "A")
//引数Cをpush
lua_getglobal(L, "C")
//実行
lua_call(L, 2, 2)
//luaで return d, e された戻り値を受け取る
D = lua_tointeger(L, 1)
E = lua_tointeger(L, 2)

てやると、D,Eにluaで返した値が入らないんだけど、どうしてですか???

0989デフォルトの名無しさん2009/05/23(土) 09:35:28
最初に lua_getglobal(L, "A") したときのAがスタックに残ってる。
lua_gettable(L, -2) の後に lua_remove(L,-2) を入れるか、
その後の lua_getglobal(L, "A") を消せばいいと思うよ
0990デフォルトの名無しさん2009/05/23(土) 11:43:43
>>989 後者の方法だと self が消えない?
0991デフォルトの名無しさん2009/05/23(土) 22:44:35
>>986
C++がぜんぜんわからないってのがいまだに上にいたりするからな…
自分がそういう上司に当たって死にかけてからもうずいぶんになるが、
いまだにそういう人はちょくちょく見かける。
0992デフォルトの名無しさん2009/05/23(土) 22:52:55
CとC#しか仕事で使ってません
てかつかえません
サーセン
0993デフォルトの名無しさん2009/05/24(日) 03:45:08
>>984
Cオンリーなら、
// 一行コメント
も使っちゃダメなんだろうな、大変だな。
0994デフォルトの名無しさん2009/05/24(日) 04:28:06
C99
0995デフォルトの名無しさん2009/05/24(日) 04:37:28
C++ダメなプロジェクトが、C99を(ry
0996デフォルトの名無しさん2009/05/24(日) 05:00:50
MSVCがC99に準拠することは今後も無いんだろうな
//は使えるけど
0997デフォルトの名無しさん2009/05/24(日) 11:00:21
うめ
0998デフォルトの名無しさん2009/05/24(日) 11:29:17
次スレ立ってないのに埋めんなw
テンプレに、大きな変更ないよね?
0999デフォルトの名無しさん2009/05/24(日) 21:29:00
1000デフォルトの名無しさん2009/05/24(日) 21:29:53
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。