もきもき3D

アクセスカウンタ

zoom RSS FileIO save/load BlockとVparm

<<   作成日時 : 2010/01/20 09:33   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

状況整理用メモ

●vparm->save()
○バイナリ(LWO)では常にLWIDとデータの羅列。
 階層構造を常に保持していると言える?

○テキスト(LWS)ではFileIOのsave系オプションに依る。
 □素の出力時は、{ varible〜 〜 }の階層を持つデータ。
   { vparm
    {
     data
    }
    〜
   }
  
 □FileIO saveBlockを使っている場合
  △leafが真(階層無し宣言)の場合、階層を剥奪し、\nで終わる各要素の実データを羅列した物になる。
   vparm{ }が消える。
   Blk
   data
   〜   

  △leafが偽(階層有り宣言)の場合、BlockDataに応じた階層の中に階層を持ったデータが出力される。
   { Blk
    { vparm
     {
      data
     }
     〜
    }
   }


●FileIO loadBlock
各データにblockIDがあり、vparmを含むとして
 毎回実行。
 while(id = LOAD_BLK()){
  switch()
  {
   case: vparm->load();
  }
  LOAD_END();
 }

 分岐でのみ実行。
 while(id = LOAD_BLK()){
  switch()
  {
   case: vparm->load();
   default: LOAD_END();
  }
 }

○バイナリ(LWO)
 毎回実行であれば全て読める。

 分岐実行では最初にmatchした物を読んで終了してしまう。

 チャンクサイズは既知で、終端を示すデータは特に無いので、LOAD_ENDは読み込みはせずにLOAD_BLKの為に次のチャンクを指すポインタを準備する、という感じか。
 matchした事でLOAD_END()が呼ばれず、次のチャンクが用意されない為に(NULLになって?)読み込みが完了してしまう、とか。

○テキスト(LWS)
 毎回実行だと問題がある。
 matchする物が無かった時、LWSを正常な形で読み込み完了出来ない。

 分岐実行では全て読める。

 FINDは"{ blk"を読み、応じたLWIDを返し、ポインタを次行に移す。 
 そこでvparm->load()した場合、 { vparm 〜 }迄を読み、 blockの終端行 } は残る(はず)。
 LOAD_ENDが残った } を拾って、ポインタを次行に移すのが筋なはず。

 毎回実行ではmatchする物が無い場合はLWSのそこから先のアイテム類が捨てられる。 loadがplugin{ }を越えてLWSを食いつぶす感じ。
 matchする物があった場合でも、vparm->load()が{ vparm 〜 } }迄を読んでしまうのか、ヌルポに繋がる。

○ノード
 NodeClassのsave()/load()内では毎回実行でバイナリ、テキスト共に問題なく読み込める。

○ノードエディタ
 NodeEditorのload()はバイナリの場合に内包するEnvelope(vparm)を読まない。
 テキストではVparmを含んでいなくても、vparm->load()と同様に末尾の”}行”を消費する(LOAD_ENDしてはいけない)。


 NodeClass(LWS,LWO)とShaderClass(LWO)では毎回実行をする。
 その他のハンドラーClass(LWS)では分岐実行をする。

 というのが無難?(・з・)

 その他のハンドラーでLOAD_XX()とvparmがある場合、二つを同一Blkに混ぜるのはNGかも。
 必ずBlkは分けて、
 while(id = LOAD_BLK()){
  switch()
  {
   case: LOAD_XX();
       LOAD_END();
   case: vparm->load();
   default: LOAD_END();
  }
 }
 とするのが無難?

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
FileIO save/load BlockとVparm もきもき3D/BIGLOBEウェブリブログ
文字サイズ:       閉じる