現在の位置
backup プラグインを使用中
- バックアップ一覧
- 差分 を表示
- ソース を表示
- バックアップ を表示
- 仕様/環境/ParamDB へ行く。
- 1 (2009-07-18 (土) 15:56:31)
- 2 (2009-07-18 (土) 15:57:58)
- 追加された行はこの色です。
- 削除された行はこの色です。
*概要とか [#q26e2c82] -ParamExchange~を目的に応じて継承する --ParamExchange ---通常はこれを使用 --ParamExchangeDynamic ---SetRootPathによって,動的にルートパスを設定可能 --ParamExchangeChild ---CHAIN_PARAM_MAPで接続されるクラス専用 -変数のマッピング --BEGIN_PARAM_MAP,END_PARAM_MAP,PARAM_ENTRY等のマクロを使用してパラメータのマッピングを行う -値の取得,解放(出力) --LoadParam()を呼ぶことで,XMLから変数に値をセット --LoadParam()を行った場合,終了時には必ずReleaseParam()を呼ぶこと -パラメータを読み書きできる型 --String --std::string --intやdoubleなどのプリミティブ一般 --プリミティブの配列 --プリミティブのvector -配列やvector --要素をカンマ続きで記述した場合,配列やvectorに代入することが可能 -PhysicalResouceNode 継承クラスの場合,GetParamPath() やGetResultPath() によってパラメータのパスや出力のパスを得ることが出来る --詳細は[[仕様/その他/リソースの生成と接続]]を参照 *パスの指定方法 [#a5a1b4e9] -基本的にはXPathを踏襲 **指定方法 [#nf37d776] -デフォルトで,ルートパスが'/Session/'に設定されているため,そこからの相対パスを指定 -'@~'でアトリビュートの取得が可能 -'~[~]'で要素のインデックスを指定してアクセスが可能 -'count(~)'で要素数を取得 **XPathとの差異 [#j8984849] -要素のインデックスを指定する際は,1からではなく,0から始まる -countが,ロケーションステップの後に使える *DefaultParam.h 内で定義可能な組み込み属性 [#o9d322b7] **PDB_Array [#o369b5d3] -この属性が有効になっているノードは,外部XMLで任意の個数を追加することが可能 -Process を追加するときなどに使用 -デフォルトで0 **PDB_ReadOnly [#ta55e03b] -この属性が有効になっているノードおよびその子ノードは,読み取り専用となる -Result セクション用 -デフォルトで1 **PDB_RequireDefaultParam [#v4cfd3b7] -この属性が'無効'になっているノードおよびその子ノードでは,DefaultParam.hでの定義を必要としない -Result セクション用 -デフォルトで1 *ParamExchangeDynamicについて [#f158542d] -void SetRootPath(const String& root) が定義されており,ルートパスを動的に設定できる SetRootPath("Simulation/"); // ルートパスを設定 LoadParam(); -BEGIN_PARAM_MAP内のパスは,この時設定したルートパスからの相対パスとなる -SetRootPathに渡すパスは,先頭に/がついていない場合,Sessionからの相対パスとなる *使用例 [#ue52361b] <?xml version='1.0' encoding='UTF-8'?> <Session> <Simulator> <Test Param = "1" Array = "0,1" Vector = "0,1,2,3,4" /> <List> <Element val="2"> <Element val="4"> <Element val="8"> <Element val="2"> </List> </Simulator> <Result RequireDefaultParam='0' ReadOnly='0' > </Result> </Session> class ParamTest : public ParamExchange<ParamTest> class ParamTest : public ParamExchange { int m_param; int m_array[2]; vector<int> m_vec; int m_listCount; int m_listElement; int m_result; struct ParamStruct : public ParamExchangeChild { int m_param; BEGIN_PARAM_MAP("") PARAM_ENTRY("/@Param",m_param) END_PARAM_PATH } s; public: BEGIN_PARAM_MAP("") BEGIN_PARAM_MAP("/Session/") BEGIN_PARAM_PATH("Simulator/") PARAM_ENTRY("Test/@Param",m_param) PARAM_ENTRY("Test/@Array",m_array) PARAM_ENTRY("Test/@Vector",m_vec) PARAM_ENTRY("List/count(Element)",m_listCount) PARAM_ENTRY("List/Element[0]",m_listElement) CHAIN_PARAM_MAP("Test",s) END_PARAM_PATH BEGIN_PARAM_PATH("Result/") PARAM_ENTRY("Test/@Result",m_result) END_PARAM_PATH END_PARAM_MAP ParamTest() { LoadParam(); } ~ParamTest() { ReleaseParam(); // LoadParamした場合は必ず呼ぶこと } } p;