トップ «前の日記(2021-05-19) 最新 次の日記(2021-05-21)» 編集

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|10|11|

2021-05-20 [長年日記]

_ [SAD]sequence container utility

list containerにする前の編集可能なsequence container utilityの設計案をまとめておく

内部構成

  • slad_t *ad
  • rval_t *av
  • unsigned int n - current sequence length
  • unsigned int nmax - maximum allocated length

長さに関しては、list containerが 2^31-1で制限されているので、 size_tでは無くintで充分(念のためにunsignedで定義すべき)

基本

  • seq_alloc - 割付
  • seq_free - 開放(adの参照先は、dereferenceしない)
  • seq_resize - リサイズ
    • 編集作業用utilityなので、メモリ不足時にリカバリー出来るとは思えないので、真偽値を返すよりも abortしてしまう方が簡単か?(あるいは、seq構造体にエラーフラグを持たせておいて、最後に検出する)
    • 可変長バッファの再利用性を高めるために、適当な2^Nで丸める
  • seq_load_list - list containerからロードする (stackへの展開動作の置き換え、Join実装)
  • seq_expand_list - list containerから展開する (Null[...]を再帰展開する)
  • seq_insert - sequenceへ挿入
  • seq_ordered_insert - 整列sequenceへ挿入

更新系の動作に関しては、

  • 破壊的更新 (resize動作を含む)
  • 新しいsequenceの生成 (alloc動作を含む)
  • list containerの生成

のバリエーションが考えられる

編集結果をlist containerやsequenceで返す場合、生成型の動作がメモリ割り当て効率的に望ましいが、命名規則を考える必要がある


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