Giraffe+ 0.5.0.72b
Download
前リリースからの変化
言語部分(gs)
- Object.unlessとObject.!をそれぞれObject.ifとObject.?のカウンターパートとして定義。
- 文法上のバイナリオペレータ(二項演算子)メソッドの定義を、大雑把なものにした。
言語部分以外(Giraffe+)
- 履歴ファイルが空の時に設定によっては履歴追加に失敗してたのを修正。
- Giraffe.Eventが本来のイベントオブジェクトではなく、その親になっていたのを修正。
- 描画スレッド作成後に、メインスレッドを任意のミリ秒数待機させられるようにした。
obj.not.ifとするところをobj.unlessとできるようになりました。無いほうが統一感があっていいかと故意にそうしていましたが、やっぱりストレートな表現があるほうがいいようです。
"!"をバイナリオペレータメソッドとするついでに、その文法上の定義を考え直しました。今までは他言語で二項演算子として使われているものをそうとしていましたが、もっとシンプルに、'-+=!?~*/%&|<>^で構成されるものから、+か-のみで構成される2文字以上のものを除くもの、もしくは"."のみで構成されるもの' と定義しました。
履歴の問題はGiraffe.giraffeのGiraffe:History:Addを修正しました。
Giraffe.EventにEditChange等を定義しても効果が得られなかったのを修正しました。KeyやTimer等は親の所有でしたので問題ありませんでした。
描画開始後に少し待ち、所定の時間が過ぎても描画が終わらない場合にマルチスレッド化するような感じにしました。待ち時間はbool値だったEnableの値をミリ秒として扱います。たとえばConfigのDraw.List.Icon.Thread.Enableを50とすれば、リストボックスのアイコンを描画するスレッドが実行された後、それが終了するか50ミリ秒経過するまでメインスレッドが待機します。一度に多くの描画スレッドを開始するよりも実行効率がよくなり、操作感は向上するはずです。