PostgreSQL Source Code  git master
ecpgtype.h
Go to the documentation of this file.
1 /*
2  * This file implements a data structure that is built and maintained by the
3  * preprocessor.
4  *
5  * All types that can be handled for host variable declarations has to
6  * be handled eventually.
7  *
8  * src/interfaces/ecpg/include/ecpgtype.h
9  */
10 
11 /*
12  * Here are all the types that we are to handle. Note that it is the type
13  * that is registered and that has nothing whatsoever to do with the storage
14  * class.
15  *
16  * Simple types
17  * integers: char, short, int, long (signed and unsigned)
18  * floats: float, double
19  *
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 elements
30  * would probably work fine:
31  */
32 
33 #ifndef _ECPGTYPE_H
34 #define _ECPGTYPE_H
35 
36 #ifdef __cplusplus
37 extern "C"
38 {
39 #endif
40 
42 {
49  ECPGt_numeric, /* this is a decimal that stores its digits in
50  * a malloced array */
51  ECPGt_decimal, /* this is a decimal that stores its digits in
52  * a fixed array */
59  ECPGt_descriptor, /* sql descriptor, no C 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 };
68 
69  /* descriptor items */
71 {
87  ECPGd_EODT, /* End of descriptor types. */
89 };
90 
91 #define IS_SIMPLE_TYPE(type) (((type) >= ECPGt_char && (type) <= ECPGt_interval) || ((type) == ECPGt_string))
92 
93 /* we also have to handle different statement types */
95 {
100 };
101 
102 #ifdef __cplusplus
103 }
104 #endif
105 
106 #endif /* _ECPGTYPE_H */
ECPG_statement_type
Definition: ecpgtype.h:94
ECPGdtype
Definition: ecpgtype.h:70
ECPGttype
Definition: ecpgtype.h:41