codekingpro/portable-devtools
116k
1/*2 * This file implements a data structure that is built and maintained by the3 * preprocessor.4 *5 * All types that can be handled for host variable declarations has to6 * be handled eventually.7 *8 * src/interfaces/ecpg/include/ecpgtype.h9 */10 11/*12 * Here are all the types that we are to handle. Note that it is the type13 * that is registered and that has nothing whatsoever to do with the storage14 * class.15 *16 * Simple types17 * integers: char, short, int, long (signed and unsigned)18 * floats: float, double19 *20 * Complex types:21 * VARCHAR, VARCHAR2 - Strings with length (maxlen is given in the declaration)22 * Arrays of simple types and of VARCHAR, VARCHAR2 (size given in declaration)23 * Records build of simple types, arrays and other structs.24 *25 * Complicating things:26 * typedefs and struct names!27 *28 * Conclusion:29 * This is a typically recursive definition. A structure of typed list elements30 * would probably work fine:31 */32 33#ifndef _ECPGTYPE_H34#define _ECPGTYPE_H35 36#ifdef __cplusplus37extern "C"38{39#endif40 41enum ECPGttype42{43 ECPGt_char = 1, ECPGt_unsigned_char, ECPGt_short, ECPGt_unsigned_short,44 ECPGt_int, ECPGt_unsigned_int, ECPGt_long, ECPGt_unsigned_long,45 ECPGt_long_long, ECPGt_unsigned_long_long,46 ECPGt_bool,47 ECPGt_float, ECPGt_double,48 ECPGt_varchar, ECPGt_varchar2,49 ECPGt_numeric, /* this is a decimal that stores its digits in50 * a malloced array */51 ECPGt_decimal, /* this is a decimal that stores its digits in52 * a fixed array */53 ECPGt_date,54 ECPGt_timestamp,55 ECPGt_interval,56 ECPGt_array,57 ECPGt_struct,58 ECPGt_union,59 ECPGt_descriptor, /* sql descriptor, no C variable */60 ECPGt_char_variable,61 ECPGt_const, /* a constant is needed sometimes */62 ECPGt_EOIT, /* End of insert types. */63 ECPGt_EORT, /* End of result types. */64 ECPGt_NO_INDICATOR, /* no indicator */65 ECPGt_string, /* trimmed (char *) type */66 ECPGt_sqlda, /* C struct descriptor */67 ECPGt_bytea68};69 70 /* descriptor items */71enum ECPGdtype72{73 ECPGd_count = 1,74 ECPGd_data,75 ECPGd_di_code,76 ECPGd_di_precision,77 ECPGd_indicator,78 ECPGd_key_member,79 ECPGd_length,80 ECPGd_name,81 ECPGd_nullable,82 ECPGd_octet,83 ECPGd_precision,84 ECPGd_ret_length,85 ECPGd_ret_octet,86 ECPGd_scale,87 ECPGd_type,88 ECPGd_EODT, /* End of descriptor types. */89 ECPGd_cardinality90};91 92#define IS_SIMPLE_TYPE(type) (((type) >= ECPGt_char && (type) <= ECPGt_interval) || ((type) == ECPGt_string) || ((type) == ECPGt_bytea))93 94/* we also have to handle different statement types */95enum ECPG_statement_type96{97 ECPGst_normal,98 ECPGst_execute,99 ECPGst_exec_immediate,100 ECPGst_prepnormal,101 ECPGst_prepare,102 ECPGst_exec_with_exprlist103};104 105#ifdef __cplusplus106}107#endif108 109#endif /* _ECPGTYPE_H */110 