フィーチャー要素パス
次の関数について説明します。
要素パスは要素ツリーの要素の位置の記述に使用します。要素パスは、ProElement 関数のいくつかで、すでにツリーにある要素を参照する便利な方法として使用されます。
ProElempath オブジェクトは、不透過ポインタとして宣言されます。これはツリーのルートから、参照される要素へ下がるパスの記述を含みます。ツリー階層のほとんどのレベルで、該当するパスメンバーは要素の要素 ID (そのレベルでは一意) になります。パスがある配列要素からそのメンバー配列の 1 つにステップするとき、要素パスはその要素の配列インデックスを含んでいます。
ProElempath の値を設定するために、 では、要素 ID または配列要素のインデックスを記述する ProElempathItem と呼ばれる構造体を使います。そのため、ProElempathItem 構造体の配列は、ProElempath の不透過な内容と同じものが可視になったものです。
ProElempathItem の宣言は次のとおりです。
typedef struct path
{
ProElempathItemtype type;
union
{
int elem_id;
int elem_index;
} path_item;
} ProElempathItem;
typedef enum
{
PRO_ELEM_PATH_ITEM_TYPE_ID,
PRO_ELEM_PATH_ITEM_TYPE_INDEX
} ProElempathItemtype;
ProElempath オブジェクト、ProElempathItem 構造体、およびこのセクションのすべての関数は、ヘッダーファイル ProElempath.h で宣言します。
関数
ProElempathAlloc() で新しい空の
ProElempath オブジェクトを割り当て、
ProElempathFree() で
ProElempath を解放します。
関数
ProElempathDataSet() を使って、
ProElempathItem 構造体の配列をコピーし、
ProElempath の内容を設定できます。
関数
ProElempathDataGet() は、
ProElempath の内容を読み取り、
ProElempathItem 構造体の配列に入れます。配列は、関数を呼び出す前に
ProArrayAlloc() を呼び出して割り当てる必要がある拡張可能な配列です。
関数
ProElempathCopy() は、
ProElempath オブジェクトの内容の 1 つを別のオブジェクトにコピーします。出力オブジェクトは関数で割り当てます。
関数
ProElempathCompare() は、2 つの
ProElempath オブジェクトが同じ要素を参照しているかどうかを通知します。
関数
ProElempathSizeGet() は、
ProElempath オブジェクトに含まれる要素パスの長さを通知します。