赤紫蘇2 リファレンス

aka:choice バインダクラス

akaxiso2.0-beta3


赤紫蘇2リファレンス

1.概要
1.1 赤紫蘇2の構成
1.2 プログラムの
開始から終了まで
1.3 文字コードと
文字コード変換エンジン
1.4 名前空間とQName
1.5 マルチスレッディング

2. 赤紫蘇2データモデル
2.1 チュートリアル
2.2 パーティクル
2.3 aka:sequence
2.3.1 単純型の子要素
2.3.2 複合型の子要素
2.3.1 配列型
2.4 aka::all
2.5 aka:choice
2.5.1 複雑型の子要素
2.5.2 単純型の子要素
2.5.3 バインダクラス
2.5.4 子要素オブジェクト
(aka::item)の扱い
2.5.5 子要素の出現頻度
2.6 属性
2.7 aka:simpleContent
2.8 単純型(aka:simleType)
2.8.1

組み込み型

2.9

配列とポインタ

2.,10 ワイルドカード

3 XMLによる永続化
3.1 シリアライズ
3.2 デシリアライズ

付表
A ライブラリ主要API
B XML Schemaとの
機能対応表
C リリースノート

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()メソッドが定義されています。これも、上記と同様の使用法となります。


赤紫蘇2トップへ sourceforgeプロジェクトページへ