Chasm
|
00001 00019 #ifndef _CompilerCharacteristics_h_ 00020 #define _CompilerCharacteristics_h_ 00021 00022 #include "F90ArrayDataType.h" 00023 00024 #ifdef __cplusplus 00025 extern "C" { 00026 #endif 00027 00028 00033 typedef enum 00034 { 00035 F90_Array, 00036 F90_Pointer, 00037 F90_ArrayPointer, 00039 F90_ArrayPointerInDerived, 00040 F90_DerivedPointer, 00041 F90_NonArray 00042 } F90_DescType; 00043 00044 00054 typedef enum 00055 { 00056 F90_Hidden, 00057 F90_NoHidden, 00058 F90_PointerWithHiddenDesc 00060 } F90_HiddenDescType; 00061 00062 00074 typedef struct 00075 { 00076 int (*setArrayDesc) (void* desc, 00077 void* base_addr, 00078 int rank, 00079 F90_DescType kind, 00080 F90_ArrayDataType data_type, 00081 unsigned long element_size, 00082 const long* lowerBound, 00083 const unsigned long* extent, 00084 const long* strideMult 00085 ); 00086 00087 int (*resetArrayDesc) (void* desc, 00088 void* base_addr, 00089 int rank, 00090 const long* lowerBound, 00091 const unsigned long* extent, 00092 const long* strideMult 00093 ); 00094 00095 void* (*createArrayDesc) (void* desc, 00096 void* hidden, 00097 int rank, 00098 F90_DescType kind 00099 ); 00100 00101 int (*createArrayDescAndHidden) (void* src, 00102 int rank, 00103 F90_DescType kind, 00104 void** desc, 00105 void** hidden 00106 ); 00107 int (*freeArrayDescAndHidden) (F90_DescType kind, void* desc, void* hidden); 00108 00109 int (*copyToArrayDescAndHidden) (void* src, 00110 int rank, 00111 F90_DescType kind, 00112 void* dest, 00113 void* hidden 00114 ); 00115 00116 void* (*getArrayBaseAddress ) (const void* desc, int rank); 00117 unsigned long (*getArraySize) (const void* desc, int rank); 00118 00119 long (*getArrayLowerBound) (const void* desc, int rank, int dim); 00120 unsigned long (*getArrayExtent ) (const void* desc, int rank, int dim); 00121 long (*getArrayStrideMult) (const void* desc, int rank, int dim); 00122 00123 unsigned long (*getArrayDescSize) (int rank); 00124 00125 int (*nullifyArrayDesc) (void* desc, int rank); 00126 int (*verifyArrayDesc ) (const void* desc, int rank); 00127 00128 F90_HiddenDescType (*hiddenArrayDescType) (F90_DescType kind); 00129 00130 char* (*getMangledName) (const char* fun_name, const char* mod_name); 00131 00132 int (*printArrayDesc ) (const void* desc, int rank); 00133 int (*equalsArrayDesc) (const void* desc2, const void* desc1, int rank); 00134 00135 } F90_CompilerCharacteristics; 00136 00137 00149 int F90_SetCompilerCharacteristics(F90_CompilerCharacteristics* cc, 00150 const char* compiler 00151 ); 00152 00153 00154 #ifdef __cplusplus 00155 } /* extern "C" */ 00156 #endif 00157 00158 #endif /* _CompilerCharacteristics_h_ */