現在の位置
backup プラグインを使用中
- バックアップ一覧
- 現在との差分 を表示
- ソース を表示
- バックアップ を表示
- 仕様/環境/ParamDB へ行く。
- 1 (2009-07-18 (土) 15:56:31)
- 2 (2009-07-18 (土) 15:57:58)
- 追加された行はこの色です。
- 削除された行はこの色です。
-&color(Red){このドキュメントは古いため,最新バージョンの鬼斬とは整合性がとれていない可能性があります};
*概要とか [#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に代入することが可能
*パスの指定方法 [#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>
{
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_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;