linux-sparse.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 3/4] inspect: Add test-inspect program
@ 2010-04-02 18:43 Christopher Li
  0 siblings, 0 replies; only message in thread
From: Christopher Li @ 2010-04-02 18:43 UTC (permalink / raw)
  To: Linux-Sparse; +Cc: Kamil Dudka, Josh Triplett

[-- Attachment #1: Type: text/plain, Size: 98 bytes --]

The test program will launch a gtk treeview windows to
display the symbol node in the AST.

Chris

[-- Attachment #2: 0003-inspect-Add-test-inspect-program.patch --]
[-- Type: application/octet-stream, Size: 3092 bytes --]

From 5488960162b85e4bace29d20ac44dcea19b94888 Mon Sep 17 00:00:00 2001
From: Christopher Li <sparse@chrisli.org>
Date: Tue, 30 Mar 2010 15:49:16 -0700
Subject: [PATCH 3/4] inspect: Add test-inspect program

The test program will launch a gtk treeview windows to
display the symbol node in the AST.
---
 Makefile       |   17 ++++++++++++++---
 test-inspect.c |   43 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+), 3 deletions(-)
 create mode 100644 test-inspect.c

diff --git a/Makefile b/Makefile
index b07f472..2825e58 100644
--- a/Makefile
+++ b/Makefile
@@ -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;
+}
+ 
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2010-04-02 18:43 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-02 18:43 [PATCH 3/4] inspect: Add test-inspect program Christopher Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).