トップ «前の日記(2008-10-16) 最新 次の日記(2008-10-20)» 編集

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|

2008-10-16 [長年日記]

_ [YaSAI]forward container iterator実装完了

なわけで、やっと container manipulatorの実装に移れます。

今まで実装したのは、

  • スマートポインタ(Objects::Pointer)
    • std::shared_ptrと異なり、参照カウンタはObjects::Baseの派生クラス側のものを操作する
    • Objects::Baseの参照カウンタは、Copy on Write用に排他ロックをサポート
  • オブジェクトコンストラクタの隠蔽
    • 生のコンストラクタを隠蔽、静的メソッドでオブジェクトを生成し、スマートポインタを返す
  • Cons cellコンテナ
    • スマートポインタと参照カウンタの排他ロックを使って Copy on Writeな操作を行う
    • コンテナappend/prepend/concat操作はstd::initializer_list<Objects::Pointer<Objetcs::Base>>経由で、複数要素の挿入・結合をサポート
  • コンテナ前進イテレータ(Objects::Container::Base::iterator)
    • nthcdr()メソッドを使った最小の前進イテレータ実装
    • コンテナの汎用比較演算子は、イテレータで実装
    • コンテナにbegin(), end()メソッド実装
    • 参照限定版のconst_iteratorも実装済み

次は、ユーザー側のコンテナ操作コード記述用の container manipulatorを 実装して、PEG classを新しい Objects frameworkで書き直す。

これで、RefInc()/RefDec()メソッドでいちいち参照カウンタを 操作する手間から開放される予定。

コンテナの格納効率を優先すると

  • プロキシコンテナ
  • 配列型コンテナ(std::dequeベース?)

辺りを実装すると良さげかも

Cons cellコンテナ一個で、5ワード消費する(仮想関数テーブルポインタ、 オブジェクト型情報、参照カウンタ、car/cdrスマートポインタ)での、 連結が長くなると格納効率がかなり悪化する模様...

本日のツッコミ(全1件) [ツッコミを入れる]
_ Y氏 (2008-10-18 13:56)

復活したかな。<br>コンソールは全く無反応で、特にエラーメッセージはなかったよ。


カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記