Giraffe+ 0.5.24.388

Downloadページへ

前リリースからの変化

  • Rangeオブジェクトを、@begin, @endに保持したイテレータのコピーをbegin, endで返す仕組みにした
  • Container.to_Rangeを定義
  • Container.emptyを定義
  • Container.pop_back, pop_frontを定義
  • Container.car, cdrを定義
  • Container.+を定義
  • Method.closureを定義
  • Array.insert(itr_pos, itr_begin, itr_end)が動作してなかったのを修正
  • シェルコンテキストメニューを扱う際の開放し忘れを修正
  • ShowMenu(2)を、動的にサブメニューを作れるようにした
  • メインメニュー内のUnit Conversionを充実させた

Rangeオブジェクトを、@begin, @endに保持したイテレータのコピーをbegin, endで返す仕組みにした

beginやendはコピーを返す、ということが保証されていないと、常にコピーしてから使うことになり、大抵の用途である、インクリメントによるイテレーション時に、大抵の場合(selfがRange以外)で、無駄にコピーすることになります。

Container.to_Rangeを定義

self.begin...(self.end)を返します。Container.rangeがContainer.rrange等の一種としてすでに存在しますが、違いは一切ありません。

Container.emptyを定義

self.begin.== (self.end)を返します。

Container.pop_back, pop_frontを定義

効率は悪いですが、それぞれ、end.--とbeginをerase後、あらかじめコピーしておいたbackとfrontを返します。

Container.car, cdrを定義

carはContainer.frontの異名として定義してます。self.begin.derefを返します。cdrは、self.begin.++...(self.end)を返します。

Container.+を定義

selfのコピーを、self.insert(self.end arg.begin arg.end)を実行後に返します。+=はコピーしません。

Method.closureを定義

closureを実行したMethodは、どこで呼ばれても、closureを実行したコンテキストから呼び出されます。引数を渡した場合、それが呼び出されるコンテキストになります。

Array.insert(itr_pos, itr_begin, itr_end)が動作してなかったのを修正

追加後にitr_posがinvalidatedになるのを忘れてました。

シェルコンテキストメニューを扱う際の開放し忘れを修正

IContextMenu2, 3です。

ShowMenu(2)を、動的にサブメニューを作れるようにした

初めの文字が*(アスタリスク)だった場合に、その次の引数のブロックの戻り値をメニューアイテムの配列として扱う仕様にしました。ようするに、開かれたサブメニューのスクリプトだけを遅延ロードすることができるようになりました。配列を返すだけのスクリプトを作って、それを呼び出すようにすると、サブメニューを開いたときに、動的にそのスクリプトがメニューになるという仕組みです。

メインメニュー内のUnit Conversionを充実させた

以前から充実させたかったんですが、メニューアイテム数が増えると、どうしてもメニューを開くのが遅くなるので、動的にサブメニューを生成できるようにしてから、と考えてました。