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 */
68 };
69 
70  /* descriptor items */
72 {
88  ECPGd_EODT, /* End of descriptor types. */
90 };
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 */
96 {
103 };
104 
105 #ifdef __cplusplus
106 }
107 #endif
108 
109 #endif /* _ECPGTYPE_H */
ECPG_statement_type
Definition: ecpgtype.h:95
ECPGdtype
Definition: ecpgtype.h:71
ECPGttype
Definition: ecpgtype.h:41