From c2cc7db1ccde3eb2ff723c4b7b213a055f56e8ae Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Tue, 19 Feb 2019 16:40:10 -0500 Subject: [PATCH] Modernize build system a bit. Mostly rewrite the build system bits with the following changes: - Convert to a non-recursive Automake setup. - Convert to standard Automake variables where practical. - Add rules to regenerate treefuncs as required. - Avoid BUILT_SOURCES by adding accurate prerequisites. - Remove NOINSTGLOB functionality as it seems pointless. - Properly hook generated HTML documentation into Automake. - Remove test bits for now, will be reintroduced later. - Simplify configure.ac. --- .gitignore | 2 + Makefile.am | 88 +- configure.ac | 69 +- doc/Makefile.am | 7 - examples/Makefile.am | 12 - src/.gitignore | 3 +- src/Makefile.am | 75 -- src/Makefile.str | 18 - src/generate_treefuncs.pl | 4 +- src/treefuncs.c | 1961 ------------------------------------- src/treefuncs.h | 262 ----- 11 files changed, 105 insertions(+), 2396 deletions(-) delete mode 100644 doc/Makefile.am delete mode 100644 examples/Makefile.am delete mode 100644 src/Makefile.am delete mode 100644 src/Makefile.str delete mode 100644 src/treefuncs.c delete mode 100644 src/treefuncs.h diff --git a/.gitignore b/.gitignore index b523dcc..6535b8f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ *.o .deps +.dirstamp /INSTALL /aclocal.m4 /autom4te.cache @@ -7,6 +8,7 @@ /config.* /configure /depcomp +/gob2 /gob2.spec /install-sh /missing diff --git a/Makefile.am b/Makefile.am index ed0463d..41ac9d8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,10 +1,84 @@ -SUBDIRS = @SUBDIRS@ -DIST_SUBDIRS = src doc examples +# Copyright © 2019 Nick Bowler +# +# Based on original work Copyright © 1999-2013 Jiri (George) Lebl. +# +# License GPLv2+: GNU General Public License version 2 or any later version. +# This is free software: you are free to change and redistribute it. +# There is NO WARRANTY, to the extent permitted by law. -m4dir=$(datadir)/aclocal -m4_DATA=gob2.m4 +AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src \ + -I$(builddir) -I$(srcdir) -DPKGDATADIR=\"$(pkgdatadir)\" +AM_CFLAGS = $(GLIB_CFLAGS) +AM_YFLAGS = -d -t -EXTRA_DIST = gob2.spec.in $(m4_DATA) COPYING.generated-code +bin_PROGRAMS = gob2 -dist-hook: gob2.spec - cp gob2.spec $(distdir) +EXTRA_DIST = COPYING.generated-code examples/GNOME_Foo_SomeInterface.idl \ + examples/README examples/foo-some-interface.gob \ + examples/gtk-button-count.gob examples/my-glade-main.c \ + examples/my-glade.glade examples/my-glade.gob gob2.spec \ + src/treefuncs.c src/treefuncs.h src/treefuncs.stamp \ + src/treefuncs.def src/generate_treefuncs.pl + +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = src/treefuncs.c src/treefuncs.h src/treefuncs.stamp + +EXTRA_PROGRAMS = parser-rdeps +parser_rdeps_SOURCES = src/main.c src/lexer.l +$(parser_rdeps_OBJECTS): src/parse.h + +noinst_HEADERS = src/main.h src/treefuncs.h src/out.h src/util.h src/checks.h + +gob2_SOURCES = src/main.c src/main.h src/treefuncs.c src/out.c src/util.c \ + src/checks.c src/parse.y src/lexer.l +gob2_LDADD = $(GLIB_LIBS) @LEXLIB@ +$(gob2_OBJECTS): src/treefuncs.h + +man_MANS = doc/gob2.1 +EXTRA_DIST += doc/makehtml.pl + +PERL_ERROR = @:; { \ + printf '%s: ERROR: perl was not available at configure time.\n' "$@"; \ + printf '%s: If perl is installed but was not detected by configure,\n' "$@"; \ + printf '%s: consider setting PERL and re-running configure.\n' "$@"; \ + } 1>&2; false + +src/treefuncs.stamp: src/generate_treefuncs.pl src/treefuncs.def +if !HAVE_PERL + $(PERL_ERROR) +endif + $(AM_V_at) $(MKDIR_P) $(@D) + $(AM_V_GEN) (cd $(@D) && \ + $(PERL) $(abs_srcdir)/src/generate_treefuncs.pl \ + $(abs_srcdir)/src/treefuncs.def; ) + $(AM_V_at) touch $@ + +.stamp.c: + @test -f $@ || { rm -f $<; $(MAKE) $(AM_MAKEFLAGS) $<; } +.stamp.h: + @test -f $@ || { rm -f $<; $(MAKE) $(AM_MAKEFLAGS) $<; } + +html-local: doc/gob2.html +doc/gob2.html: doc/gob2.1 +if !HAVE_PERL + $(PERL_ERROR) +endif + $(AM_V_GEN) $(PERL) $(top_srcdir)/doc/makehtml.pl $@.tmp + $(AM_V_at) mv -f $@.tmp $@ +CLEANFILES += doc/gob2.html + +install-html-local: install-gob2-html +install-gob2-html: doc/gob2.html + $(MKDIR_P) "$(DESTDIR)$(docdir)" + $(INSTALL_DATA) doc/gob2.html "$(DESTDIR)$(docdir)/gob2.html" +.PHONY: install-gob2-html + +uninstall-local: uninstall-gob2-html +uninstall-gob2-html: + test ! -d "$(DESTDIR)$(docdir)" || \ + cd "$(DESTDIR)$(docdir)" && rm -f gob2.html +.PHONY: uninstall-gob2-html + +m4dir = $(datadir)/aclocal +dist_m4_DATA = gob2.m4 diff --git a/configure.ac b/configure.ac index 543a4c0..8e7a1f0 100644 --- a/configure.ac +++ b/configure.ac @@ -1,62 +1,27 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT([gob2], [2.0.20]) -AC_CONFIG_SRCDIR([src/treefuncs.h]) -AM_INIT_AUTOMAKE([dist-xz]) - -AM_CONFIG_HEADER(config.h) -AM_MAINTAINER_MODE - -GLIB_REQUIRED=2.4.0 - +dnl Copyright © 2019 Nick Bowler dnl -dnl An utter hack to allow embedding of gob inside other packages. -dnl if a file is found in the parent directory named NOINST_GOB, then -dnl gob is not installed +dnl Based on original work Copyright © 1999-2013 Jiri (George) Lebl. dnl +dnl License GPLv2+: GNU General Public License version 2 or any later version. +dnl This is free software: you are free to change and redistribute it. +dnl There is NO WARRANTY, to the extent permitted by law. -AM_CONDITIONAL(NOINSTGOB, test -f ../NOINST_GOB) +AC_INIT([gob-dx], [2.0.20a], [nbowler@draconx.ca]) +AC_CONFIG_SRCDIR([src/treefuncs.def]) +AC_CONFIG_HEADERS([config.h]) -dnl Is there a way to test NOINSTGOB here ? -if test -f ../NOINST_GOB ; then - AC_MSG_RESULT([*** NOT Going to install GOB ***]) - SUBDIRS="src examples" -else - SUBDIRS="src examples doc" -fi -AC_SUBST(SUBDIRS) +AM_INIT_AUTOMAKE([-Wall subdir-objects dist-xz]) +AM_SILENT_RULES([yes]) -dnl Checks for programs. -AC_ISC_POSIX AC_PROG_CC -AC_STDC_HEADERS +AC_PROG_LEX AC_PROG_YACC -AM_PROG_LEX -AC_PROG_INSTALL -AC_PROG_CPP -AC_PATH_PROG(RM, rm, /bin/rm) -AC_PATH_PROG(MV, mv, /bin/mv) -AC_PATH_PROG(TAR, tar, /bin/tar) -PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED) -AC_SUBST(GLIB_CFLAGS) -AC_SUBST(GLIB_LIBS) -dnl We don't check popt since we're not using it at the moment, but -dnl We just might use it later -dnl AC_CHECK_LIB(popt,poptGetContext, [POPT_LIB="-lpopt"], -dnl AC_MSG_ERROR(Popt library not found, find it on ftp://ftp.redhat.com/pub/redhat/code/)) -dnl AC_SUBST(POPT_LIB) - -dnl AM_PROG_LIBTOOL +AC_ARG_VAR([PERL], [command to execute perl programs]) +AC_CHECK_PROGS([PERL], [perl], [false]) +AM_CONDITIONAL([HAVE_PERL], [$PERL -e 'my $x = 42; exit $x'; test $? = 42]) -AC_SUBST(CFLAGS) -AC_SUBST(CPPFLAGS) -AC_SUBST(LDFLAGS) -AC_SUBST(YFLAGS) +PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.4.0]) -AC_OUTPUT([ -gob2.spec -Makefile -src/Makefile -doc/Makefile -examples/Makefile -doc/gob2.1]) +AC_CONFIG_FILES([Makefile gob2.spec doc/gob2.1]) +AC_OUTPUT diff --git a/doc/Makefile.am b/doc/Makefile.am deleted file mode 100644 index 0e408aa..0000000 --- a/doc/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -man_MANS = gob2.1 -SUBDIRS = . - -EXTRA_DIST = gob2.1.in makehtml.pl - -html: gob2.1 - perl $(top_srcdir)/doc/makehtml.pl < $(top_srcdir)/doc/gob2.1 > $(top_builddir)/doc/gob2.1.html diff --git a/examples/Makefile.am b/examples/Makefile.am deleted file mode 100644 index a1a152c..0000000 --- a/examples/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -EXTRA_DIST = \ - README \ - gtk-button-count.gob \ - my-person.gob \ - GNOME_Foo_SomeInterface.idl \ - foo-some-interface.gob \ - my-glade.gob \ - my-glade.glade \ - my-glade-main.c - - -SUBDIRS = . diff --git a/src/.gitignore b/src/.gitignore index f572c02..27aec08 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,3 +1,4 @@ -/gob2 /lexer.c /parse.[ch] +/treefuncs.stamp +/treefuncs.[ch] diff --git a/src/Makefile.am b/src/Makefile.am deleted file mode 100644 index 291dfb8..0000000 --- a/src/Makefile.am +++ /dev/null @@ -1,75 +0,0 @@ -#YACCFLAGS += -d -t -AM_YFLAGS = -d -t -SUBDIRS = . - -#GCC specific, should not be in distributed files -#AM_CFLAGS = \ -# -Wall \ -# -Wpointer-arith \ -# -Wmissing-prototypes \ -# -Wmissing-declarations - -DEFS = @DEFS@ \ - -DPKGDATADIR=\"$(pkgdatadir)\" - -INCLUDES = \ - $(GLIB_CFLAGS) \ - -I$(top_builddir) \ - -I$(top_builddir)/src \ - -I$(top_srcdir) \ - -I$(top_srcdir)/src \ - -I$(includedir) - -if NOINSTGOB -noinst_PROGRAMS = gob2 -else -bin_PROGRAMS = gob2 -endif -EXTRA_PROGRAMS = gob2 - -BUILT_SOURCES = parse.h parse.c lexer.c - -gob2_SOURCES = \ - main.c \ - main.h \ - treefuncs.c \ - treefuncs.h \ - out.c \ - out.h \ - util.c \ - util.h \ - checks.c \ - checks.h \ - parse.y \ - lexer.l - -gob2_LDADD = \ - -lm \ - $(GLIB_LIBS) \ - @LEXLIB@ - -# we might want popt back in the future -# @POPT_LIB@ - -CLEANFILES = @CLEANFILES@ $(BUILT_SOURCES) test-object.* test-object-private.h - -EXTRA_DIST = $(BUILT_SOURCES) test.gob generate_treefuncs.pl treefuncs.def str.gob str_test.c Makefile.str - -# parse.h parse.c: parse.y -# $(YACC) $(YFLAGS) $< -# test -f y.tab.c && mv -f y.tab.c parse.c -# test -f y.tab.h && mv -f y.tab.h parse.h - -test: test-object.c test-object.h - $(CC) -g -O -W -Wall -Wunused -Wuninitialized -Wdeclaration-after-statement -Wshadow -Wwrite-strings -Wunreachable-code -Wbad-function-cast `pkg-config --cflags gobject-2.0 gtk+-2.0` -c test-object.c - -test-object.c test-object.h: test.gob gob2 - ./gob2 test.gob - -# can't depend on the header file as that would break the above rule -# since it's just for testing, who cares -testcpp: test-object.cc - g++ -g -O -W -Wall -Wunused -Wuninitialized -Wwrite-strings -Wunreachable-code `pkg-config --cflags gobject-2.0 gtk+-2.0` -c test-object.cc - -test-object.cc: test.gob gob2 - ./gob2 --for-cpp test.gob diff --git a/src/Makefile.str b/src/Makefile.str deleted file mode 100644 index f5ac688..0000000 --- a/src/Makefile.str +++ /dev/null @@ -1,18 +0,0 @@ -# This is a test makefile for the str_test to check string attributes stuff -# - -CFLAGS := -Wall $(shell pkg-config --cflags gobject-2.0 glib-2.0) -LDFLAGS := $(shell pkg-config --libs-only-other --libs-only-L \ - gobject-2.0 glib-2.0) -LDLIBS := $(shell pkg-config --libs-only-l gobject-2.0 glib-2.0) - -default: str.o str_test.o Makefile.str - gcc $(LDFLAGS) str.o str_test.o $(LDLIBS) -o str_test - -%.c %.h: %.gob - ./gob2 $< - -str.o str_test.o: Makefile.str - -clean: - rm -rf str.o str_test.o str.c str.h str-private.h str_test diff --git a/src/generate_treefuncs.pl b/src/generate_treefuncs.pl index 31d9151..56c686a 100755 --- a/src/generate_treefuncs.pl +++ b/src/generate_treefuncs.pl @@ -1,6 +1,8 @@ #!/usr/bin/perl -w -open (FILE, "treefuncs.def") || die ("Can't open treefuncs.def"); +my $srcfile = $ARGV[0] || "treefuncs.def"; + +open (FILE, "$srcfile") || die ("Can't open $srcfile"); open (OUTC, ">treefuncs.c") || die ("Can't open treefuncs.c"); open (OUTH, ">treefuncs.h") || die ("Can't open treefuncs.h"); diff --git a/src/treefuncs.c b/src/treefuncs.c deleted file mode 100644 index 24b17e8..0000000 --- a/src/treefuncs.c +++ /dev/null @@ -1,1961 +0,0 @@ -/* Generated by generate_treefuncs.pl from treefuncs.def! - * Do not edit by hand! */ - -#include -#include -#include "treefuncs.h" - -#define COPY_LIST_VALS(list,func) { GList *li; for (li=(list);li;li=li->next) { li->data=func (li->data); } } - -static Argument * -copy_argument (Argument * self); -static CCode * -copy_ccode (CCode * self); -static Check * -copy_check (Check * self); -static Class * -copy_class (Class * self); -static EnumDef * -copy_enumdef (EnumDef * self); -static EnumValue * -copy_enumvalue (EnumValue * self); -static Error * -copy_error (Error * self); -static Flags * -copy_flags (Flags * self); -static FuncArg * -copy_funcarg (FuncArg * self); -static Method * -copy_method (Method * self); -static Property * -copy_property (Property * self); -static Type * -copy_type (Type * self); -static Variable * -copy_variable (Variable * self); - -void -free_argument (Argument * self); -void -free_ccode (CCode * self); -void -free_check (Check * self); -void -free_class (Class * self); -void -free_enumdef (EnumDef * self); -void -free_enumvalue (EnumValue * self); -void -free_error (Error * self); -void -free_flags (Flags * self); -void -free_funcarg (FuncArg * self); -void -free_method (Method * self); -void -free_property (Property * self); -void -free_type (Type * self); -void -free_variable (Variable * self); - -static void -setv_argument (Argument * self, va_list __ap); -static void -setv_ccode (CCode * self, va_list __ap); -static void -setv_check (Check * self, va_list __ap); -static void -setv_class (Class * self, va_list __ap); -static void -setv_enumdef (EnumDef * self, va_list __ap); -static void -setv_enumvalue (EnumValue * self, va_list __ap); -static void -setv_error (Error * self, va_list __ap); -static void -setv_flags (Flags * self, va_list __ap); -static void -setv_funcarg (FuncArg * self, va_list __ap); -static void -setv_method (Method * self, va_list __ap); -static void -setv_property (Property * self, va_list __ap); -static void -setv_type (Type * self, va_list __ap); -static void -setv_variable (Variable * self, va_list __ap); - -static gboolean quarks_set_up = FALSE; -static GHashTable *quark_ht; -enum { - QUARK_0, - QUARK_otype, - QUARK_otype_STEAL, - QUARK_ptype, - QUARK_ptype_STEAL, - QUARK_bonobo_object_class, - QUARK_bonobo_object_class_STEAL, - QUARK_glade_xml, - QUARK_chunk_size, - QUARK_chunk_size_STEAL, - QUARK_interfaces, - QUARK_interfaces_STEAL, - QUARK_nodes, - QUARK_nodes_STEAL, - QUARK_abstract, - QUARK_name, - QUARK_name_STEAL, - QUARK_pointer, - QUARK_pointer_STEAL, - QUARK_postfix, - QUARK_postfix_STEAL, - QUARK_cctype, - QUARK_cbuf, - QUARK_cbuf_STEAL, - QUARK_line_no, - QUARK_chtype, - QUARK_number, - QUARK_number_STEAL, - QUARK_atype, - QUARK_atype_STEAL, - QUARK_checks, - QUARK_checks_STEAL, - QUARK_gtktype, - QUARK_gtktype_STEAL, - QUARK_flags, - QUARK_flags_STEAL, - QUARK_get, - QUARK_get_STEAL, - QUARK_get_line, - QUARK_set, - QUARK_set_STEAL, - QUARK_set_line, - QUARK_canonical_name, - QUARK_canonical_name_STEAL, - QUARK_nick, - QUARK_nick_STEAL, - QUARK_blurb, - QUARK_blurb_STEAL, - QUARK_minimum, - QUARK_minimum_STEAL, - QUARK_maximum, - QUARK_maximum_STEAL, - QUARK_default_value, - QUARK_default_value_STEAL, - QUARK_extra_gtktype, - QUARK_extra_gtktype_STEAL, - QUARK_override, - QUARK_link, - QUARK_export, - QUARK_scope, - QUARK_method, - QUARK_mtype, - QUARK_mtype_STEAL, - QUARK_gtktypes, - QUARK_gtktypes_STEAL, - QUARK_signal_name, - QUARK_signal_name_STEAL, - QUARK_id, - QUARK_id_STEAL, - QUARK_args, - QUARK_args_STEAL, - QUARK_funcattrs, - QUARK_funcattrs_STEAL, - QUARK_onerror, - QUARK_onerror_STEAL, - QUARK_defreturn, - QUARK_defreturn_STEAL, - QUARK_ccode_line, - QUARK_vararg, - QUARK_unique_id, - QUARK_bonobo_object_func, - QUARK_interface, - QUARK_interface_STEAL, - QUARK_vtype, - QUARK_vtype_STEAL, - QUARK_glade_widget, - QUARK_destructor_unref, - QUARK_destructor, - QUARK_destructor_STEAL, - QUARK_destructor_line, - QUARK_destructor_simple, - QUARK_initializer, - QUARK_initializer_STEAL, - QUARK_initializer_line, - QUARK_initializer_simple, - QUARK_etype, - QUARK_etype_STEAL, - QUARK_prefix, - QUARK_prefix_STEAL, - QUARK_values, - QUARK_values_STEAL, - QUARK_value, - QUARK_value_STEAL, - QUARK_ftype, - QUARK_ftype_STEAL, - QUARK_LAST -}; - -static void -ensure_quarks (void) -{ - if (quarks_set_up) - return; - quark_ht = g_hash_table_new (g_str_hash, g_str_equal); - quarks_set_up = TRUE; - g_hash_table_insert (quark_ht, "otype", GINT_TO_POINTER (QUARK_otype)); - g_hash_table_insert (quark_ht, "otype:steal", GINT_TO_POINTER (QUARK_otype_STEAL)); - g_hash_table_insert (quark_ht, "ptype", GINT_TO_POINTER (QUARK_ptype)); - g_hash_table_insert (quark_ht, "ptype:steal", GINT_TO_POINTER (QUARK_ptype_STEAL)); - g_hash_table_insert (quark_ht, "bonobo_object_class", GINT_TO_POINTER (QUARK_bonobo_object_class)); - g_hash_table_insert (quark_ht, "bonobo_object_class:steal", GINT_TO_POINTER (QUARK_bonobo_object_class_STEAL)); - g_hash_table_insert (quark_ht, "glade_xml", GINT_TO_POINTER (QUARK_glade_xml)); - g_hash_table_insert (quark_ht, "chunk_size", GINT_TO_POINTER (QUARK_chunk_size)); - g_hash_table_insert (quark_ht, "chunk_size:steal", GINT_TO_POINTER (QUARK_chunk_size_STEAL)); - g_hash_table_insert (quark_ht, "interfaces", GINT_TO_POINTER (QUARK_interfaces)); - g_hash_table_insert (quark_ht, "interfaces:steal", GINT_TO_POINTER (QUARK_interfaces_STEAL)); - g_hash_table_insert (quark_ht, "nodes", GINT_TO_POINTER (QUARK_nodes)); - g_hash_table_insert (quark_ht, "nodes:steal", GINT_TO_POINTER (QUARK_nodes_STEAL)); - g_hash_table_insert (quark_ht, "abstract", GINT_TO_POINTER (QUARK_abstract)); - g_hash_table_insert (quark_ht, "name", GINT_TO_POINTER (QUARK_name)); - g_hash_table_insert (quark_ht, "name:steal", GINT_TO_POINTER (QUARK_name_STEAL)); - g_hash_table_insert (quark_ht, "pointer", GINT_TO_POINTER (QUARK_pointer)); - g_hash_table_insert (quark_ht, "pointer:steal", GINT_TO_POINTER (QUARK_pointer_STEAL)); - g_hash_table_insert (quark_ht, "postfix", GINT_TO_POINTER (QUARK_postfix)); - g_hash_table_insert (quark_ht, "postfix:steal", GINT_TO_POINTER (QUARK_postfix_STEAL)); - g_hash_table_insert (quark_ht, "cctype", GINT_TO_POINTER (QUARK_cctype)); - g_hash_table_insert (quark_ht, "cbuf", GINT_TO_POINTER (QUARK_cbuf)); - g_hash_table_insert (quark_ht, "cbuf:steal", GINT_TO_POINTER (QUARK_cbuf_STEAL)); - g_hash_table_insert (quark_ht, "line_no", GINT_TO_POINTER (QUARK_line_no)); - g_hash_table_insert (quark_ht, "chtype", GINT_TO_POINTER (QUARK_chtype)); - g_hash_table_insert (quark_ht, "number", GINT_TO_POINTER (QUARK_number)); - g_hash_table_insert (quark_ht, "number:steal", GINT_TO_POINTER (QUARK_number_STEAL)); - g_hash_table_insert (quark_ht, "atype", GINT_TO_POINTER (QUARK_atype)); - g_hash_table_insert (quark_ht, "atype:steal", GINT_TO_POINTER (QUARK_atype_STEAL)); - g_hash_table_insert (quark_ht, "checks", GINT_TO_POINTER (QUARK_checks)); - g_hash_table_insert (quark_ht, "checks:steal", GINT_TO_POINTER (QUARK_checks_STEAL)); - g_hash_table_insert (quark_ht, "gtktype", GINT_TO_POINTER (QUARK_gtktype)); - g_hash_table_insert (quark_ht, "gtktype:steal", GINT_TO_POINTER (QUARK_gtktype_STEAL)); - g_hash_table_insert (quark_ht, "flags", GINT_TO_POINTER (QUARK_flags)); - g_hash_table_insert (quark_ht, "flags:steal", GINT_TO_POINTER (QUARK_flags_STEAL)); - g_hash_table_insert (quark_ht, "get", GINT_TO_POINTER (QUARK_get)); - g_hash_table_insert (quark_ht, "get:steal", GINT_TO_POINTER (QUARK_get_STEAL)); - g_hash_table_insert (quark_ht, "get_line", GINT_TO_POINTER (QUARK_get_line)); - g_hash_table_insert (quark_ht, "set", GINT_TO_POINTER (QUARK_set)); - g_hash_table_insert (quark_ht, "set:steal", GINT_TO_POINTER (QUARK_set_STEAL)); - g_hash_table_insert (quark_ht, "set_line", GINT_TO_POINTER (QUARK_set_line)); - g_hash_table_insert (quark_ht, "canonical_name", GINT_TO_POINTER (QUARK_canonical_name)); - g_hash_table_insert (quark_ht, "canonical_name:steal", GINT_TO_POINTER (QUARK_canonical_name_STEAL)); - g_hash_table_insert (quark_ht, "nick", GINT_TO_POINTER (QUARK_nick)); - g_hash_table_insert (quark_ht, "nick:steal", GINT_TO_POINTER (QUARK_nick_STEAL)); - g_hash_table_insert (quark_ht, "blurb", GINT_TO_POINTER (QUARK_blurb)); - g_hash_table_insert (quark_ht, "blurb:steal", GINT_TO_POINTER (QUARK_blurb_STEAL)); - g_hash_table_insert (quark_ht, "minimum", GINT_TO_POINTER (QUARK_minimum)); - g_hash_table_insert (quark_ht, "minimum:steal", GINT_TO_POINTER (QUARK_minimum_STEAL)); - g_hash_table_insert (quark_ht, "maximum", GINT_TO_POINTER (QUARK_maximum)); - g_hash_table_insert (quark_ht, "maximum:steal", GINT_TO_POINTER (QUARK_maximum_STEAL)); - g_hash_table_insert (quark_ht, "default_value", GINT_TO_POINTER (QUARK_default_value)); - g_hash_table_insert (quark_ht, "default_value:steal", GINT_TO_POINTER (QUARK_default_value_STEAL)); - g_hash_table_insert (quark_ht, "extra_gtktype", GINT_TO_POINTER (QUARK_extra_gtktype)); - g_hash_table_insert (quark_ht, "extra_gtktype:steal", GINT_TO_POINTER (QUARK_extra_gtktype_STEAL)); - g_hash_table_insert (quark_ht, "override", GINT_TO_POINTER (QUARK_override)); - g_hash_table_insert (quark_ht, "link", GINT_TO_POINTER (QUARK_link)); - g_hash_table_insert (quark_ht, "export", GINT_TO_POINTER (QUARK_export)); - g_hash_table_insert (quark_ht, "scope", GINT_TO_POINTER (QUARK_scope)); - g_hash_table_insert (quark_ht, "method", GINT_TO_POINTER (QUARK_method)); - g_hash_table_insert (quark_ht, "mtype", GINT_TO_POINTER (QUARK_mtype)); - g_hash_table_insert (quark_ht, "mtype:steal", GINT_TO_POINTER (QUARK_mtype_STEAL)); - g_hash_table_insert (quark_ht, "gtktypes", GINT_TO_POINTER (QUARK_gtktypes)); - g_hash_table_insert (quark_ht, "gtktypes:steal", GINT_TO_POINTER (QUARK_gtktypes_STEAL)); - g_hash_table_insert (quark_ht, "signal_name", GINT_TO_POINTER (QUARK_signal_name)); - g_hash_table_insert (quark_ht, "signal_name:steal", GINT_TO_POINTER (QUARK_signal_name_STEAL)); - g_hash_table_insert (quark_ht, "id", GINT_TO_POINTER (QUARK_id)); - g_hash_table_insert (quark_ht, "id:steal", GINT_TO_POINTER (QUARK_id_STEAL)); - g_hash_table_insert (quark_ht, "args", GINT_TO_POINTER (QUARK_args)); - g_hash_table_insert (quark_ht, "args:steal", GINT_TO_POINTER (QUARK_args_STEAL)); - g_hash_table_insert (quark_ht, "funcattrs", GINT_TO_POINTER (QUARK_funcattrs)); - g_hash_table_insert (quark_ht, "funcattrs:steal", GINT_TO_POINTER (QUARK_funcattrs_STEAL)); - g_hash_table_insert (quark_ht, "onerror", GINT_TO_POINTER (QUARK_onerror)); - g_hash_table_insert (quark_ht, "onerror:steal", GINT_TO_POINTER (QUARK_onerror_STEAL)); - g_hash_table_insert (quark_ht, "defreturn", GINT_TO_POINTER (QUARK_defreturn)); - g_hash_table_insert (quark_ht, "defreturn:steal", GINT_TO_POINTER (QUARK_defreturn_STEAL)); - g_hash_table_insert (quark_ht, "ccode_line", GINT_TO_POINTER (QUARK_ccode_line)); - g_hash_table_insert (quark_ht, "vararg", GINT_TO_POINTER (QUARK_vararg)); - g_hash_table_insert (quark_ht, "unique_id", GINT_TO_POINTER (QUARK_unique_id)); - g_hash_table_insert (quark_ht, "bonobo_object_func", GINT_TO_POINTER (QUARK_bonobo_object_func)); - g_hash_table_insert (quark_ht, "interface", GINT_TO_POINTER (QUARK_interface)); - g_hash_table_insert (quark_ht, "interface:steal", GINT_TO_POINTER (QUARK_interface_STEAL)); - g_hash_table_insert (quark_ht, "vtype", GINT_TO_POINTER (QUARK_vtype)); - g_hash_table_insert (quark_ht, "vtype:steal", GINT_TO_POINTER (QUARK_vtype_STEAL)); - g_hash_table_insert (quark_ht, "glade_widget", GINT_TO_POINTER (QUARK_glade_widget)); - g_hash_table_insert (quark_ht, "destructor_unref", GINT_TO_POINTER (QUARK_destructor_unref)); - g_hash_table_insert (quark_ht, "destructor", GINT_TO_POINTER (QUARK_destructor)); - g_hash_table_insert (quark_ht, "destructor:steal", GINT_TO_POINTER (QUARK_destructor_STEAL)); - g_hash_table_insert (quark_ht, "destructor_line", GINT_TO_POINTER (QUARK_destructor_line)); - g_hash_table_insert (quark_ht, "destructor_simple", GINT_TO_POINTER (QUARK_destructor_simple)); - g_hash_table_insert (quark_ht, "initializer", GINT_TO_POINTER (QUARK_initializer)); - g_hash_table_insert (quark_ht, "initializer:steal", GINT_TO_POINTER (QUARK_initializer_STEAL)); - g_hash_table_insert (quark_ht, "initializer_line", GINT_TO_POINTER (QUARK_initializer_line)); - g_hash_table_insert (quark_ht, "initializer_simple", GINT_TO_POINTER (QUARK_initializer_simple)); - g_hash_table_insert (quark_ht, "etype", GINT_TO_POINTER (QUARK_etype)); - g_hash_table_insert (quark_ht, "etype:steal", GINT_TO_POINTER (QUARK_etype_STEAL)); - g_hash_table_insert (quark_ht, "prefix", GINT_TO_POINTER (QUARK_prefix)); - g_hash_table_insert (quark_ht, "prefix:steal", GINT_TO_POINTER (QUARK_prefix_STEAL)); - g_hash_table_insert (quark_ht, "values", GINT_TO_POINTER (QUARK_values)); - g_hash_table_insert (quark_ht, "values:steal", GINT_TO_POINTER (QUARK_values_STEAL)); - g_hash_table_insert (quark_ht, "value", GINT_TO_POINTER (QUARK_value)); - g_hash_table_insert (quark_ht, "value:steal", GINT_TO_POINTER (QUARK_value_STEAL)); - g_hash_table_insert (quark_ht, "ftype", GINT_TO_POINTER (QUARK_ftype)); - g_hash_table_insert (quark_ht, "ftype:steal", GINT_TO_POINTER (QUARK_ftype_STEAL)); -} - -static Argument * -copy_argument (Argument * self) -{ - Argument * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == ARGUMENT_NODE, NULL); - new = g_new0(Argument, 1); - new->type = ARGUMENT_NODE; - new->gtktype = g_strdup (self->gtktype); - new->atype = copy_type (self->atype); - new->flags = g_list_copy (self->flags); COPY_LIST_VALS(new->flags, g_strdup); - new->name = g_strdup (self->name); - new->get = g_strdup (self->get); - new->get_line = self->get_line; - new->set = g_strdup (self->set); - new->set_line = self->set_line; - new->line_no = self->line_no; - return new; -} - -static CCode * -copy_ccode (CCode * self) -{ - CCode * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == CCODE_NODE, NULL); - new = g_new0(CCode, 1); - new->type = CCODE_NODE; - new->cctype = self->cctype; - new->cbuf = g_strdup (self->cbuf); - new->line_no = self->line_no; - return new; -} - -static Check * -copy_check (Check * self) -{ - Check * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == CHECK_NODE, NULL); - new = g_new0(Check, 1); - new->type = CHECK_NODE; - new->chtype = self->chtype; - new->number = g_strdup (self->number); - return new; -} - -static Class * -copy_class (Class * self) -{ - Class * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == CLASS_NODE, NULL); - new = g_new0(Class, 1); - new->type = CLASS_NODE; - new->otype = g_strdup (self->otype); - new->ptype = g_strdup (self->ptype); - new->bonobo_object_class = g_strdup (self->bonobo_object_class); - new->glade_xml = self->glade_xml; - new->chunk_size = g_strdup (self->chunk_size); - new->interfaces = g_list_copy (self->interfaces); COPY_LIST_VALS(new->interfaces, g_strdup); - new->nodes = node_list_copy (self->nodes); - new->abstract = self->abstract; - return new; -} - -static EnumDef * -copy_enumdef (EnumDef * self) -{ - EnumDef * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == ENUMDEF_NODE, NULL); - new = g_new0(EnumDef, 1); - new->type = ENUMDEF_NODE; - new->etype = g_strdup (self->etype); - new->prefix = g_strdup (self->prefix); - new->values = node_list_copy (self->values); - return new; -} - -static EnumValue * -copy_enumvalue (EnumValue * self) -{ - EnumValue * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == ENUMVALUE_NODE, NULL); - new = g_new0(EnumValue, 1); - new->type = ENUMVALUE_NODE; - new->name = g_strdup (self->name); - new->value = g_strdup (self->value); - return new; -} - -static Error * -copy_error (Error * self) -{ - Error * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == ERROR_NODE, NULL); - new = g_new0(Error, 1); - new->type = ERROR_NODE; - new->etype = g_strdup (self->etype); - new->prefix = g_strdup (self->prefix); - new->values = g_list_copy (self->values); COPY_LIST_VALS(new->values, g_strdup); - return new; -} - -static Flags * -copy_flags (Flags * self) -{ - Flags * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == FLAGS_NODE, NULL); - new = g_new0(Flags, 1); - new->type = FLAGS_NODE; - new->ftype = g_strdup (self->ftype); - new->prefix = g_strdup (self->prefix); - new->values = g_list_copy (self->values); COPY_LIST_VALS(new->values, g_strdup); - return new; -} - -static FuncArg * -copy_funcarg (FuncArg * self) -{ - FuncArg * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == FUNCARG_NODE, NULL); - new = g_new0(FuncArg, 1); - new->type = FUNCARG_NODE; - new->atype = copy_type (self->atype); - new->name = g_strdup (self->name); - new->checks = node_list_copy (self->checks); - return new; -} - -static Method * -copy_method (Method * self) -{ - Method * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == METHOD_NODE, NULL); - new = g_new0(Method, 1); - new->type = METHOD_NODE; - new->scope = self->scope; - new->method = self->method; - new->mtype = copy_type (self->mtype); - new->otype = g_strdup (self->otype); - new->gtktypes = g_list_copy (self->gtktypes); COPY_LIST_VALS(new->gtktypes, g_strdup); - new->flags = g_list_copy (self->flags); COPY_LIST_VALS(new->flags, g_strdup); - new->signal_name = g_strdup (self->signal_name); - new->id = g_strdup (self->id); - new->args = node_list_copy (self->args); - new->funcattrs = g_strdup (self->funcattrs); - new->onerror = g_strdup (self->onerror); - new->defreturn = g_strdup (self->defreturn); - new->cbuf = g_strdup (self->cbuf); - new->line_no = self->line_no; - new->ccode_line = self->ccode_line; - new->vararg = self->vararg; - new->unique_id = self->unique_id; - new->bonobo_object_func = self->bonobo_object_func; - new->interface = g_strdup (self->interface); - return new; -} - -static Property * -copy_property (Property * self) -{ - Property * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == PROPERTY_NODE, NULL); - new = g_new0(Property, 1); - new->type = PROPERTY_NODE; - new->gtktype = g_strdup (self->gtktype); - new->ptype = copy_type (self->ptype); - new->flags = g_list_copy (self->flags); COPY_LIST_VALS(new->flags, g_strdup); - new->name = g_strdup (self->name); - new->canonical_name = g_strdup (self->canonical_name); - new->nick = g_strdup (self->nick); - new->blurb = g_strdup (self->blurb); - new->minimum = g_strdup (self->minimum); - new->maximum = g_strdup (self->maximum); - new->default_value = g_strdup (self->default_value); - new->extra_gtktype = g_strdup (self->extra_gtktype); - new->override = self->override; - new->link = self->link; - new->export = self->export; - new->get = g_strdup (self->get); - new->get_line = self->get_line; - new->set = g_strdup (self->set); - new->set_line = self->set_line; - new->line_no = self->line_no; - return new; -} - -static Type * -copy_type (Type * self) -{ - Type * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == TYPE_NODE, NULL); - new = g_new0(Type, 1); - new->type = TYPE_NODE; - new->name = g_strdup (self->name); - new->pointer = g_strdup (self->pointer); - new->postfix = g_strdup (self->postfix); - return new; -} - -static Variable * -copy_variable (Variable * self) -{ - Variable * new; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (self->type == VARIABLE_NODE, NULL); - new = g_new0(Variable, 1); - new->type = VARIABLE_NODE; - new->scope = self->scope; - new->vtype = copy_type (self->vtype); - new->glade_widget = self->glade_widget; - new->id = g_strdup (self->id); - new->line_no = self->line_no; - new->destructor_unref = self->destructor_unref; - new->destructor = g_strdup (self->destructor); - new->destructor_line = self->destructor_line; - new->destructor_simple = self->destructor_simple; - new->initializer = g_strdup (self->initializer); - new->initializer_line = self->initializer_line; - new->initializer_simple = self->initializer_simple; - return new; -} - -void -free_argument (Argument * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == ARGUMENT_NODE); - g_free (self->gtktype); - free_type (self->atype); - g_list_foreach (self->flags, (GFunc)g_free, NULL); g_list_free (self->flags); - g_free (self->name); - g_free (self->get); - g_free (self->set); - g_free (self); -} - -void -free_ccode (CCode * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == CCODE_NODE); - g_free (self->cbuf); - g_free (self); -} - -void -free_check (Check * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == CHECK_NODE); - g_free (self->number); - g_free (self); -} - -void -free_class (Class * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == CLASS_NODE); - g_free (self->otype); - g_free (self->ptype); - g_free (self->bonobo_object_class); - g_free (self->chunk_size); - g_list_foreach (self->interfaces, (GFunc)g_free, NULL); g_list_free (self->interfaces); - node_list_free (self->nodes); - g_free (self); -} - -void -free_enumdef (EnumDef * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == ENUMDEF_NODE); - g_free (self->etype); - g_free (self->prefix); - node_list_free (self->values); - g_free (self); -} - -void -free_enumvalue (EnumValue * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == ENUMVALUE_NODE); - g_free (self->name); - g_free (self->value); - g_free (self); -} - -void -free_error (Error * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == ERROR_NODE); - g_free (self->etype); - g_free (self->prefix); - g_list_foreach (self->values, (GFunc)g_free, NULL); g_list_free (self->values); - g_free (self); -} - -void -free_flags (Flags * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == FLAGS_NODE); - g_free (self->ftype); - g_free (self->prefix); - g_list_foreach (self->values, (GFunc)g_free, NULL); g_list_free (self->values); - g_free (self); -} - -void -free_funcarg (FuncArg * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == FUNCARG_NODE); - free_type (self->atype); - g_free (self->name); - node_list_free (self->checks); - g_free (self); -} - -void -free_method (Method * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == METHOD_NODE); - free_type (self->mtype); - g_free (self->otype); - g_list_foreach (self->gtktypes, (GFunc)g_free, NULL); g_list_free (self->gtktypes); - g_list_foreach (self->flags, (GFunc)g_free, NULL); g_list_free (self->flags); - g_free (self->signal_name); - g_free (self->id); - node_list_free (self->args); - g_free (self->funcattrs); - g_free (self->onerror); - g_free (self->defreturn); - g_free (self->cbuf); - g_free (self->interface); - g_free (self); -} - -void -free_property (Property * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == PROPERTY_NODE); - g_free (self->gtktype); - free_type (self->ptype); - g_list_foreach (self->flags, (GFunc)g_free, NULL); g_list_free (self->flags); - g_free (self->name); - g_free (self->canonical_name); - g_free (self->nick); - g_free (self->blurb); - g_free (self->minimum); - g_free (self->maximum); - g_free (self->default_value); - g_free (self->extra_gtktype); - g_free (self->get); - g_free (self->set); - g_free (self); -} - -void -free_type (Type * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == TYPE_NODE); - g_free (self->name); - g_free (self->pointer); - g_free (self->postfix); - g_free (self); -} - -void -free_variable (Variable * self) -{ - g_return_if_fail (self != NULL); - g_return_if_fail (self->type == VARIABLE_NODE); - free_type (self->vtype); - g_free (self->id); - g_free (self->destructor); - g_free (self->initializer); - g_free (self); -} - -static void -setv_argument (Argument * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_gtktype: { - char * gtktype = va_arg (__ap, char *); - char * __old_value = self->gtktype; - self->gtktype = g_strdup (gtktype); - g_free (__old_value); - break; - } - case QUARK_gtktype_STEAL: { - char * gtktype = va_arg (__ap, char *); - self->gtktype = gtktype; - break; - } - case QUARK_atype: { - Type * atype = va_arg (__ap, Type *); - Type * __old_value = self->atype; - self->atype = copy_type (atype); - free_type (__old_value); - break; - } - case QUARK_atype_STEAL: { - Type * atype = va_arg (__ap, Type *); - self->atype = atype; - break; - } - case QUARK_flags: { - GList * flags = va_arg (__ap, GList *); - GList * __old_value = self->flags; - self->flags = g_list_copy (flags); COPY_LIST_VALS(self->flags, g_strdup); - g_list_foreach (__old_value, (GFunc)g_free, NULL); g_list_free (__old_value); - break; - } - case QUARK_flags_STEAL: { - GList * flags = va_arg (__ap, GList *); - self->flags = flags; - break; - } - case QUARK_name: { - char * name = va_arg (__ap, char *); - char * __old_value = self->name; - self->name = g_strdup (name); - g_free (__old_value); - break; - } - case QUARK_name_STEAL: { - char * name = va_arg (__ap, char *); - self->name = name; - break; - } - case QUARK_get: { - char * get = va_arg (__ap, char *); - char * __old_value = self->get; - self->get = g_strdup (get); - g_free (__old_value); - break; - } - case QUARK_get_STEAL: { - char * get = va_arg (__ap, char *); - self->get = get; - break; - } - case QUARK_get_line: { - int get_line = va_arg (__ap, int); - self->get_line = get_line; - break; - } - case QUARK_set: { - char * set = va_arg (__ap, char *); - char * __old_value = self->set; - self->set = g_strdup (set); - g_free (__old_value); - break; - } - case QUARK_set_STEAL: { - char * set = va_arg (__ap, char *); - self->set = set; - break; - } - case QUARK_set_line: { - int set_line = va_arg (__ap, int); - self->set_line = set_line; - break; - } - case QUARK_line_no: { - int line_no = va_arg (__ap, int); - self->line_no = line_no; - break; - } - default: - g_warning ("Argument named 'Argument::%s' does not exist", arg); - break; - } - } -} - -static void -setv_ccode (CCode * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_cctype: { - int cctype = va_arg (__ap, int); - self->cctype = cctype; - break; - } - case QUARK_cbuf: { - char * cbuf = va_arg (__ap, char *); - char * __old_value = self->cbuf; - self->cbuf = g_strdup (cbuf); - g_free (__old_value); - break; - } - case QUARK_cbuf_STEAL: { - char * cbuf = va_arg (__ap, char *); - self->cbuf = cbuf; - break; - } - case QUARK_line_no: { - int line_no = va_arg (__ap, int); - self->line_no = line_no; - break; - } - default: - g_warning ("Argument named 'CCode::%s' does not exist", arg); - break; - } - } -} - -static void -setv_check (Check * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_chtype: { - int chtype = va_arg (__ap, int); - self->chtype = chtype; - break; - } - case QUARK_number: { - char * number = va_arg (__ap, char *); - char * __old_value = self->number; - self->number = g_strdup (number); - g_free (__old_value); - break; - } - case QUARK_number_STEAL: { - char * number = va_arg (__ap, char *); - self->number = number; - break; - } - default: - g_warning ("Argument named 'Check::%s' does not exist", arg); - break; - } - } -} - -static void -setv_class (Class * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_otype: { - char * otype = va_arg (__ap, char *); - char * __old_value = self->otype; - self->otype = g_strdup (otype); - g_free (__old_value); - break; - } - case QUARK_otype_STEAL: { - char * otype = va_arg (__ap, char *); - self->otype = otype; - break; - } - case QUARK_ptype: { - char * ptype = va_arg (__ap, char *); - char * __old_value = self->ptype; - self->ptype = g_strdup (ptype); - g_free (__old_value); - break; - } - case QUARK_ptype_STEAL: { - char * ptype = va_arg (__ap, char *); - self->ptype = ptype; - break; - } - case QUARK_bonobo_object_class: { - char * bonobo_object_class = va_arg (__ap, char *); - char * __old_value = self->bonobo_object_class; - self->bonobo_object_class = g_strdup (bonobo_object_class); - g_free (__old_value); - break; - } - case QUARK_bonobo_object_class_STEAL: { - char * bonobo_object_class = va_arg (__ap, char *); - self->bonobo_object_class = bonobo_object_class; - break; - } - case QUARK_glade_xml: { - gboolean glade_xml = va_arg (__ap, gboolean); - self->glade_xml = glade_xml; - break; - } - case QUARK_chunk_size: { - char * chunk_size = va_arg (__ap, char *); - char * __old_value = self->chunk_size; - self->chunk_size = g_strdup (chunk_size); - g_free (__old_value); - break; - } - case QUARK_chunk_size_STEAL: { - char * chunk_size = va_arg (__ap, char *); - self->chunk_size = chunk_size; - break; - } - case QUARK_interfaces: { - GList * interfaces = va_arg (__ap, GList *); - GList * __old_value = self->interfaces; - self->interfaces = g_list_copy (interfaces); COPY_LIST_VALS(self->interfaces, g_strdup); - g_list_foreach (__old_value, (GFunc)g_free, NULL); g_list_free (__old_value); - break; - } - case QUARK_interfaces_STEAL: { - GList * interfaces = va_arg (__ap, GList *); - self->interfaces = interfaces; - break; - } - case QUARK_nodes: { - GList * nodes = va_arg (__ap, GList *); - GList * __old_value = self->nodes; - self->nodes = node_list_copy (nodes); - node_list_free (__old_value); - break; - } - case QUARK_nodes_STEAL: { - GList * nodes = va_arg (__ap, GList *); - self->nodes = nodes; - break; - } - case QUARK_abstract: { - gboolean abstract = va_arg (__ap, gboolean); - self->abstract = abstract; - break; - } - default: - g_warning ("Argument named 'Class::%s' does not exist", arg); - break; - } - } -} - -static void -setv_enumdef (EnumDef * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_etype: { - char * etype = va_arg (__ap, char *); - char * __old_value = self->etype; - self->etype = g_strdup (etype); - g_free (__old_value); - break; - } - case QUARK_etype_STEAL: { - char * etype = va_arg (__ap, char *); - self->etype = etype; - break; - } - case QUARK_prefix: { - char * prefix = va_arg (__ap, char *); - char * __old_value = self->prefix; - self->prefix = g_strdup (prefix); - g_free (__old_value); - break; - } - case QUARK_prefix_STEAL: { - char * prefix = va_arg (__ap, char *); - self->prefix = prefix; - break; - } - case QUARK_values: { - GList * values = va_arg (__ap, GList *); - GList * __old_value = self->values; - self->values = node_list_copy (values); - node_list_free (__old_value); - break; - } - case QUARK_values_STEAL: { - GList * values = va_arg (__ap, GList *); - self->values = values; - break; - } - default: - g_warning ("Argument named 'EnumDef::%s' does not exist", arg); - break; - } - } -} - -static void -setv_enumvalue (EnumValue * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_name: { - char * name = va_arg (__ap, char *); - char * __old_value = self->name; - self->name = g_strdup (name); - g_free (__old_value); - break; - } - case QUARK_name_STEAL: { - char * name = va_arg (__ap, char *); - self->name = name; - break; - } - case QUARK_value: { - char * value = va_arg (__ap, char *); - char * __old_value = self->value; - self->value = g_strdup (value); - g_free (__old_value); - break; - } - case QUARK_value_STEAL: { - char * value = va_arg (__ap, char *); - self->value = value; - break; - } - default: - g_warning ("Argument named 'EnumValue::%s' does not exist", arg); - break; - } - } -} - -static void -setv_error (Error * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_etype: { - char * etype = va_arg (__ap, char *); - char * __old_value = self->etype; - self->etype = g_strdup (etype); - g_free (__old_value); - break; - } - case QUARK_etype_STEAL: { - char * etype = va_arg (__ap, char *); - self->etype = etype; - break; - } - case QUARK_prefix: { - char * prefix = va_arg (__ap, char *); - char * __old_value = self->prefix; - self->prefix = g_strdup (prefix); - g_free (__old_value); - break; - } - case QUARK_prefix_STEAL: { - char * prefix = va_arg (__ap, char *); - self->prefix = prefix; - break; - } - case QUARK_values: { - GList * values = va_arg (__ap, GList *); - GList * __old_value = self->values; - self->values = g_list_copy (values); COPY_LIST_VALS(self->values, g_strdup); - g_list_foreach (__old_value, (GFunc)g_free, NULL); g_list_free (__old_value); - break; - } - case QUARK_values_STEAL: { - GList * values = va_arg (__ap, GList *); - self->values = values; - break; - } - default: - g_warning ("Argument named 'Error::%s' does not exist", arg); - break; - } - } -} - -static void -setv_flags (Flags * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_ftype: { - char * ftype = va_arg (__ap, char *); - char * __old_value = self->ftype; - self->ftype = g_strdup (ftype); - g_free (__old_value); - break; - } - case QUARK_ftype_STEAL: { - char * ftype = va_arg (__ap, char *); - self->ftype = ftype; - break; - } - case QUARK_prefix: { - char * prefix = va_arg (__ap, char *); - char * __old_value = self->prefix; - self->prefix = g_strdup (prefix); - g_free (__old_value); - break; - } - case QUARK_prefix_STEAL: { - char * prefix = va_arg (__ap, char *); - self->prefix = prefix; - break; - } - case QUARK_values: { - GList * values = va_arg (__ap, GList *); - GList * __old_value = self->values; - self->values = g_list_copy (values); COPY_LIST_VALS(self->values, g_strdup); - g_list_foreach (__old_value, (GFunc)g_free, NULL); g_list_free (__old_value); - break; - } - case QUARK_values_STEAL: { - GList * values = va_arg (__ap, GList *); - self->values = values; - break; - } - default: - g_warning ("Argument named 'Flags::%s' does not exist", arg); - break; - } - } -} - -static void -setv_funcarg (FuncArg * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_atype: { - Type * atype = va_arg (__ap, Type *); - Type * __old_value = self->atype; - self->atype = copy_type (atype); - free_type (__old_value); - break; - } - case QUARK_atype_STEAL: { - Type * atype = va_arg (__ap, Type *); - self->atype = atype; - break; - } - case QUARK_name: { - char * name = va_arg (__ap, char *); - char * __old_value = self->name; - self->name = g_strdup (name); - g_free (__old_value); - break; - } - case QUARK_name_STEAL: { - char * name = va_arg (__ap, char *); - self->name = name; - break; - } - case QUARK_checks: { - GList * checks = va_arg (__ap, GList *); - GList * __old_value = self->checks; - self->checks = node_list_copy (checks); - node_list_free (__old_value); - break; - } - case QUARK_checks_STEAL: { - GList * checks = va_arg (__ap, GList *); - self->checks = checks; - break; - } - default: - g_warning ("Argument named 'FuncArg::%s' does not exist", arg); - break; - } - } -} - -static void -setv_method (Method * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_scope: { - int scope = va_arg (__ap, int); - self->scope = scope; - break; - } - case QUARK_method: { - int method = va_arg (__ap, int); - self->method = method; - break; - } - case QUARK_mtype: { - Type * mtype = va_arg (__ap, Type *); - Type * __old_value = self->mtype; - self->mtype = copy_type (mtype); - free_type (__old_value); - break; - } - case QUARK_mtype_STEAL: { - Type * mtype = va_arg (__ap, Type *); - self->mtype = mtype; - break; - } - case QUARK_otype: { - char * otype = va_arg (__ap, char *); - char * __old_value = self->otype; - self->otype = g_strdup (otype); - g_free (__old_value); - break; - } - case QUARK_otype_STEAL: { - char * otype = va_arg (__ap, char *); - self->otype = otype; - break; - } - case QUARK_gtktypes: { - GList * gtktypes = va_arg (__ap, GList *); - GList * __old_value = self->gtktypes; - self->gtktypes = g_list_copy (gtktypes); COPY_LIST_VALS(self->gtktypes, g_strdup); - g_list_foreach (__old_value, (GFunc)g_free, NULL); g_list_free (__old_value); - break; - } - case QUARK_gtktypes_STEAL: { - GList * gtktypes = va_arg (__ap, GList *); - self->gtktypes = gtktypes; - break; - } - case QUARK_flags: { - GList * flags = va_arg (__ap, GList *); - GList * __old_value = self->flags; - self->flags = g_list_copy (flags); COPY_LIST_VALS(self->flags, g_strdup); - g_list_foreach (__old_value, (GFunc)g_free, NULL); g_list_free (__old_value); - break; - } - case QUARK_flags_STEAL: { - GList * flags = va_arg (__ap, GList *); - self->flags = flags; - break; - } - case QUARK_signal_name: { - char * signal_name = va_arg (__ap, char *); - char * __old_value = self->signal_name; - self->signal_name = g_strdup (signal_name); - g_free (__old_value); - break; - } - case QUARK_signal_name_STEAL: { - char * signal_name = va_arg (__ap, char *); - self->signal_name = signal_name; - break; - } - case QUARK_id: { - char * id = va_arg (__ap, char *); - char * __old_value = self->id; - self->id = g_strdup (id); - g_free (__old_value); - break; - } - case QUARK_id_STEAL: { - char * id = va_arg (__ap, char *); - self->id = id; - break; - } - case QUARK_args: { - GList * args = va_arg (__ap, GList *); - GList * __old_value = self->args; - self->args = node_list_copy (args); - node_list_free (__old_value); - break; - } - case QUARK_args_STEAL: { - GList * args = va_arg (__ap, GList *); - self->args = args; - break; - } - case QUARK_funcattrs: { - char * funcattrs = va_arg (__ap, char *); - char * __old_value = self->funcattrs; - self->funcattrs = g_strdup (funcattrs); - g_free (__old_value); - break; - } - case QUARK_funcattrs_STEAL: { - char * funcattrs = va_arg (__ap, char *); - self->funcattrs = funcattrs; - break; - } - case QUARK_onerror: { - char * onerror = va_arg (__ap, char *); - char * __old_value = self->onerror; - self->onerror = g_strdup (onerror); - g_free (__old_value); - break; - } - case QUARK_onerror_STEAL: { - char * onerror = va_arg (__ap, char *); - self->onerror = onerror; - break; - } - case QUARK_defreturn: { - char * defreturn = va_arg (__ap, char *); - char * __old_value = self->defreturn; - self->defreturn = g_strdup (defreturn); - g_free (__old_value); - break; - } - case QUARK_defreturn_STEAL: { - char * defreturn = va_arg (__ap, char *); - self->defreturn = defreturn; - break; - } - case QUARK_cbuf: { - char * cbuf = va_arg (__ap, char *); - char * __old_value = self->cbuf; - self->cbuf = g_strdup (cbuf); - g_free (__old_value); - break; - } - case QUARK_cbuf_STEAL: { - char * cbuf = va_arg (__ap, char *); - self->cbuf = cbuf; - break; - } - case QUARK_line_no: { - int line_no = va_arg (__ap, int); - self->line_no = line_no; - break; - } - case QUARK_ccode_line: { - int ccode_line = va_arg (__ap, int); - self->ccode_line = ccode_line; - break; - } - case QUARK_vararg: { - gboolean vararg = va_arg (__ap, gboolean); - self->vararg = vararg; - break; - } - case QUARK_unique_id: { - int unique_id = va_arg (__ap, int); - self->unique_id = unique_id; - break; - } - case QUARK_bonobo_object_func: { - gboolean bonobo_object_func = va_arg (__ap, gboolean); - self->bonobo_object_func = bonobo_object_func; - break; - } - case QUARK_interface: { - char * interface = va_arg (__ap, char *); - char * __old_value = self->interface; - self->interface = g_strdup (interface); - g_free (__old_value); - break; - } - case QUARK_interface_STEAL: { - char * interface = va_arg (__ap, char *); - self->interface = interface; - break; - } - default: - g_warning ("Argument named 'Method::%s' does not exist", arg); - break; - } - } -} - -static void -setv_property (Property * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_gtktype: { - char * gtktype = va_arg (__ap, char *); - char * __old_value = self->gtktype; - self->gtktype = g_strdup (gtktype); - g_free (__old_value); - break; - } - case QUARK_gtktype_STEAL: { - char * gtktype = va_arg (__ap, char *); - self->gtktype = gtktype; - break; - } - case QUARK_ptype: { - Type * ptype = va_arg (__ap, Type *); - Type * __old_value = self->ptype; - self->ptype = copy_type (ptype); - free_type (__old_value); - break; - } - case QUARK_ptype_STEAL: { - Type * ptype = va_arg (__ap, Type *); - self->ptype = ptype; - break; - } - case QUARK_flags: { - GList * flags = va_arg (__ap, GList *); - GList * __old_value = self->flags; - self->flags = g_list_copy (flags); COPY_LIST_VALS(self->flags, g_strdup); - g_list_foreach (__old_value, (GFunc)g_free, NULL); g_list_free (__old_value); - break; - } - case QUARK_flags_STEAL: { - GList * flags = va_arg (__ap, GList *); - self->flags = flags; - break; - } - case QUARK_name: { - char * name = va_arg (__ap, char *); - char * __old_value = self->name; - self->name = g_strdup (name); - g_free (__old_value); - break; - } - case QUARK_name_STEAL: { - char * name = va_arg (__ap, char *); - self->name = name; - break; - } - case QUARK_canonical_name: { - char * canonical_name = va_arg (__ap, char *); - char * __old_value = self->canonical_name; - self->canonical_name = g_strdup (canonical_name); - g_free (__old_value); - break; - } - case QUARK_canonical_name_STEAL: { - char * canonical_name = va_arg (__ap, char *); - self->canonical_name = canonical_name; - break; - } - case QUARK_nick: { - char * nick = va_arg (__ap, char *); - char * __old_value = self->nick; - self->nick = g_strdup (nick); - g_free (__old_value); - break; - } - case QUARK_nick_STEAL: { - char * nick = va_arg (__ap, char *); - self->nick = nick; - break; - } - case QUARK_blurb: { - char * blurb = va_arg (__ap, char *); - char * __old_value = self->blurb; - self->blurb = g_strdup (blurb); - g_free (__old_value); - break; - } - case QUARK_blurb_STEAL: { - char * blurb = va_arg (__ap, char *); - self->blurb = blurb; - break; - } - case QUARK_minimum: { - char * minimum = va_arg (__ap, char *); - char * __old_value = self->minimum; - self->minimum = g_strdup (minimum); - g_free (__old_value); - break; - } - case QUARK_minimum_STEAL: { - char * minimum = va_arg (__ap, char *); - self->minimum = minimum; - break; - } - case QUARK_maximum: { - char * maximum = va_arg (__ap, char *); - char * __old_value = self->maximum; - self->maximum = g_strdup (maximum); - g_free (__old_value); - break; - } - case QUARK_maximum_STEAL: { - char * maximum = va_arg (__ap, char *); - self->maximum = maximum; - break; - } - case QUARK_default_value: { - char * default_value = va_arg (__ap, char *); - char * __old_value = self->default_value; - self->default_value = g_strdup (default_value); - g_free (__old_value); - break; - } - case QUARK_default_value_STEAL: { - char * default_value = va_arg (__ap, char *); - self->default_value = default_value; - break; - } - case QUARK_extra_gtktype: { - char * extra_gtktype = va_arg (__ap, char *); - char * __old_value = self->extra_gtktype; - self->extra_gtktype = g_strdup (extra_gtktype); - g_free (__old_value); - break; - } - case QUARK_extra_gtktype_STEAL: { - char * extra_gtktype = va_arg (__ap, char *); - self->extra_gtktype = extra_gtktype; - break; - } - case QUARK_override: { - gboolean override = va_arg (__ap, gboolean); - self->override = override; - break; - } - case QUARK_link: { - gboolean link = va_arg (__ap, gboolean); - self->link = link; - break; - } - case QUARK_export: { - gboolean export = va_arg (__ap, gboolean); - self->export = export; - break; - } - case QUARK_get: { - char * get = va_arg (__ap, char *); - char * __old_value = self->get; - self->get = g_strdup (get); - g_free (__old_value); - break; - } - case QUARK_get_STEAL: { - char * get = va_arg (__ap, char *); - self->get = get; - break; - } - case QUARK_get_line: { - int get_line = va_arg (__ap, int); - self->get_line = get_line; - break; - } - case QUARK_set: { - char * set = va_arg (__ap, char *); - char * __old_value = self->set; - self->set = g_strdup (set); - g_free (__old_value); - break; - } - case QUARK_set_STEAL: { - char * set = va_arg (__ap, char *); - self->set = set; - break; - } - case QUARK_set_line: { - int set_line = va_arg (__ap, int); - self->set_line = set_line; - break; - } - case QUARK_line_no: { - int line_no = va_arg (__ap, int); - self->line_no = line_no; - break; - } - default: - g_warning ("Argument named 'Property::%s' does not exist", arg); - break; - } - } -} - -static void -setv_type (Type * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_name: { - char * name = va_arg (__ap, char *); - char * __old_value = self->name; - self->name = g_strdup (name); - g_free (__old_value); - break; - } - case QUARK_name_STEAL: { - char * name = va_arg (__ap, char *); - self->name = name; - break; - } - case QUARK_pointer: { - char * pointer = va_arg (__ap, char *); - char * __old_value = self->pointer; - self->pointer = g_strdup (pointer); - g_free (__old_value); - break; - } - case QUARK_pointer_STEAL: { - char * pointer = va_arg (__ap, char *); - self->pointer = pointer; - break; - } - case QUARK_postfix: { - char * postfix = va_arg (__ap, char *); - char * __old_value = self->postfix; - self->postfix = g_strdup (postfix); - g_free (__old_value); - break; - } - case QUARK_postfix_STEAL: { - char * postfix = va_arg (__ap, char *); - self->postfix = postfix; - break; - } - default: - g_warning ("Argument named 'Type::%s' does not exist", arg); - break; - } - } -} - -static void -setv_variable (Variable * self, va_list __ap) -{ - int quark; - const char *arg; - ensure_quarks (); - while ((arg = va_arg (__ap, char *)) != NULL) { - quark = GPOINTER_TO_INT (g_hash_table_lookup (quark_ht, arg)); - switch (quark) { - case QUARK_scope: { - int scope = va_arg (__ap, int); - self->scope = scope; - break; - } - case QUARK_vtype: { - Type * vtype = va_arg (__ap, Type *); - Type * __old_value = self->vtype; - self->vtype = copy_type (vtype); - free_type (__old_value); - break; - } - case QUARK_vtype_STEAL: { - Type * vtype = va_arg (__ap, Type *); - self->vtype = vtype; - break; - } - case QUARK_glade_widget: { - gboolean glade_widget = va_arg (__ap, gboolean); - self->glade_widget = glade_widget; - break; - } - case QUARK_id: { - char * id = va_arg (__ap, char *); - char * __old_value = self->id; - self->id = g_strdup (id); - g_free (__old_value); - break; - } - case QUARK_id_STEAL: { - char * id = va_arg (__ap, char *); - self->id = id; - break; - } - case QUARK_line_no: { - int line_no = va_arg (__ap, int); - self->line_no = line_no; - break; - } - case QUARK_destructor_unref: { - gboolean destructor_unref = va_arg (__ap, gboolean); - self->destructor_unref = destructor_unref; - break; - } - case QUARK_destructor: { - char * destructor = va_arg (__ap, char *); - char * __old_value = self->destructor; - self->destructor = g_strdup (destructor); - g_free (__old_value); - break; - } - case QUARK_destructor_STEAL: { - char * destructor = va_arg (__ap, char *); - self->destructor = destructor; - break; - } - case QUARK_destructor_line: { - int destructor_line = va_arg (__ap, int); - self->destructor_line = destructor_line; - break; - } - case QUARK_destructor_simple: { - gboolean destructor_simple = va_arg (__ap, gboolean); - self->destructor_simple = destructor_simple; - break; - } - case QUARK_initializer: { - char * initializer = va_arg (__ap, char *); - char * __old_value = self->initializer; - self->initializer = g_strdup (initializer); - g_free (__old_value); - break; - } - case QUARK_initializer_STEAL: { - char * initializer = va_arg (__ap, char *); - self->initializer = initializer; - break; - } - case QUARK_initializer_line: { - int initializer_line = va_arg (__ap, int); - self->initializer_line = initializer_line; - break; - } - case QUARK_initializer_simple: { - gboolean initializer_simple = va_arg (__ap, gboolean); - self->initializer_simple = initializer_simple; - break; - } - default: - g_warning ("Argument named 'Variable::%s' does not exist", arg); - break; - } - } -} - -Node * -node_copy (Node *node) -{ - g_return_val_if_fail (node != NULL, NULL); - g_return_val_if_fail (node->type >= 0 && node->type < LAST_NODE_TYPE, NULL); - switch (node->type) { - case ARGUMENT_NODE: return (Node *)copy_argument ((Argument *)node); - case CCODE_NODE: return (Node *)copy_ccode ((CCode *)node); - case CHECK_NODE: return (Node *)copy_check ((Check *)node); - case CLASS_NODE: return (Node *)copy_class ((Class *)node); - case ENUMDEF_NODE: return (Node *)copy_enumdef ((EnumDef *)node); - case ENUMVALUE_NODE: return (Node *)copy_enumvalue ((EnumValue *)node); - case ERROR_NODE: return (Node *)copy_error ((Error *)node); - case FLAGS_NODE: return (Node *)copy_flags ((Flags *)node); - case FUNCARG_NODE: return (Node *)copy_funcarg ((FuncArg *)node); - case METHOD_NODE: return (Node *)copy_method ((Method *)node); - case PROPERTY_NODE: return (Node *)copy_property ((Property *)node); - case TYPE_NODE: return (Node *)copy_type ((Type *)node); - case VARIABLE_NODE: return (Node *)copy_variable ((Variable *)node); - default: return NULL; - } -} - -static void -node_setv (Node *node, va_list __ap) -{ - g_return_if_fail (node != NULL); - g_return_if_fail (node->type >= 0 && node->type < LAST_NODE_TYPE); - switch (node->type) { - case ARGUMENT_NODE: setv_argument ((Argument *)node, __ap); break; - case CCODE_NODE: setv_ccode ((CCode *)node, __ap); break; - case CHECK_NODE: setv_check ((Check *)node, __ap); break; - case CLASS_NODE: setv_class ((Class *)node, __ap); break; - case ENUMDEF_NODE: setv_enumdef ((EnumDef *)node, __ap); break; - case ENUMVALUE_NODE: setv_enumvalue ((EnumValue *)node, __ap); break; - case ERROR_NODE: setv_error ((Error *)node, __ap); break; - case FLAGS_NODE: setv_flags ((Flags *)node, __ap); break; - case FUNCARG_NODE: setv_funcarg ((FuncArg *)node, __ap); break; - case METHOD_NODE: setv_method ((Method *)node, __ap); break; - case PROPERTY_NODE: setv_property ((Property *)node, __ap); break; - case TYPE_NODE: setv_type ((Type *)node, __ap); break; - case VARIABLE_NODE: setv_variable ((Variable *)node, __ap); break; - default: break; - } -} - -void -node_set (Node *node, ...) -{ - va_list __ap; - va_start (__ap, node); - node_setv (node, __ap); - va_end (__ap); -} - -Node * -node_new (NodeType type, ...) -{ - va_list __ap; - Node *node = NULL; - va_start (__ap, type); - g_return_val_if_fail (type >= 0 && type < LAST_NODE_TYPE, NULL); - switch (type) { - case ARGUMENT_NODE: - node = (Node *)g_new0 (Argument, 1); - node->type = type; - setv_argument ((Argument *)node, __ap); - break; - case CCODE_NODE: - node = (Node *)g_new0 (CCode, 1); - node->type = type; - setv_ccode ((CCode *)node, __ap); - break; - case CHECK_NODE: - node = (Node *)g_new0 (Check, 1); - node->type = type; - setv_check ((Check *)node, __ap); - break; - case CLASS_NODE: - node = (Node *)g_new0 (Class, 1); - node->type = type; - setv_class ((Class *)node, __ap); - break; - case ENUMDEF_NODE: - node = (Node *)g_new0 (EnumDef, 1); - node->type = type; - setv_enumdef ((EnumDef *)node, __ap); - break; - case ENUMVALUE_NODE: - node = (Node *)g_new0 (EnumValue, 1); - node->type = type; - setv_enumvalue ((EnumValue *)node, __ap); - break; - case ERROR_NODE: - node = (Node *)g_new0 (Error, 1); - node->type = type; - setv_error ((Error *)node, __ap); - break; - case FLAGS_NODE: - node = (Node *)g_new0 (Flags, 1); - node->type = type; - setv_flags ((Flags *)node, __ap); - break; - case FUNCARG_NODE: - node = (Node *)g_new0 (FuncArg, 1); - node->type = type; - setv_funcarg ((FuncArg *)node, __ap); - break; - case METHOD_NODE: - node = (Node *)g_new0 (Method, 1); - node->type = type; - setv_method ((Method *)node, __ap); - break; - case PROPERTY_NODE: - node = (Node *)g_new0 (Property, 1); - node->type = type; - setv_property ((Property *)node, __ap); - break; - case TYPE_NODE: - node = (Node *)g_new0 (Type, 1); - node->type = type; - setv_type ((Type *)node, __ap); - break; - case VARIABLE_NODE: - node = (Node *)g_new0 (Variable, 1); - node->type = type; - setv_variable ((Variable *)node, __ap); - break; - default: break; - } - va_end (__ap); - return node; -} - -void -node_free (Node *node) -{ - g_return_if_fail (node != NULL); - g_return_if_fail (node->type >= 0 && node->type < LAST_NODE_TYPE); - switch (node->type) { - case ARGUMENT_NODE: free_argument ((Argument *)node); return; - case CCODE_NODE: free_ccode ((CCode *)node); return; - case CHECK_NODE: free_check ((Check *)node); return; - case CLASS_NODE: free_class ((Class *)node); return; - case ENUMDEF_NODE: free_enumdef ((EnumDef *)node); return; - case ENUMVALUE_NODE: free_enumvalue ((EnumValue *)node); return; - case ERROR_NODE: free_error ((Error *)node); return; - case FLAGS_NODE: free_flags ((Flags *)node); return; - case FUNCARG_NODE: free_funcarg ((FuncArg *)node); return; - case METHOD_NODE: free_method ((Method *)node); return; - case PROPERTY_NODE: free_property ((Property *)node); return; - case TYPE_NODE: free_type ((Type *)node); return; - case VARIABLE_NODE: free_variable ((Variable *)node); return; - default: return; - } -} - -GList * -node_list_copy (GList *nodes) -{ - GList *li; - nodes = g_list_copy (nodes); - for (li = nodes; li != NULL; li = li->next) { - li->data = node_copy (li->data); - } - return nodes; -} - -void -node_list_free (GList *nodes) -{ - GList *li; - for (li = nodes; li != NULL; li = li->next) { - node_free (li->data); - } - g_list_free (nodes); -} - diff --git a/src/treefuncs.h b/src/treefuncs.h deleted file mode 100644 index 325eb98..0000000 --- a/src/treefuncs.h +++ /dev/null @@ -1,262 +0,0 @@ -/* Generated by generate_treefuncs.pl from treefuncs.def! - * Do not edit by hand! */ - - -#ifndef TREEFUNCS_H -#define TREEFUNCS_H - -/* for ccode type */ -enum { - A_CCODE, - AT_CCODE, - C_CCODE, - AD_CCODE, - H_CCODE, - HT_CCODE, - PH_CCODE, - CT_CCODE -}; - -/* check type */ -enum { - NULL_CHECK, - TYPE_CHECK, - LT_CHECK, - GT_CHECK, - LE_CHECK, - GE_CHECK, - EQ_CHECK, - NE_CHECK -}; - -/* scope type */ -enum { - NO_SCOPE, - PUBLIC_SCOPE, - PRIVATE_SCOPE, - PROTECTED_SCOPE, - CLASS_SCOPE -}; - -/* method type */ -enum { - REGULAR_METHOD, - INIT_METHOD, - CLASS_INIT_METHOD, - CONSTRUCTOR_METHOD, - DISPOSE_METHOD, - FINALIZE_METHOD, - VIRTUAL_METHOD, - SIGNAL_LAST_METHOD, - SIGNAL_FIRST_METHOD, - OVERRIDE_METHOD -}; - - - -typedef long NodeType; -enum { - CLASS_NODE, - TYPE_NODE, - CCODE_NODE, - CHECK_NODE, - FUNCARG_NODE, - ARGUMENT_NODE, - PROPERTY_NODE, - METHOD_NODE, - VARIABLE_NODE, - ENUMDEF_NODE, - ENUMVALUE_NODE, - FLAGS_NODE, - ERROR_NODE, - LAST_NODE_TYPE -}; - -typedef union _Node Node; -typedef struct _Class Class; -typedef struct _Type Type; -typedef struct _CCode CCode; -typedef struct _Check Check; -typedef struct _FuncArg FuncArg; -typedef struct _Argument Argument; -typedef struct _Property Property; -typedef struct _Method Method; -typedef struct _Variable Variable; -typedef struct _EnumDef EnumDef; -typedef struct _EnumValue EnumValue; -typedef struct _Flags Flags; -typedef struct _Error Error; - - -struct _Argument { - NodeType type; - char * gtktype; - Type * atype; - GList * flags; - char * name; - char * get; - int get_line; - char * set; - int set_line; - int line_no; -}; - -struct _CCode { - NodeType type; - int cctype; - char * cbuf; - int line_no; -}; - -struct _Check { - NodeType type; - int chtype; - char * number; -}; - -struct _Class { - NodeType type; - char * otype; - char * ptype; - char * bonobo_object_class; - gboolean glade_xml; - char * chunk_size; - GList * interfaces; - GList * nodes; - gboolean abstract; -}; - -struct _EnumDef { - NodeType type; - char * etype; - char * prefix; - GList * values; -}; - -struct _EnumValue { - NodeType type; - char * name; - char * value; -}; - -struct _Error { - NodeType type; - char * etype; - char * prefix; - GList * values; -}; - -struct _Flags { - NodeType type; - char * ftype; - char * prefix; - GList * values; -}; - -struct _FuncArg { - NodeType type; - Type * atype; - char * name; - GList * checks; -}; - -struct _Method { - NodeType type; - int scope; - int method; - Type * mtype; - char * otype; - GList * gtktypes; - GList * flags; - char * signal_name; - char * id; - GList * args; - char * funcattrs; - char * onerror; - char * defreturn; - char * cbuf; - int line_no; - int ccode_line; - gboolean vararg; - int unique_id; - gboolean bonobo_object_func; - char * interface; -}; - -struct _Property { - NodeType type; - char * gtktype; - Type * ptype; - GList * flags; - char * name; - char * canonical_name; - char * nick; - char * blurb; - char * minimum; - char * maximum; - char * default_value; - char * extra_gtktype; - gboolean override; - gboolean link; - gboolean export; - char * get; - int get_line; - char * set; - int set_line; - int line_no; -}; - -struct _Type { - NodeType type; - char * name; - char * pointer; - char * postfix; -}; - -struct _Variable { - NodeType type; - int scope; - Type * vtype; - gboolean glade_widget; - char * id; - int line_no; - gboolean destructor_unref; - char * destructor; - int destructor_line; - gboolean destructor_simple; - char * initializer; - int initializer_line; - gboolean initializer_simple; -}; - -union _Node { - NodeType type; - Argument argument; - CCode ccode; - Check check; - Class class; - EnumDef enumdef; - EnumValue enumvalue; - Error error; - Flags flags; - FuncArg funcarg; - Method method; - Property property; - Type _type; - Variable variable; -}; - - -/* General copy/free functions */ -Node * node_copy (Node *node); -void node_free (Node *node); - -GList * node_list_copy (GList *nodes); -void node_list_free (GList *nodes); - -/* Node new/set functions */ -Node * node_new (NodeType type, ...); -void node_set (Node *node, ...); - - -#endif /* TREEFUNCS_H */ -- 2.43.0