データ・オブジェクトの属性を調べるには、まずオブジェクトの型を判断し、その型の適切な属性値を求めなければなりません。データベースにデータ情報を問い合わせるための関数を表 9-4 に示します。セクション 3 にこれらの関数のマニュアル・ページがあります。詳細は、該当するマニュアル・ページを参照してください。
表 9-4 データ型データベース問い合わせ関数
関数 |
説明 |
---|---|
DtDtsBufferToAttributeList() |
指定バッファのデータ属性のリストを検索します。 |
DtDtsBufferToAttributeValue() |
指定バッファのデータ属性を検索します。 |
DtDtsBufferToDataType() |
指定バッファのデータ型名を検索します。 |
DtDtsDataToDataType() |
指定データ・セットのデータ型を検索します。 |
DtDtsDataTypeIsAction() |
結果として保存されたディレクトリのデータ型を返します。 |
DtDtsDataTypeNames() |
使用可能なデータ型のリストを検索します。 |
DtDtsDataTypeToAttributeList() |
指定データ属性名の属性リストを検索します。 |
DtDtsDataTypeToAttributeValue() |
指定データ属性名の属性値を検索します。 |
DtDtsFileToAttributeList() |
指定ファイルのデータ属性のリストを検索します。 |
DtDtsFileToAttributeValue() |
指定ファイルのデータ属性値を検索します。 |
DtDtsFileToDataType() |
指定ファイルのデータ型を検索します。 |
DtDtsFindAttribute() |
属性 name が value に一致するデータ型のリストを検索します。 |
DtDtsFreeAttributeList() |
指定属性リストのメモリを解放します。 |
DtDtsFreeAttributeValue() |
指定属性値のメモリを解放します。 |
DtDtsFreeDataType() |
指定データ型名のアプリケーション・メモリを解放します。 |
DtDtsFreeDataTypeNames() |
DtDtsDataTypeNames() または DtDtsFindAttribute() を呼び出して作成されたメモリを解放します。 |
DtDtsIsTrue() |
文字列を論理値に変換する簡易関数 |
DtDtsRelease() |
一般的には再読み込みの準備として、データ型データベース情報の読み込みを解除します。 |
DtDtsSetDataType() |
指定されたディレクトリのデータ型を設定します。 |
DtsLoadDataTypes() |
データ型関数のためにデータベース・フィールドを初期化し、読み込みます。アクションまたはアクション型を使用する必要がなく、パフォーマンスを向上させたい場合は、DtDbLoad() の代わりに使用します。アクションを使用する必要がある場合は DtDbLoad() を使用します。 |
データ型を検査して属性を検索するには、簡易、中間、拡張の 3 つの方法があります。
データ型を検査するための最も簡単な方法は、次の関数を使用することです。
DtDtsFileToAttributeList()
DtDtsFileToAttributeValue()
これらの関数を使用すると、ファイルの型が検査され、単一の属性またはリスト全体が検索されます。システム・コールが行われ、データ型の検査と属性の検索が行われます。次の関数は、中間データ型検査関数を呼び出します。
DtDtsBufferToAttributeList()
DtDtsBufferToAttributeValue()
バッファは、読み取り権/書き込み権を持つ通常ファイルに一致するモードを持つと想定されます。読み取り専用バッファの型の検査については、「拡張データ型検査」を参照してください。
データの型を検査して属性を検索する場合、プロセスのデータ型検査部分は、パフォーマンスの点で最もコストがかかります。データ型の検査を 2 番目の方法で行うと、データ型検査のための関数と属性検索のための関数を切り離すことによって、パフォーマンスを改善できます。中間データ型検査には、次の関数を使用します。
DtDtsBufferToDataType()
DtDtsFileToDataType()
DtDtsDataTypeToAttributeList()
DtDtsDataTypeToAttributeValue()
アプリケーションが複数の属性値を問い合わせる場合には、これらの関数を使用します。これらの関数を使用すると、オブジェクトの型が検査され、その型を使用して属性リストから 1 つ以上の属性を検索します。
データ型検査と属性の検索を行うには、中間データ型関数を使用するようにしてください。これらの関数は、拡張データ型関数を呼び出し、バッファについて簡易データ型検査と同様に想定します。
拡張データ型検査では、システム・コール、データ型、さらには属性検索も別々に行われます。拡張データ型検査では、あらかじめ初期化されてデータ型関数の一部としては含まれない既存のシステム・コールからのデータを使用するので、コード化が複雑になります。拡張データ型検査には、次の関数を使用してください。
DtDtsDataToDataType()
読み取り専用バッファの型を検査するには、st_mode フィールドが S_IFREG | S_IROTH |S_IRGRP | S_IRUSR に設定された stat 構造体が渡されなければなりません。
データベースが読み込まれるとアクションの検査ができるようになるため、データベースの各アクションに対して合成データ型が生成されます。これらのデータ型は、次の 2 つの追加の属性を持つことができます。
IS_ACTION は、このデータ型がアクションであることをユーザに知らせる文字列論理値です。IS_ACTION に文字列 true (大文字と小文字の区別はありません) が設定されている場合、データはアクションです。
IS_SYNTHETIC は、このデータ型が ACTION テーブルのエントリから生成されたことをユーザに知らせる文字列論理値です。IS_SYNTHETIC に true が設定されている場合、データ型は生成されています。