scalinfo.h

Go to the documentation of this file.
00001 
00020 #if !defined(INC_OSKI_SCALINFO_H)
00021 
00022 #define INC_OSKI_SCALINFO_H
00023 
00028 
00032 typedef struct tagComplex_t
00033 {
00034   float real;        
00035   float imag;        
00036 } complex_t;
00037 
00041 typedef struct tagDoublecomplex_t
00042 {
00043   double real;       
00044   double imag;       
00045 } doublecomplex_t;
00046 
00048 #define _COMPLEX complex_t
00049 
00050 #define _DOUBLE_COMPLEX double_complex_t
00051 
00053 #define _RE(x)  (x).real
00054 
00055 #define _IM(x)  (x).imag
00056 
00062 typedef struct tagBebop_scalinfo_t
00063 {
00064   oski_id_t id;        
00065   const char *name;     
00066   char tag;         
00067   size_t num_bytes;     
00068 }
00069 oski_scalinfo_t;
00070 
00081 #define OSKI_SCALIND(macro_tag, conc_typ, name, tag) \
00082     { OSKI_SCALIND_##macro_tag, name, tag, sizeof(conc_typ) }
00083 
00085 #define OSKI_SCALIND_END      INVALID_ID
00086 #define OSKI_SCALIND_END_REC  OSKI_SCALIND(END, char, "", (char)NULL)
00087 
00099 #define OSKI_SCALVAL(macro_tag, conc_typ, name, tag) \
00100     { OSKI_SCALVAL_##macro_tag, name, tag, sizeof(conc_typ) }
00101 
00103 #define OSKI_SCALVAL_END      INVALID_ID
00104 #define OSKI_SCALVAL_END_REC  OSKI_SCALVAL(END, char, "", (char)NULL)
00105 
00115 
00117 #define OSKI_SCALIND_INT       1
00118 #define OSKI_SCALIND_INT_REC   OSKI_SCALIND(INT, int, "integer", 'i')
00119 
00122 #define OSKI_SCALIND_LONG      2
00123 #define OSKI_SCALIND_LONG_REC  OSKI_SCALIND(LONG, long, "long", 'l')
00124 
00127 
00140 
00142 #define OSKI_SCALVAL_SINGLE      1
00143 #define OSKI_SCALVAL_SINGLE_REC  OSKI_SCALVAL(SINGLE, float, "single", 's')
00144 
00147 #define OSKI_SCALVAL_DOUBLE      2
00148 #define OSKI_SCALVAL_DOUBLE_REC  OSKI_SCALVAL(DOUBLE, double, "double", 'd')
00149 
00152 #define OSKI_SCALVAL_COMPLEX      3
00153 #define OSKI_SCALVAL_COMPLEX_REC  \
00154     OSKI_SCALVAL(COMPLEX, complex_t, "complex", 'c')
00155 
00158 #define OSKI_SCALVAL_DOUBLECOMPLEX      4
00159 #define OSKI_SCALVAL_DOUBLECOMPLEX_REC  \
00160     OSKI_SCALVAL(DOUBLECOMPLEX, doublecomplex_t, "double_complex", 'z')
00161 
00164 
00172 size_t oski_GetNumScalarIndexTypes (void);
00173 
00177 const oski_scalinfo_t *oski_LookupScalarIndexInfo (oski_id_t id);
00178 
00182 const char *oski_GetScalarIndexName (oski_id_t id);
00183 
00187 char oski_GetScalarIndexTag (oski_id_t id);
00188 
00192 size_t oski_GetNumScalarValueTypes (void);
00193 
00197 const oski_scalinfo_t *oski_LookupScalarValueInfo (oski_id_t id);
00198 
00202 const char *oski_GetScalarValueName (oski_id_t id);
00203 
00207 char oski_GetScalarValueTag (oski_id_t id);
00208 
00209 #endif /* !defined(INC_OSKI_SCALINFO_H) */
00210 
00211 /* eof */

Generated on Wed Sep 19 16:41:18 2007 for BeBOP Optimized Sparse Kernel Interface Library by  doxygen 1.4.6