|  |  | 赤紫蘇２．リファレンス
|  | aka:choice binderクラス
| akaxiso2.0-beta2 |
| 赤紫蘇２リファレンス はじめに 1. 概要 2. ライブラリAPI 3.名前空間とQName 4.単純型 5. 組み込み型 6. 配列 7. ポインタ 8. データモデル 9. aka:sequence 9.1 メンバ定義(単純型) 9.2 メンバ定義(複雑型) 9.3 出現頻度定義 10. aka:all 11 aka:choice 11.1 要素の定義 11.2 固定値の定義 11.3 binderクラス 11.4 itemの扱い 11.5 出現頻度定義 12 aka:simplecontent 13 属性 14 シリアライズ 15 デシリアライズ 16 XMLスキーマ機能対応表 |  | binderクラスは、aka:choiceの実体であるコンテナを操作するためのヘルパクラスです。 binderクラスは、aka:choiceのleafクラスの関連型として定義されています。
    template<class T, class L>
    struct aka::sequential_choice<T, L>::binder;

    template<class T, class L>
    struct aka::associative_choice<T, L>::binder;
aka::sequential_choice<>::binderクラスには、push_back()メソッドが定義されています。push_back()メソッドには、要素オブジェクトとタグ名を指定します。与えられたタグ名が、aka:choiceのleafクラスにて定義されていない場合には、例外(aka::errorクラス)を投げます。 使用例を以下にあげます。
    // 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() {
      .....

      items container;
      items_leaf::binder(container) items_binder;

      std::string item("test");
      items_binder.push_back(item, "item1");

     .....
    }
以上のコードで、タグ名"item1"と、itemインスタンスのコピーが対応付けられ、aka::itemのインスタンスが作成されます。その後、作成されたaka::itemインスタンスが、コンテナ(container)へと挿入されます。 aka::associative_choice<>::binderクラスには、insert()メソッドが定義されています。これも、上記と同様の使用法となります。

リファレンストップへ 赤紫蘇２トップへ sourceforgeプロジェクトページへ