+#ifndef _ECPG_PREPROC_TYPE_H
+#define _ECPG_PREPROC_TYPE_H
+
#include "ecpgtype.h"
struct ECPGtype;
struct ECPGtype
{
enum ECPGttype type;
- long size; /* For array it is the number of elements.
- * For varchar it is the maxsize of the
- * area. */
- char *struct_sizeof; /* For a struct this is the sizeof() type as string */
+ char *size; /* For array it is the number of elements. For
+ * varchar it is the maxsize of the area. */
+ char *struct_sizeof; /* For a struct this is the sizeof() type as
+ * string */
union
{
- struct ECPGtype *element; /* For an array this is the type
- * of the element */
-
- struct ECPGstruct_member *members;
- /* A pointer to a list of members. */
+ struct ECPGtype *element; /* For an array this is the type of
+ * the element */
+ struct ECPGstruct_member *members; /* A pointer to a list of
+ * members. */
} u;
+ int lineno;
};
/* Everything is malloced. */
void ECPGmake_struct_member(char *, struct ECPGtype *, struct ECPGstruct_member **);
-struct ECPGtype *ECPGmake_simple_type(enum ECPGttype, long);
+struct ECPGtype *ECPGmake_simple_type(enum ECPGttype, char *, int);
struct ECPGtype *ECPGmake_varchar_type(enum ECPGttype, long);
-struct ECPGtype *ECPGmake_array_type(struct ECPGtype *, long);
+struct ECPGtype *ECPGmake_array_type(struct ECPGtype *, char *);
struct ECPGtype *ECPGmake_struct_type(struct ECPGstruct_member *, enum ECPGttype, char *);
struct ECPGstruct_member *ECPGstruct_member_dup(struct ECPGstruct_member *);
size is the maxsize in case it is a varchar. Otherwise it is the size of
the variable (required to do array fetches of structs).
*/
-void ECPGdump_a_type(FILE *, const char *, struct ECPGtype *, const char *, struct ECPGtype *, const char *, const char *, const long, const char *, const char *);
+void ECPGdump_a_type(FILE *, const char *, struct ECPGtype *,
+ const char *, struct ECPGtype *, const char *,
+ const char *, char *, const char *, const char *);
/* A simple struct to keep a variable and its type. */
struct ECPGtemp_type
const char *name;
};
-extern const char *ECPGtype_name(enum ECPGttype type);
+extern const char *ecpg_type_name(enum ECPGttype type);
/* some stuff for whenever statements */
enum WHEN_TYPE
struct index
{
- int index1;
- int index2;
+ char *index1;
+ char *index2;
char *str;
};
+struct su_symbol
+{
+ char *su;
+ char *symbol;
+};
+
+struct prep
+{
+ char *name;
+ char *stmt;
+ char *type;
+};
+
struct this_type
{
enum ECPGttype type_enum;
char *type_str;
- int type_dimension;
- int type_index;
- char * type_sizeof;
+ char *type_dimension;
+ char *type_index;
+ char *type_sizeof;
};
struct _include_path
char *name;
char *command;
char *connection;
+ bool opened;
struct arguments *argsinsert;
struct arguments *argsresult;
struct cursor *next;
char *name;
struct this_type *type;
struct ECPGstruct_member *struct_member_list;
+ int brace_level;
struct typedefs *next;
};
char *old;
char *new;
int pertinent;
+ void *used;
struct _defines *next;
};
char *name;
int value;
} ScanKeyword;
+
+#endif /* _ECPG_PREPROC_TYPE_H */