diff options
author | Christopher Li <sparse@chrisli.org> | 2010-03-30 15:49:16 -0700 |
---|---|---|
committer | Christopher Li <sparse@chrisli.org> | 2010-07-13 19:00:56 +0000 |
commit | 7ac4fa3f14eaf1088bf65cab2243d2015f004e52 (patch) | |
tree | 9237775528539ae29a5eaf1be2b1bf924fc191cd | |
parent | inspect: add some example inspect for symbol and statement (diff) | |
download | sparse-7ac4fa3f14eaf1088bf65cab2243d2015f004e52.tar.gz sparse-7ac4fa3f14eaf1088bf65cab2243d2015f004e52.tar.bz2 sparse-7ac4fa3f14eaf1088bf65cab2243d2015f004e52.zip |
inspect: Add test-inspect program
The test program will launch a gtk treeview windows to
display the symbol node in the AST.
Signed-Off-By: Christopher Li <sparse@chrisli.org>
-rw-r--r-- | Makefile | 17 | ||||
-rw-r--r-- | test-inspect.c | 43 |
2 files changed, 57 insertions, 3 deletions
@@ -15,10 +15,11 @@ AR = ar # CFLAGS += -O0 -DDEBUG -g3 -gdwarf-2 # -HAVE_LIBXML=$(shell pkg-config --exists libxml-2.0 2>/dev/null && echo 'yes') -HAVE_GCC_DEP=$(shell touch .gcc-test.c && \ +HAVE_LIBXML:=$(shell pkg-config --exists libxml-2.0 2>/dev/null && echo 'yes') +HAVE_GCC_DEP:=$(shell touch .gcc-test.c && \ $(CC) -c -Wp,-MD,.gcc-test.d .gcc-test.c 2>/dev/null && \ echo 'yes'; rm -f .gcc-test.d .gcc-test.o .gcc-test.c) +HAVE_GTK2:=$(shell pkg-config --exists gtk+-2.0 2>/dev/null && echo 'yes') CFLAGS += -DGCC_BASE=\"$(shell $(CC) --print-file-name=)\" @@ -46,6 +47,16 @@ INST_PROGRAMS+=c2xml c2xml_EXTRA_OBJS = `pkg-config --libs libxml-2.0` endif +ifeq ($(HAVE_GTK2),yes) +GTK2_CFLAGS := $(shell pkg-config --cflags gtk+-2.0) +GTK2_LIBS := $(shell pkg-config --libs gtk+-2.0) +PROGRAMS += test-inspect +INST_PROGRAMS += test-inspect +test-inspect_EXTRA_DEPS := ast-model.o ast-view.o ast-inspect.o +test-inspect.o $(test-inspect_EXTRA_DEPS): CFLAGS += $(GTK2_CFLAGS) +test-inspect_EXTRA_OBJS := $(GTK2_LIBS) +endif + LIB_H= token.h parse.h lib.h symbol.h scope.h expression.h target.h \ linearize.h bitmap.h ident-list.h compat.h flow.h allocate.h \ storage.h ptrlist.h dissect.h @@ -141,7 +152,7 @@ compat-solaris.o: compat/mmap-blob.c $(LIB_H) compat-mingw.o: $(LIB_H) compat-cygwin.o: $(LIB_H) -.c.o: +%.o: %.c $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $< clean: clean-check diff --git a/test-inspect.c b/test-inspect.c new file mode 100644 index 0000000..e437e11 --- /dev/null +++ b/test-inspect.c @@ -0,0 +1,43 @@ + +#include <stdarg.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <ctype.h> +#include <unistd.h> +#include <fcntl.h> + +#include "lib.h" +#include "allocate.h" +#include "token.h" +#include "parse.h" +#include "symbol.h" +#include "expression.h" + +#include "ast-view.h" + +static void expand_symbols(struct symbol_list *list) +{ + struct symbol *sym; + FOR_EACH_PTR(list, sym) { + expand_symbol(sym); + } END_FOR_EACH_PTR(sym); +} + +int main(int argc, char **argv) +{ + struct string_list *filelist = NULL; + char *file; + struct symbol_list *view_syms = NULL; + + gtk_init(&argc,&argv); + expand_symbols(sparse_initialize(argc, argv, &filelist)); + FOR_EACH_PTR_NOTAG(filelist, file) { + struct symbol_list *syms = sparse(file); + expand_symbols(syms); + concat_symbol_list(syms, &view_syms); + } END_FOR_EACH_PTR_NOTAG(file); + treeview_main(view_syms); + return 0; +} + |