Giraffe+ 0.5.59.725

Downloadページへ

前リリースからの変化

  • メインメニューを整理した
  • LOCALE関数を文字列以外も返せるようにした
  • selfがNULLでもdef, get, setがアクセスバイオレーションにならないようにした
  • Path.to_C_argumentを定義した
  • StringをPathの子でなくした
  • Giraffe:GetConfigPathCompleteを定義した
  • シンボルをエスケープ可能にした
  • パーサを最適化した

メインメニューを整理した

ロケールが使えるようになっても英語と日本語が混じった状態で放置してましたが、やっとローカライズしました。
それから、Copy GUIDをsettings/key/CopyGUIDMenuへ移動しました。メインメニューにはエディットに入力済みの文字列を利用する機能を置くことにしています。
それと、スクリプトが古くASCII(SJIS)だけの部分だったのをUNICODEも扱えるようにしました。

LOCALE関数を文字列以外も返せるようにした

ロケールに合わせたコード実行等が出来るようになりました。

selfがNULLでもdef, get, setがアクセスバイオレーションにならないようにした

うまくやれば低速化する部分でもなかったのでやりました。
スクリプト上では、何を呼んでもselfがNULLの場合はgetが失敗するために結局エラーになりますが、内部的には、get_safe, set_safe, def_safeがエラーにならなくなりました。

Path.to_C_argumentを定義した

Path.to_String.to_C_argumentと同じです。

StringをPathの子でなくした

論理的におかしい割にそれほど便利(逆の場合に不便でない)でもないので、やめました。
今までStringにPathのメソッドを呼んでいた部分は、selfとメソッドの間にto_Pathを置く必要があります。

Giraffe:GetConfigPathCompleteを定義した

StringがPathの子で無くなった余波です。定義はGetPath(arg).to_Path.completeです。GetPath(arg).completeのような場面が多かったので作りました。

シンボルをエスケープ可能にした

シンボルに空白や括弧を含められるようになりました。仕様は、"\(バックスラッシュ)に続く文字はシンボルの一部と見做す"です。C/C++の文字(列)リテラルのような解釈はしません。
例えば、Program Filesという登録アイテムを実行したい場合、

!Program\ Files

とできるようになりました。
以前はバックスラッシュがそのまま解釈されてましたから、既存のスクリプトにあるバックスラッシュを含むシンボルはエスケープが必要です。

パーサを最適化した

旧言語の無名括弧リテラルのコメント削除をやめました。ブロック化されるリテラルのそれは無視され、ブロック化されないリテラルにはコメントはまず無いためです。起動時に私の環境で0.1秒ほど消費していた部分なので、遅い環境や古いスクリプトが多い場合なら高速化を体感できるはずです。
それから、シンボルリテラルインスタンスを参照化しました。文字列からの変換に使うハッシュのインスタンスを利用してます。
その他、シンボルのエスケープ可能化による速度低下の埋め合わせにと、文法(Boost.Spirits)部分の小さな最適化をいろいろしました。