diff options
| author | Michael Meskes <meskes@postgresql.org> | 2002-01-13 08:52:09 +0000 |
|---|---|---|
| committer | Michael Meskes <meskes@postgresql.org> | 2002-01-13 08:52:09 +0000 |
| commit | 7138a1e5fc034640afe1c570b426b325389377f4 (patch) | |
| tree | e1a3e4059c240eef50e6aa0638199088b66a44ff /src/interfaces/ecpg/preproc/variable.c | |
| parent | 4b20cc10326a79289a223fc2f639b52e7f816f7e (diff) | |
| download | postgresql-7138a1e5fc034640afe1c570b426b325389377f4.tar.gz | |
- Fixed variable handling for struct members.
- Removed check for array input. An attribut might store the
complete array.
Diffstat (limited to 'src/interfaces/ecpg/preproc/variable.c')
| -rw-r--r-- | src/interfaces/ecpg/preproc/variable.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/interfaces/ecpg/preproc/variable.c b/src/interfaces/ecpg/preproc/variable.c index 3131a76592..cee7ab3cf5 100644 --- a/src/interfaces/ecpg/preproc/variable.c +++ b/src/interfaces/ecpg/preproc/variable.c @@ -5,13 +5,13 @@ struct variable *allvariables = NULL; struct variable * -new_variable(const char *name, struct ECPGtype * type) +new_variable(const char *name, struct ECPGtype * type, int brace_level) { struct variable *p = (struct variable *) mm_alloc(sizeof(struct variable)); p->name = mm_strdup(name); p->type = type; - p->brace_level = braces_open; + p->brace_level = brace_level; p->next = allvariables; allvariables = p; @@ -20,7 +20,7 @@ new_variable(const char *name, struct ECPGtype * type) } static struct variable * -find_struct_member(char *name, char *str, struct ECPGstruct_member * members) +find_struct_member(char *name, char *str, struct ECPGstruct_member * members, int brace_level) { char *next = strchr(++str, '.'), c = '\0'; @@ -41,12 +41,12 @@ find_struct_member(char *name, char *str, struct ECPGstruct_member * members) switch (members->type->type) { case ECPGt_array: - return (new_variable(name, ECPGmake_array_type(members->type->u.element, members->type->size))); + return (new_variable(name, ECPGmake_array_type(members->type->u.element, members->type->size), brace_level)); case ECPGt_struct: case ECPGt_union: - return (new_variable(name, ECPGmake_struct_type(members->type->u.members, members->type->type, members->type->struct_sizeof))); + return (new_variable(name, ECPGmake_struct_type(members->type->u.members, members->type->type, members->type->struct_sizeof), brace_level)); default: - return (new_variable(name, ECPGmake_simple_type(members->type->type, members->type->size))); + return (new_variable(name, ECPGmake_simple_type(members->type->type, members->type->size), brace_level)); } } else @@ -55,10 +55,10 @@ find_struct_member(char *name, char *str, struct ECPGstruct_member * members) if (c == '-') { next++; - return (find_struct_member(name, next, members->type->u.element->u.members)); + return (find_struct_member(name, next, members->type->u.element->u.members, brace_level)); } else - return (find_struct_member(name, next, members->type->u.members)); + return (find_struct_member(name, next, members->type->u.members, brace_level)); } } } @@ -94,7 +94,7 @@ find_struct(char *name, char *next) *next = c; next++; - return find_struct_member(name, next, p->type->u.element->u.members); + return find_struct_member(name, next, p->type->u.element->u.members, p->brace_level); } else { @@ -107,7 +107,7 @@ find_struct(char *name, char *next) /* restore the name, we will need it later on */ *next = c; - return find_struct_member(name, next, p->type->u.members); + return find_struct_member(name, next, p->type->u.members, p->brace_level); } } |
