![]() |
赤紫蘇2.リファレンス |
||
aka:choice itemの扱い |
|||
akaxiso2.0-beta1 | |||
|
|||
aka:choiceにおいて、コンテナの要素の実体は、常に、aka::itemクラスのインスタンスです。aka::itemに対して、タグ名を確認し、実際の値オブジェクトの取得を行う手順について説明します。 aka::itemの操作関数として、aka::item_of()関数と、aka::item_cast<>()関数が、赤紫蘇2で定義されています。それぞれの宣言を以下に示します。 bool aka::item_of(const aka::item &item, const std::string &tagname); template<class I> I& item_cast(aka::item item); template<class I> const I& item_cast(const aka::item &item); 使用例を以下にあげます。 // aka:choiceクラスの定義 typedef std::list<aka::item> items; struct items_leaf : aka::sequential_choice<items, items_leaf> { void model() { item("item1", xiso::leaf<std::string>); } }; //使用例 void func_foo() { ..... // <item1>である要素の値(std::string型)を出力 const aka::item &item = container.front(); if (aka::item_of(item, "item1")) { const std::string &value = aka::item_cast<std::string>(item); std::cout << "Value of <item1> is " << value << "." << std::endl; } ..... } aka::item_of()関数で、タグ名を確認し、aka::item_cast<>()関数で、aka::itemから、std::stringのインスタンスへの参照を取得しています。 |