現在、開発凍結されています。ここに記載されている内容は、現在実現の目処はたっていません。
概要#
[[shared_resource]]の問題点を改善し、パフォーマンス向上と効率よいメモリ資源の利用、更にコーディングの手間削減を実現する。
auto_resourceには以下の長所がある。
- [[shared_resource]]に対して管理用情報のスリム化
- 以前使ったリソースの再利用による読み込み負荷の削減
- リソース本体の型ごとにstaticメンバを持たないようにしたことによる利用時の手間の軽減
- 限界メモリ使用量を設定可能
ただし、以下の短所もある。
- 後の使いまわしのためリソースを残すのでメモリ使用量が最小ではない
- メモリ整理が不充分でメモリ使用量が限界値を超え続けることがある
- 余分なリソースを整理するときのパフォーマンスが悪い
- リソース本体を格納するクラスではLoadのほかSizeを実装する必要がある
- いつdeleteされてもかまわないクラスでなければ使えない
リソース全体の管理を行う[[CAutoResourceManager]]も参照のこと。
使用方法#
LoadメソッドとSizeメソッドを実装したクラスTについて、auto_resource
リソースの使用の際にはOpenしたのちGetResourceとすればT*型のリソースへのポインタが得られる。
ダウンロード#
上が新しい。
auto_resource070802.lzh
auto_resource070612.lzh
auto_resource070326.lzh
履歴#
| 07/08/02 | auto_resourceのコピーと代入を実装 |
| 07/06/12 | 相対パスを絶対パスに変換しないようにした&br;auto_resourceのCFile向け実装追加 |
| 07/03/26 | auto_resourceのCDIB32向け実装追加 |
| 07/02/05 | autoobject::TimeStampのinlineをはずした&br;読み込みをかねるコンストラクタを追加 |
| 06/10/25 | autoobjectのコピー禁止 |
| 06/10/24 | できたぜー |
メンバ#
ここに記載されていない関数は使うべきではない。
または、ソースコードをよく読んで注意深く使うこと。
Close#
void Close()
リソースの使用を中止する。
明示的に呼び出す必要は無く、呼び出して参照カウントが0になってもすぐにはメモリ解放されないが、メモリ使用量が増大した場合には考慮される。
GetResource#
T* GetResource()
リソースへのポインタを得る。
Open#
void Open(const string& fileName)
リソースの使用を開始する。
既に読み込み済みのリストの中に一致するものがあれば読み込みは行わず、使いまわすためパフォーマンスが向上する。
リスト中のリソースが増えて限界メモリ使用量を超えた場合は古いリソースの解放を行うが、必ずしも精度はよくない。
リソース型が持つべき関数#
Load#
T型は、string型のファイル名を受け取り、読み込む関数を実装しなければならない。
Size#
T型は、そのクラスのサイズを取得するための関数を実装しなければならない。
auto_resource自体があまり厳密ではないため、こちらもあまり厳密ではなく概数値でかまわない。