From: Kouhei S. <ko...@co...> - 2008-05-11 21:53:30
|
須藤です。 In <E1J...@sc...> "[ruby-gnome2-cvs] SF.net SVN: ruby-gnome2: [3190] ruby-gnome2/trunk/gtk" on Sun, 11 May 2008 12:12:39 -0700, hna...@us... wrote: > Revision: 3190 > http://ruby-gnome2.svn.sourceforge.net/ruby-gnome2/?rev=3190&view=rev > Author: hnakagawa > Date: 2008-05-11 12:12:39 -0700 (Sun, 11 May 2008) > > Log Message: > ----------- > *src/rbgtkliststore.c: added Gtk::ListStore#set_valuesv() > Modified: ruby-gnome2/trunk/gtk/src/rbgtkliststore.c > =================================================================== > --- ruby-gnome2/trunk/gtk/src/rbgtkliststore.c 2008-05-08 12:26:30 UTC (rev 3189) > +++ ruby-gnome2/trunk/gtk/src/rbgtkliststore.c 2008-05-11 19:12:39 UTC (rev 3190) > @@ -80,6 +80,34 @@ > return self; > } > > +#if GTK_CHECK_VERSION(2, 12, 0) > +static VALUE > +lstore_set_valuesv(VALUE self, VALUE iter, VALUE columns, VALUE value, VALUE n_values) > +{ > + GType gtype = gtk_tree_model_get_column_type(GTK_TREE_MODEL(RVAL2GOBJ(self)), NUM2INT(columns)); > + GValue gval = {0,}; > + gint i,len = RARRAY(columns)->len; > + gint* gcolumns = g_new(gint, len); > + > + for (i = 0; i < len; i++) { > + gcolumns[i] = NUM2INT(RARRAY(columns)->ptr[i]); > + } > + > + g_value_init(&gval, gtype); > + > + rbgobj_rvalue_to_gvalue(value, &gval); > + > + G_CHILD_ADD(self, iter); > + G_CHILD_ADD(iter, value); > + > + gtk_list_store_set_valuesv(_SELF(self), RVAL2ITR(iter), gcolumns, &gval, NUM2INT(n_values)); > + > + g_value_unset(&gval); > + g_free(gcolumns); > + return self; > +} > +#endif > + > /* > void gtk_tree_store_set (GtkTreeStore *tree_store, > GtkTreeIter *iter, > @@ -307,6 +335,9 @@ > rb_define_method(ls, "move_before", lstore_move_before, 2); > rb_define_method(ls, "move_after", lstore_move_after, 2); > #endif > +#if GTK_CHECK_VERSION(2, 12, 0) > + rb_define_method(ls, "set_valuesv", lstore_set_valuesv, 4); > +#endif 気になる点がそこそこあります。 * Rubyに公開するAPIとしてはvaluesvのvはつけない方がいいの ではないか * n_valuesはvaluesから取得できるはずなので、引数としては必 要ないのではないか * gvalはGValueの配列なので、n_valuesが2以上のときは落ちる のではないか * gint i,lenにはスペースを入れてgint i, lenにした方がよい のではないか * 変数宣言のところでこんなに頑張らないで gtk_tree_model_get_column_type(GTK_TREE_MODEL(RVAL2GOBJ(self)), NUM2INT(columns)) gint i,len = RARRAY(columns)->len; gint* gcolumns = g_new(gint, len); 普通に変数宣言の後でやった方がよいのではないか * というかそもそも落ちるのではないか。columnsはint?array? NUM2INT(columns) RARRAY(columns)->len * できればテストも書いてほしい。 |
From: Horofumi N. <hna...@us...> - 2008-05-12 01:01:08
|
Nakagawaです。 すみません。ご指摘のとおり、おかしな点が色々とありますね.. 習性しておきます。 コーディングスタイルは、なるべくまわりのコードの雰囲気に合わせていたりするんですけど、それじゃダメですかね… 2008/05/12 6:53 Kouhei Sutou <ko...@co...>: > 須藤です。 > > In <E1J...@sc...> > "[ruby-gnome2-cvs] SF.net SVN: ruby-gnome2: [3190] ruby-gnome2/trunk/gtk" > on Sun, 11 May 2008 12:12:39 -0700, > hna...@us... wrote: > > > Revision: 3190 > > > http://ruby-gnome2.svn.sourceforge.net/ruby-gnome2/?rev=3190&view=rev > > Author: hnakagawa > > Date: 2008-05-11 12:12:39 -0700 (Sun, 11 May 2008) > > > > Log Message: > > ----------- > > *src/rbgtkliststore.c: added Gtk::ListStore#set_valuesv() > > > Modified: ruby-gnome2/trunk/gtk/src/rbgtkliststore.c > > =================================================================== > > --- ruby-gnome2/trunk/gtk/src/rbgtkliststore.c 2008-05-08 > 12:26:30 UTC (rev 3189) > > +++ ruby-gnome2/trunk/gtk/src/rbgtkliststore.c 2008-05-11 > 19:12:39 UTC (rev 3190) > > @@ -80,6 +80,34 @@ > > return self; > > } > > > > +#if GTK_CHECK_VERSION(2, 12, 0) > > +static VALUE > > +lstore_set_valuesv(VALUE self, VALUE iter, VALUE columns, VALUE value, > VALUE n_values) > > +{ > > + GType gtype = > gtk_tree_model_get_column_type(GTK_TREE_MODEL(RVAL2GOBJ(self)), > NUM2INT(columns)); > > + GValue gval = {0,}; > > + gint i,len = RARRAY(columns)->len; > > + gint* gcolumns = g_new(gint, len); > > + > > + for (i = 0; i < len; i++) { > > + gcolumns[i] = NUM2INT(RARRAY(columns)->ptr[i]); > > + } > > + > > + g_value_init(&gval, gtype); > > + > > + rbgobj_rvalue_to_gvalue(value, &gval); > > + > > + G_CHILD_ADD(self, iter); > > + G_CHILD_ADD(iter, value); > > + > > + gtk_list_store_set_valuesv(_SELF(self), RVAL2ITR(iter), gcolumns, > &gval, NUM2INT(n_values)); > > + > > + g_value_unset(&gval); > > + g_free(gcolumns); > > + return self; > > +} > > +#endif > > + > > /* > > void gtk_tree_store_set (GtkTreeStore *tree_store, > > GtkTreeIter *iter, > > @@ -307,6 +335,9 @@ > > rb_define_method(ls, "move_before", lstore_move_before, 2); > > rb_define_method(ls, "move_after", lstore_move_after, 2); > > #endif > > +#if GTK_CHECK_VERSION(2, 12, 0) > > + rb_define_method(ls, "set_valuesv", lstore_set_valuesv, 4); > > +#endif > > 気になる点がそこそこあります。 > > * Rubyに公開するAPIとしてはvaluesvのvはつけない方がいいの > ではないか > * n_valuesはvaluesから取得できるはずなので、引数としては必 > 要ないのではないか > * gvalはGValueの配列なので、n_valuesが2以上のときは落ちる > のではないか > * gint i,lenにはスペースを入れてgint i, lenにした方がよい > のではないか > * 変数宣言のところでこんなに頑張らないで > gtk_tree_model_get_column_type(GTK_TREE_MODEL(RVAL2GOBJ(self)), > NUM2INT(columns)) > > gint i,len = RARRAY(columns)->len; > gint* gcolumns = g_new(gint, len); > 普通に変数宣言の後でやった方がよいのではないか > * というかそもそも落ちるのではないか。columnsはint?array? > NUM2INT(columns) > RARRAY(columns)->len > * できればテストも書いてほしい。 > > ------------------------------------------------------------------------- > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference > Don't miss this year's exciting event. There's still time to save $100. > Use priority code J8TL2D2. > > http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja > |
From: Kouhei S. <ko...@co...> - 2008-05-12 01:04:45
|
須藤です。 2008/05/12 10:01 Horofumi Nakagawa <hna...@us...>: > すみません。ご指摘のとおり、おかしな点が色々とありますね.. > 習性しておきます。 よろしくお願いします。 > コーディングスタイルは、なるべくまわりのコードの雰囲気に > 合わせていたりするんですけど、それじゃダメですかね… 基本的にはそれでOKです。 今回はそうじゃないものを指摘したつもりなんですが… |
From: Horofumi N. <hna...@us...> - 2008-05-12 17:31:50
|
Nakagawaです。 一応、修正しておきました。 普通にめちゃくちゃでしたね… 後、しょーもない事なのですが、須藤さんが書かれているコーディングスタイルは ANSIスタイルだと思うのですが、既存のコードはRubyスタイル?になってますよね? どっちに合わせた方が良いですか? 2008/05/12 10:04 Kouhei Sutou <ko...@co...>: > 須藤です。 > > 2008/05/12 10:01 Horofumi Nakagawa <hna...@us...>: > > > すみません。ご指摘のとおり、おかしな点が色々とありますね.. > > 習性しておきます。 > > よろしくお願いします。 > > > コーディングスタイルは、なるべくまわりのコードの雰囲気に > > 合わせていたりするんですけど、それじゃダメですかね… > > 基本的にはそれでOKです。 > 今回はそうじゃないものを指摘したつもりなんですが… > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference > Don't miss this year's exciting event. There's still time to save $100. > Use priority code J8TL2D2. > http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja > |
From: Kouhei S. <ko...@co...> - 2008-05-13 00:23:07
|
須藤です。 2008/05/13 2:31 Horofumi Nakagawa <hna...@us...>: > 一応、修正しておきました。 テスト付きで、ありがとうございます。 せっかくなので、APIの提案なのですが、今は配列で値を指定します が、ハッシュでも指定できるようにしませんか?配列だけだと、最後 の値だけを変えたいときに面倒な気がします。もちろん、全ての値を 変えたいときや最初の方からn個の値を変えたいときなどは配列の方が 便利だと思います。 > 後、しょーもない事なのですが、須藤さんが書かれているコーディングスタイルは > ANSIスタイルだと思うのですが、既存のコードはRubyスタイル?になってますよね? > どっちに合わせた方が良いですか? 引数宣言のはなしですよね? 最近のRuby(最近のというか1.9)はANSIスタイルになっているので そっちに移行中です。 今まで、K&Rでのやり方で型宣言を忘れてバグっていたことが何回か あったのでANSIの方がよいと思っています。 |
From: Kouhei S. <ko...@co...> - 2008-05-13 00:29:17
|
須藤です。 2008/05/13 2:31 Horofumi Nakagawa <hna...@us...>: > 一応、修正しておきました。 あ、あと、g_new()じゃなくてruby.hの中のALLOC_Nとかを使っ た方がよいです。(GCのタイミングとかの関係で) 今回の場合ならALLOCA_Nを使っちゃうのが楽かもしれません。 |
From: Horofumi N. <hna...@us...> - 2008-05-14 15:23:08
|
ありゃりゃ、メール見れてない内に修正されちゃいましたね(汗 >今まで、K&Rでのやり方で型宣言を忘れてバグっていたことが何回か >あったのでANSIの方がよいと思っています。 了解しました。 2008/05/13 9:29 Kouhei Sutou <ko...@co...>: > 須藤です。 > > 2008/05/13 2:31 Horofumi Nakagawa <hna...@us...>: > >> 一応、修正しておきました。 > > あ、あと、g_new()じゃなくてruby.hの中のALLOC_Nとかを使っ > た方がよいです。(GCのタイミングとかの関係で) > > 今回の場合ならALLOCA_Nを使っちゃうのが楽かもしれません。 > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja > |
From: Kouhei S. <ko...@co...> - 2008-05-14 23:03:47
|
須藤です。 2008/05/15 0:23 Horofumi Nakagawa <hna...@us...>: > ありゃりゃ、メール見れてない内に修正されちゃいましたね(汗 あ、すいません。 そろそろリリースされそうだったのでこっちでやっちゃいました。 |