|  |  | 赤紫蘇２．リファレンス
|  | aka:choice itemの扱い
| akaxiso2.0-beta1 |
| 目次 はじめに 1. 概要 2. ライブラリAPI 3.単純型 4. 組み込み型 5. 配列 6. ポインタ 7. データモデル 8. aka:sequence 8.1 メンバ定義(単純型) 8.2 メンバ定義(複雑型) 8.3 出現頻度定義 9. aka:all 10 aka:choice 10.1 要素の定義 10.2 固定値の定義 10.3 mocクラス 10.4 itemの扱い 11 aka:simplecontent 12 属性 13 XML Schema機能対応表 |  | aka:choiceにおいて、コンテナの要素の実体は、常に、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プロジェクトページへ