From: Masaaki A. <mas...@gm...> - 2011-09-10 16:29:20
|
青柳です。 > rb_grn_*()は関数のprefixをrb_grnではなく、Ruby-GNOME2のやり > 方にあわせて変えてしまってOKです! Hash引数は他にも使うところが出てきてglibに移動することになると踏んでるので、 その時に場所や名前を考えればいいかなということで、そのままの名前にしておきました。 > vte_terminal_fork_command_full()も__vte_pty_spawn()もどちら > もchild_setupにVtePtyを渡してくれないのでだいぶ厳しいですね。 > > 思いついたのは、こんなのですが、大変なので、とりあえず、 > child_setupは未サポートがいいんじゃないかと思います。 > > 1. pipeを作る。 > 2. child_setupの引数として、読み込み用のpipeと渡されたブロッ > ク引数を持つ構造体を作る。 > 3. vte_terminal_fork_command_full()を呼び出す。 > 4. child_setupの中では読み込み用のpipeをreadする。 > (ここでブロック。) > 5. vte_terminal_fork_command_full()が返ってきたら > vte_terminal_get_pty_object()でVtePtyを取ってきて、 > 書き込み用のpipeに取ってきたVtePtyのアドレスをwriteする。 > 6. 5.の書き込み用のpipeをclose。(まだ早いかも。) > 7. 4.でブロックしていたreadから5.で取ってきたVtePtyのアド > レスがわかるので、それを引数にしてvte_pty_child_setup() > を呼び出す。 > 8. child_setupの中で4.の読み込み用のpipeをclose。 > 9. child_setupの中でブロック引数を呼び出す。 やっぱり、ややこしい事をしないといけないのですね。 未サポートにしました。 > あと、(うろ覚えですが)いくつか気になった所があるのですが、 > これはコミット後に直すのでもいいかなぁと思っています。 > > * NIL_P(xxx) ? NULL : RVAL2CSTR(xxx)の代わりに > RVAL2CSTR_ACCEPT_NIL(xxx)というのが使えた気がする。 > (うろ覚え) > * NIL_P(xxx) ? NULL : RVAL2GOBJ(xxx)は > RVAL2GOBJ(xxx)だけでいけた気がする。 > (うろ覚え) この手のパターンは色々な所で使っていそうなので、どこかのタイミングで 一気に作業した方がいいかなと思います。 >> 今回対象となるメソッドは、search_set_gregex と search_set_wrap_around ですが、 >> 代入メソッドを定義した方が良いでしょうか? > > あった方がRubyっぽく書けるような気がするのでお願いします。 エイリアスを定義するようにしました。 > search_set_gregex()とsearch_get_gregex()について少し考えてみ > たのですが、現状はGLib::Regexpがなく、今後も追加するかどうか > はまだ検討する余地があると思う(*)ので、今のところは以下のよ > うにするのはいかがでしょうか? > > * search_set_gregex: 引数は文字列を受け取り、内部でGRegexp > を生成して使う。 > * search_get_gregex: APIを提供しない。あるいは > g_regex_get_pattern()の値を返す。 > > (*) RubyのRegexpとGLib::Regexがあると混乱しそうとか、Rubyの > Regexpの方が断然使いやすいのでGLib::Regexがある意味があ > るのかとか。 match_add_gregexもあるので、とりあえずGRegex関連は実装を見合わせました。 >> fork_command_full を外に出さないようにしようと考えています。 > > 私もそれがいいと思います! メソッド定義を削除しました。 以上の内容でコミットしましたので、ご確認ください。 |