インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
CFI_dim_t は、C 構造体の型宣言名です。配列の 1 つの次元の下限、範囲、メモリーストライド情報を表します。CFI_dim_t には、少なくとも次のメンバーが含まれます (順不同)。
CFI_index_t lower_bound - 次元の下限値。
CFI_index_t extent - 次元の要素数、または大きさ引き継ぎ配列の最後の次元の場合は -1。
CFI_index_t sm - 次元のメモリーストライド。次元の連続する 2 つの要素のアドレス間の距離 (バイト数)。
CFI_cdesc_t は、C 構造体の宣言名で、フレキシブルな配列メンバーが含まれます。構造体の最初の 3 つのメンバーは、順に base_addr、elem_len、version です。最後のメンバーは dim です。その他のメンバーはすべて version と dim の間になければなりません。
void * base_addr - C 記述子により引数との互換性を保持するオブジェクトが、割り当てられていない割付けオブジェクトまたは関連付けが解除されたポインターの場合、値は NULL ポインターです。オブジェクトの値が 0 の場合、値は NULL ポインターではなく、処理系に依存します。その他の場合、値はオブジェクトのベースアドレスです。スカラーのベースアドレスは、その C アドレスです。配列のベースアドレスは、Fortran 配列要素順の最初の要素の C アドレスです。
size_t elem_len - オブジェクトがスカラーの場合は、オブジェクトの領域サイズ (バイト)。その他の場合は、オブジェクトの 1 つの要素の領域サイズ (バイト)。
int version - この C 記述子の形式と意味を定義したソースファイル ISO_Fortran_binding.h にある CFI_VERSION の値。
CFI_rank_t rank - Fortran オブジェクトの次元数。オブジェクトがスカラーの場合は 0。
CFI_type_t type - オブジェクトの型の指定子。互換性のあるすべての C 組込み型には指定子があります。指定子は、オブジェクトの型が互換性のある構造体か、または不明かも示します。以下の表のマクロは、各型コード指定子に対応する値を提供します。
マクロ名 | C のデータ型 |
---|---|
CFI_type_signed_char | signed char |
CFI_type_short | short int |
CFI_type_int | int |
CFI_type_long | long int |
CFI_type_long_long | long long int |
CFI_type_size_t | size_t |
CFI_type_int8_t | int8_t |
CFI_type_int16_t | int16_t |
CFI_type_int32_t | int32_t |
CFI_type_int64_t | int64_t |
CFI_type_int_least8_t | int_least8_t |
CFI_type_int_least16_t | int_least16_t |
CFI_type_int_least32_t | int_least32_t |
CFI_type_int_least64_t | int_least64_t |
CFI_type_int_fast8_t | int_fast8_t |
CFI_type_int_fast16_t | int_fast16_t |
CFI_type_int_fast32_t | int_fast32_t |
CFI_type_int_fast64_t | int_fast64_t |
CFI_type_intmax_t | intmax_t |
CFI_type_intptr_t | intptr_t |
CFI_type_ptrdiff_t | ptrdiff_t |
CFI_type_float | float |
CFI_type_double | double |
CFI_type_long_double | long double |
CFI_type_float_Complex | float _Complex |
CFI_type_double_Complex | double _Complex |
CFI_type_long_double_Complex | long double _Complex |
CFI_type_Bool | _Bool |
CFI_type_char | char |
CFI_type_cptr | void * |
CFI_type_struct | 互換性のある C 構造体 |
CFI_type_other | 指定されていない限りなし |
CFI_type_other の値は負で、ほかのすべての型指定子と異なります。
CFI_type_struct は、Fortran 派生型と互換性のある C 構造体を指定します。値は正で、ほかのすべての型指定子と異なります。
C の型が Fortran 処理系でサポートされる Fortran の型および種別と互換性がない場合、マクロは負の値になります。
その他の場合、組込み型は正の値になります。
CFI_attribute_t attribute - 属性コードの値。オブジェクトが割付けデータポインターか、割付けでない非ポインター・データ・オブジェクトかを示します。値は、負でない数値で、ほかの属性コードマクロの値とは異なります。
以下の表のマクロは、各属性コード指定子に対応する値を提供します。
マクロ |
属性コードの意味 |
---|---|
CFI_attribute_pointer |
データ・ポインター・オブジェクト |
CFI_attribute_allocatable |
割付けオブジェクト |
CFI_attribute_other |
割付けでない非ポインター・オブジェクト |
CFI_attribute_pointer は、Fortran POINTER 属性を持つデータ・オブジェクトを指定します。
CFI_attribute_allocatable は、Fortran ALLOCATABLE 属性を持つデータ・オブジェクトを指定します。
CFI_attribute_other は、割付けでない非ポインター・オブジェクトを指定します。
CFI_dim_t dim - dim 配列の要素数がオブジェクトのランクと等しくなります。配列の各要素には、Fortran オブジェクトの対応する次元の下限、範囲、メモリーストライド情報が含まれています。
配列ポインターまたは割付け配列の C 記述子の場合、記述子の dim メンバーの各要素の下限メンバーの値は、引数の関連付け、割り当て、またはポインターの関連付けによって決まります。割付けでない非ポインター・オブジェクトの C 記述子の場合、記述子の dim メンバーの各要素の下限メンバーの値は 0 です。
大きさ引き継ぎ配列の C 記述子の場合、dim メンバーの最後の要素の範囲メンバーの値は -1 です。Fortran CHARACTER オブジェクトの elem_len の値は、文字長 × その種別の 1 文字のバイト数です。種別が C_CHAR の場合、値は文字長と等しくなります。
CFI_CDESC_T を除いて、ISO_Fortran_binding.h で定義されている各マクロは、#if 前処理ディレクティブでの使用に適した整数定数式 (1 トークンまたは括弧で囲まれた式のいずれか) に展開されます。
CFI_CDESC_T は関数のようなマクロです。引数として作成する C 記述子のランクを受け取り、そのランクの C 記述子として使用する変数を定義するため、適切なサイズとアライメントの修飾されていない型に評価します。引数は、0 以上 CFI_MAX_RANK 以下の値の整数定数式です。CFI_CDESC_T で宣言された変数へのポインターは、CFI_cdesc_t * にキャストできます。CFI_CDESC_T で宣言された変数には、初期化子が必要です。
CFI_CDESC_T マクロは、C 記述子にメモリーを提供します。マクロで宣言されたエンティティーのアドレスは、明示的にキャストしない限り、CFI_cdesc_t * 型の仮引数に対応する実引数では使用できません。
CFI_index_t は、2 つのポインターの減算結果を表すことができる符号付き整数型の型宣言名です。
CFI_MAX_RANK マクロの値は、サポートされる最大ランク (31) です。CFI_rank_t は、サポートされる最大ランクを表すことができる整数型の型宣言名です。
CFI_VERSION マクロの値はプロセッサー依存で、このマクロを含む ISO_Fortran_binding.h ソースファイルのバージョンをエンコードします。ソースファイルの新しいバージョンが以前のバージョンと互換性がない場合、この値は大きくなります。
CFI_attribute_t は、属性コードの値を表すことができる整数型の型宣言名です。
CFI_type_tは、サポートされる型指定子の値を表すことができる整数型の型宣言名です。
以下の表のマクロは、エラーコードとして使用されます。CFI_SUCCESS マクロは、整数定数 0 です。その他のマクロの値は非ゼロで、ほかのエラーコード・マクロの値とは異なります。
マクロ名 |
エラー状態 |
---|---|
CFI_SUCCESS | エラーは検出されませんでした。 |
CFI_ERROR_BASE_ADDR_NULL | C 記述子のベースアドレス・メンバーが、非 NULL ポインターを必要とするコンテキストで NULL ポインターです。 |
CFI_ERROR_BASE_ADDR_NOT_NULL | C 記述子のベースアドレス・メンバーが、NULL ポインターを必要とするコンテキストで NULL ポインターではありません。 |
CFI_INVALID_ELEM_LEN | C 記述子の要素の長さメンバーの値が無効です。 |
CFI_INVALID_RANK | C 記述子のランクメンバーの値が無効です。 |
CFI_INVALID_TYPE | C 記述子の型メンバーの値が無効です。 |
CFI_INVALID_ATTRIBUTE | C 記述子の属性メンバーの値が無効です。 |
CFI_INVALID_EXTENT | CFI_dim_t 構造体の範囲メンバーの値が無効です。 |
CFI_INVALID_DESCRIPTOR | C 記述子が無効です。 |
CFI_ERROR_MEM_ALLOCATION | メモリー割り当てに失敗 |
CFI_ERROR_OUT_OF_BOUNDS | 参照が範囲外です。 |