- 1 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 09:11:41 ]
- LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■前スレ 【Lua】組み込み系言語総合【Squirrel】 pc12.2ch.net/test/read.cgi/tech/1205208141/ ■過去スレ その3 pc11.2ch.net/test/read.cgi/tech/1160799232/ その2 pc8.2ch.net/test/read.cgi/tech/1063711237/ その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html
- 283 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 03:54:02 ]
- そいや、Ioって言語はどうよ?
シンプル、軽量というのが売りらしいが。
- 284 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 09:02:18 ]
- >>282
lua_newthreadで作成したコルーチンはlua_closeしちゃ駄目だよ。 開放はGCにまかせる。>>121あたりから同じ様な質問出てるから見てみ。
- 285 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 09:33:44 ]
- >>284
指摘ありがとうございます つまりスタックに積まれたコルーチンのスレッドを lua_popで削除すればいいのですか でもそれだとGCまかせでスグにコルーチン破棄はされないので >>282のを //コルーチンを実行するのスレッド(ステート)を作る lua_State *L = luaL_newstate(); lua_State *T = lua_newthread(L); //C側からコルーチンの操作 //ステートを閉じる lua_close(L); とすれば閉じるのはコルーチンのステートではないものの lua_newthread は元のステートのオブジェクトを共有するみたいなので コルーチンで確保されたメモリも同時に解放されますよね?
- 286 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:07:08 ]
- >コルーチンで確保されたメモリも同時に解放されますよね?
まぁ、そらそうだが。 任意開放ならlua_gcじゃ駄目な理由でもあるの?
- 287 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:29:55 ]
- 駄目な理由はないのだけど
GCという目に見えない物に頼るより 自分で明確的に管理したくて
- 288 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:37:32 ]
- つまりC#くそくらえってことですね
- 289 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:43:50 ]
- (#^ω^)
- 290 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:14:07 ]
- (C#^ω^)
- 291 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:22:19 ]
- (Ruby#^ω^)
- 292 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:27:18 ]
- >>287
Luaでは文字列もテーブルも関数もuserdataもGCで管理されてる訳だが、そういうのも自分で管理したいの?
- 293 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:31:28 ]
- >>292
そこまではこだわってないです それらはスクリプトに自分で定義しないと生成されないから ある程度は管理出来るので
- 294 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:54:51 ]
- >>285
元のステートごと閉じてたら、そのコストがでかすぎて全然うれしくないと思われ。 GCいやな人は lua 使うな、が精神的には正しい。squirrel にしときなされ。
- 295 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:06:48 ]
- >>283
遅い 検索しづらい
- 296 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:07:49 ]
- >>283
言語としては面白いよ 組み込みも簡単に出来るし でもWinの開発環境を整えるの面倒
- 297 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:26:45 ]
- ネットでの検索しやすいのさは大切だよね
iPhone 3G S もジョブスが発表後に iPhone 3GS に改名させたそうだ
- 298 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:28:16 ]
- > ネットでの検索しやすいのさは大切だよね
「ネットでの検索のしやすさ」の間違いです… 自分でワロタ
- 299 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:37:33 ]
- >>294
>元のステートごと閉じてたら、そのコストがでかすぎて 具体的にkwsk
- 300 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 13:09:55 ]
- >>299
や、普通にグローバルな関数や変数も全部毎回順次解放&登録しなおすハメになるじゃん そういったコストを下げるために共有させる仕組みなのに本末転倒だろう それぞれのスレッドが完全独立で頻繁に起動するものでもないのなら止めはしない。
- 301 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 13:17:45 ]
- >>285を見る限りコルーチンを実行し終わった時に
不要になったのを解放するのだから問題ないでしょ
- 302 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 14:09:07 ]
- 実際にはluaL_openlibsが必要だからコストが大きいよ
擬似コードにはいちいち書かないだろうけど 擬似コードを書くとどうしても、目に見えない物に頼りがちだよね
- 303 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 16:00:28 ]
- ちょっと前にLuaで乱数を作っていたものだけど
今度は重複しない乱数を表示させたいと思っている。 でも何度やってもできない。。。 ヒントだけでも教えてください
- 304 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 16:05:01 ]
- そもそも重複しないものは乱数とは言わない。もはや lua とは関係ない話なので手頃なアルゴリズム系の質問スレに移るのをオススメする
ヒント:シャッフル
- 305 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 16:19:02 ]
- >>304
レスありがとう ということは、最初に規定量の数値を指定しておいてそれをシャッフルすればいいってことか! ありがとう。
- 306 名前:デフォルトの名無しさん [2009/10/18(日) 16:59:56 ]
- 個人情報が流出しても、ニュー速民は困る人いないよね?
tsushima.2ch.net/test/read.cgi/news/1255851428/
- 307 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:54:16 ]
- (C#^ω^)
- 308 名前:デフォルトの名無しさん [2009/10/23(金) 14:27:21 ]
- 以下のようなプログラムで
クリティカルセクションの所有権を放棄し それぞれのスレッド、スクリプトの実行を 安全に終了させるにはどうしたらいいでしょうか? -- test.lua while true do foo() end -- test2.lua while true do foo() end -- main.cpp void thread1(){ ・・・ if(luaL_dofile(L,"test.lua")){ ・・・ } void thread2(){ ・・・ if(luaL_dofile(L,"test2.lua")){ ・・・ } int foo(luaState* L){ EnterCriticalSection(&CriticalSection); // 少し重めの処理 LeaveCriticalSection(&CriticalSection); }
- 309 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 00:21:40 ]
- 1つ1つのLuaステートをLua_yield使って個別に動かすのはダメなの?
- 310 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 00:42:33 ]
- あれ もしかしてAngelScriptって結構良いんじゃね?
名前が可愛いからちょっと舐めてたわ
- 311 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 00:51:08 ]
- >>310
できたら、どの辺りが気に入ったか詳しく
- 312 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 06:30:35 ]
- ついでに、このスレに常駐しているAngelScript信者の方にお聞きしたいのだが、
LuaやSquirrelと比べて優れている点は何がありまんすか?
- 313 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 06:39:49 ]
- //
/ / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ AngelScript!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
- 314 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 07:09:44 ]
- AngelScriptの@がよくわからん。
オブジェクトの参照なのか? Hoge@ hoge; みたいなの。 C++みたいに、インスタンス入れる変数と参照がわかれているのか?(C++詳しくないからなんtねいったらいいかわからん) LLなのに面倒な言語だな… 全部、デフォで参照でいいと思うんだが
- 315 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:38:48 ]
- >>314
スクリプト言語の癖に静的型付言語だからなぁ。 それって本当に意味あるのか? って思ってしまう。 Booとかも触ってみてその動作速度は認めるけど、スクリプトの記述が面倒に感じる。
- 316 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:28:09 ]
- ActionScript3.0 もいちおうスクリプト言語だけど、静的型付言語。
まぁ、インタプリタじゃないけどね。
- 317 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:43:43 ]
- >>312
・文法がC++まんまなので書きやすい ・C++との連携が簡単 ・クラスとかほぼそのまま使える ・const〜やenumなど、定数定義が可能 ・#includeも可能 こんなところか? >>314 その例だと、「Hogeクラスの参照型」って扱いになる。 C++のHoge &という記述に近い。
- 318 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:41:08 ]
- スクリプトを自分で改造して使いたいんですが、ライセンスが緩くて
ソースが読みやすく短い組み込みライブラリのお勧めを教えてもらえませんか? 今のところLuaが最有力候補だと思ってます。
- 319 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:10:08 ]
- Squirrelがソース短いんじゃなかったっけ。読みやすさは知らんが。
- 320 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 05:11:42 ]
- >>319
実質としてはそんなに悪いコードではないが、しかし決して良いコードではない。 そして、SqPlusは絶対に読むな。頭が痛くなること請け合い。 それはそうと、Xtalのコードは大変いいと思うぞ。 言語自体の仕様は首を傾げたくなるところがあるが。
- 321 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 08:12:58 ]
- \ l´⌒\⌒\ \\ \
\ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
- 322 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 17:53:23 ]
- >>320
Xtalのコードは俺の頭じゃ解析不可能だからLua読んでます。
- 323 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 18:55:12 ]
- SqPlus使おうと思ったらもう全然更新してないのか
いったいどれにすれバインダ
- 324 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 20:22:51 ]
- そもそもSquirrel自体全然盛り上がってないというか終わってるというか
始まる前に終わっちゃったよ的な
- 325 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 20:29:35 ]
- Lua 5.2まだー
- 326 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:01:57 ]
- >>323
SqPlusはダメすぎる、忘れましょう、使ってる人はたぶんいません squirrelのバインダは自分で使い易いように自分で書いた方が1024倍マシよ
- 327 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:15:15 ]
- そこでバインダとか無くても全然問題のないAngelScriptの出番だな
- 328 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:36:22 ]
- >>326
ごめん、動いてるものはさわるな原則にのっとって使い続けてる^^; 一部手はいれてあるけど。 時間あったら新しいバインダにしたいんだけどなかなか……
- 329 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:08:08 ]
- スクエニのゲームはSqPlus使ってるって
cedecのスライドに書いてあったよね。
- 330 名前:318 mailto:sage [2009/10/26(月) 01:03:53 ]
- SquirrelとXtal読んでみます。
ありがとうございました。
- 331 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 02:05:58 ]
- こうなったらLuaとSquirrelとAngelScriptの合わせ技でいくか
- 332 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:10:36 ]
- angelscript初めて知った。いいなこれ!!
スタックゴニョゴニョしなくていいからコード読みやすいし なによりデフォルトでメモリ上から「のみ」スクリプトコードをロードできるってのがイイ! ゲーム開発だと裸のままスクリプトファイルが置いてあることなんてないからね。。。 モジュールのロードとかもオブジェクト指向で非常に素直に書けるぽいし さっそくLuaを破棄して組み込んでみよう
- 333 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:25:29 ]
- AngelScript つかう場合は、これ C++ だけでよくね?という思考に陥らないように注意な
- 334 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:01:05 ]
- まんまC++なのがメリットでありデメリットでもある
- 335 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:39:28 ]
- >>AngelScript つかう場合は、これ C++ だけでよくね?という思考に陥らないように注意な
前使おうとして陥った ちょっと聞きたいんだが、AngelScriptを使っている人や使わなくなった人(他の言語に移った人)は なんで使っている、使わなくなった? C++そのままというか継承に制限があるのが大きくてSquirrelに移ろうと思ってるんだけど、 他の人はどう思ってるのか気になる アプリ実行時にちょこちょこ書き直したり、コンパイル/リンク時間の省略とかスクリプト自体の メリットは分かるんだが…
- 336 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 21:10:20 ]
- コルーチン
- 337 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:17:06 ]
- コルーチン
- 338 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:21:46 ]
- チンコール
- 339 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 08:20:18 ]
- ∩_
〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
- 340 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 09:35:24 ]
- >>335
C++との連携が簡単、C++クラスをほぼそのままで使える、複数のコンテキスト(LuaStateに相当?)を同時に処理させるのも簡単、 定数定義や列挙型も使える、といった点が便利なんで使ってる。 特にC++との連携はLuaやSquirrelより簡単だし、マニュアルもサンプルも英語だけどわかりやすい。
- 341 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 18:19:47 ]
- コルーチン
- 342 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 00:13:00 ]
- AngelScriptに乗り換えようかな
細かいとこがc++と違和感無くて簡単だわ
- 343 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 04:00:43 ]
- そこで敢えてPawnという選択肢も
- 344 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 04:39:16 ]
- コルーチ
- 345 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 13:47:14 ]
- AngelScript と Luaって
メモリ消費や処理速度はどれほど違う?
- 346 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 14:09:25 ]
- /ヽ /ヽ
':' ゙''" `':, ミ ・ω・ ;, :; . っ ,つLua! `:; ,;' `( /'"`∪
- 347 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 14:17:51 ]
- Pawnつえーな、使い勝手とか全然知らないけど
ttp://codeplea.com/game-scripting-languages
- 348 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 14:48:51 ]
- これ見るとリス使いの俺涙目だわ
- 349 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:50:27 ]
- ・メモリ消費低
・静的型付 ・スレッドセーフ ・スタック操作なし(またはLuaより容易) で選ぶとしたら やっぱりAngelScriptがいいのかな〜
- 350 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:51:52 ]
- おなじくリス使いの俺涙目(笑)
まあ、リスはわかりやすいからいいんだよ!とか言ってみる。 でも Pawn の性能は魅力だな。とりあえず組み込みテストして みてよさそうなら、静的スクリプト言語としての併用もかんがえてみよう
- 351 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:53:37 ]
- まあなんとかとかんとかはトレードオフってやつだな
- 352 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 18:03:22 ]
- Pawnはスクリプト内で日本語文字列を扱わなくてもいいならいいかも
- 353 名前:デフォルトの名無しさん [2009/10/28(水) 18:17:32 ]
- リスのバグ発見。
setdebughookを仕掛けた状態で_callメタメソッドをコールすると死ぬ。(SQVMでぬるぽ発生) ちなみにdebughook関数の中身を空にしても同様です。 公式フォーラムの垢を紛失してしまったので誰か報告たのむ squirrel-lang.org/forums/7/ShowForum.aspx function debughook(event_type, sourcefile, line, funcname) { local fname = funcname ? funcname : "unknown"; local srcfile = sourcefile ? sourcefile : "unknown"; ::print(::format("%s:%d: [DEBUGHOOK:%c] %s\n", srcfile, line, event_type, fname)); } ::setdebughook(debughook); class FOO { function test() { ::print("FOO::test()\n"); } function _call(orig_this) { ::print("FOO::_call()\n"); } }; local foo = FOO(); foo.test(); ::setdebughook(null); foo(); ::setdebughook(debughook); foo(); // Segmentation fault (core dumped)
- 354 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 18:39:16 ]
- >>353
すんまそ、環境を書いてなかった。 Squirrel 2.2.3 stable VisualC++, cygwin, Linux, 何れでも発生。 Squirrel 3はまだ試していません。
- 355 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 12:22:06 ]
- Pawn Language Guide っていうドキュメントみてみたけど、無名関数がつくれないっぽいね。
だとするとクロージャが作れないから、ちょっと不便かな。 状態遷移とかの記述に特化しているようだし、UnrealScript に似ているかも。
- 356 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 17:27:53 ]
- 347のリンク先見て思ったが、GameMonkeyが何気に性能いいな。
- 357 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 20:25:50 ]
- >>353
拙い英語ですが報告しておきました。 temp_regがメタメソッドコール前にhookで使われるのが一因っぽいです。
- 358 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 04:54:40 ]
- Squirrel フォーラムに代理の報告をしてもらえるなら、 sq_mem.cpp をはじめ
メモリ確保失敗についてまったく考慮してないのを修正してくれ、と頼んでみて もらえまいか? 組み込み言語としてリソースの乏しい環境で使うことを考えれば、メモリ確保が 失敗しないなどという前提で組まれるとツライものがある。
- 359 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 04:56:12 ]
- s/sq_mem/sqmem/
- 360 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 04:57:50 ]
- なんで自分で報告しないのん?
- 361 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 05:00:20 ]
- 残念ながら英語で会話ができる自信がない。
リファレンスマニュアルを読む程度ならなんとかなるんだけど。
- 362 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 05:20:40 ]
- パッチ作って送れば英語できなくてもだいじょぶじゃないかな。
here is a patch for memory allocation error とか一文だけ書いとけば通じると思う。
- 363 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 05:42:29 ]
- うーん。問題はコード全体に散らばってるんで、まずは全体的な方針をはっきり
決めてからじゃないとマズイ感じ。 sq_malloc や sq_realloc がいくつかのマクロを通して間接的に使われてるんだけど、 どれも呼び出し元で NULL が返ってくることが考慮されてない。 典型的なのは配列伸ばすのに p = SQ_REALLOC(p,oldsize,newsize) してるところ。 NULL 返したら元の領域がリークするうえに後続のコードでは確保成功したものとして 余裕でアクセスしてくる。 最初は、C++だからsqmem.cppの関数から例外投げろってことかと思ったんだけど、 呼び出し側で例外の発生も考慮されてないからまた別の理由でリークするし。
- 364 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 10:21:32 ]
- AngelScriptでマルチバイト文字列を使おうとする場合の不具合も報告したほうがよさそうなんだけどなぁ…
- 365 名前:353 mailto:sage [2009/10/30(金) 14:26:46 ]
- >>357
ありがとう!!
- 366 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 17:39:48 ]
- >>364
なんか不具合あるの? AngelScript試してみようと思ってるんで気になる UTF8扱いたいんだ
- 367 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 17:48:06 ]
- >>366
ライブラリをビルドする際にプリプロセッサでAS_DOUBLEBYTE_CHARSETを定義するんだけど、 それやるとビルドでエラーが出ちゃう。 しかもマルチバイト文字かシングルバイト文字かを判定するやり方もマズい。 最新版出るたびに毎回そこ修正してるよ。
- 368 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 19:04:19 ]
- それは本家に報告してあげればみんな幸せに
- 369 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 23:19:35 ]
- >>367
ソース弄ってみるよ
- 370 名前:デフォルトの名無しさん [2009/10/31(土) 00:09:14 ]
- >>221
それ新しい版では修正されてたと思った。
- 371 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 10:39:11 ]
- AngelScriptでUTF8を使う場合、ソースの修正なくても、
asIScriptEngine *lpEngine=asCreateScriptEngine(ANGELSCRIPT_VERSION); lpEngine->SetEngineProperty(asEP_SCRIPT_SCANNER, 1); みたいな感じでエンジンの設定すれば大丈夫だったと思う。
- 372 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 23:04:23 ]
- あら、ありがと
- 373 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 06:54:37 ]
- AngelScript2.17.2で試してみた
UTF8はデフォルトでサポートしてるっぽく読めたんでDLしたまんまビルド static const char* scriptString = "void hellow()" "{" " Print( \"hellow world\" );" " Print( \"UTF8テスト\" );" "}"; とりあえずこれOKだった ホストへstd::stringで渡せたり楽だわあ
- 374 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:25:04 ]
- 次の更新でUTF16もサポートするみたいなことが書いてあるね
- 375 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:16:50 ]
- >>374
それできたらShitJIS対応の改造しなくて済むな。
- 376 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:58:55 ]
- Linuxでx64運用してるんだが、ファイルをHDD中でコピーするだけでファイルが壊れてしまう状態になって、
パーツを電源も含めて色々入れ換えてみたところ、 SATAケーブルをノイズに強いタイプに変更したら改善した。 残念ながら完全には直ってないようだけど、十分実用レベルには戻った。 資金に余裕ができたらHDD買い足してパーティションを作り直そう……。
- 377 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:59:54 ]
- おっと。スレ違いスマン。
- 378 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 09:41:07 ]
- pawnダウンロードして、マニュアル読みながらcmake使ってVC++用のプロジェクトファイル作るところまではできたんですが…
プロジェクト開いても、なんかファイル構成がよくわからないです。 もしかしてこれ、コンパイラとVMが別のプロジェクトファイルになっているんでしょうか? luaみたいに、単純にヘッダファイルとlibファイルだけが欲しいんですが… もしかしてDLLしかない??
- 379 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 16:02:52 ]
- >>378
pawnについていいなと思い試してみたはいいものの 詳しく使おうとするにつれてファイル構成が?で 投げ出した俺と同じ状態だね 確かにあれはわかりにくい
- 380 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:12:15 ]
- >>371
asEP_SCRIPT_SCANNER の設定で何がどう変わるのか AngelScript 2.17.2 の ライブラリのソースを見てみたけど、単に 'あ' みたいなUTF-8の文字リテラルが 正しく読めるようになるだけっぽい。 "あいう" みたいな文字列リテラルは設定に関係なく1バイトずつ読んで処理してる。 ただし AS_DOUBLEBYTE_CHARSET プリプロセッサを有効にしてビルドしたライブラリで asEP_SCRIPT_SCANNER の設定が 0 だと、マルチバイト文字を考慮する。 >>367が言っているように判定方法がマズいからShift_JISの半角カタカナを渡すと おかしな挙動になるだろうけど。 あと AngelScript 2.17.2 での asEP_SCRIPT_SCANNER の既定値は 1 っぽい。
- 381 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:15:58 ]
- となると、マルチバイト判定用のコールバック関数を登録できるような改造した方がいいのかな。
2箇所いじれば大丈夫っぽいし。
- 382 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 04:57:26 ]
- >>381
Xtalはそんな感じのことをやってますね。 初期化関数に渡す Setting クラスインスタンスの ch_code_lib メンバに 文字コードクラス(例:SJISChCodeLib)のインスタンスを渡すことで好きな 文字コードを選択できるようになってます。 SJIS, EUC, UTF8, UTF16, UTF32 の文字コードクラスは標準で用意してある模様。
- 383 名前:382 mailto:sage [2009/11/10(火) 05:09:58 ]
- > SJIS, EUC, UTF8, UTF16, UTF32 の文字コードクラスは標準で用意してある模様。
…とはいっても別に内部で文字コード変換をしてくれるわけじゃないから、 Windowsのマルチバイト文字セットで使うなら基本的にSJISを選ぶことになるだろうけど。 Unicode文字セットで使うなら、XtalライブラリをUnicode文字セットでビルドして、 文字コードクラスは指定しない(=デフォのまま)ことで正しい挙動になりそう。 もちろんその場合のスクリプトはUnicodeで書く&渡す。 連投&AngelScriptと直接は関係ない話でゴメン。
|

|