2007-11-01から1ヶ月間の記事一覧

link:Subversion のコンパイル (for Windows) 基本編 (VS2005)

http://www.asahi-net.or.jp/~iu9m-tcym/svndoc/svn_basic_2005.html VS2005でSubversionのRubyバインディングをコンパイルしようとしたら、さんざんファイルを追加した末に失敗…orz。 とりあえず、リンク先を読んでリベンジ予定。

Rua: タスク-オブジェクトをテーブルに変換する

とりあえず、よく分からんオブジェクトはuserdataじゃなくて関数持ってるテーブルに変換しちゃえばいいかも。

Rua: function rb_protect

http://doc.loveruby.net/refm/capi/view/function/rb_protect rb_protectという大域脱出を補足してくれる関数があることを、ここを読んで知った。 Ruby拡張で言語バインディングの記事は参考になるなぁ。Lua自体には例外処理機能はないみたいだからLuaの関…

Rua: function rb_protect その2

以下のような感じで、うまく例外を補足できた。コメントアウトをはずすと、もっかい例外が飛んでく。 static int rua_proc_call(lua_State *L) { VALUE proc, args, retval; int i, n, status; proc = (VALUE) lua_touserdata(L, lua_upvalueindex(1)); args…

Rua: 例外ハンドラを受け取るようにした

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/rua/rua/rua.c?root=svn&view=markup ソース static int rua_proc_call(lua_State *L) { VALUE proc, args, retval, error_handler, errargs, errmsg; int i, n, status; proc = (VALUE) lua_touserdata(L…

Rua: オブジェクトをテーブルに変換するようにした。

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/rua/rua/rua.c?root=svn&view=markup とりあえずこれで完成かな。 あとは、extconf.rb書いて、RubyForgeに登録してwin32用のバイナリ作って。。。 変換するコードはこんな感じ。 static void rua_newtable…

lua_getstack

LUA

lua_pcall()に失敗して、lua_getstackでデバッグ情報を取り出そうとするけど何故か失敗。スタックにエラーメッセージが積まれてるとか、そんなんが原因かな? あとで調査のこと。 参考

Rua: Procまわり

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/rua/rua/?root=svn とりあえず、Ruby側で関数を定義できるようにした。 Luaで定義した関数をRubyで呼ぶ Rubyで定義した関数をLuaで呼ぶ Hashとテーブルの相互互換 Array→テーブル Lua側の関数を呼び出せる…

それでも町は廻っている

斜め上の面白さだった。 ○本の住人とかまとちゃんとかと同じにおいがする。

Rua: Luaの関数をcall

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/rua/rua/?root=svn できるはできた…が頻繁にSEGVがおきる。 いらない機能かなぁ。。。 追記 例外まわりがアレなんだ!追記2 Rubyのノリで書いてるとlocal付けるの忘れるなぁ。。。 require 'rua' rua = R…

lua_getglobal

LUA

変数が見つからなかったら、nilをスタックに積むっぽい。 一応、メモ。

Rua: 大域変数の定義とか追加

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/rua/rua/rua.c?root=svn&view=markup LuaかわいいよLua。 も、さっくさく実装が進む。 とりあえずの目標。 Luaで定義した関数をRubyで呼ぶ Rubyで定義した関数をLuaで呼ぶ Hashとテーブルの相互互換 Array…

link: K のこと

DEV

http://dodgson.org/omo/t/?date=20071103#p02

Rua: テーブルまわりとか

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/rua/rua/rua.c?root=svn&view=markup Array→テーブルは1オリジンにした。 Luaで定義した関数をRubyで呼ぶ Rubyで定義した関数をLuaで呼ぶ Hashとテーブルの相互互換 Array→テーブル require 'rua' rua = …

単純なRuby拡張を作った

とりあえず、簡単なのはさくっとできた。 rua.c (MSC) __declspec(dllexport) void Init_rua(void); #include "ruby.h" #include "lua.h" #include "lualib.h" #include "lauxlib.h" struct rua { lua_State *L; }; static void rua_free(struct rua *p) { i…

lua_pcallの戻り値

LUA

lua_pcallでコード辺を評価しても戻り値が帰ってこないな…と思ったら、引数の数を0にしてた。。。orzRuby的には def eval(argc = 1) とかしたほうがいいかな? 追記 コード辺でも明示的にreturnしないとnilが返ってきた。

printを呼ぶ

LUA

#include "lua.h" #include "lualib.h" #include "lauxlib.h" int main() { lua_State *L = lua_open(); luaopen_base(L); luaL_loadstring(L, "function f() print(0) end"); lua_call(L, 0, 0); lua_getglobal(L, "f"); if(lua_pcall(L, 0, 0, 0) != 0) { …

単純なeval

LUA

#include <stdio.h> #include "lua.h" #include "lualib.h" #include "lauxlib.h" int main() { lua_State *L; lua_Debug *ar; L = lua_open(); luaopen_base(L); luaL_loadstring(L, "a = 100 \n print(a)"); if(lua_pcall(L, 0, 0, 0) != 0) { printf("error: %s\n"</stdio.h>…

スタックを調べる

LUA

スタックが良く分からなかったので、調べてみた。 #include <stdio.h> #include "lua.h" #include "lualib.h" #include "lauxlib.h" int main() { lua_State *L = lua_open(); luaL_loadstring(L,"function f(x, y) return x + y end"); printf("top: %d\n", lua_gett</stdio.h>…

スタックを調べる その2

LUA

Rubyへの型変換を考える

LUA

とりあえずこんな感じかな。 Lua Ruby nil nil ブーリアン TrueClass/FalseClass 数値 Float 文字列 String 関数 Proc…じゃなくて独自定義かな? ユーザーデータ いらないっかな。。。 スレッド どうしよ。。。 テーブル Hash 今気づいたけどtrue/falseってB…

Ruby/MySQLの最新版

http://tmtm.org/ruby/mysql/ どうも、Railsに同胞されているドライバは独自バージョンっぽい。5.0への対応具合ってどうなんだろう?