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
00210
00211