Main Page | Modules | Data Structures | File List | Data Fields | Globals

CompilerCharacteristics.h

Go to the documentation of this file.
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_ */

Generated on Mon Sep 29 17:57:06 2003 for Chasm by doxygen 1.3.4