aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2004-10-22 20:13:42 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 21:03:38 -0700
commitf9344b85c8b0b06fc7aa94e8615bf88dd4b25e54 (patch)
treecae584be47f7b7c0522d5e93c8122d29e22b4a4e /show-parse.c
parentMake "check" (aka "sparse") check for context imbalance. (diff)
downloadsparse-f9344b85c8b0b06fc7aa94e8615bf88dd4b25e54.tar.gz
sparse-f9344b85c8b0b06fc7aa94e8615bf88dd4b25e54.tar.bz2
sparse-f9344b85c8b0b06fc7aa94e8615bf88dd4b25e54.zip
Get rid of the old "iterate()" interfaces.
Use FOR_EACH_PTR() instead, or the much fancier iterators for basic blocks.
Diffstat (limited to 'show-parse.c')
-rw-r--r--show-parse.c62
1 files changed, 18 insertions, 44 deletions
diff --git a/show-parse.c b/show-parse.c
index d793a89..248e220 100644
--- a/show-parse.c
+++ b/show-parse.c
@@ -109,29 +109,24 @@ const char *modifier_string(unsigned long mod)
return buffer;
}
-void show_struct_member(struct symbol *sym, void *data, int flags)
+void show_struct_member(struct symbol *sym)
{
- if (flags & ITERATE_FIRST)
- printf(" {\n\t");
- printf("%s:%d:%ld at offset %ld", show_ident(sym->ident), sym->bit_size, sym->ctype.alignment, sym->offset);
+ printf("\t%s:%d:%ld at offset %ld", show_ident(sym->ident), sym->bit_size, sym->ctype.alignment, sym->offset);
if (sym->fieldwidth)
printf("[%d..%d]", sym->bit_offset, sym->bit_offset+sym->fieldwidth-1);
- if (flags & ITERATE_LAST)
- printf("\n} ");
- else
- printf(", ");
-}
-
-static void show_one_symbol(struct symbol *sym, void *sep, int flags)
-{
- show_symbol(sym);
- if (!(flags & ITERATE_LAST))
- printf("%s", (const char *)sep);
+ printf("\n");
}
void show_symbol_list(struct symbol_list *list, const char *sep)
{
- symbol_iterate(list, show_one_symbol, (void *)sep);
+ struct symbol *sym;
+ const char *prepend = "";
+
+ FOR_EACH_PTR(list, sym) {
+ puts(prepend);
+ prepend = ", ";
+ show_symbol(sym);
+ } END_FOR_EACH_PTR(sym);
}
struct type_name {
@@ -331,12 +326,15 @@ void show_symbol(struct symbol *sym)
* Show actual implementation information
*/
switch (type->type) {
- case SYM_STRUCT:
- symbol_iterate(type->symbol_list, show_struct_member, NULL);
- break;
+ struct symbol *member;
+ case SYM_STRUCT:
case SYM_UNION:
- symbol_iterate(type->symbol_list, show_struct_member, NULL);
+ printf(" {\n");
+ FOR_EACH_PTR(type->symbol_list, member) {
+ show_struct_member(member);
+ } END_FOR_EACH_PTR(member);
+ printf("}\n");
break;
case SYM_FN: {
@@ -572,30 +570,6 @@ int show_statement(struct statement *stmt)
return 0;
}
-static void show_one_statement(struct statement *stmt, void *sep, int flags)
-{
- show_statement(stmt);
- if (!(flags & ITERATE_LAST))
- printf("%s", (const char *)sep);
-}
-
-void show_statement_list(struct statement_list *stmt, const char *sep)
-{
- statement_iterate(stmt, show_one_statement, (void *)sep);
-}
-
-static void show_one_expression(struct expression *expr, void *sep, int flags)
-{
- show_expression(expr);
- if (!(flags & ITERATE_LAST))
- printf("%s", (const char *)sep);
-}
-
-void show_expression_list(struct expression_list *list, const char *sep)
-{
- expression_iterate(list, show_one_expression, (void *)sep);
-}
-
static int show_call_expression(struct expression *expr)
{
struct symbol *direct;