赤紫蘇2.リファレンス

aka:choice itemの扱い

akaxiso2.0-beta1


aka:choiceにおいて、コンテナの要素の実体は、常に、aka::itemクラスのインスタンスですaka::itemは、要素名と値オブジェクトを格納しています。

本節では、aka::itemに対して、タグ名を確認し、実際の値オブジェクトの取得を行う手順について説明します。

aka::itemの操作関数として、aka::item_of()関数と、aka::item_cast<>()関数が、定義されています。それぞれの宣言を以下に示します。

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のインスタンスへの参照を取得しています。


リファレンストップに戻る 赤紫蘇ホームページへ sourceforgeプロジェクトページへ