きりかノート 3冊め

おあそびプログラミング

RubyCocoa 昨日のコミット

  • .bridgesupportファイルで"value64"と"value"の両方に値があるとき、64bitではvalue64の値をとるように(r2258)
% cd /System/Library/Frameworks/Foundation.framework
% ack -a -G .bridgesupport NSNotFound Resources Resources/BridgeSupport/Foundation.bridgesupport
637:<enum name='NSNotFound' value64='-1' value='2147483647'/>

Resources/BridgeSupport/FoundationFull.bridgesupport
696:<enum name='NSNotFound' value64='-1' value='2147483647'/>

というように、64bit用の値も定義されてるんだけどそっちを読んでない。valueがあるときにはvalue64を読まないようになってた(BridgeSupport.m)。それは意味的におかしいと思うので直した。

だけど、NSNotFoundを使うところではunsigned intを返すメソッドが多いので、Ruby上ではOSX::NSNotFound != OSX::NSIntegerMaxという問題は残る。空の時にOSX::NSSet#to_aがいつまでたっても終わらないでござる。NSIntegerMax回まわそうとするから。

% ack -a -G .bridgesupport NSIntegerMax Resources
Resources/BridgeSupport/Foundation.bridgesupport
563:<enum name='NSIntegerMax' value64='9223372036854775807' value='2147483647'/

Resources/BridgeSupport/FoundationFull.bridgesupport
622:<enum name='NSIntegerMax' value64='9223372036854775807' value='2147483647'/

ということで以前の d:id:kimuraw:20090910:p1 はまちがい。/Library/BridgeSupportは古いファイルが残ってただけだった。

ついでに。

  • テストでアーキテクチャを指定できるように。ruby install.rb test --arch=i386みたいに(r2257)
  • tests/*.bundleのコンパイル時に-archの指定が足りてなかったのでなおした(r2256)