From 38fac18bf81df672821ebbac4130ce41f0a6c61f Mon Sep 17 00:00:00 2001 From: George Lebl Date: Sat, 2 Feb 2002 00:11:00 -0800 Subject: [PATCH] Release 1.99.2 --- ChangeLog | 106 ++ Makefile.in | 12 +- NEWS | 190 +--- aclocal.m4 | 318 ++---- configure | 1676 +++++++++++++++++++------------ configure.in | 13 +- doc/Makefile.in | 10 +- examples/Makefile.in | 10 +- examples/foo-some-interface.gob | 8 +- gob2.m4 | 6 +- gob2.spec | 4 +- missing | 20 +- src/Makefile.am | 23 +- src/Makefile.in | 36 +- src/lexer.c | 1541 +++++++++++++++------------- src/lexer.l | 59 +- src/main.c | 708 +++++++++++-- src/parse.c | 1540 ++++++++++++++++------------ src/parse.h | 15 +- src/parse.y | 175 +++- src/test.gob | 49 +- src/treefuncs.c | 444 +++++++- src/treefuncs.def | 34 +- src/treefuncs.h | 45 +- stamp-h.in | 1 + 25 files changed, 4408 insertions(+), 2635 deletions(-) diff --git a/ChangeLog b/ChangeLog index 99e9511..fbb99bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,109 @@ +Fri Feb 01 15:19:07 2002 George Lebl + + * Release 1.99.2 + +Fri Feb 01 01:42:09 2002 George Lebl + + * src/main.c: get rid of the old way of doing typesafe signal + connection and make a new way where there are full connect + macros for connect, connect_after and connect_data for each + signal. A bit more heavy weight (only at compile time), but + it actually works, and is cleaner really. + +2002-01-22 Bastien Nocera + + * src/main.c: (make_arguments): move the get_ and set_property before + parameters settings to work with latest glib + +Fri Jan 18 14:21:22 2002 George Lebl + + * src/treefuncs.(def|c|h), src/parse.y, src/lexer.l, src/main.c: + Implement GError definitions. + +Thu Jan 17 02:39:02 2002 George Lebl + + * gob2.m4: fix version check + + * configure.in, src/Makefile.am: some build fixes and raise version + +Thu Jan 10 22:05:42 2002 George Lebl + + * src/parser.y, src/lexer.l, src/main.c, src/Makefile.am, + src/test.gob, src/treefuncs.(def|c|h): Implement using of + interfaces. That is, you can now implement interfaces on your + objects. You still can't define interfaces, that's step two. + +Sun Dec 30 18:25:25 2001 George Lebl + + * src/main.c: Apply patch from Josh Parsons , + to fix some code generation + + * src/parse.y: Be anal in linking string properties. + +Thu Dec 20 17:39:32 2001 George Lebl + + * src/main.c: Apply patch from Josh Parsons + to enhance the m4 support, fix init function generation and + correctly include glib-object.h. Massage it a bit further as + well. + +Mon Nov 05 11:45:46 2001 George Lebl + + * src/lexer.l, src/parser.y, src/main.c, src/treefuncs.def: + Add flags and enum creation code, so you can do things in + a more gob like manner rather then the glib-mkenums setup. + +2001-10-27 Seth Nickell + + Make BonoboObject stuff work, almost as much fun as + blowing goats and twice as messy. Built code still + requires a patch to libbonobo to run (changing the + name of the TYPE macro to fit w/ GNOME standards), + so retaining a warning that BonoboObject doesn't + really work (oh, but it does :-) + + * configure.in: + + Make sure to substitute YFLAGS so you don't get undefined + crap when you use @YFLAGS@ in Makefile.am. + + * src/main.c: (add_bonobo_object_get_type) + + Add a GObject type function for BonoboObject stuff. + + * src/main.c: (make_bonobo_object_epv) + + Append self_ to function call as per gob2. + + * src/main.c: (add_inits), (print_class_block) + * src/parse.y: + * src/treefuncs.c: (ensure_quarks), (copy_class), (copy_method), + (free_class), (setv_class), (setv_method): + * src/treefuncs.def: + * src/treefuncs.h: + + Change to using BonoboObject rather than BonoboXObject. + + * examples/foo-some-interface.c + + Update to work with GOB2 with BonoboObjectTechnology(TM). + +2001-10-26 Seth Nickell + + * src/Makefile.am: + + Add top_srcdir to the include flags to pick up config.h + on my system. + +Sat Oct 20 17:40:58 2001 George Lebl + + * src/Makefile.am: a few fixes + +Sat Oct 20 16:59:19 2001 George Lebl + + * src/lexer.l, src/main.c, src/Makefile.am: Apply m4 preprocessing + patch by Josh Parsons + Sat Sep 29 17:00:39 2001 George Lebl * doc/Makefile.am: update diff --git a/Makefile.in b/Makefile.in index 7385530..3bbea28 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -63,10 +63,7 @@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ DOINSTGOB = @DOINSTGOB@ GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GOBJECT_QUERY = @GOBJECT_QUERY@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ MAINT = @MAINT@ @@ -79,6 +76,7 @@ RM = @RM@ TAR = @TAR@ VERSION = @VERSION@ YACC = @YACC@ +YFLAGS = @YFLAGS@ SUBDIRS = @SUBDIRS@ DIST_SUBDIRS = src doc examples @@ -113,7 +111,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in cd $(srcdir) && $(ACLOCAL) -config.status: $(srcdir)/configure.in $(CONFIG_STATUS_DEPENDENCIES) +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) @@ -203,7 +201,7 @@ maintainer-clean-recursive: dot_seen=no; \ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ rev="$$subdir $$rev"; \ - test "$$subdir" = "." && dot_seen=yes; \ + test "$$subdir" != "." || dot_seen=yes; \ done; \ test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ diff --git a/NEWS b/NEWS index 045c60f..bfd0075 100644 --- a/NEWS +++ b/NEWS @@ -1,182 +1,8 @@ -1.0.7 - * allow overriding of get_type (allows BonoboXObject) - -1.0.6 - * works with new gcc better - * signal connection typesafety macros - -1.0.5 - * gob.m4 defaults to WARN (Eskil) - * fix argumentless methods - * cleanup - * _get_type function is now G_GNUC_CONST - -1.0.4 - * Fix segfault in finalize - * Minor fixes and improvements - - NOTE: Everyone should update due to the segfault fix! - -1.0.3 - * Add "const self", and a _CONST cast macro (Bas van der Linden) - * Objects should compile with Glib/GTK+ 1.3 (to become 2.0) - * Parent handler is properly called for destroy and finalize - * Fixes in documentation and examples - -1.0.2 - * Fix "const" handeling - * Allow use of chunks for new object allocation (Bas van der Linden) - * Add __GOB_FUNCTION__ define for each function (Bas van der Linden) - * Add --always-private-struct option - * stringlink strdups on get - * Minor fixes - - NOTE: if you are using stringlink, you might notice a memory leak - since from 1.0.2 stringlink strdups the string instead of just - returning it - -1.0.1 - * documentation fixes - * fix the behaviour of the private header switches - -1.0.0 - * accept an identifier such as a constant in array dimensions - * updated manpage with build instructions - -0.93.5 - * destructors run after destroy, not before finalize, - * zero out data after destruction - * added Self typedef to complement the SELF macros - * initial underscore removal from full names, to help to avoid - name conflicts - -0.93.4 - * classwide (global) datamembers - * private header file always generated by default - -0.93.3 - * fix signals with return values but no arguments - * more input file checking - -0.93.2 - * defreturn for default return values on signals/virtuals - * code reorganisation - -0.93.1 - * accept 1 word types - * gob.m4 improvements (Eskil) - * minor fixes, and improvements - -0.93.0 - * data member initialization - * pointer data member destruction - * automatic argument to data member linking for simple cases - * other minor fixes/improvements - -0.92.4 - * -n flag (Dave Dunkin) - * all and alltop code sections (Dave Dunkin) - * GTK_RUN_ flags for signals - * self casting macros - * other small fixes - -0.92.3 - * inline documentation support - * standard m4 autoconf macro (thanks to Eskil Heyn Olsen) - * cleanups - -0.92.2 - * more header code sections - * some code restructuring - * always extern "C" the header (unless --no-extern-c is used) - * object typedef protecting define for avoiding circular includes - -0.92.1 - * typesafe macros for argument setting/getting - * generated code will take advantage of GNU C extentions if compiled - under GNU C - * move _priv structure freeing into finalize - * more gob file compilation checks - * other improvements and fixes - - NOTE: The generated files with this version will be larger because - of some more preprocessor magic that is done to make the thing saner, - and faster. Don't worry about it as the resulting object file should - not get larger. - -0.92.0 - * added protected methods and datamembers. - * better handeling of empty methods - * allow scope keywords before the virutal or signal keyword - * merge signal marshallers that are the same to reduce code size - * various small fixes and improvements - -0.91.2 - * PARENT_HANDLER can now return a value for non-void overrides - * allow empty classes and empty function bodies - * allow public keyword around signals and virtuals for consistency - * small bugfixes - -0.91.1 - * WARNING! slight change in the private stuff again, private - structure definition (_priv) is now in a private header file, - which you must include explicitly if you include the public - header file explicitly in your .gob file. 0.91.0 behaviour - is obtainable with the --no-private-header option - * added support for array data members and function arguments - -0.91.0 - * WARNING! change the way private data members are done, now you need - to access them through a private structure only available in the - C file, object->member becomes object->_priv->member - * add support for placing the object header anywhere in the C file - * bunch of further sanity checks added - * add some simple examples - -0.90.5 - * added PARENT_HANDLER macro for overrides - * added _TYPE_ macro for _get_type method - * warn if signal parameter lists seem mismatched - -0.90.4 - * fix buggy class structure generation - * can generate C++ friendly code - * function aliases are now done by static pointers rather then defines - * more... - -0.90.3 - * does not require popt - * don't kill comments from C code blocks - * support for being "embedded" inside other projects to avoid - dependencies (look at README) - * a bunch of fixes - -0.90.2 - * add support for private signals and virtuals - * fix bug with varargs - -0.90.1 - * accept 'const' in argument lists - * accept '...' in public and private method argument lists - -0.90.0 - * changed "this" to "self" but recognize "this" as well - * warn if "new" is not public - * check symbols/arguments/signals for duplicates - -0.0.4 - * you can have tokens inside check statements - * avoid warnings when no overrides, signals and arguments - -0.0.3 - * "type", "check", "first", "last" and "null" no longer reserved - words in method prototypes - * GET_NEW defined for the entire file - * added #line's to the .c files so that errors get reported on the - .gob file, there are no #line's in .h file however! - * bug fixes - -0.0.2 - * bug fixes - * autoconf/automake setup - * man page +1.99.2: + * allow implementation (but not definition yet) of interfaces + * enum, flags and GError creation code + * BonoboObject stuff (Seth) + * build fixes (me, Seth) + * m4 preprocessing stuff (Josh Parsons) + * Code generation fixes (Josh Parsons, Bastien Nocera, me) + * New way of doing typesafe signal connections diff --git a/aclocal.m4 b/aclocal.m4 index 05af4e4..f7f73ef 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4-p4 +dnl aclocal.m4 generated automatically by aclocal 1.4-p5 -dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -12,7 +12,7 @@ dnl PARTICULAR PURPOSE. # Like AC_CONFIG_HEADER, but automatically create stamp file. -AC_DEFUN(AM_CONFIG_HEADER, +AC_DEFUN([AM_CONFIG_HEADER], [AC_PREREQ([2.12]) AC_CONFIG_HEADER([$1]) dnl When config.status generates a header, we must update the stamp-h file. @@ -42,7 +42,7 @@ changequote([,]))]) dnl Usage: dnl AM_INIT_AUTOMAKE(package,version, [no-define]) -AC_DEFUN(AM_INIT_AUTOMAKE, +AC_DEFUN([AM_INIT_AUTOMAKE], [AC_REQUIRE([AC_PROG_INSTALL]) PACKAGE=[$1] AC_SUBST(PACKAGE) @@ -70,7 +70,7 @@ AC_REQUIRE([AC_PROG_MAKE_SET])]) # Check to make sure that the build environment is sane. # -AC_DEFUN(AM_SANITY_CHECK, +AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 @@ -111,7 +111,7 @@ AC_MSG_RESULT(yes)]) dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) dnl The program must properly implement --version. -AC_DEFUN(AM_MISSING_PROG, +AC_DEFUN([AM_MISSING_PROG], [AC_MSG_CHECKING(for working $2) # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. @@ -125,230 +125,12 @@ else fi AC_SUBST($1)]) - -dnl AM_PROG_LEX -dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT -AC_DEFUN(AM_PROG_LEX, -[missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1) -AC_CHECK_PROGS(LEX, flex lex, "$missing_dir/missing flex") -AC_PROG_LEX -AC_DECL_YYTEXT]) - -# Configure paths for GLIB -# Owen Taylor 1997-2001 - -dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) -dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject or -dnl gthread is specified in MODULES, pass to pkg-config -dnl -AC_DEFUN(AM_PATH_GLIB_2_0, -[dnl -dnl Get the cflags and libraries from pkg-config -dnl -AC_ARG_ENABLE(glibtest, [ --disable-glibtest Do not try to compile and run a test GLIB program], - , enable_glibtest=yes) - - pkg_config_args=glib-2.0 - for module in . $4 - do - case "$module" in - gmodule) - pkg_config_args="$pkg_config_args gmodule-2.0" - ;; - gobject) - pkg_config_args="$pkg_config_args gobject-2.0" - ;; - gthread) - pkg_config_args="$pkg_config_args gthread-2.0" - ;; - esac - done - - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - - no_glib="" - - if test x$PKG_CONFIG != xno ; then - if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then - : - else - echo *** pkg-config too old; version 0.7 or better required. - no_glib=yes - PKG_CONFIG=no - fi - fi - - ## don't try to run the test against uninstalled libtool libs - if $PKG_CONFIG --uninstalled $pkg_config_args; then - echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" - enable_glibtest=no - fi - - min_glib_version=ifelse([$1], ,1.3.3,$1) - AC_MSG_CHECKING(for GLIB - version >= $min_glib_version) - - if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then - : - else - no_glib = yes - fi - - if test x"$no_glib" = x ; then - GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` - GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` - GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` - - GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` - GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` - glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_glibtest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GLIB_CFLAGS" - LIBS="$GLIB_LIBS $LIBS" -dnl -dnl Now check if the installed GLIB is sufficiently new. (Also sanity -dnl checks the results of pkg-config to some extent) -dnl - rm -f conf.glibtest - AC_TRY_RUN([ -#include -#include -#include - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.glibtest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_glib_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_glib_version"); - exit(1); - } - - if ((glib_major_version != $glib_config_major_version) || - (glib_minor_version != $glib_config_minor_version) || - (glib_micro_version != $glib_config_micro_version)) - { - printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", - $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, - glib_major_version, glib_minor_version, glib_micro_version); - printf ("*** was found! If pkg-config was correct, then it is best\n"); - printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); - printf("*** to point to the correct configuration files\n"); - } - else if ((glib_major_version != GLIB_MAJOR_VERSION) || - (glib_minor_version != GLIB_MINOR_VERSION) || - (glib_micro_version != GLIB_MICRO_VERSION)) - { - printf("*** GLIB header files (version %d.%d.%d) do not match\n", - GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - glib_major_version, glib_minor_version, glib_micro_version); - } - else - { - if ((glib_major_version > major) || - ((glib_major_version == major) && (glib_minor_version > minor)) || - ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n", - glib_major_version, glib_minor_version, glib_micro_version); - printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); - printf("*** correct copy of pkg-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} -],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_glib" = x ; then - AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$PKG_CONFIG" = "no" ; then - echo "*** A new enough version of pkg-config was not found." - echo "*** See http://www.freedesktop.org/software/pkgconfig/" - else - if test -f conf.glibtest ; then - : - else - echo "*** Could not run GLIB test program, checking why..." - CFLAGS="$CFLAGS $GLIB_CFLAGS" - LIBS="$LIBS $GLIB_LIBS" - AC_TRY_LINK([ -#include -#include -], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GLIB or finding the wrong" - echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GLIB was incorrectly installed" - echo "*** or that you have moved GLIB since it was installed. In the latter case, you" - echo "*** may want to edit the pkg-config script: $PKG_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GLIB_CFLAGS="" - GLIB_LIBS="" - GLIB_GENMARSHAL="" - GOBJECT_QUERY="" - GLIB_MKENUMS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(GLIB_CFLAGS) - AC_SUBST(GLIB_LIBS) - AC_SUBST(GLIB_GENMARSHAL) - AC_SUBST(GOBJECT_QUERY) - AC_SUBST(GLIB_MKENUMS) - rm -f conf.glibtest -]) - # Add --enable-maintainer-mode option to configure. # From Jim Meyering # serial 1 -AC_DEFUN(AM_MAINTAINER_MODE, +AC_DEFUN([AM_MAINTAINER_MODE], [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, @@ -365,7 +147,7 @@ AC_DEFUN(AM_MAINTAINER_MODE, # Define a conditional. -AC_DEFUN(AM_CONDITIONAL, +AC_DEFUN([AM_CONDITIONAL], [AC_SUBST($1_TRUE) AC_SUBST($1_FALSE) if $2; then @@ -376,3 +158,87 @@ else $1_FALSE= fi]) +#serial 1 +# This test replaces the one in autoconf. +# Currently this macro should have the same name as the autoconf macro +# because gettext's gettext.m4 (distributed in the automake package) +# still uses it. Otherwise, the use in gettext.m4 makes autoheader +# give these diagnostics: +# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX + +undefine([AC_ISC_POSIX]) + +AC_DEFUN([AC_ISC_POSIX], + [ + dnl This test replaces the obsolescent AC_ISC_POSIX kludge. + AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) + ] +) + + +dnl AM_PROG_LEX +dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT +AC_DEFUN([AM_PROG_LEX], +[missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1) +AC_CHECK_PROGS(LEX, flex lex, "$missing_dir/missing flex") +AC_PROG_LEX +AC_DECL_YYTEXT]) + + +dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) +dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page +dnl also defines GSTUFF_PKG_ERRORS on error +AC_DEFUN(PKG_CHECK_MODULES, [ + succeeded=no + + if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + if ! $PKG_CONFIG --atleast-pkgconfig-version 0.7.0; then + echo "*** Your version of pkg-config is too old. You need version 0.7.0 or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + else + AC_MSG_CHECKING(for $2) + + if $PKG_CONFIG --exists "$2" ; then + AC_MSG_RESULT(yes) + succeeded=yes + + AC_MSG_CHECKING($1_CFLAGS) + $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` + AC_MSG_RESULT($$1_CFLAGS) + + AC_MSG_CHECKING($1_LIBS) + $1_LIBS=`$PKG_CONFIG --libs "$2"` + AC_MSG_RESULT($$1_LIBS) + else + $1_CFLAGS="" + $1_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` + ifelse([$4], ,echo $$1_PKG_ERRORS,) + fi + + AC_SUBST($1_CFLAGS) + AC_SUBST($1_LIBS) + fi + fi + + if test $succeeded = yes; then + ifelse([$3], , :, [$3]) + else + ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) + fi +]) + + + diff --git a/configure b/configure index 59e47ec..1018214 100755 --- a/configure +++ b/configure @@ -632,7 +632,6 @@ if test -n "$ac_init_help"; then Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-glibtest Do not try to compile and run a test GLIB program --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer @@ -828,7 +827,7 @@ if test -z "$CONFIG_SITE"; then fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then - { echo "$as_me:831: loading site script $ac_site_file" >&5 + { echo "$as_me:830: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} cat "$ac_site_file" >&5 . "$ac_site_file" @@ -839,7 +838,7 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then - { echo "$as_me:842: loading cache $cache_file" >&5 + { echo "$as_me:841: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; @@ -847,7 +846,7 @@ echo "$as_me: loading cache $cache_file" >&6;} esac fi else - { echo "$as_me:850: creating cache $cache_file" >&5 + { echo "$as_me:849: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi @@ -863,21 +862,21 @@ for ac_var in `(set) 2>&1 | eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) - { echo "$as_me:866: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 + { echo "$as_me:865: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:870: error: \`$ac_var' was not set in the previous run" >&5 + { echo "$as_me:869: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:876: error: \`$ac_var' has changed since the previous run:" >&5 + { echo "$as_me:875: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:878: former value: $ac_old_val" >&5 + { echo "$as_me:877: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:880: current value: $ac_new_val" >&5 + { echo "$as_me:879: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; @@ -896,9 +895,9 @@ echo "$as_me: current value: $ac_new_val" >&2;} fi done if $ac_cache_corrupted; then - { echo "$as_me:899: error: changes in the environment can compromise the build" >&5 + { echo "$as_me:898: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:901: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 + { { echo "$as_me:900: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi @@ -918,10 +917,10 @@ esac echo "#! $SHELL" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh -if { (echo "$as_me:921: PATH=\".;.\"; conftest.sh") >&5 +if { (echo "$as_me:920: PATH=\".;.\"; conftest.sh") >&5 (PATH=".;."; conftest.sh) 2>&5 ac_status=$? - echo "$as_me:924: \$? = $ac_status" >&5 + echo "$as_me:923: \$? = $ac_status" >&5 (exit $ac_status); }; then ac_path_separator=';' else @@ -951,7 +950,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:954: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 + { { echo "$as_me:953: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi @@ -971,7 +970,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:974: checking for a BSD compatible install" >&5 +echo "$as_me:973: checking for a BSD compatible install" >&5 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then @@ -1020,7 +1019,7 @@ fi INSTALL=$ac_install_sh fi fi -echo "$as_me:1023: result: $INSTALL" >&5 +echo "$as_me:1022: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. @@ -1031,7 +1030,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -echo "$as_me:1034: checking whether build environment is sane" >&5 +echo "$as_me:1033: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 @@ -1054,7 +1053,7 @@ if ( # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - { { echo "$as_me:1057: error: ls -t appears to fail. Make sure there is not a broken + { { echo "$as_me:1056: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} @@ -1067,14 +1066,14 @@ then # Ok. : else - { { echo "$as_me:1070: error: newly created file is older than distributed files! + { { echo "$as_me:1069: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest* -echo "$as_me:1077: result: yes" >&5 +echo "$as_me:1076: result: yes" >&5 echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && program_transform_name="s,^,$program_prefix,;$program_transform_name" @@ -1089,7 +1088,7 @@ _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed -echo "$as_me:1092: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "$as_me:1091: checking whether ${MAKE-make} sets \${MAKE}" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then @@ -1109,21 +1108,21 @@ fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:1112: result: yes" >&5 + echo "$as_me:1111: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else - echo "$as_me:1116: result: no" >&5 + echo "$as_me:1115: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi PACKAGE=gob2 -VERSION=1.99.1 +VERSION=1.99.2 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - { { echo "$as_me:1126: error: source directory already configured; run \"make distclean\" there first" >&5 + { { echo "$as_me:1125: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi @@ -1137,85 +1136,108 @@ cat >>confdefs.h <&5 +echo "$as_me:1139: checking for working aclocal" >&5 echo $ECHO_N "checking for working aclocal... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (aclocal --version) < /dev/null > /dev/null 2>&1; then ACLOCAL=aclocal - echo "$as_me:1147: result: found" >&5 + echo "$as_me:1146: result: found" >&5 echo "${ECHO_T}found" >&6 else ACLOCAL="$missing_dir/missing aclocal" - echo "$as_me:1151: result: missing" >&5 + echo "$as_me:1150: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi -echo "$as_me:1155: checking for working autoconf" >&5 +echo "$as_me:1154: checking for working autoconf" >&5 echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoconf --version) < /dev/null > /dev/null 2>&1; then AUTOCONF=autoconf - echo "$as_me:1162: result: found" >&5 + echo "$as_me:1161: result: found" >&5 echo "${ECHO_T}found" >&6 else AUTOCONF="$missing_dir/missing autoconf" - echo "$as_me:1166: result: missing" >&5 + echo "$as_me:1165: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi -echo "$as_me:1170: checking for working automake" >&5 +echo "$as_me:1169: checking for working automake" >&5 echo $ECHO_N "checking for working automake... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (automake --version) < /dev/null > /dev/null 2>&1; then AUTOMAKE=automake - echo "$as_me:1177: result: found" >&5 + echo "$as_me:1176: result: found" >&5 echo "${ECHO_T}found" >&6 else AUTOMAKE="$missing_dir/missing automake" - echo "$as_me:1181: result: missing" >&5 + echo "$as_me:1180: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi -echo "$as_me:1185: checking for working autoheader" >&5 +echo "$as_me:1184: checking for working autoheader" >&5 echo $ECHO_N "checking for working autoheader... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoheader --version) < /dev/null > /dev/null 2>&1; then AUTOHEADER=autoheader - echo "$as_me:1192: result: found" >&5 + echo "$as_me:1191: result: found" >&5 echo "${ECHO_T}found" >&6 else AUTOHEADER="$missing_dir/missing autoheader" - echo "$as_me:1196: result: missing" >&5 + echo "$as_me:1195: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi -echo "$as_me:1200: checking for working makeinfo" >&5 +echo "$as_me:1199: checking for working makeinfo" >&5 echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (makeinfo --version) < /dev/null > /dev/null 2>&1; then MAKEINFO=makeinfo - echo "$as_me:1207: result: found" >&5 + echo "$as_me:1206: result: found" >&5 echo "${ECHO_T}found" >&6 else MAKEINFO="$missing_dir/missing makeinfo" - echo "$as_me:1211: result: missing" >&5 + echo "$as_me:1210: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi +echo "$as_me:1214: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi; + echo "$as_me:1223: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + MAINT=$MAINTAINER_MODE_TRUE + +GLIB_REQUIRED=1.3.12 + if test -f ../NOINST_GOB ; then DOINSTGOB= NOINSTGOB=gob2 - echo "$as_me:1218: result: *** NOT Going to install GOB ***" >&5 + echo "$as_me:1240: result: *** NOT Going to install GOB ***" >&5 echo "${ECHO_T}*** NOT Going to install GOB ***" >&6 SUBDIRS="src examples" @@ -1234,7 +1256,756 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:1237: checking for $ac_word" >&5 +echo "$as_me:1259: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="${ac_tool_prefix}gcc" +echo "$as_me:1274: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1282: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1285: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:1294: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="gcc" +echo "$as_me:1309: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1317: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1320: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:1333: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="${ac_tool_prefix}cc" +echo "$as_me:1348: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1356: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1359: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:1368: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="cc" +echo "$as_me:1383: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1391: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1394: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:1407: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue +fi +ac_cv_prog_CC="cc" +echo "$as_me:1427: found $ac_dir/$ac_word" >&5 +break +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" ${1+"$@"} + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1449: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1452: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:1463: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +echo "$as_me:1478: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1486: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1489: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:1502: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="$ac_prog" +echo "$as_me:1517: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1525: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1528: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + +test -z "$CC" && { { echo "$as_me:1540: error: no acceptable cc found in \$PATH" >&5 +echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:1545:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:1548: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:1551: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:1553: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:1556: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:1558: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:1561: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line 1565 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:1581: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:1584: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:1587: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. +for ac_file in `ls a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:1610: error: C compiler cannot create executables" >&5 +echo "$as_me: error: C compiler cannot create executables" >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:1616: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:1621: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:1627: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1630: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:1637: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:1645: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:1652: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:1654: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:1657: checking for executable suffix" >&5 +echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 +if { (eval echo "$as_me:1659: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1662: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:1678: error: cannot compute EXEEXT: cannot compile and link" >&5 +echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:1684: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:1690: checking for object suffix" >&5 +echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 1696 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:1708: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1711: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:1723: error: cannot compute OBJEXT: cannot compile" >&5 +echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:1730: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:1734: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 1740 "configure" +#include "confdefs.h" + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1755: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1758: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1761: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1764: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:1776: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:1782: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 1788 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1800: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1803: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1806: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1809: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:1819: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1846: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1849: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1852: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1855: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line 1867 "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1880: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1883: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1886: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1889: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line 1899 "configure" +#include "confdefs.h" +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1911: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1914: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1917: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1920: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + echo "$as_me:1947: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 +if test "${ac_cv_lib_cposix_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 1955 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:1974: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1977: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:1980: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1983: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cposix_strerror=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_cposix_strerror=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:1994: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 +if test $ac_cv_lib_cposix_strerror = yes; then + LIBS="$LIBS -lcposix" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:2008: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1249,7 +2020,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CC="${ac_tool_prefix}gcc" -echo "$as_me:1252: found $ac_dir/$ac_word" >&5 +echo "$as_me:2023: found $ac_dir/$ac_word" >&5 break done @@ -1257,10 +2028,10 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1260: result: $CC" >&5 + echo "$as_me:2031: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else - echo "$as_me:1263: result: no" >&5 + echo "$as_me:2034: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1269,7 +2040,7 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:1272: checking for $ac_word" >&5 +echo "$as_me:2043: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1284,7 +2055,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CC="gcc" -echo "$as_me:1287: found $ac_dir/$ac_word" >&5 +echo "$as_me:2058: found $ac_dir/$ac_word" >&5 break done @@ -1292,10 +2063,10 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:1295: result: $ac_ct_CC" >&5 + echo "$as_me:2066: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else - echo "$as_me:1298: result: no" >&5 + echo "$as_me:2069: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1308,7 +2079,7 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:1311: checking for $ac_word" >&5 +echo "$as_me:2082: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1323,7 +2094,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CC="${ac_tool_prefix}cc" -echo "$as_me:1326: found $ac_dir/$ac_word" >&5 +echo "$as_me:2097: found $ac_dir/$ac_word" >&5 break done @@ -1331,10 +2102,10 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1334: result: $CC" >&5 + echo "$as_me:2105: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else - echo "$as_me:1337: result: no" >&5 + echo "$as_me:2108: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1343,7 +2114,7 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:1346: checking for $ac_word" >&5 +echo "$as_me:2117: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1358,7 +2129,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CC="cc" -echo "$as_me:1361: found $ac_dir/$ac_word" >&5 +echo "$as_me:2132: found $ac_dir/$ac_word" >&5 break done @@ -1366,10 +2137,10 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:1369: result: $ac_ct_CC" >&5 + echo "$as_me:2140: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else - echo "$as_me:1372: result: no" >&5 + echo "$as_me:2143: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1382,7 +2153,7 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:1385: checking for $ac_word" >&5 +echo "$as_me:2156: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1402,7 +2173,7 @@ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then continue fi ac_cv_prog_CC="cc" -echo "$as_me:1405: found $ac_dir/$ac_word" >&5 +echo "$as_me:2176: found $ac_dir/$ac_word" >&5 break done @@ -1424,10 +2195,10 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1427: result: $CC" >&5 + echo "$as_me:2198: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else - echo "$as_me:1430: result: no" >&5 + echo "$as_me:2201: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1438,7 +2209,7 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:1441: checking for $ac_word" >&5 +echo "$as_me:2212: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1453,7 +2224,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CC="$ac_tool_prefix$ac_prog" -echo "$as_me:1456: found $ac_dir/$ac_word" >&5 +echo "$as_me:2227: found $ac_dir/$ac_word" >&5 break done @@ -1461,10 +2232,10 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1464: result: $CC" >&5 + echo "$as_me:2235: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else - echo "$as_me:1467: result: no" >&5 + echo "$as_me:2238: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1477,7 +2248,7 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:1480: checking for $ac_word" >&5 +echo "$as_me:2251: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1492,7 +2263,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CC="$ac_prog" -echo "$as_me:1495: found $ac_dir/$ac_word" >&5 +echo "$as_me:2266: found $ac_dir/$ac_word" >&5 break done @@ -1500,10 +2271,10 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:1503: result: $ac_ct_CC" >&5 + echo "$as_me:2274: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else - echo "$as_me:1506: result: no" >&5 + echo "$as_me:2277: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1515,207 +2286,37 @@ fi fi -test -z "$CC" && { { echo "$as_me:1518: error: no acceptable cc found in \$PATH" >&5 +test -z "$CC" && { { echo "$as_me:2289: error: no acceptable cc found in \$PATH" >&5 echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:1523:" \ +echo "$as_me:2294:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:1526: \"$ac_compiler --version &5\"") >&5 +{ (eval echo "$as_me:2297: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? - echo "$as_me:1529: \$? = $ac_status" >&5 + echo "$as_me:2300: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:1531: \"$ac_compiler -v &5\"") >&5 +{ (eval echo "$as_me:2302: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? - echo "$as_me:1534: \$? = $ac_status" >&5 + echo "$as_me:2305: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:1536: \"$ac_compiler -V &5\"") >&5 +{ (eval echo "$as_me:2307: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? - echo "$as_me:1539: \$? = $ac_status" >&5 + echo "$as_me:2310: \$? = $ac_status" >&5 (exit $ac_status); } -cat >conftest.$ac_ext <<_ACEOF -#line 1543 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:1559: checking for C compiler default output" >&5 -echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:1562: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:1565: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. -for ac_file in `ls a.exe conftest.exe 2>/dev/null; - ls a.out conftest 2>/dev/null; - ls a.* conftest.* 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; - a.out ) # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool --akim. - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:1588: error: C compiler cannot create executables" >&5 -echo "$as_me: error: C compiler cannot create executables" >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:1594: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:1599: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:1605: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1608: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:1615: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:1623: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:1630: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:1632: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:1635: checking for executable suffix" >&5 -echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 -if { (eval echo "$as_me:1637: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:1640: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:1656: error: cannot compute EXEEXT: cannot compile and link" >&5 -echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:1662: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:1668: checking for object suffix" >&5 -echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 1674 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:1686: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1689: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:1701: error: cannot compute OBJEXT: cannot compile" >&5 -echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:1708: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:1712: checking whether we are using the GNU C compiler" >&5 +echo "$as_me:2313: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 1718 "configure" +#line 2319 "configure" #include "confdefs.h" int @@ -1730,16 +2331,16 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:1733: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2334: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:1736: \$? = $ac_status" >&5 + echo "$as_me:2337: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1739: \"$ac_try\"") >&5 + { (eval echo "$as_me:2340: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:1742: \$? = $ac_status" >&5 + echo "$as_me:2343: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else @@ -1751,19 +2352,19 @@ rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:1754: result: $ac_cv_c_compiler_gnu" >&5 +echo "$as_me:2355: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" -echo "$as_me:1760: checking whether $CC accepts -g" >&5 +echo "$as_me:2361: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 1766 "configure" +#line 2367 "configure" #include "confdefs.h" int @@ -1775,16 +2376,16 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:1778: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2379: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:1781: \$? = $ac_status" >&5 + echo "$as_me:2382: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1784: \"$ac_try\"") >&5 + { (eval echo "$as_me:2385: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:1787: \$? = $ac_status" >&5 + echo "$as_me:2388: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else @@ -1794,7 +2395,7 @@ ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:1797: result: $ac_cv_prog_cc_g" >&5 +echo "$as_me:2398: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS @@ -1821,16 +2422,16 @@ cat >conftest.$ac_ext <<_ACEOF #endif _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:1824: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2425: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:1827: \$? = $ac_status" >&5 + echo "$as_me:2428: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1830: \"$ac_try\"") >&5 + { (eval echo "$as_me:2431: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:1833: \$? = $ac_status" >&5 + echo "$as_me:2434: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ @@ -1842,7 +2443,7 @@ if { (eval echo "$as_me:1824: \"$ac_compile\"") >&5 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF -#line 1845 "configure" +#line 2446 "configure" #include "confdefs.h" #include $ac_declaration @@ -1855,16 +2456,16 @@ exit (42); } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:1858: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2459: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:1861: \$? = $ac_status" >&5 + echo "$as_me:2462: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1864: \"$ac_try\"") >&5 + { (eval echo "$as_me:2465: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:1867: \$? = $ac_status" >&5 + echo "$as_me:2468: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else @@ -1874,7 +2475,7 @@ continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF -#line 1877 "configure" +#line 2478 "configure" #include "confdefs.h" $ac_declaration int @@ -1886,16 +2487,16 @@ exit (42); } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:1889: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2490: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:1892: \$? = $ac_status" >&5 + echo "$as_me:2493: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1895: \"$ac_try\"") >&5 + { (eval echo "$as_me:2496: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:1898: \$? = $ac_status" >&5 + echo "$as_me:2499: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else @@ -1927,7 +2528,7 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:1930: checking how to run the C preprocessor" >&5 +echo "$as_me:2531: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then @@ -1948,18 +2549,18 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line 1951 "configure" +#line 2552 "configure" #include "confdefs.h" #include Syntax error _ACEOF -if { (eval echo "$as_me:1956: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:2557: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:1962: \$? = $ac_status" >&5 + echo "$as_me:2563: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -1982,17 +2583,17 @@ rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line 1985 "configure" +#line 2586 "configure" #include "confdefs.h" #include _ACEOF -if { (eval echo "$as_me:1989: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:2590: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:1995: \$? = $ac_status" >&5 + echo "$as_me:2596: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -2029,7 +2630,7 @@ fi else ac_cv_prog_CPP=$CPP fi -echo "$as_me:2032: result: $CPP" >&5 +echo "$as_me:2633: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes @@ -2039,18 +2640,18 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line 2042 "configure" +#line 2643 "configure" #include "confdefs.h" #include Syntax error _ACEOF -if { (eval echo "$as_me:2047: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:2648: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2053: \$? = $ac_status" >&5 + echo "$as_me:2654: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -2073,17 +2674,17 @@ rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line 2076 "configure" +#line 2677 "configure" #include "confdefs.h" #include _ACEOF -if { (eval echo "$as_me:2080: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:2681: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2086: \$? = $ac_status" >&5 + echo "$as_me:2687: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -2111,7 +2712,7 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { echo "$as_me:2114: error: C preprocessor \"$CPP\" fails sanity check" >&5 + { { echo "$as_me:2715: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi @@ -2122,13 +2723,13 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:2125: checking for ANSI C header files" >&5 +echo "$as_me:2726: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 2131 "configure" +#line 2732 "configure" #include "confdefs.h" #include #include @@ -2136,13 +2737,13 @@ else #include _ACEOF -if { (eval echo "$as_me:2139: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:2740: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2145: \$? = $ac_status" >&5 + echo "$as_me:2746: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -2164,7 +2765,7 @@ rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF -#line 2167 "configure" +#line 2768 "configure" #include "confdefs.h" #include @@ -2182,7 +2783,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF -#line 2185 "configure" +#line 2786 "configure" #include "confdefs.h" #include @@ -2203,7 +2804,7 @@ if test $ac_cv_header_stdc = yes; then : else cat >conftest.$ac_ext <<_ACEOF -#line 2206 "configure" +#line 2807 "configure" #include "confdefs.h" #include #if ((' ' & 0x0FF) == 0x020) @@ -2229,15 +2830,15 @@ main () } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:2232: \"$ac_link\"") >&5 +if { (eval echo "$as_me:2833: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:2235: \$? = $ac_status" >&5 + echo "$as_me:2836: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:2237: \"$ac_try\"") >&5 + { (eval echo "$as_me:2838: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2240: \$? = $ac_status" >&5 + echo "$as_me:2841: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else @@ -2250,7 +2851,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi -echo "$as_me:2253: result: $ac_cv_header_stdc" >&5 +echo "$as_me:2854: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then @@ -2264,7 +2865,7 @@ for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:2267: checking for $ac_word" >&5 +echo "$as_me:2868: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_YACC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2279,7 +2880,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_YACC="$ac_prog" -echo "$as_me:2282: found $ac_dir/$ac_word" >&5 +echo "$as_me:2883: found $ac_dir/$ac_word" >&5 break done @@ -2287,10 +2888,10 @@ fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then - echo "$as_me:2290: result: $YACC" >&5 + echo "$as_me:2891: result: $YACC" >&5 echo "${ECHO_T}$YACC" >&6 else - echo "$as_me:2293: result: no" >&5 + echo "$as_me:2894: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -2303,7 +2904,7 @@ for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:2306: checking for $ac_word" >&5 +echo "$as_me:2907: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_LEX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2318,7 +2919,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_LEX="$ac_prog" -echo "$as_me:2321: found $ac_dir/$ac_word" >&5 +echo "$as_me:2922: found $ac_dir/$ac_word" >&5 break done @@ -2326,10 +2927,10 @@ fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then - echo "$as_me:2329: result: $LEX" >&5 + echo "$as_me:2930: result: $LEX" >&5 echo "${ECHO_T}$LEX" >&6 else - echo "$as_me:2332: result: no" >&5 + echo "$as_me:2933: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -2341,7 +2942,7 @@ for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:2344: checking for $ac_word" >&5 +echo "$as_me:2945: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_LEX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2356,7 +2957,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_LEX="$ac_prog" -echo "$as_me:2359: found $ac_dir/$ac_word" >&5 +echo "$as_me:2960: found $ac_dir/$ac_word" >&5 break done @@ -2364,10 +2965,10 @@ fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then - echo "$as_me:2367: result: $LEX" >&5 + echo "$as_me:2968: result: $LEX" >&5 echo "${ECHO_T}$LEX" >&6 else - echo "$as_me:2370: result: no" >&5 + echo "$as_me:2971: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -2377,7 +2978,7 @@ test -n "$LEX" || LEX=":" if test -z "$LEXLIB" then - echo "$as_me:2380: checking for yywrap in -lfl" >&5 + echo "$as_me:2981: checking for yywrap in -lfl" >&5 echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6 if test "${ac_cv_lib_fl_yywrap+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2385,7 +2986,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-lfl $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 2388 "configure" +#line 2989 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -2404,16 +3005,16 @@ yywrap (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:2407: \"$ac_link\"") >&5 +if { (eval echo "$as_me:3008: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:2410: \$? = $ac_status" >&5 + echo "$as_me:3011: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:2413: \"$ac_try\"") >&5 + { (eval echo "$as_me:3014: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2416: \$? = $ac_status" >&5 + echo "$as_me:3017: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_fl_yywrap=yes else @@ -2424,12 +3025,12 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:2427: result: $ac_cv_lib_fl_yywrap" >&5 +echo "$as_me:3028: result: $ac_cv_lib_fl_yywrap" >&5 echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6 if test $ac_cv_lib_fl_yywrap = yes; then LEXLIB="-lfl" else - echo "$as_me:2432: checking for yywrap in -ll" >&5 + echo "$as_me:3033: checking for yywrap in -ll" >&5 echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6 if test "${ac_cv_lib_l_yywrap+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2437,7 +3038,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ll $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 2440 "configure" +#line 3041 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -2456,16 +3057,16 @@ yywrap (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:2459: \"$ac_link\"") >&5 +if { (eval echo "$as_me:3060: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:2462: \$? = $ac_status" >&5 + echo "$as_me:3063: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:2465: \"$ac_try\"") >&5 + { (eval echo "$as_me:3066: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2468: \$? = $ac_status" >&5 + echo "$as_me:3069: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_l_yywrap=yes else @@ -2476,7 +3077,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:2479: result: $ac_cv_lib_l_yywrap" >&5 +echo "$as_me:3080: result: $ac_cv_lib_l_yywrap" >&5 echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6 if test $ac_cv_lib_l_yywrap = yes; then LEXLIB="-ll" @@ -2487,7 +3088,7 @@ fi fi if test "x$LEX" != "x:"; then - echo "$as_me:2490: checking lex output file root" >&5 + echo "$as_me:3091: checking lex output file root" >&5 echo $ECHO_N "checking lex output file root... $ECHO_C" >&6 if test "${ac_cv_prog_lex_root+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2501,16 +3102,16 @@ if test -f lex.yy.c; then elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else - { { echo "$as_me:2504: error: cannot find output from $LEX; giving up" >&5 + { { echo "$as_me:3105: error: cannot find output from $LEX; giving up" >&5 echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} { (exit 1); exit 1; }; } fi fi -echo "$as_me:2509: result: $ac_cv_prog_lex_root" >&5 +echo "$as_me:3110: result: $ac_cv_prog_lex_root" >&5 echo "${ECHO_T}$ac_cv_prog_lex_root" >&6 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root -echo "$as_me:2513: checking whether yytext is a pointer" >&5 +echo "$as_me:3114: checking whether yytext is a pointer" >&5 echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6 if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2526,16 +3127,16 @@ cat >conftest.$ac_ext <<_ACEOF `cat $LEX_OUTPUT_ROOT.c` _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:2529: \"$ac_link\"") >&5 +if { (eval echo "$as_me:3130: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:2532: \$? = $ac_status" >&5 + echo "$as_me:3133: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:2535: \"$ac_try\"") >&5 + { (eval echo "$as_me:3136: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2538: \$? = $ac_status" >&5 + echo "$as_me:3139: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_lex_yytext_pointer=yes else @@ -2547,7 +3148,7 @@ LIBS=$ac_save_LIBS rm -f "${LEX_OUTPUT_ROOT}.c" fi -echo "$as_me:2550: result: $ac_cv_prog_lex_yytext_pointer" >&5 +echo "$as_me:3151: result: $ac_cv_prog_lex_yytext_pointer" >&5 echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6 if test $ac_cv_prog_lex_yytext_pointer = yes; then @@ -2571,7 +3172,7 @@ fi # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:2574: checking for a BSD compatible install" >&5 +echo "$as_me:3175: checking for a BSD compatible install" >&5 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then @@ -2620,7 +3221,7 @@ fi INSTALL=$ac_install_sh fi fi -echo "$as_me:2623: result: $INSTALL" >&5 +echo "$as_me:3224: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. @@ -2636,7 +3237,7 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:2639: checking how to run the C preprocessor" >&5 +echo "$as_me:3240: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then @@ -2657,18 +3258,18 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line 2660 "configure" +#line 3261 "configure" #include "confdefs.h" #include Syntax error _ACEOF -if { (eval echo "$as_me:2665: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:3266: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2671: \$? = $ac_status" >&5 + echo "$as_me:3272: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -2691,17 +3292,17 @@ rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line 2694 "configure" +#line 3295 "configure" #include "confdefs.h" #include _ACEOF -if { (eval echo "$as_me:2698: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:3299: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2704: \$? = $ac_status" >&5 + echo "$as_me:3305: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -2738,7 +3339,7 @@ fi else ac_cv_prog_CPP=$CPP fi -echo "$as_me:2741: result: $CPP" >&5 +echo "$as_me:3342: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes @@ -2748,18 +3349,18 @@ do # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line 2751 "configure" +#line 3352 "configure" #include "confdefs.h" #include Syntax error _ACEOF -if { (eval echo "$as_me:2756: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:3357: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2762: \$? = $ac_status" >&5 + echo "$as_me:3363: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -2782,17 +3383,17 @@ rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line 2785 "configure" +#line 3386 "configure" #include "confdefs.h" #include _ACEOF -if { (eval echo "$as_me:2789: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:3390: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:2795: \$? = $ac_status" >&5 + echo "$as_me:3396: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -2820,7 +3421,7 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { echo "$as_me:2823: error: C preprocessor \"$CPP\" fails sanity check" >&5 + { { echo "$as_me:3424: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi @@ -2833,7 +3434,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 -echo "$as_me:2836: checking for $ac_word" >&5 +echo "$as_me:3437: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_RM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2850,7 +3451,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_RM="$ac_dir/$ac_word" - echo "$as_me:2853: found $ac_dir/$ac_word" >&5 + echo "$as_me:3454: found $ac_dir/$ac_word" >&5 break fi done @@ -2862,16 +3463,16 @@ fi RM=$ac_cv_path_RM if test -n "$RM"; then - echo "$as_me:2865: result: $RM" >&5 + echo "$as_me:3466: result: $RM" >&5 echo "${ECHO_T}$RM" >&6 else - echo "$as_me:2868: result: no" >&5 + echo "$as_me:3469: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "mv", so it can be a program name with args. set dummy mv; ac_word=$2 -echo "$as_me:2874: checking for $ac_word" >&5 +echo "$as_me:3475: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MV+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2888,7 +3489,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_MV="$ac_dir/$ac_word" - echo "$as_me:2891: found $ac_dir/$ac_word" >&5 + echo "$as_me:3492: found $ac_dir/$ac_word" >&5 break fi done @@ -2900,16 +3501,16 @@ fi MV=$ac_cv_path_MV if test -n "$MV"; then - echo "$as_me:2903: result: $MV" >&5 + echo "$as_me:3504: result: $MV" >&5 echo "${ECHO_T}$MV" >&6 else - echo "$as_me:2906: result: no" >&5 + echo "$as_me:3507: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "tar", so it can be a program name with args. set dummy tar; ac_word=$2 -echo "$as_me:2912: checking for $ac_word" >&5 +echo "$as_me:3513: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_TAR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2926,7 +3527,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_TAR="$ac_dir/$ac_word" - echo "$as_me:2929: found $ac_dir/$ac_word" >&5 + echo "$as_me:3530: found $ac_dir/$ac_word" >&5 break fi done @@ -2938,40 +3539,19 @@ fi TAR=$ac_cv_path_TAR if test -n "$TAR"; then - echo "$as_me:2941: result: $TAR" >&5 + echo "$as_me:3542: result: $TAR" >&5 echo "${ECHO_T}$TAR" >&6 else - echo "$as_me:2944: result: no" >&5 + echo "$as_me:3545: result: no" >&5 echo "${ECHO_T}no" >&6 fi -# Check whether --enable-glibtest or --disable-glibtest was given. -if test "${enable_glibtest+set}" = set; then - enableval="$enable_glibtest" - -else - enable_glibtest=yes -fi; - - pkg_config_args=glib-2.0 - for module in . - do - case "$module" in - gmodule) - pkg_config_args="$pkg_config_args gmodule-2.0" - ;; - gobject) - pkg_config_args="$pkg_config_args gobject-2.0" - ;; - gthread) - pkg_config_args="$pkg_config_args gthread-2.0" - ;; - esac - done + succeeded=no - # Extract the first word of "pkg-config", so it can be a program name with args. + if test -z "$PKG_CONFIG"; then + # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 -echo "$as_me:2974: checking for $ac_word" >&5 +echo "$as_me:3554: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2988,7 +3568,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word" - echo "$as_me:2991: found $ac_dir/$ac_word" >&5 + echo "$as_me:3571: found $ac_dir/$ac_word" >&5 break fi done @@ -3000,260 +3580,64 @@ fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then - echo "$as_me:3003: result: $PKG_CONFIG" >&5 + echo "$as_me:3583: result: $PKG_CONFIG" >&5 echo "${ECHO_T}$PKG_CONFIG" >&6 else - echo "$as_me:3006: result: no" >&5 + echo "$as_me:3586: result: no" >&5 echo "${ECHO_T}no" >&6 fi - no_glib="" - - if test x$PKG_CONFIG != xno ; then - if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then - : - else - echo *** pkg-config too old; version 0.7 or better required. - no_glib=yes - PKG_CONFIG=no - fi - fi - - ## don't try to run the test against uninstalled libtool libs - if $PKG_CONFIG --uninstalled $pkg_config_args; then - echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" - enable_glibtest=no - fi - - min_glib_version=1.3.3 - echo "$as_me:3029: checking for GLIB - version >= $min_glib_version" >&5 -echo $ECHO_N "checking for GLIB - version >= $min_glib_version... $ECHO_C" >&6 - - if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then - : - else - no_glib = yes fi - if test x"$no_glib" = x ; then - GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` - GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` - GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` - - GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` - GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` - glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` - glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` - glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` - if test "x$enable_glibtest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GLIB_CFLAGS" - LIBS="$GLIB_LIBS $LIBS" - rm -f conf.glibtest - if test "$cross_compiling" = yes; then - echo $ac_n "cross compiling; assumed OK... $ac_c" -else - cat >conftest.$ac_ext <<_ACEOF -#line 3061 "configure" -#include "confdefs.h" - -#include -#include -#include - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.glibtest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_glib_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_glib_version"); - exit(1); - } - - if ((glib_major_version != $glib_config_major_version) || - (glib_minor_version != $glib_config_minor_version) || - (glib_micro_version != $glib_config_micro_version)) - { - printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", - $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, - glib_major_version, glib_minor_version, glib_micro_version); - printf ("*** was found! If pkg-config was correct, then it is best\n"); - printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); - printf("*** to point to the correct configuration files\n"); - } - else if ((glib_major_version != GLIB_MAJOR_VERSION) || - (glib_minor_version != GLIB_MINOR_VERSION) || - (glib_micro_version != GLIB_MICRO_VERSION)) - { - printf("*** GLIB header files (version %d.%d.%d) do not match\n", - GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - glib_major_version, glib_minor_version, glib_micro_version); - } + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." else - { - if ((glib_major_version > major) || - ((glib_major_version == major) && (glib_minor_version > minor)) || - ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) - { - return 0; - } + if ! $PKG_CONFIG --atleast-pkgconfig-version 0.7.0; then + echo "*** Your version of pkg-config is too old. You need version 0.7.0 or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" else - { - printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n", - glib_major_version, glib_minor_version, glib_micro_version); - printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); - printf("*** correct copy of pkg-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} + echo "$as_me:3602: checking for glib-2.0 >= $GLIB_REQUIRED" >&5 +echo $ECHO_N "checking for glib-2.0 >= $GLIB_REQUIRED... $ECHO_C" >&6 + + if $PKG_CONFIG --exists "glib-2.0 >= $GLIB_REQUIRED" ; then + echo "$as_me:3606: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + succeeded=yes + + echo "$as_me:3610: checking GLIB_CFLAGS" >&5 +echo $ECHO_N "checking GLIB_CFLAGS... $ECHO_C" >&6 + GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= $GLIB_REQUIRED"` + echo "$as_me:3613: result: $GLIB_CFLAGS" >&5 +echo "${ECHO_T}$GLIB_CFLAGS" >&6 + + echo "$as_me:3616: checking GLIB_LIBS" >&5 +echo $ECHO_N "checking GLIB_LIBS... $ECHO_C" >&6 + GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= $GLIB_REQUIRED"` + echo "$as_me:3619: result: $GLIB_LIBS" >&5 +echo "${ECHO_T}$GLIB_LIBS" >&6 + else + GLIB_CFLAGS="" + GLIB_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 >= $GLIB_REQUIRED"` + echo $GLIB_PKG_ERRORS + fi -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:3137: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:3140: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:3142: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3145: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -no_glib=yes -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" fi fi - if test "x$no_glib" = x ; then - echo "$as_me:3161: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5 -echo "${ECHO_T}yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6 - : - else - echo "$as_me:3165: result: no" >&5 -echo "${ECHO_T}no" >&6 - if test "$PKG_CONFIG" = "no" ; then - echo "*** A new enough version of pkg-config was not found." - echo "*** See http://www.freedesktop.org/software/pkgconfig/" - else - if test -f conf.glibtest ; then - : - else - echo "*** Could not run GLIB test program, checking why..." - CFLAGS="$CFLAGS $GLIB_CFLAGS" - LIBS="$LIBS $GLIB_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 3178 "configure" -#include "confdefs.h" -#include -#include - -int -main () -{ - return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:3193: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:3196: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:3199: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3202: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GLIB or finding the wrong" - echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GLIB was incorrectly installed" - echo "*** or that you have moved GLIB since it was installed. In the latter case, you" - echo "*** may want to edit the pkg-config script: $PKG_CONFIG" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GLIB_CFLAGS="" - GLIB_LIBS="" - GLIB_GENMARSHAL="" - GOBJECT_QUERY="" - GLIB_MKENUMS="" + if test $succeeded = yes; then : + else + { { echo "$as_me:3636: error: Library requirements (glib-2.0 >= $GLIB_REQUIRED) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5 +echo "$as_me: error: Library requirements (glib-2.0 >= $GLIB_REQUIRED) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;} + { (exit 1); exit 1; }; } fi - rm -f conf.glibtest - -echo "$as_me:3236: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 - # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then - enableval="$enable_maintainer_mode" - USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi; - echo "$as_me:3245: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 - -if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - MAINT=$MAINTAINER_MODE_TRUE - ac_config_files="$ac_config_files gob2.spec Makefile src/Makefile doc/Makefile examples/Makefile doc/gob2.1" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -3334,7 +3718,7 @@ DEFS=-DHAVE_CONFIG_H : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:3337: creating $CONFIG_STATUS" >&5 +{ echo "$as_me:3721: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL @@ -3510,7 +3894,7 @@ cat >>$CONFIG_STATUS <<\EOF echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header - { { echo "$as_me:3513: error: ambiguous option: $1 + { { echo "$as_me:3897: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} @@ -3529,7 +3913,7 @@ Try \`$0 --help' for more information." >&2;} ac_need_defaults=false;; # This is an error. - -*) { { echo "$as_me:3532: error: unrecognized option: $1 + -*) { { echo "$as_me:3916: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} @@ -3579,7 +3963,7 @@ do "doc/gob2.1" ) CONFIG_FILES="$CONFIG_FILES doc/gob2.1" ;; "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:3582: error: invalid argument: $ac_config_target" >&5 + *) { { echo "$as_me:3966: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac @@ -3672,6 +4056,9 @@ s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@SET_MAKE@,$SET_MAKE,;t t +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +s,@MAINT@,$MAINT,;t t s,@SUBDIRS@,$SUBDIRS,;t t s,@DOINSTGOB@,$DOINSTGOB,;t t s,@NOINSTGOB@,$NOINSTGOB,;t t @@ -3693,12 +4080,7 @@ s,@TAR@,$TAR,;t t s,@PKG_CONFIG@,$PKG_CONFIG,;t t s,@GLIB_CFLAGS@,$GLIB_CFLAGS,;t t s,@GLIB_LIBS@,$GLIB_LIBS,;t t -s,@GLIB_GENMARSHAL@,$GLIB_GENMARSHAL,;t t -s,@GOBJECT_QUERY@,$GOBJECT_QUERY,;t t -s,@GLIB_MKENUMS@,$GLIB_MKENUMS,;t t -s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t -s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t -s,@MAINT@,$MAINT,;t t +s,@YFLAGS@,$YFLAGS,;t t CEOF EOF @@ -3813,7 +4195,7 @@ done; } esac if test x"$ac_file" != x-; then - { echo "$as_me:3816: creating $ac_file" >&5 + { echo "$as_me:4198: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi @@ -3831,7 +4213,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:3834: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:4216: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -3844,7 +4226,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;} echo $srcdir/$f else # /dev/null tree - { { echo "$as_me:3847: error: cannot find input file: $f" >&5 + { { echo "$as_me:4229: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -3905,7 +4287,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue * ) ac_file_in=$ac_file.in ;; esac - test x"$ac_file" != x- && { echo "$as_me:3908: creating $ac_file" >&5 + test x"$ac_file" != x- && { echo "$as_me:4290: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the @@ -3916,7 +4298,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:3919: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:4301: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -3929,7 +4311,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;} echo $srcdir/$f else # /dev/null tree - { { echo "$as_me:3932: error: cannot find input file: $f" >&5 + { { echo "$as_me:4314: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -4046,7 +4428,7 @@ cat >>$CONFIG_STATUS <<\EOF rm -f $tmp/in if test x"$ac_file" != x-; then if cmp -s $ac_file $tmp/config.h 2>/dev/null; then - { echo "$as_me:4049: $ac_file is unchanged" >&5 + { echo "$as_me:4431: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ diff --git a/configure.in b/configure.in index caebd1b..52fc523 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,10 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.2) AC_INIT(src/treefuncs.h) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(gob2,1.99.1) +AM_INIT_AUTOMAKE(gob2,1.99.2) +AM_MAINTAINER_MODE + +GLIB_REQUIRED=1.3.12 dnl dnl An utter hack to allow embedding of gob inside other packages. @@ -25,6 +28,7 @@ AC_SUBST(DOINSTGOB) AC_SUBST(NOINSTGOB) dnl Checks for programs. +AC_ISC_POSIX AC_PROG_CC AC_STDC_HEADERS AC_PROG_YACC @@ -34,7 +38,9 @@ AC_PROG_CPP AC_PATH_PROG(RM, rm, /bin/rm) AC_PATH_PROG(MV, mv, /bin/mv) AC_PATH_PROG(TAR, tar, /bin/tar) -AM_PATH_GLIB_2_0(1.3.3,,,) +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"], @@ -44,11 +50,10 @@ dnl AC_SUBST(POPT_LIB) dnl AM_PROG_LIBTOOL -AM_MAINTAINER_MODE - AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) +AC_SUBST(YFLAGS) AC_OUTPUT([ gob2.spec diff --git a/doc/Makefile.in b/doc/Makefile.in index e162ae1..46de52b 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -63,10 +63,7 @@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ DOINSTGOB = @DOINSTGOB@ GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GOBJECT_QUERY = @GOBJECT_QUERY@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ MAINT = @MAINT@ @@ -79,6 +76,7 @@ RM = @RM@ TAR = @TAR@ VERSION = @VERSION@ YACC = @YACC@ +YFLAGS = @YFLAGS@ man_MANS = gob2.1 SUBDIRS = @@ -184,7 +182,7 @@ maintainer-clean-recursive: dot_seen=no; \ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ rev="$$subdir $$rev"; \ - test "$$subdir" = "." && dot_seen=yes; \ + test "$$subdir" != "." || dot_seen=yes; \ done; \ test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ diff --git a/examples/Makefile.in b/examples/Makefile.in index 43b648c..efc4320 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -63,10 +63,7 @@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ DOINSTGOB = @DOINSTGOB@ GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GOBJECT_QUERY = @GOBJECT_QUERY@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ MAINT = @MAINT@ @@ -79,6 +76,7 @@ RM = @RM@ TAR = @TAR@ VERSION = @VERSION@ YACC = @YACC@ +YFLAGS = @YFLAGS@ EXTRA_DIST = README gtk-button-count.gob my-person.gob my-person2.gob GNOME_Foo_SomeInterface.idl foo-some-interface.gob @@ -139,7 +137,7 @@ maintainer-clean-recursive: dot_seen=no; \ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ rev="$$subdir $$rev"; \ - test "$$subdir" = "." && dot_seen=yes; \ + test "$$subdir" != "." || dot_seen=yes; \ done; \ test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ diff --git a/examples/foo-some-interface.gob b/examples/foo-some-interface.gob index 15aa928..40a9473 100644 --- a/examples/foo-some-interface.gob +++ b/examples/foo-some-interface.gob @@ -3,7 +3,7 @@ * * see GNOME_Foo_SomeInterface.idl */ -requires 1.0.9 +requires 1.99.0 %{ /* some standard includes */ @@ -17,11 +17,11 @@ requires 1.0.9 #include "foo-some-interface-private.h" %} -class Foo:Some:Interface from Bonobo:X:Object - (BonoboX GNOME_Foo_SomeInterface) +class Foo:Some:Interface from Bonobo:Object + (BonoboObject GNOME_Foo_SomeInterface) { - BonoboX + BonoboObject private void fooBar (PortableServer_Servant servant, const CORBA_char *string, diff --git a/gob2.m4 b/gob2.m4 index 70a78bb..7aca806 100644 --- a/gob2.m4 +++ b/gob2.m4 @@ -12,9 +12,9 @@ AC_DEFUN(GOB2_HOOK,[ g_r_ve=`echo $1|sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` g_r_ma=`echo $1|sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` g_r_mi=`echo $1|sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - g_ve=`$GOB --version 2>&1|sed 's/Gob version \([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - g_ma=`$GOB --version 2>&1|sed 's/Gob version \([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - g_mi=`$GOB --version 2>&1|sed 's/Gob version \([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + g_ve=`$GOB2 --version 2>&1|sed 's/Gob version \([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + g_ma=`$GOB2 --version 2>&1|sed 's/Gob version \([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + g_mi=`$GOB2 --version 2>&1|sed 's/Gob version \([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test $g_ve -eq $g_r_ve; then if test $g_ma -ge $g_r_ma; then diff --git a/gob2.spec b/gob2.spec index 592628b..8270b58 100644 --- a/gob2.spec +++ b/gob2.spec @@ -1,5 +1,5 @@ -%define ver 1.99.1 -%define rel SNAP +%define ver 1.99.2 +%define rel 1 %define prefix /usr Summary: GOB2, The GObject Builder diff --git a/missing b/missing index 7789652..d46f79f 100755 --- a/missing +++ b/missing @@ -1,6 +1,6 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc. # Franc,ois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -23,6 +23,14 @@ if test $# -eq 0; then exit 1 fi +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.in; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + case "$1" in -h|--h|--he|--hel|--help) @@ -61,7 +69,7 @@ Supported PROGRAM values: aclocal) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acinclude.m4' or \`configure.in'. You might want + you modified \`acinclude.m4' or \`$configure_ac'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 @@ -70,7 +78,7 @@ WARNING: \`$1' is missing on your system. You should only need it if autoconf) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if - you modified \`configure.in'. You might want to install the + you modified \`$configure_ac'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure @@ -79,10 +87,10 @@ WARNING: \`$1' is missing on your system. You should only need it if autoheader) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acconfig.h' or \`configure.in'. You might want + you modified \`acconfig.h' or \`$configure_ac'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' $configure_ac` test -z "$files" && files="config.h" touch_files= for f in $files; do @@ -98,7 +106,7 @@ WARNING: \`$1' is missing on your system. You should only need it if automake) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. + you modified \`Makefile.am', \`acinclude.m4' or \`$configure_ac'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | diff --git a/src/Makefile.am b/src/Makefile.am index 769bfc8..6a8b829 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,10 +1,21 @@ #YACCFLAGS += -d -t -YFLAGS += -d -t +YFLAGS = -d -t SUBDIRS = -CFLAGS += -Wall -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations +CFLAGS = @CFLAGS@ \ + -Wall \ + -Wpointer-arith \ + -Wmissing-prototypes \ + -Wmissing-declarations -INCLUDES = @GLIB_CFLAGS@ -I$(includedir) +DEFS = @DEFS@ \ + -DPKGDATADIR=\"$(pkgdatadir)\" + +INCLUDES = \ + $(GLIB_CFLAGS) \ + -I$(top_builddir) \ + -I$(top_srcdir) \ + -I$(includedir) bin_PROGRAMS = @DOINSTGOB@ noinst_PROGRAMS = @NOINSTGOB@ @@ -34,7 +45,7 @@ gob2_LDADD = \ # we might want popt back in the future # @POPT_LIB@ -CLEANFILES += $(BUILT_SOURCES) test-object.* test-object-private.h +CLEANFILES = @CLEANFILES@ $(BUILT_SOURCES) test-object.* test-object-private.h EXTRA_DIST = $(BUILT_SOURCES) test.gob generate_treefuncs.pl treefuncs.def @@ -44,7 +55,7 @@ parse.h parse.c: parse.y test -f y.tab.h && mv -f y.tab.h parse.h test: test-object.c test-object.h - $(CC) -g -Wall `pkg-config --cflags gobject-2.0` -c test-object.c + $(CC) -g -Wall `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 @@ -52,7 +63,7 @@ test-object.c test-object.h: test.gob gob2 # 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 -Wall `pkg-config --cflags gobject-2.0` -c test-object.cc + g++ -g -Wall `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.in b/src/Makefile.in index fc33b67..f6bbb5b 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -64,10 +64,7 @@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ DOINSTGOB = @DOINSTGOB@ GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GOBJECT_QUERY = @GOBJECT_QUERY@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ MAINT = @MAINT@ @@ -81,12 +78,17 @@ TAR = @TAR@ VERSION = @VERSION@ YACC = @YACC@ -YFLAGS = -d -t +YFLAGS = -d -t SUBDIRS = -CFLAGS = @CFLAGS@ -Wall -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations +CFLAGS = @CFLAGS@ -Wall -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations + + +DEFS = @DEFS@ -DPKGDATADIR=\"$(pkgdatadir)\" + + +INCLUDES = $(GLIB_CFLAGS) -I$(top_builddir) -I$(top_srcdir) -I$(includedir) -INCLUDES = @GLIB_CFLAGS@ -I$(includedir) bin_PROGRAMS = @DOINSTGOB@ noinst_PROGRAMS = @NOINSTGOB@ @@ -103,7 +105,7 @@ gob2_LDADD = -lm $(GLIB_LIBS) @LEXLIB@ # we might want popt back in the future # @POPT_LIB@ -CLEANFILES = $(BUILT_SOURCES) test-object.* test-object-private.h +CLEANFILES = @CLEANFILES@ $(BUILT_SOURCES) test-object.* test-object-private.h EXTRA_DIST = $(BUILT_SOURCES) test.gob generate_treefuncs.pl treefuncs.def mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -111,8 +113,6 @@ CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) - -DEFS = @DEFS@ -I. -I$(srcdir) -I.. LIBS = @LIBS@ gob2_OBJECTS = main.o treefuncs.o out.o util.o checks.o parse.o lexer.o gob2_DEPENDENCIES = @@ -244,7 +244,7 @@ maintainer-clean-recursive: dot_seen=no; \ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ rev="$$subdir $$rev"; \ - test "$$subdir" = "." && dot_seen=yes; \ + test "$$subdir" != "." || dot_seen=yes; \ done; \ test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ @@ -322,6 +322,14 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done +checks.o: checks.c ../config.h treefuncs.h main.h util.h checks.h +lexer.o: lexer.c ../config.h treefuncs.h parse.h main.h util.h +main.o: main.c ../config.h treefuncs.h parse.h out.h util.h checks.h \ + main.h +out.o: out.c main.h out.h +parse.o: parse.c ../config.h treefuncs.h main.h util.h +treefuncs.o: treefuncs.c treefuncs.h +util.o: util.c ../config.h treefuncs.h main.h util.h info-am: info: info-recursive @@ -413,7 +421,7 @@ parse.h parse.c: parse.y test -f y.tab.h && mv -f y.tab.h parse.h test: test-object.c test-object.h - $(CC) -g -Wall `pkg-config --cflags gobject-2.0` -c test-object.c + $(CC) -g -Wall `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 @@ -421,7 +429,7 @@ test-object.c test-object.h: test.gob gob2 # 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 -Wall `pkg-config --cflags gobject-2.0` -c test-object.cc + g++ -g -Wall `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/lexer.c b/src/lexer.c index 8c57c6e..dd2c64f 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -9,6 +9,7 @@ #define YY_FLEX_MINOR_VERSION 5 #include +#include /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ @@ -22,7 +23,6 @@ #ifdef __cplusplus #include -#include /* Use prototypes in function declarations. */ #define YY_USE_PROTOS @@ -284,145 +284,155 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 106 -#define YY_END_OF_BUFFER 107 -static yyconst short int yy_acclist[554] = +#define YY_NUM_RULES 110 +#define YY_END_OF_BUFFER 111 +static yyconst short int yy_acclist[606] = { 0, - 107, 104, 106, 103, 104, 106, 1, 105, 106, 104, - 105, 106, 104, 106, 104, 106, 103, 104, 106, 104, - 106, 104, 106, 26, 104, 106, 1, 27, 105, 106, - 26, 104, 105, 106, 26, 104, 106, 26, 104, 106, - 50, 104, 106, 1, 51, 105, 106, 50, 104, 105, - 106, 42, 50, 104, 106, 50, 104, 106, 50, 104, - 106, 50, 104, 106, 48, 50, 104, 106, 49, 50, - 104, 106, 50, 104, 106, 50, 104, 106, 46, 104, - 106, 1, 47, 105, 106, 46, 104, 105, 106, 45, - 46, 104, 106, 46, 104, 106, 104, 106, 104, 106, - - 104, 106, 94, 104, 106, 94, 104, 106, 104, 106, - 97, 104, 106, 97, 104, 106, 97, 104, 106, 97, - 104, 106, 100, 104, 106, 104, 106, 104, 106, 104, - 106, 97, 104, 106, 97, 104, 106, 97, 104, 106, - 97, 104, 106, 97, 104, 106, 97, 104, 106, 97, - 104, 106, 97, 104, 106, 97, 104, 106, 97, 104, - 106, 97, 104, 106, 97, 104, 106, 101, 104, 106, - 102, 104, 106, 91, 104, 106, 43, 104, 106, 92, - 104, 106, 93, 104, 106, 97, 104, 106, 97, 104, - 106, 97, 104, 106, 97, 104, 106, 97, 104, 106, - - 97, 104, 106, 97, 104, 106, 97, 104, 106, 97, - 104, 106, 97, 104, 106, 97, 104, 106, 97, 104, - 106, 9, 104, 106, 9, 104, 105, 106, 9, 104, - 106, 9, 104, 106, 9, 104, 106, 14, 104, 106, - 14, 104, 105, 106, 14, 104, 106, 14, 104, 106, - 14, 104, 106, 17, 104, 106, 17, 104, 105, 106, - 17, 104, 106, 21, 33, 25, 22, 41, 34, 44, - 94, 23, 94, 94, 96, 97, 95, 97, 97, 97, - 24, 99, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 8, 6, 13, 10, 12, 11, 13, 16, - 15, 3, 28, 32, 39, 35, 37, 18, 98, 98, - 94, 19, 94, 94, 96, 96, 95, 97, 97, 97, - 69, 20, 97, 97, 97, 97, 97, 97, 97, 64, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 11, 29, 30, 31, 40, - 36, 38, 96, 97, 55, 97, 54, 97, 5, 97, - 67, 97, 97, 97, 97, 59, 97, 97, 62, 97, - - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 56, 97, 97, 97, 97, 59, 97, 97, 97, - 97, 79, 97, 97, 97, 97, 85, 97, 7, 52, - 97, 54, 97, 68, 97, 97, 65, 97, 97, 97, - 97, 97, 97, 63, 97, 97, 97, 97, 58, 97, - 97, 97, 80, 97, 97, 97, 97, 84, 97, 97, - 97, 97, 97, 97, 97, 66, 97, 97, 97, 97, - 97, 70, 97, 76, 97, 60, 97, 57, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 71, 97, 97, 97, 97, 75, 97, 97, - - 97, 97, 97, 81, 97, 82, 97, 97, 97, 74, - 97, 97, 77, 97, 78, 97, 97, 61, 97, 97, - 97, 97, 97, 97, 97, 73, 97, 72, 97, 97, - 97, 87, 97, 97, 97, 97, 2, 89, 97, 97, - 86, 97, 97, 88, 97, 4, 97, 90, 97, 97, - 83, 97, 53 + 111, 108, 110, 107, 108, 110, 1, 109, 110, 108, + 109, 110, 108, 110, 108, 110, 108, 110, 98, 108, + 110, 98, 108, 110, 108, 110, 101, 108, 110, 101, + 108, 110, 101, 108, 110, 101, 108, 110, 107, 108, + 110, 108, 110, 108, 110, 101, 108, 110, 27, 108, + 110, 1, 28, 109, 110, 27, 108, 109, 110, 27, + 108, 110, 27, 108, 110, 27, 108, 110, 51, 108, + 110, 1, 52, 109, 110, 51, 108, 109, 110, 43, + 51, 108, 110, 51, 108, 110, 51, 108, 110, 51, + 108, 110, 49, 51, 108, 110, 50, 51, 108, 110, + + 51, 108, 110, 51, 108, 110, 47, 108, 110, 1, + 48, 109, 110, 47, 108, 109, 110, 46, 47, 108, + 110, 47, 108, 110, 47, 108, 110, 108, 110, 101, + 108, 110, 101, 108, 110, 101, 108, 110, 104, 108, + 110, 108, 110, 108, 110, 108, 110, 101, 108, 110, + 101, 108, 110, 101, 108, 110, 101, 108, 110, 101, + 108, 110, 101, 108, 110, 101, 108, 110, 101, 108, + 110, 101, 108, 110, 101, 108, 110, 101, 108, 110, + 101, 108, 110, 105, 108, 110, 106, 108, 110, 95, + 108, 110, 44, 108, 110, 96, 108, 110, 97, 108, + + 110, 101, 108, 110, 101, 108, 110, 101, 108, 110, + 101, 108, 110, 101, 108, 110, 101, 108, 110, 101, + 108, 110, 101, 108, 110, 101, 108, 110, 101, 108, + 110, 101, 108, 110, 101, 108, 110, 10, 108, 110, + 10, 108, 109, 110, 10, 108, 110, 10, 108, 110, + 10, 108, 110, 10, 108, 110, 15, 108, 110, 15, + 108, 109, 110, 15, 108, 110, 15, 108, 110, 15, + 108, 110, 15, 108, 110, 18, 108, 110, 18, 108, + 109, 110, 18, 108, 110, 18, 108, 110, 98, 22, + 98, 98, 100, 101, 99, 101, 101, 101, 101, 34, + + 101, 26, 23, 42, 35, 45, 24, 101, 101, 101, + 25, 103, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 9, 7, 14, 11, 13, 12, 14, 17, + 16, 102, 102, 98, 3, 98, 98, 100, 100, 99, + 101, 101, 101, 101, 29, 33, 101, 40, 36, 38, + 19, 20, 101, 101, 101, 73, 21, 101, 101, 101, + 101, 101, 101, 101, 68, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 12, 100, 101, 55, 101, 101, 101, 30, 31, 32, + 101, 41, 37, 39, 101, 59, 101, 58, 101, 6, + 101, 71, 101, 101, 101, 101, 63, 101, 101, 66, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 60, 101, 101, 101, 101, 63, 101, 101, + 101, 101, 83, 101, 101, 101, 101, 89, 101, 8, + 53, 101, 54, 101, 56, 101, 101, 101, 58, 101, + 72, 101, 101, 69, 101, 101, 101, 101, 101, 101, + 67, 101, 101, 101, 101, 62, 101, 101, 101, 84, + + 101, 101, 101, 101, 88, 101, 101, 101, 101, 101, + 101, 101, 101, 70, 101, 101, 101, 101, 101, 74, + 101, 80, 101, 64, 101, 61, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 4, 101, 101, + 101, 101, 75, 101, 101, 101, 101, 79, 101, 101, + 101, 101, 101, 85, 101, 86, 101, 101, 101, 101, + 78, 101, 101, 81, 101, 82, 101, 101, 65, 101, + 101, 101, 101, 101, 101, 101, 77, 101, 76, 101, + 101, 101, 91, 101, 101, 101, 101, 4, 2, 93, + 101, 101, 90, 101, 101, 92, 101, 5, 101, 94, + + 101, 101, 87, 101, 57 } ; -static yyconst short int yy_accept[472] = +static yyconst short int yy_accept[509] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 7, 10, 13, 15, 17, - 20, 22, 24, 27, 31, 35, 38, 41, 44, 48, - 52, 56, 59, 62, 65, 69, 73, 76, 79, 82, - 86, 90, 94, 97, 99, 101, 103, 106, 109, 111, - 114, 117, 120, 123, 126, 128, 130, 132, 135, 138, - 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, - 171, 174, 177, 180, 183, 186, 189, 192, 195, 198, - 201, 204, 207, 210, 213, 216, 219, 222, 225, 229, - - 232, 235, 238, 241, 245, 248, 251, 254, 257, 261, - 264, 265, 265, 265, 265, 265, 265, 265, 265, 266, - 266, 267, 267, 267, 267, 267, 267, 268, 268, 269, - 269, 269, 270, 271, 271, 271, 272, 273, 273, 273, - 274, 274, 274, 275, 276, 277, 278, 279, 280, 281, - 281, 282, 282, 282, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 314, 314, 314, - 315, 315, 316, 316, 316, 316, 317, 318, 318, 320, - - 321, 322, 322, 323, 323, 323, 323, 324, 324, 324, - 325, 325, 325, 325, 325, 326, 326, 326, 326, 327, - 328, 328, 329, 329, 330, 330, 331, 332, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 342, - 342, 343, 343, 343, 344, 345, 346, 347, 348, 349, - 350, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 376, 377, 377, 377, - 378, 378, 379, 380, 380, 380, 380, 381, 382, 383, - 383, 384, 385, 387, 389, 389, 390, 391, 393, 394, - - 395, 396, 398, 399, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 414, 415, 416, 417, - 419, 420, 421, 422, 424, 425, 426, 427, 429, 429, - 430, 430, 430, 431, 431, 431, 431, 431, 431, 431, - 432, 434, 436, 437, 439, 440, 441, 442, 443, 444, - 446, 447, 448, 449, 451, 452, 453, 455, 456, 457, - 458, 460, 461, 462, 463, 464, 464, 464, 464, 464, - 464, 464, 465, 466, 468, 469, 470, 471, 472, 474, - 476, 478, 480, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 490, 490, 490, 490, 490, 491, 492, - - 493, 495, 496, 497, 498, 500, 501, 502, 503, 504, - 506, 508, 509, 510, 510, 510, 510, 510, 510, 512, - 513, 515, 517, 518, 520, 521, 522, 523, 524, 525, - 526, 526, 526, 526, 526, 526, 526, 528, 530, 531, - 532, 534, 535, 536, 537, 537, 537, 537, 538, 538, - 540, 541, 543, 544, 546, 546, 546, 546, 547, 548, - 550, 550, 550, 551, 551, 551, 553, 553, 553, 554, - 554 + 19, 22, 25, 27, 30, 33, 36, 39, 42, 44, + 46, 49, 52, 56, 60, 63, 66, 69, 72, 76, + 80, 84, 87, 90, 93, 97, 101, 104, 107, 110, + 114, 118, 122, 125, 128, 130, 133, 136, 139, 142, + 144, 146, 148, 151, 154, 157, 160, 163, 166, 169, + 172, 175, 178, 181, 184, 187, 190, 193, 196, 199, + 202, 205, 208, 211, 214, 217, 220, 223, 226, 229, + + 232, 235, 238, 241, 245, 248, 251, 254, 257, 260, + 264, 267, 270, 273, 276, 279, 283, 286, 289, 289, + 289, 290, 291, 291, 291, 292, 292, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 300, 300, 300, 300, + 300, 300, 300, 301, 302, 303, 303, 303, 303, 303, + 303, 304, 304, 305, 305, 305, 306, 307, 308, 308, + 309, 310, 311, 311, 312, 312, 312, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + + 344, 344, 344, 345, 345, 346, 346, 346, 346, 347, + 348, 348, 350, 351, 352, 353, 353, 354, 355, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 365, 365, 365, 365, 366, 366, 366, 367, 367, 367, + 368, 368, 369, 369, 369, 369, 370, 371, 371, 372, + 372, 372, 373, 374, 375, 376, 377, 377, 377, 378, + 378, 378, 379, 380, 381, 382, 383, 384, 385, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 411, 412, 413, 414, 416, 417, + + 418, 418, 418, 418, 419, 419, 420, 421, 421, 422, + 422, 423, 424, 425, 425, 426, 428, 430, 430, 431, + 432, 434, 435, 436, 437, 439, 440, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, + 456, 457, 458, 460, 461, 462, 463, 465, 466, 467, + 468, 470, 470, 471, 471, 471, 473, 475, 477, 477, + 477, 477, 477, 477, 478, 478, 478, 479, 481, 483, + 484, 486, 487, 488, 489, 490, 491, 493, 494, 495, + 496, 498, 499, 500, 502, 503, 504, 505, 507, 508, + 509, 510, 511, 511, 511, 511, 511, 511, 512, 512, + + 512, 513, 514, 516, 517, 518, 519, 520, 522, 524, + 526, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 538, 539, 539, 539, 540, 540, 540, 541, + 542, 543, 545, 546, 547, 548, 550, 551, 552, 553, + 554, 556, 558, 559, 560, 560, 560, 560, 560, 561, + 561, 561, 563, 564, 566, 568, 569, 571, 572, 573, + 574, 575, 576, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 579, 581, 582, 583, 585, 586, 587, 588, + 588, 589, 589, 589, 589, 590, 590, 592, 593, 595, + 596, 598, 598, 598, 598, 599, 600, 602, 602, 602, + + 603, 603, 603, 605, 605, 605, 606, 606 } ; static yyconst int yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 5, 1, 6, 7, 1, 8, 1, 9, 10, - 11, 12, 1, 1, 1, 13, 14, 15, 16, 17, - 17, 17, 17, 17, 17, 18, 18, 19, 1, 20, - 1, 21, 1, 1, 22, 22, 22, 22, 23, 22, - 24, 24, 25, 24, 24, 24, 24, 24, 24, 24, - 24, 26, 27, 24, 24, 24, 24, 24, 24, 24, - 28, 29, 30, 1, 31, 1, 32, 33, 34, 35, - - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 24, 57, 1, 58, 1, 1, 1, 1, 1, + 1, 6, 1, 7, 8, 1, 9, 1, 10, 11, + 12, 13, 1, 1, 1, 14, 15, 16, 17, 18, + 18, 18, 18, 18, 18, 19, 19, 20, 1, 21, + 1, 22, 1, 1, 23, 23, 23, 23, 24, 23, + 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, + 25, 27, 28, 25, 25, 25, 25, 25, 25, 25, + 29, 30, 31, 1, 32, 1, 33, 34, 35, 36, + + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 25, 58, 1, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -439,394 +449,428 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[59] = +static yyconst int yy_meta[60] = { 0, - 1, 2, 3, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, 4, 4, 4, 5, 1, - 1, 6, 6, 7, 7, 7, 7, 1, 1, 8, - 7, 6, 6, 6, 6, 6, 6, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 1, 1 + 1, 2, 3, 4, 4, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 5, 5, 5, 5, 6, + 1, 1, 7, 7, 8, 8, 8, 8, 1, 1, + 9, 8, 7, 7, 7, 7, 7, 7, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 1, 1 } ; -static yyconst short int yy_base[499] = +static yyconst short int yy_base[536] = { 0, - 0, 4, 7, 12, 17, 73, 26, 36, 131, 0, - 177, 0, 33, 34, 230, 0, 24, 47, 54, 91, - 57, 60, 1099, 1100, 1100, 1100, 1100, 21, 1055, 190, - 60, 1061, 1100, 1100, 1100, 1082, 1068, 1100, 1100, 1100, - 1100, 190, 42, 0, 1100, 1100, 81, 1036, 1100, 1100, - 1100, 1100, 0, 1064, 93, 86, 236, 107, 0, 1073, - 54, 69, 6, 1100, 184, 92, 97, 70, 179, 59, - 187, 185, 188, 82, 184, 207, 239, 197, 175, 1100, - 1100, 1100, 1100, 1100, 1100, 226, 249, 265, 212, 219, - 266, 22, 227, 97, 270, 236, 267, 1100, 1100, 1077, - - 291, 302, 1100, 1100, 1076, 310, 315, 1086, 1085, 247, - 1100, 1084, 1054, 292, 1049, 257, 283, 284, 1100, 1036, - 1100, 0, 1074, 293, 1073, 1072, 1100, 1077, 1100, 323, - 1034, 1100, 1100, 1069, 1068, 320, 1100, 1073, 327, 339, - 349, 0, 355, 1056, 1055, 1054, 307, 312, 313, 1059, - 1059, 1067, 331, 1039, 1040, 340, 350, 355, 341, 191, - 356, 357, 358, 360, 361, 364, 362, 365, 369, 366, - 372, 370, 373, 371, 374, 377, 375, 398, 379, 380, - 174, 283, 382, 383, 381, 1100, 430, 434, 438, 1100, - 443, 1100, 445, 449, 453, 1100, 457, 1053, 1100, 1100, - - 1100, 1063, 1100, 1015, 1021, 1006, 1100, 1030, 1004, 1100, - 1003, 1019, 1006, 1031, 1100, 1047, 1046, 1045, 1100, 1100, - 1050, 1100, 1018, 1100, 1042, 1041, 449, 1046, 1100, 453, - 0, 1029, 1028, 1027, 399, 434, 453, 1100, 471, 1042, - 1100, 1014, 464, 456, 458, 464, 465, 387, 466, 467, - 1024, 468, 469, 470, 473, 474, 472, 471, 476, 479, - 482, 478, 477, 481, 397, 494, 483, 500, 492, 512, - 514, 515, 516, 517, 518, 538, 1100, 992, 488, 1100, - 1006, 1100, 1100, 987, 999, 1013, 1100, 1100, 1100, 994, - 1017, 523, 1016, 1015, 544, 1100, 525, 1014, 531, 534, - - 536, 1013, 539, 1012, 540, 542, 541, 544, 546, 545, - 551, 548, 547, 553, 549, 1011, 405, 559, 552, 557, - 556, 565, 574, 1010, 576, 578, 579, 1009, 597, 1100, - 609, 614, 1100, 981, 990, 993, 975, 0, 971, 584, - 586, 1003, 588, 1002, 589, 594, 602, 604, 607, 1001, - 606, 608, 611, 1000, 612, 614, 999, 613, 615, 616, - 617, 618, 620, 623, 628, 970, 967, 964, 978, 990, - 977, 631, 633, 992, 634, 635, 636, 637, 991, 990, - 984, 976, 641, 642, 644, 645, 646, 647, 649, 656, - 659, 660, 629, 944, 929, 963, 918, 662, 664, 665, - - 920, 663, 670, 672, 904, 673, 678, 675, 684, 890, - 877, 685, 686, 842, 841, 710, 700, 718, 798, 689, - 797, 791, 691, 790, 702, 695, 705, 708, 709, 711, - 753, 756, 729, 735, 745, 737, 772, 761, 718, 740, - 760, 745, 719, 748, 707, 758, 771, 1100, 762, 490, - 750, 486, 758, 485, 391, 780, 764, 1100, 759, 311, - 235, 786, 771, 77, 797, 3, 803, 730, 1100, 1100, - 821, 829, 837, 845, 853, 861, 869, 877, 885, 893, - 896, 900, 904, 912, 920, 928, 936, 944, 949, 952, - 956, 963, 968, 975, 979, 985, 992, 1000 - + 0, 58, 58, 65, 69, 126, 80, 85, 60, 86, + 172, 1204, 102, 111, 225, 1203, 101, 149, 140, 158, + 162, 165, 1210, 1213, 1213, 1213, 1213, 1179, 163, 67, + 177, 225, 0, 1188, 42, 57, 45, 196, 103, 164, + 105, 1213, 1213, 1213, 1192, 114, 1178, 1213, 1213, 1213, + 1213, 169, 87, 0, 1213, 1213, 209, 1146, 1213, 1213, + 1213, 1213, 0, 212, 117, 130, 61, 149, 1213, 266, + 175, 270, 197, 255, 49, 157, 139, 209, 201, 152, + 214, 270, 245, 272, 1213, 1213, 1213, 1213, 1213, 1213, + 261, 274, 278, 254, 273, 283, 277, 215, 218, 286, + + 276, 284, 1213, 1213, 1189, 326, 328, 334, 1213, 1213, + 1188, 339, 340, 341, 1199, 1198, 242, 355, 1190, 1189, + 346, 1213, 1195, 350, 357, 363, 0, 369, 1177, 1176, + 1175, 287, 339, 303, 315, 387, 1157, 388, 1152, 351, + 354, 218, 1213, 358, 1213, 0, 1182, 343, 1181, 1180, + 1213, 1186, 1213, 394, 1142, 1213, 1213, 1213, 1184, 377, + 378, 385, 1172, 1172, 1181, 397, 1152, 1153, 331, 384, + 388, 309, 391, 398, 399, 400, 402, 403, 409, 407, + 410, 404, 411, 413, 416, 414, 419, 422, 425, 427, + 429, 433, 438, 439, 440, 445, 447, 448, 1213, 475, + + 467, 488, 1213, 495, 1213, 497, 502, 510, 1213, 516, + 1166, 1213, 1213, 1213, 1213, 1170, 1169, 507, 1175, 1213, + 511, 0, 1157, 1156, 1155, 451, 455, 459, 472, 1125, + 1127, 1128, 1113, 1213, 1137, 1111, 1213, 1110, 1126, 467, + 1139, 1213, 1155, 1154, 1153, 1213, 1213, 1159, 1213, 1126, + 1157, 1213, 463, 487, 489, 1213, 531, 1156, 1213, 1127, + 525, 501, 511, 515, 516, 518, 519, 525, 1137, 526, + 527, 528, 531, 529, 530, 535, 533, 537, 548, 539, + 540, 542, 550, 552, 543, 551, 554, 555, 558, 573, + 574, 577, 578, 597, 1213, 1136, 582, 1135, 584, 585, + + 1101, 1116, 554, 1213, 1116, 1213, 1213, 1097, 588, 1124, + 1213, 1213, 1213, 1105, 589, 1128, 1127, 616, 1213, 593, + 1126, 591, 594, 600, 1125, 596, 1124, 601, 604, 606, + 608, 611, 605, 621, 612, 607, 610, 615, 1123, 630, + 619, 636, 639, 640, 641, 642, 1122, 643, 645, 646, + 1121, 667, 1213, 673, 678, 1120, 1119, 1118, 1096, 686, + 1089, 1098, 1101, 647, 0, 1080, 657, 652, 1112, 662, + 1111, 654, 665, 676, 678, 680, 1110, 681, 682, 683, + 1109, 684, 686, 1108, 688, 685, 689, 690, 691, 692, + 694, 696, 1077, 721, 1078, 1075, 1072, 711, 1099, 1086, + + 701, 712, 1095, 713, 714, 704, 716, 1087, 1086, 1077, + 1070, 722, 723, 730, 732, 734, 735, 738, 740, 737, + 741, 1044, 760, 712, 1043, 743, 1068, 1036, 745, 752, + 753, 1018, 751, 755, 760, 1006, 754, 766, 761, 769, + 989, 983, 775, 779, 944, 979, 924, 870, 798, 784, + 804, 889, 785, 888, 886, 787, 885, 792, 793, 794, + 795, 796, 797, 818, 897, 838, 838, 832, 838, 846, + 812, 819, 810, 805, 808, 801, 809, 812, 815, 562, + 1213, 460, 852, 860, 1213, 837, 465, 817, 340, 847, + 292, 273, 864, 866, 1213, 854, 234, 215, 873, 865, + + 150, 877, 172, 895, 897, 1213, 1213, 914, 923, 932, + 941, 950, 959, 968, 971, 975, 983, 992, 997, 1006, + 1015, 1020, 1023, 1027, 1035, 1044, 1053, 1062, 1067, 1075, + 1079, 1086, 1094, 1103, 1112 } ; -static yyconst short int yy_def[499] = +static yyconst short int yy_def[536] = { 0, - 471, 471, 472, 472, 473, 473, 474, 474, 470, 9, - 9, 11, 9, 9, 9, 15, 475, 475, 476, 476, - 477, 477, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 478, 470, 470, 470, 470, 470, 470, - 470, 470, 479, 480, 470, 470, 470, 470, 481, 482, - 482, 482, 482, 470, 470, 470, 483, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 470, - 470, 470, 470, 470, 470, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 470, 470, 470, - - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 484, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 485, 470, 470, 470, 470, 470, 486, 470, 470, - 470, 470, 470, 470, 487, 470, 470, 488, 470, 470, - 470, 489, 470, 490, 482, 491, 482, 482, 482, 470, - 470, 492, 470, 493, 470, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 470, 470, 470, 470, 470, - 494, 470, 470, 470, 470, 470, 470, 470, 470, 470, - - 470, 484, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 486, 470, 470, 470, 470, 470, 470, 488, 470, 470, - 489, 490, 495, 491, 482, 482, 482, 470, 470, 492, - 470, 493, 483, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 496, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 495, 482, 482, 482, 470, 470, 482, 482, 482, 482, - - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 470, 470, - 496, 470, 470, 470, 470, 470, 470, 497, 470, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 470, 470, 470, 470, 470, - 470, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 470, 470, 470, 470, 470, 482, 482, 482, - - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 470, 470, 470, 470, 470, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 470, 470, 470, 470, 470, 470, 482, 482, 482, 482, - 482, 482, 482, 482, 470, 470, 470, 470, 498, 482, - 482, 482, 482, 482, 470, 470, 498, 470, 482, 482, - 470, 470, 482, 470, 470, 482, 470, 470, 470, 0, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470 - + 507, 1, 508, 508, 509, 509, 510, 510, 1, 1, + 1, 11, 1, 1, 1, 15, 511, 511, 512, 512, + 513, 513, 507, 507, 507, 507, 507, 514, 507, 507, + 507, 507, 515, 516, 516, 516, 516, 507, 507, 507, + 516, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 517, 507, 507, 507, 507, 507, 507, + 507, 507, 518, 507, 507, 516, 516, 516, 507, 507, + 507, 519, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 507, 507, 507, 507, 507, 507, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + + 516, 516, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 520, + 507, 507, 521, 507, 507, 507, 522, 507, 523, 516, + 524, 516, 516, 516, 516, 507, 507, 507, 507, 507, + 507, 507, 507, 516, 507, 525, 507, 507, 507, 507, + 507, 526, 507, 507, 507, 507, 507, 507, 527, 516, + 516, 516, 507, 507, 528, 507, 529, 507, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 507, 507, + + 507, 507, 507, 530, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 521, 507, + 507, 522, 523, 531, 524, 516, 516, 516, 516, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 516, + 507, 507, 507, 507, 507, 507, 507, 526, 507, 507, + 527, 507, 516, 516, 516, 507, 507, 528, 507, 529, + 519, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 532, 507, 531, 516, 516, 516, 516, + + 507, 507, 507, 507, 507, 507, 507, 507, 516, 507, + 507, 507, 507, 507, 516, 516, 516, 507, 507, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 507, 507, 532, 507, 516, 516, 516, 507, 507, + 507, 507, 507, 516, 533, 507, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 507, 507, 507, 507, 507, 516, 507, 507, + + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 507, 507, 507, 507, 516, 507, 507, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 507, 507, 507, 507, 516, 507, + 507, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 507, 534, 507, 507, 507, 507, 507, + 507, 516, 516, 516, 516, 516, 516, 516, 516, 534, + 507, 507, 507, 507, 507, 535, 516, 516, 516, 516, + 516, 507, 507, 535, 507, 516, 516, 507, 507, 516, + + 507, 507, 516, 507, 507, 507, 0, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507 } ; -static yyconst short int yy_nxt[1159] = +static yyconst short int yy_nxt[1273] = { 0, - 470, 25, 26, 27, 25, 30, 26, 27, 30, 34, - 35, 31, 470, 28, 34, 35, 470, 28, 36, 39, - 40, 146, 41, 36, 146, 42, 26, 99, 50, 51, - 43, 52, 111, 29, 112, 100, 37, 29, 50, 51, - 146, 52, 82, 82, 149, 44, 24, 24, 101, 26, - 99, 101, 32, 127, 53, 128, 26, 104, 102, 26, - 109, 181, 26, 109, 53, 105, 60, 60, 110, 60, - 60, 110, 146, 45, 46, 39, 40, 146, 41, 47, - 48, 42, 130, 60, 60, 130, 43, 146, 146, 24, - 24, 116, 106, 26, 104, 106, 147, 137, 117, 138, - - 146, 44, 107, 151, 160, 152, 118, 136, 136, 136, - 136, 153, 153, 153, 153, 146, 119, 148, 156, 139, - 131, 143, 143, 143, 143, 211, 155, 164, 183, 45, - 46, 24, 25, 26, 27, 25, 24, 24, 24, 54, - 24, 24, 24, 55, 56, 57, 58, 58, 58, 59, - 24, 24, 60, 60, 60, 60, 60, 60, 24, 24, - 24, 60, 60, 60, 61, 60, 60, 62, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 63, 60, 60, 60, 60, 60, 64, 24, 65, - 66, 114, 146, 146, 114, 123, 150, 146, 136, 136, - - 136, 136, 146, 146, 67, 146, 146, 271, 68, 146, - 69, 70, 71, 72, 172, 146, 73, 157, 124, 74, - 173, 158, 75, 76, 159, 146, 77, 162, 78, 79, - 146, 161, 163, 80, 81, 83, 165, 146, 115, 84, - 85, 171, 248, 24, 146, 146, 125, 126, 139, 200, - 140, 140, 140, 141, 146, 166, 177, 146, 167, 182, - 201, 178, 86, 87, 88, 89, 90, 146, 174, 73, - 464, 175, 74, 91, 92, 93, 94, 168, 169, 95, - 96, 78, 97, 146, 146, 146, 24, 157, 146, 170, - 142, 185, 187, 114, 159, 187, 114, 179, 216, 205, - - 176, 146, 188, 189, 190, 180, 191, 206, 168, 184, - 160, 193, 173, 207, 193, 186, 195, 196, 208, 197, - 170, 194, 211, 272, 130, 146, 198, 130, 199, 146, - 146, 146, 212, 209, 227, 227, 227, 227, 235, 210, - 115, 230, 230, 230, 230, 153, 153, 153, 153, 217, - 218, 139, 237, 140, 140, 140, 141, 236, 146, 146, - 155, 139, 131, 141, 141, 141, 141, 139, 146, 143, - 143, 143, 143, 146, 146, 146, 146, 244, 146, 146, - 146, 245, 146, 146, 146, 247, 246, 146, 146, 146, - 146, 146, 146, 146, 256, 146, 253, 146, 146, 146, - - 146, 146, 250, 254, 252, 146, 258, 249, 251, 255, - 257, 260, 263, 266, 259, 146, 146, 146, 262, 301, - 274, 261, 264, 146, 270, 461, 267, 275, 265, 268, - 273, 187, 318, 269, 187, 189, 190, 357, 191, 189, - 190, 188, 189, 250, 189, 190, 193, 189, 292, 193, - 195, 196, 146, 197, 195, 196, 194, 195, 195, 196, - 198, 195, 277, 227, 227, 227, 227, 230, 230, 230, - 230, 146, 295, 296, 146, 295, 146, 293, 153, 153, - 153, 153, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 155, 146, 146, 146, 146, 303, 146, - - 146, 146, 294, 146, 146, 304, 298, 297, 146, 302, - 146, 316, 146, 299, 300, 311, 309, 305, 146, 307, - 310, 314, 306, 308, 313, 319, 320, 312, 315, 317, - 146, 322, 146, 146, 146, 146, 146, 321, 334, 329, - 330, 146, 329, 146, 207, 295, 296, 326, 295, 146, - 325, 323, 146, 328, 146, 324, 332, 146, 146, 146, - 146, 327, 146, 146, 146, 146, 146, 146, 340, 146, - 146, 146, 294, 346, 146, 146, 347, 146, 343, 348, - 341, 353, 351, 146, 342, 349, 352, 360, 345, 344, - 355, 354, 146, 358, 146, 350, 146, 146, 329, 330, - - 356, 329, 146, 359, 146, 361, 146, 146, 362, 364, - 329, 330, 146, 329, 352, 329, 330, 363, 329, 372, - 146, 365, 146, 374, 146, 146, 146, 332, 375, 146, - 146, 146, 146, 146, 146, 146, 146, 378, 146, 373, - 379, 146, 381, 385, 376, 384, 146, 388, 380, 146, - 377, 146, 146, 146, 146, 146, 383, 386, 392, 146, - 146, 382, 146, 146, 146, 146, 387, 146, 400, 389, - 401, 390, 399, 391, 146, 398, 404, 146, 146, 414, - 146, 146, 146, 146, 405, 210, 402, 403, 146, 412, - 146, 146, 410, 146, 406, 407, 146, 409, 420, 411, - - 421, 408, 146, 146, 146, 423, 424, 146, 426, 146, - 413, 433, 419, 146, 433, 434, 435, 435, 422, 436, - 146, 427, 436, 146, 437, 438, 146, 146, 425, 146, - 433, 468, 469, 433, 468, 429, 146, 146, 455, 428, - 441, 430, 449, 446, 446, 446, 446, 440, 439, 447, - 447, 447, 447, 450, 442, 448, 449, 444, 146, 447, - 447, 447, 447, 146, 443, 453, 146, 458, 146, 458, - 456, 451, 446, 446, 446, 446, 146, 146, 146, 146, - 452, 448, 458, 454, 458, 447, 447, 447, 447, 146, - 146, 445, 459, 460, 462, 462, 462, 462, 465, 209, - - 462, 462, 462, 462, 468, 469, 466, 468, 146, 146, - 463, 467, 467, 467, 467, 146, 146, 467, 467, 467, - 467, 24, 24, 24, 24, 24, 24, 24, 24, 33, - 33, 33, 33, 33, 33, 33, 33, 38, 38, 38, - 38, 38, 38, 38, 38, 49, 49, 49, 49, 49, - 49, 49, 49, 98, 98, 98, 98, 98, 98, 98, - 98, 103, 103, 103, 103, 103, 103, 103, 103, 108, - 108, 108, 108, 108, 108, 108, 108, 129, 129, 432, - 129, 129, 129, 129, 129, 133, 133, 431, 133, 133, - 133, 133, 133, 134, 134, 146, 134, 134, 134, 134, - - 134, 144, 144, 145, 145, 145, 145, 154, 146, 154, - 154, 154, 202, 202, 202, 202, 202, 202, 202, 202, - 214, 214, 146, 214, 214, 214, 214, 214, 221, 221, - 221, 221, 221, 221, 221, 221, 225, 225, 146, 225, - 225, 225, 225, 225, 228, 228, 228, 228, 228, 228, - 228, 228, 231, 418, 231, 232, 232, 232, 232, 234, - 234, 234, 234, 240, 240, 240, 240, 240, 240, 240, - 240, 242, 417, 242, 242, 242, 276, 276, 416, 415, - 276, 276, 291, 291, 291, 291, 331, 331, 331, 331, - 331, 331, 370, 370, 146, 370, 370, 370, 370, 370, - - 457, 457, 146, 457, 457, 457, 457, 457, 146, 146, - 146, 397, 396, 395, 394, 393, 206, 146, 146, 146, - 146, 146, 371, 369, 368, 367, 366, 146, 146, 146, - 146, 146, 146, 146, 146, 233, 339, 338, 337, 336, - 335, 333, 146, 155, 241, 146, 233, 233, 229, 224, - 224, 290, 222, 289, 288, 287, 286, 285, 284, 283, - 282, 281, 280, 279, 278, 203, 277, 243, 155, 241, - 239, 238, 146, 146, 233, 229, 226, 224, 223, 222, - 220, 219, 215, 213, 120, 204, 203, 200, 200, 192, - 186, 146, 135, 132, 122, 121, 120, 113, 470, 23, - - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470 + 24, 25, 26, 25, 27, 25, 24, 24, 24, 28, + 24, 24, 24, 29, 30, 31, 32, 32, 32, 33, + 24, 24, 34, 34, 34, 34, 34, 34, 24, 24, + 24, 34, 34, 34, 35, 34, 36, 37, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 24, 24, 38, + 43, 131, 44, 38, 131, 39, 40, 43, 131, 44, + 45, 49, 46, 50, 65, 51, 131, 45, 52, 122, + 131, 123, 60, 53, 61, 132, 62, 60, 135, 61, + 47, 62, 64, 39, 66, 173, 34, 67, 54, 151, + + 65, 152, 133, 26, 138, 104, 134, 41, 138, 63, + 161, 68, 87, 105, 63, 138, 24, 69, 39, 138, + 66, 87, 34, 67, 131, 24, 55, 56, 49, 158, + 50, 159, 51, 57, 58, 52, 34, 68, 34, 34, + 53, 144, 26, 69, 110, 34, 139, 34, 34, 131, + 106, 26, 111, 104, 106, 54, 107, 139, 131, 112, + 26, 108, 110, 112, 26, 113, 116, 26, 131, 116, + 114, 131, 118, 160, 117, 147, 131, 117, 121, 121, + 121, 121, 175, 55, 56, 70, 71, 164, 162, 165, + 124, 131, 125, 125, 125, 126, 140, 136, 148, 238, + + 72, 136, 174, 141, 73, 178, 74, 75, 76, 77, + 154, 142, 78, 138, 154, 79, 131, 138, 80, 81, + 131, 143, 82, 68, 83, 84, 149, 150, 131, 85, + 86, 88, 127, 131, 131, 89, 90, 131, 124, 24, + 128, 128, 128, 128, 213, 137, 169, 177, 195, 155, + 196, 501, 139, 131, 176, 139, 214, 238, 91, 92, + 93, 94, 95, 179, 131, 78, 180, 239, 79, 96, + 97, 98, 99, 131, 131, 100, 101, 83, 102, 163, + 131, 121, 121, 121, 121, 166, 166, 166, 166, 131, + 184, 131, 131, 131, 170, 131, 131, 131, 171, 190, + + 168, 172, 131, 131, 187, 131, 131, 188, 498, 181, + 182, 131, 185, 170, 189, 192, 191, 194, 186, 226, + 172, 183, 131, 193, 173, 181, 197, 200, 131, 138, + 186, 200, 198, 138, 131, 202, 203, 183, 201, 204, + 206, 138, 208, 209, 206, 138, 210, 229, 199, 243, + 131, 207, 228, 211, 265, 212, 138, 213, 131, 131, + 138, 218, 218, 218, 218, 221, 221, 221, 221, 262, + 124, 139, 125, 125, 125, 126, 124, 131, 126, 126, + 126, 126, 124, 139, 128, 128, 128, 128, 136, 138, + 235, 227, 136, 138, 232, 154, 131, 131, 139, 154, + + 244, 245, 233, 131, 131, 236, 240, 131, 234, 253, + 131, 237, 166, 166, 166, 166, 263, 131, 131, 131, + 264, 131, 131, 131, 254, 255, 131, 168, 131, 131, + 131, 139, 131, 131, 155, 131, 137, 139, 131, 271, + 274, 131, 276, 266, 131, 268, 131, 270, 131, 272, + 267, 269, 131, 278, 281, 273, 275, 131, 131, 131, + 277, 286, 284, 279, 131, 280, 131, 131, 202, 203, + 131, 282, 204, 289, 131, 268, 200, 283, 131, 285, + 200, 290, 131, 288, 131, 292, 131, 201, 287, 202, + 203, 131, 492, 202, 291, 293, 202, 203, 206, 298, + + 202, 297, 206, 208, 209, 299, 131, 210, 131, 207, + 300, 208, 209, 315, 211, 208, 295, 208, 209, 309, + 131, 208, 218, 218, 218, 218, 221, 221, 221, 221, + 131, 316, 318, 319, 131, 131, 318, 131, 131, 317, + 166, 166, 166, 166, 131, 131, 131, 131, 131, 131, + 131, 324, 131, 320, 131, 168, 131, 326, 131, 131, + 321, 131, 131, 325, 327, 322, 323, 131, 481, 131, + 131, 131, 332, 131, 131, 339, 328, 131, 330, 333, + 334, 329, 331, 336, 342, 335, 341, 343, 337, 344, + 338, 340, 131, 131, 345, 346, 131, 131, 352, 353, + + 347, 131, 352, 131, 131, 361, 349, 131, 131, 348, + 131, 234, 131, 131, 351, 131, 355, 318, 319, 131, + 131, 318, 350, 131, 131, 131, 131, 131, 364, 131, + 131, 131, 356, 357, 131, 358, 373, 367, 131, 317, + 131, 368, 374, 370, 375, 369, 380, 371, 382, 131, + 372, 376, 381, 378, 385, 131, 377, 379, 131, 131, + 131, 131, 131, 384, 131, 131, 131, 383, 352, 353, + 387, 131, 352, 131, 352, 353, 131, 391, 352, 352, + 353, 131, 379, 352, 131, 389, 390, 394, 386, 392, + 388, 394, 355, 401, 404, 131, 398, 131, 403, 131, + + 131, 131, 131, 131, 131, 131, 402, 131, 131, 131, + 131, 131, 407, 131, 408, 131, 405, 410, 413, 414, + 131, 417, 394, 131, 409, 406, 394, 421, 415, 412, + 131, 131, 131, 131, 411, 131, 423, 423, 423, 423, + 416, 131, 131, 418, 419, 420, 429, 426, 431, 131, + 432, 131, 430, 131, 131, 433, 131, 131, 435, 131, + 131, 446, 131, 447, 131, 446, 436, 434, 443, 237, + 131, 131, 131, 131, 131, 423, 423, 423, 423, 131, + 131, 437, 441, 438, 442, 131, 440, 453, 131, 454, + 439, 456, 444, 449, 131, 457, 452, 459, 131, 468, + + 469, 470, 470, 468, 131, 471, 131, 455, 460, 471, + 458, 131, 131, 131, 131, 131, 131, 131, 486, 468, + 131, 472, 473, 468, 131, 461, 462, 131, 131, 131, + 476, 131, 486, 468, 131, 463, 131, 468, 131, 474, + 488, 487, 477, 495, 479, 489, 475, 483, 483, 483, + 483, 491, 478, 484, 484, 484, 484, 485, 495, 490, + 496, 484, 484, 484, 484, 493, 131, 483, 483, 483, + 483, 485, 495, 131, 482, 484, 484, 484, 484, 499, + 499, 499, 499, 497, 131, 236, 502, 495, 499, 499, + 499, 499, 504, 504, 504, 504, 505, 506, 505, 506, + + 505, 503, 505, 481, 131, 131, 500, 131, 131, 467, + 504, 504, 504, 504, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 119, 119, + 466, 119, 119, 119, 119, 119, 119, 129, 129, 130, + 130, 130, 130, 153, 153, 465, 153, 153, 153, 153, + 153, 153, 157, 157, 464, 157, 157, 157, 157, 157, + + 157, 167, 131, 167, 167, 167, 216, 216, 131, 216, + 216, 216, 216, 216, 216, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 222, 131, 222, 223, 223, 223, + 223, 225, 225, 225, 225, 241, 241, 131, 241, 241, + 241, 241, 241, 241, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 260, 451, 260, 260, 260, 294, 294, 450, 448, + 445, 294, 294, 296, 296, 296, 296, 354, 354, 131, + 354, 354, 354, 354, 399, 399, 131, 399, 399, 399, + + 399, 399, 399, 480, 480, 131, 131, 480, 480, 480, + 480, 480, 494, 494, 131, 494, 494, 494, 494, 494, + 494, 428, 427, 425, 424, 233, 422, 131, 131, 131, + 131, 131, 400, 397, 396, 395, 393, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, 366, 365, + 363, 362, 360, 359, 131, 224, 131, 168, 259, 252, + 314, 249, 313, 312, 311, 310, 308, 307, 306, 305, + 304, 303, 302, 301, 131, 224, 224, 220, 215, 215, + 295, 261, 168, 259, 257, 256, 252, 250, 249, 247, + 246, 242, 231, 230, 131, 131, 224, 220, 217, 215, + + 213, 213, 205, 199, 156, 146, 145, 131, 120, 507, + 39, 39, 23, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507 } ; -static yyconst short int yy_chk[1159] = +static yyconst short int yy_chk[1273] = { 0, - 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, - 3, 2, 0, 1, 4, 4, 0, 2, 3, 5, - 5, 466, 5, 4, 63, 5, 17, 17, 7, 7, - 5, 7, 28, 1, 28, 17, 4, 2, 8, 8, - 92, 8, 13, 14, 63, 5, 13, 14, 18, 18, - 18, 18, 2, 43, 7, 43, 19, 19, 18, 21, - 21, 92, 22, 22, 8, 19, 13, 14, 21, 13, - 14, 22, 61, 5, 5, 6, 6, 70, 6, 6, - 6, 6, 47, 13, 14, 47, 6, 62, 68, 13, - 14, 31, 20, 20, 20, 20, 61, 56, 31, 56, - - 74, 6, 20, 66, 70, 66, 31, 55, 55, 55, - 55, 67, 67, 67, 67, 94, 31, 62, 68, 58, - 47, 58, 58, 58, 58, 464, 67, 74, 94, 6, - 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, - 11, 30, 181, 79, 30, 42, 65, 69, 65, 65, - - 65, 65, 75, 72, 11, 71, 73, 181, 11, 160, - 11, 11, 11, 11, 79, 78, 11, 69, 42, 11, - 79, 69, 11, 11, 69, 76, 11, 72, 11, 11, - 89, 71, 73, 11, 11, 15, 75, 90, 30, 15, - 15, 78, 160, 15, 86, 93, 42, 42, 57, 110, - 57, 57, 57, 57, 96, 76, 89, 77, 76, 93, - 110, 90, 15, 15, 15, 15, 15, 87, 86, 15, - 461, 86, 15, 15, 15, 15, 15, 77, 77, 15, - 15, 15, 15, 88, 91, 97, 15, 87, 95, 77, - 57, 96, 101, 114, 87, 101, 114, 91, 124, 116, - - 88, 182, 101, 102, 102, 91, 102, 116, 95, 95, - 88, 106, 97, 116, 106, 102, 107, 107, 117, 107, - 95, 106, 118, 182, 130, 147, 107, 130, 107, 460, - 148, 149, 118, 117, 136, 136, 136, 136, 147, 117, - 114, 139, 139, 139, 139, 153, 153, 153, 153, 124, - 124, 140, 149, 140, 140, 140, 140, 148, 156, 159, - 153, 141, 130, 141, 141, 141, 141, 143, 157, 143, - 143, 143, 143, 158, 161, 162, 163, 156, 164, 165, - 167, 157, 166, 168, 170, 159, 158, 169, 172, 174, - 171, 173, 175, 177, 167, 176, 165, 179, 180, 185, - - 183, 184, 162, 166, 164, 248, 169, 161, 163, 166, - 168, 171, 173, 176, 170, 265, 178, 235, 172, 248, - 184, 171, 174, 317, 180, 455, 177, 185, 175, 178, - 183, 187, 265, 179, 187, 188, 188, 317, 188, 189, - 189, 187, 189, 178, 191, 191, 193, 191, 235, 193, - 194, 194, 236, 194, 195, 195, 193, 195, 197, 197, - 194, 197, 194, 227, 227, 227, 227, 230, 230, 230, - 230, 237, 239, 239, 244, 239, 245, 236, 243, 243, - 243, 243, 246, 247, 249, 250, 252, 253, 254, 258, - 257, 255, 256, 243, 259, 263, 262, 260, 250, 264, - - 261, 267, 237, 454, 452, 252, 245, 244, 450, 249, - 269, 263, 266, 246, 247, 258, 256, 253, 268, 255, - 257, 261, 254, 255, 260, 266, 267, 259, 262, 264, - 270, 269, 271, 272, 273, 274, 275, 268, 279, 276, - 276, 292, 276, 297, 279, 295, 295, 273, 295, 299, - 272, 270, 300, 275, 301, 271, 276, 303, 305, 307, - 306, 274, 308, 310, 309, 313, 312, 315, 297, 311, - 319, 314, 292, 306, 321, 320, 307, 318, 301, 308, - 299, 312, 311, 322, 300, 309, 311, 320, 305, 303, - 314, 313, 323, 318, 325, 310, 326, 327, 329, 329, - - 315, 329, 340, 319, 341, 321, 343, 345, 322, 325, - 331, 331, 346, 331, 327, 332, 332, 323, 332, 340, - 347, 326, 348, 343, 351, 349, 352, 331, 345, 353, - 355, 358, 356, 359, 360, 361, 362, 348, 363, 341, - 349, 364, 352, 358, 346, 356, 365, 361, 351, 372, - 347, 373, 375, 376, 377, 378, 355, 359, 365, 383, - 384, 353, 385, 386, 387, 388, 360, 389, 375, 362, - 376, 363, 373, 364, 390, 372, 383, 391, 392, 393, - 398, 402, 399, 400, 384, 393, 377, 378, 403, 391, - 404, 406, 389, 408, 385, 386, 407, 388, 399, 390, - - 400, 387, 409, 412, 413, 403, 404, 420, 407, 423, - 392, 416, 398, 426, 416, 417, 417, 417, 402, 418, - 425, 408, 418, 427, 420, 423, 428, 429, 406, 430, - 433, 468, 468, 433, 468, 412, 439, 443, 445, 409, - 427, 413, 436, 433, 433, 433, 433, 426, 425, 434, - 434, 434, 434, 439, 428, 435, 436, 430, 440, 435, - 435, 435, 435, 442, 429, 443, 444, 449, 451, 457, - 446, 440, 446, 446, 446, 446, 453, 459, 441, 438, - 442, 447, 449, 444, 457, 447, 447, 447, 447, 463, - 437, 432, 451, 453, 456, 456, 456, 456, 462, 431, - - 462, 462, 462, 462, 467, 467, 463, 467, 424, 422, - 459, 465, 465, 465, 465, 421, 419, 467, 467, 467, - 467, 471, 471, 471, 471, 471, 471, 471, 471, 472, - 472, 472, 472, 472, 472, 472, 472, 473, 473, 473, - 473, 473, 473, 473, 473, 474, 474, 474, 474, 474, - 474, 474, 474, 475, 475, 475, 475, 475, 475, 475, - 475, 476, 476, 476, 476, 476, 476, 476, 476, 477, - 477, 477, 477, 477, 477, 477, 477, 478, 478, 415, - 478, 478, 478, 478, 478, 479, 479, 414, 479, 479, - 479, 479, 479, 480, 480, 411, 480, 480, 480, 480, - - 480, 481, 481, 482, 482, 482, 482, 483, 410, 483, - 483, 483, 484, 484, 484, 484, 484, 484, 484, 484, - 485, 485, 405, 485, 485, 485, 485, 485, 486, 486, - 486, 486, 486, 486, 486, 486, 487, 487, 401, 487, - 487, 487, 487, 487, 488, 488, 488, 488, 488, 488, - 488, 488, 489, 397, 489, 490, 490, 490, 490, 491, - 491, 491, 491, 492, 492, 492, 492, 492, 492, 492, - 492, 493, 396, 493, 493, 493, 494, 494, 395, 394, - 494, 494, 495, 495, 495, 495, 496, 496, 496, 496, - 496, 496, 497, 497, 382, 497, 497, 497, 497, 497, - - 498, 498, 381, 498, 498, 498, 498, 498, 380, 379, - 374, 371, 370, 369, 368, 367, 366, 357, 354, 350, - 344, 342, 339, 337, 336, 335, 334, 328, 324, 316, - 304, 302, 298, 294, 293, 291, 290, 286, 285, 284, - 281, 278, 251, 242, 240, 234, 233, 232, 228, 226, - 225, 223, 221, 218, 217, 216, 214, 213, 212, 211, - 209, 208, 206, 205, 204, 202, 198, 155, 154, 152, - 151, 150, 146, 145, 144, 138, 135, 134, 131, 128, - 126, 125, 123, 120, 115, 113, 112, 109, 108, 105, - 100, 60, 54, 48, 37, 36, 32, 29, 23, 470, - - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 3, 35, 3, 2, 37, 2, 2, 4, 75, 4, + 3, 5, 4, 5, 9, 5, 36, 4, 5, 30, + 67, 30, 7, 5, 7, 35, 7, 8, 37, 8, + 4, 8, 8, 10, 9, 75, 9, 9, 5, 53, + + 10, 53, 36, 17, 39, 17, 36, 2, 39, 7, + 67, 9, 13, 17, 8, 46, 13, 9, 14, 46, + 10, 14, 10, 10, 41, 14, 5, 5, 6, 65, + 6, 65, 6, 6, 6, 6, 13, 10, 13, 13, + 6, 41, 19, 10, 19, 14, 39, 14, 14, 66, + 18, 18, 19, 18, 18, 6, 18, 46, 77, 20, + 20, 18, 20, 20, 21, 20, 21, 22, 68, 22, + 20, 80, 22, 66, 21, 52, 76, 22, 29, 29, + 29, 29, 77, 6, 6, 11, 11, 71, 68, 71, + 31, 503, 31, 31, 31, 31, 40, 38, 52, 501, + + 11, 38, 76, 40, 11, 80, 11, 11, 11, 11, + 57, 40, 11, 64, 57, 11, 73, 64, 11, 11, + 79, 40, 11, 11, 11, 11, 52, 52, 78, 11, + 11, 15, 31, 81, 98, 15, 15, 99, 32, 15, + 32, 32, 32, 32, 117, 38, 73, 79, 98, 57, + 99, 498, 57, 497, 78, 64, 117, 142, 15, 15, + 15, 15, 15, 81, 83, 15, 81, 142, 15, 15, + 15, 15, 15, 94, 74, 15, 15, 15, 15, 70, + 91, 70, 70, 70, 70, 72, 72, 72, 72, 82, + 83, 84, 95, 92, 74, 101, 97, 93, 74, 94, + + 72, 74, 96, 102, 91, 100, 132, 91, 492, 82, + 82, 491, 84, 92, 93, 96, 95, 97, 84, 132, + 92, 82, 134, 96, 93, 100, 100, 106, 172, 107, + 102, 106, 101, 107, 135, 108, 108, 100, 106, 108, + 112, 113, 114, 114, 112, 113, 114, 135, 108, 148, + 169, 112, 134, 114, 172, 114, 118, 118, 133, 489, + 118, 121, 121, 121, 121, 124, 124, 124, 124, 169, + 125, 107, 125, 125, 125, 125, 126, 144, 126, 126, + 126, 126, 128, 113, 128, 128, 128, 128, 136, 138, + 141, 133, 136, 138, 140, 154, 160, 161, 118, 154, + + 148, 148, 140, 170, 162, 141, 144, 171, 140, 160, + 173, 141, 166, 166, 166, 166, 170, 174, 175, 176, + 171, 177, 178, 182, 161, 162, 180, 166, 179, 181, + 183, 138, 184, 186, 154, 185, 136, 154, 187, 178, + 180, 188, 182, 173, 189, 175, 190, 177, 191, 179, + 174, 176, 192, 184, 186, 179, 181, 193, 194, 195, + 183, 191, 189, 184, 196, 185, 197, 198, 201, 201, + 226, 187, 201, 194, 227, 191, 200, 188, 228, 190, + 200, 195, 253, 193, 487, 197, 240, 200, 192, 202, + 202, 229, 482, 202, 196, 198, 204, 204, 206, 227, + + 204, 226, 206, 207, 207, 228, 254, 207, 255, 206, + 229, 208, 208, 253, 207, 208, 207, 210, 210, 240, + 262, 210, 218, 218, 218, 218, 221, 221, 221, 221, + 263, 254, 257, 257, 264, 265, 257, 266, 267, 255, + 261, 261, 261, 261, 268, 270, 271, 272, 274, 275, + 273, 266, 277, 262, 276, 261, 278, 268, 280, 281, + 263, 282, 285, 267, 270, 264, 265, 279, 480, 283, + 286, 284, 274, 287, 288, 281, 271, 289, 273, 275, + 276, 272, 273, 278, 284, 277, 283, 285, 279, 286, + 280, 282, 290, 291, 287, 288, 292, 293, 294, 294, + + 289, 297, 294, 299, 300, 303, 291, 309, 315, 290, + 322, 303, 320, 323, 293, 326, 294, 318, 318, 324, + 328, 318, 292, 329, 333, 330, 336, 331, 309, 337, + 332, 335, 297, 299, 338, 300, 329, 320, 341, 315, + 334, 322, 330, 324, 331, 323, 335, 326, 337, 340, + 328, 332, 336, 334, 341, 342, 333, 334, 343, 344, + 345, 346, 348, 340, 349, 350, 364, 338, 352, 352, + 343, 368, 352, 372, 354, 354, 367, 348, 354, 355, + 355, 370, 350, 355, 373, 345, 346, 360, 342, 349, + 344, 360, 354, 367, 372, 374, 364, 375, 370, 376, + + 378, 379, 380, 382, 386, 383, 368, 385, 387, 388, + 389, 390, 375, 391, 376, 392, 373, 379, 383, 385, + 401, 388, 394, 406, 378, 374, 394, 392, 386, 382, + 398, 402, 404, 405, 380, 407, 394, 394, 394, 394, + 387, 412, 413, 389, 390, 391, 401, 398, 404, 414, + 405, 415, 402, 416, 417, 406, 420, 418, 412, 419, + 421, 423, 426, 424, 429, 423, 413, 407, 420, 424, + 433, 430, 431, 437, 434, 423, 423, 423, 423, 435, + 439, 414, 418, 415, 419, 438, 417, 430, 440, 431, + 416, 434, 421, 426, 443, 435, 429, 438, 444, 449, + + 450, 450, 450, 449, 453, 451, 456, 433, 439, 451, + 437, 458, 459, 460, 461, 462, 463, 449, 471, 464, + 476, 453, 456, 464, 474, 440, 443, 475, 477, 473, + 460, 478, 471, 468, 479, 444, 488, 468, 472, 458, + 475, 474, 461, 486, 463, 477, 459, 468, 468, 468, + 468, 479, 462, 469, 469, 469, 469, 470, 486, 478, + 488, 470, 470, 470, 470, 483, 490, 483, 483, 483, + 483, 484, 494, 496, 467, 484, 484, 484, 484, 493, + 493, 493, 493, 490, 500, 466, 499, 494, 499, 499, + 499, 499, 502, 502, 502, 502, 504, 504, 505, 505, + + 504, 500, 505, 465, 457, 455, 496, 454, 452, 448, + 504, 504, 504, 504, 508, 508, 508, 508, 508, 508, + 508, 508, 508, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 510, 510, 510, 510, 510, 510, 510, 510, + 510, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 513, + 513, 513, 513, 513, 513, 513, 513, 513, 514, 514, + 447, 514, 514, 514, 514, 514, 514, 515, 515, 516, + 516, 516, 516, 517, 517, 446, 517, 517, 517, 517, + 517, 517, 518, 518, 445, 518, 518, 518, 518, 518, + + 518, 519, 442, 519, 519, 519, 520, 520, 441, 520, + 520, 520, 520, 520, 520, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 522, 436, 522, 523, 523, 523, + 523, 524, 524, 524, 524, 525, 525, 432, 525, 525, + 525, 525, 525, 525, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 527, 527, 527, 527, 527, 527, 527, + 527, 527, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 529, 428, 529, 529, 529, 530, 530, 427, 425, + 422, 530, 530, 531, 531, 531, 531, 532, 532, 411, + 532, 532, 532, 532, 533, 533, 410, 533, 533, 533, + + 533, 533, 533, 534, 534, 409, 408, 534, 534, 534, + 534, 534, 535, 535, 403, 535, 535, 535, 535, 535, + 535, 400, 399, 397, 396, 395, 393, 384, 381, 377, + 371, 369, 366, 363, 362, 361, 359, 358, 357, 356, + 351, 347, 339, 327, 325, 321, 317, 316, 314, 310, + 308, 305, 302, 301, 298, 296, 269, 260, 258, 251, + 250, 248, 245, 244, 243, 241, 239, 238, 236, 235, + 233, 232, 231, 230, 225, 224, 223, 219, 217, 216, + 211, 168, 167, 165, 164, 163, 159, 155, 152, 150, + 149, 147, 139, 137, 131, 130, 129, 123, 120, 119, + + 116, 115, 111, 105, 58, 47, 45, 34, 28, 23, + 16, 12, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 507, 507 } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -870,6 +914,7 @@ char *yytext; #include "config.h" #include #include +#include #include "treefuncs.h" #include "parse.h" @@ -895,6 +940,8 @@ GList *include_files = NULL; static int look_for_includes = 0; int line_no = 1; +/* last filename parsed from a #line directive */ +char *hline_filename = NULL; static void clear_cbuf(void) @@ -955,7 +1002,7 @@ int yylex(void); #define GTK_DOC_LINE 10 -#line 959 "lex.yy.c" +#line 1006 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1109,7 +1156,7 @@ YY_DECL register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; -#line 106 "lexer.l" +#line 109 "lexer.l" @@ -1120,7 +1167,7 @@ yy_current_state = 0; -#line 1124 "lex.yy.c" +#line 1171 "lex.yy.c" if ( yy_init ) { @@ -1169,14 +1216,14 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 471 ) + if ( yy_current_state >= 508 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *yy_state_ptr++ = yy_current_state; ++yy_cp; } - while ( yy_base[yy_current_state] != 1100 ); + while ( yy_base[yy_current_state] != 1213 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -1207,7 +1254,7 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 116 "lexer.l" +#line 119 "lexer.l" { line_no++; REJECT; } YY_BREAK case 2: @@ -1215,7 +1262,7 @@ case 2: yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 118 "lexer.l" +#line 121 "lexer.l" { /* Thy evil easter egg */ #define QQ(x) long x @@ -1243,12 +1290,52 @@ case 3: yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 140 "lexer.l" +#line 143 "lexer.l" { ; /*comment, ignore*/ } YY_BREAK case 4: YY_RULE_SETUP -#line 141 "lexer.l" +#line 145 "lexer.l" +{ + char *p; + char *number; + char *filename; + char *str=g_strdup(yytext); + + /* find first digit of line number */ + p=str; + while(*p&&!isdigit(*p)) p++; + number=p; + + /* find end of line number */ + while(*p&&isdigit(*p)) p++; + if(*p) *p++=0; + + /* find beginning of filename */ + p=strchr(p,'"'); + if(p) p++; + filename=p; + + /* find end of filename */ + if(p) p=strchr(p,'"'); + if(p) *p=0; + + /* stash number (minus one because we don't count this line) */ + if(number) line_no=atoi(number)-1; + + /* stash filename */ + if(filename) { + if(hline_filename) g_free(hline_filename); + hline_filename=g_strdup(filename); + } + + /* clean up */ + g_free(str); +} + YY_BREAK +case 5: +YY_RULE_SETUP +#line 182 "lexer.l" { if(look_for_includes==1) { char *p; @@ -1266,35 +1353,35 @@ YY_RULE_SETUP REJECT; } YY_BREAK -case 5: +case 6: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 158 "lexer.l" +#line 199 "lexer.l" { /* eat out gtk doc stuff */ BEGIN(GTK_DOC_BEFORE_NAME); clear_cbuf(); } YY_BREAK -case 6: +case 7: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 163 "lexer.l" +#line 204 "lexer.l" { /* empty doc lines */ ; } YY_BREAK -case 7: +case 8: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 167 "lexer.l" +#line 208 "lexer.l" { char *p; BEGIN(GTK_DOC); @@ -1306,168 +1393,168 @@ YY_RULE_SETUP g_strstrip(gtk_doc_func); } YY_BREAK -case 8: +case 9: YY_RULE_SETUP -#line 177 "lexer.l" +#line 218 "lexer.l" { BEGIN(CLASS_CODE_I); } YY_BREAK -case 9: +case 10: YY_RULE_SETUP -#line 180 "lexer.l" +#line 221 "lexer.l" { BEGIN(COMMENT); before_comment = CLASS_CODE_I; } YY_BREAK -case 10: +case 11: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 184 "lexer.l" +#line 225 "lexer.l" { /* empty doc lines */ add_to_cbuf(" *\n"); } YY_BREAK -case 11: +case 12: YY_RULE_SETUP -#line 188 "lexer.l" +#line 229 "lexer.l" { BEGIN(CLASS_CODE_I); add_gtk_doc_func(); } YY_BREAK -case 12: +case 13: YY_RULE_SETUP -#line 192 "lexer.l" +#line 233 "lexer.l" { fflush(stdout); add_to_cbuf(" * "); BEGIN(GTK_DOC_LINE); } YY_BREAK -case 13: +case 14: YY_RULE_SETUP -#line 197 "lexer.l" +#line 238 "lexer.l" { BEGIN(CLASS_CODE_I); } YY_BREAK -case 14: +case 15: YY_RULE_SETUP -#line 200 "lexer.l" +#line 241 "lexer.l" { BEGIN(COMMENT); before_comment = CLASS_CODE_I; } YY_BREAK -case 15: +case 16: YY_RULE_SETUP -#line 204 "lexer.l" +#line 245 "lexer.l" { BEGIN(CLASS_CODE_I); add_to_cbuf("\n"); add_gtk_doc_func(); } YY_BREAK -case 16: +case 17: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 209 "lexer.l" +#line 250 "lexer.l" { BEGIN(GTK_DOC); add_to_cbuf(yytext); add_to_cbuf("\n"); } YY_BREAK -case 17: +case 18: YY_RULE_SETUP -#line 214 "lexer.l" +#line 255 "lexer.l" { fflush(stdout); add_to_cbuf(yytext); } YY_BREAK -case 18: +case 19: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 219 "lexer.l" +#line 260 "lexer.l" { add_to_cbuf(yytext); /*comment, ignore*/ } YY_BREAK -case 19: +case 20: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 220 "lexer.l" +#line 261 "lexer.l" { ; /*comment, ignore*/ } YY_BREAK -case 20: +case 21: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 221 "lexer.l" +#line 262 "lexer.l" { ; /*comment, ignore*/ } YY_BREAK -case 21: +case 22: YY_RULE_SETUP -#line 222 "lexer.l" +#line 263 "lexer.l" {BEGIN(COMMENT); before_comment = INITIAL; } YY_BREAK -case 22: +case 23: YY_RULE_SETUP -#line 223 "lexer.l" +#line 264 "lexer.l" { add_to_cbuf(yytext); BEGIN(COMMENT); before_comment = C_CODE; } YY_BREAK -case 23: +case 24: YY_RULE_SETUP -#line 228 "lexer.l" +#line 269 "lexer.l" {BEGIN(COMMENT); before_comment = CLASS_CODE; } YY_BREAK -case 24: +case 25: YY_RULE_SETUP -#line 229 "lexer.l" +#line 270 "lexer.l" {BEGIN(COMMENT); before_comment = CLASS_CODE_I; } YY_BREAK -case 25: +case 26: YY_RULE_SETUP -#line 230 "lexer.l" +#line 271 "lexer.l" { if(before_comment == C_CODE) add_to_cbuf(yytext); BEGIN(before_comment); } YY_BREAK -case 26: +case 27: YY_RULE_SETUP -#line 234 "lexer.l" +#line 275 "lexer.l" { /* comment, ignore */ if(before_comment == C_CODE) add_to_cbuf(yytext); } YY_BREAK -case 27: +case 28: YY_RULE_SETUP -#line 238 "lexer.l" +#line 279 "lexer.l" { /* comment, ignore */ if(before_comment == C_CODE) add_to_cbuf(yytext); } YY_BREAK -case 28: +case 29: YY_RULE_SETUP -#line 243 "lexer.l" +#line 284 "lexer.l" { BEGIN(C_CODE); parenth_depth = 1; @@ -1477,9 +1564,9 @@ YY_RULE_SETUP ccode_line = line_no; } YY_BREAK -case 29: +case 30: YY_RULE_SETUP -#line 251 "lexer.l" +#line 292 "lexer.l" { BEGIN(C_CODE); parenth_depth = 1; @@ -1489,9 +1576,9 @@ YY_RULE_SETUP ccode_line = line_no; } YY_BREAK -case 30: +case 31: YY_RULE_SETUP -#line 260 "lexer.l" +#line 301 "lexer.l" { BEGIN(C_CODE); parenth_depth = 1; @@ -1501,9 +1588,9 @@ YY_RULE_SETUP ccode_line = line_no; } YY_BREAK -case 31: +case 32: YY_RULE_SETUP -#line 268 "lexer.l" +#line 309 "lexer.l" { BEGIN(C_CODE); parenth_depth = 1; @@ -1513,9 +1600,9 @@ YY_RULE_SETUP ccode_line = line_no; } YY_BREAK -case 32: +case 33: YY_RULE_SETUP -#line 276 "lexer.l" +#line 317 "lexer.l" { BEGIN(C_CODE); parenth_depth = 1; @@ -1525,9 +1612,9 @@ YY_RULE_SETUP ccode_line = line_no; } YY_BREAK -case 33: +case 34: YY_RULE_SETUP -#line 284 "lexer.l" +#line 325 "lexer.l" { BEGIN(C_CODE); parenth_depth = 1; @@ -1539,9 +1626,9 @@ YY_RULE_SETUP look_for_includes=1; } YY_BREAK -case 34: +case 35: YY_RULE_SETUP -#line 294 "lexer.l" +#line 335 "lexer.l" { BEGIN(INITIAL); yylval.cbuf = cbuf; @@ -1551,67 +1638,67 @@ YY_RULE_SETUP return code_type; } YY_BREAK -case 35: -YY_RULE_SETUP -#line 303 "lexer.l" -{ add_to_cbuf(yytext); } - YY_BREAK case 36: YY_RULE_SETUP -#line 304 "lexer.l" +#line 344 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 37: YY_RULE_SETUP -#line 305 "lexer.l" +#line 345 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 38: YY_RULE_SETUP -#line 306 "lexer.l" +#line 346 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 39: YY_RULE_SETUP -#line 307 "lexer.l" +#line 347 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 40: YY_RULE_SETUP -#line 308 "lexer.l" +#line 348 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 41: YY_RULE_SETUP -#line 310 "lexer.l" +#line 349 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 42: YY_RULE_SETUP -#line 313 "lexer.l" +#line 351 "lexer.l" +{ add_to_cbuf(yytext); } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 354 "lexer.l" { BEGIN(CODE_STRING); before_string = C_CODE; add_to_cbuf(yytext); } YY_BREAK -case 43: +case 44: YY_RULE_SETUP -#line 318 "lexer.l" +#line 359 "lexer.l" { BEGIN(CODE_STRING); before_string = PROPERTY_CODE_I; add_to_cbuf(yytext); } YY_BREAK -case 44: +case 45: YY_RULE_SETUP -#line 323 "lexer.l" +#line 364 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK -case 45: +case 46: YY_RULE_SETUP -#line 324 "lexer.l" +#line 365 "lexer.l" { BEGIN(before_string); add_to_cbuf(yytext); @@ -1623,27 +1710,27 @@ YY_RULE_SETUP } } YY_BREAK -case 46: +case 47: YY_RULE_SETUP -#line 334 "lexer.l" +#line 375 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK -case 47: +case 48: YY_RULE_SETUP -#line 335 "lexer.l" +#line 376 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK -case 48: +case 49: YY_RULE_SETUP -#line 337 "lexer.l" +#line 378 "lexer.l" { parenth_depth++; add_to_cbuf(yytext); } YY_BREAK -case 49: +case 50: YY_RULE_SETUP -#line 341 "lexer.l" +#line 382 "lexer.l" { parenth_depth--; if(parenth_depth<0) { @@ -1657,19 +1744,19 @@ YY_RULE_SETUP add_to_cbuf(yytext); } YY_BREAK -case 50: +case 51: YY_RULE_SETUP -#line 354 "lexer.l" +#line 395 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK -case 51: +case 52: YY_RULE_SETUP -#line 355 "lexer.l" +#line 396 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK -case 52: +case 53: YY_RULE_SETUP -#line 357 "lexer.l" +#line 398 "lexer.l" { static int found_classes = 0; look_for_includes = 2; @@ -1683,12 +1770,27 @@ YY_RULE_SETUP return CLASS; } YY_BREAK -case 53: +case 54: +YY_RULE_SETUP +#line 411 "lexer.l" +{ return ERROR; } + YY_BREAK +case 55: +YY_RULE_SETUP +#line 412 "lexer.l" +{ return ENUM; } + YY_BREAK +case 56: +YY_RULE_SETUP +#line 413 "lexer.l" +{ return FLAGS; } + YY_BREAK +case 57: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 370 "lexer.l" +#line 415 "lexer.l" { int maj = 0, min = 0, pl = 0; int rmaj = 0, rmin = 0, rpl = 0; @@ -1725,14 +1827,14 @@ YY_RULE_SETUP "(this is %s)\n" "To upgrade your gob, see: " "http://www.5z.com/jirka/gob.html", - maj, VERSION); + effective_maj, VERSION); } } YY_BREAK -case 54: +case 58: YY_RULE_SETUP -#line 411 "lexer.l" +#line 456 "lexer.l" { if(for_cpp) { error_printf(GOB_WARN, line_no, @@ -1743,193 +1845,193 @@ YY_RULE_SETUP REJECT; } YY_BREAK -case 55: +case 59: YY_RULE_SETUP -#line 421 "lexer.l" +#line 466 "lexer.l" {return FROM;} YY_BREAK -case 56: +case 60: YY_RULE_SETUP -#line 423 "lexer.l" +#line 468 "lexer.l" {return VOID;} YY_BREAK -case 57: +case 61: YY_RULE_SETUP -#line 424 "lexer.l" +#line 469 "lexer.l" {return STRUCT;} YY_BREAK -case 58: +case 62: YY_RULE_SETUP -#line 425 "lexer.l" +#line 470 "lexer.l" {return UNION;} YY_BREAK -case 59: +case 63: YY_RULE_SETUP -#line 426 "lexer.l" +#line 471 "lexer.l" {return ENUM;} YY_BREAK -case 60: +case 64: YY_RULE_SETUP -#line 427 "lexer.l" +#line 472 "lexer.l" {return SIGNED;} YY_BREAK -case 61: +case 65: YY_RULE_SETUP -#line 428 "lexer.l" +#line 473 "lexer.l" {return UNSIGNED;} YY_BREAK -case 62: +case 66: YY_RULE_SETUP -#line 429 "lexer.l" +#line 474 "lexer.l" {return LONG;} YY_BREAK -case 63: +case 67: YY_RULE_SETUP -#line 430 "lexer.l" +#line 475 "lexer.l" {return SHORT;} YY_BREAK -case 64: +case 68: YY_RULE_SETUP -#line 431 "lexer.l" +#line 476 "lexer.l" {return INT;} YY_BREAK -case 65: +case 69: YY_RULE_SETUP -#line 432 "lexer.l" +#line 477 "lexer.l" {return FLOAT;} YY_BREAK -case 66: +case 70: YY_RULE_SETUP -#line 433 "lexer.l" +#line 478 "lexer.l" {return DOUBLE;} YY_BREAK -case 67: +case 71: YY_RULE_SETUP -#line 434 "lexer.l" +#line 479 "lexer.l" {return CHAR;} YY_BREAK -case 68: +case 72: YY_RULE_SETUP -#line 435 "lexer.l" +#line 480 "lexer.l" {return CONST;} YY_BREAK -case 69: +case 73: YY_RULE_SETUP -#line 437 "lexer.l" +#line 482 "lexer.l" {return THREEDOTS;} YY_BREAK -case 70: +case 74: YY_RULE_SETUP -#line 439 "lexer.l" +#line 484 "lexer.l" {yylval.line = line_no; return PUBLIC;} YY_BREAK -case 71: +case 75: YY_RULE_SETUP -#line 440 "lexer.l" +#line 485 "lexer.l" {yylval.line = line_no; return PRIVATE;} YY_BREAK -case 72: +case 76: YY_RULE_SETUP -#line 441 "lexer.l" +#line 486 "lexer.l" {yylval.line = line_no; return PROTECTED;} YY_BREAK -case 73: +case 77: YY_RULE_SETUP -#line 442 "lexer.l" +#line 487 "lexer.l" {yylval.line = line_no; return CLASSWIDE;} YY_BREAK -case 74: +case 78: YY_RULE_SETUP -#line 443 "lexer.l" +#line 488 "lexer.l" {yylval.line = line_no; return ARGUMENT;} YY_BREAK -case 75: +case 79: YY_RULE_SETUP -#line 444 "lexer.l" +#line 489 "lexer.l" {yylval.line = line_no; return VIRTUAL;} YY_BREAK -case 76: +case 80: YY_RULE_SETUP -#line 445 "lexer.l" +#line 490 "lexer.l" {yylval.line = line_no; return SIGNAL;} YY_BREAK -case 77: +case 81: YY_RULE_SETUP -#line 446 "lexer.l" +#line 491 "lexer.l" {yylval.line = line_no; return OVERRIDE;} YY_BREAK -case 78: +case 82: YY_RULE_SETUP -#line 447 "lexer.l" +#line 492 "lexer.l" { yylval.line = line_no; BEGIN(PROPERTY_CODE); return PROPERTY; } YY_BREAK -case 79: +case 83: YY_RULE_SETUP -#line 452 "lexer.l" +#line 497 "lexer.l" { yylval.line = line_no; return NICK; } YY_BREAK -case 80: +case 84: YY_RULE_SETUP -#line 453 "lexer.l" +#line 498 "lexer.l" { yylval.line = line_no; return BLURB; } YY_BREAK -case 81: +case 85: YY_RULE_SETUP -#line 454 "lexer.l" +#line 499 "lexer.l" { yylval.line = line_no; return MAXIMUM; } YY_BREAK -case 82: +case 86: YY_RULE_SETUP -#line 455 "lexer.l" +#line 500 "lexer.l" { yylval.line = line_no; return MINIMUM; } YY_BREAK -case 83: +case 87: YY_RULE_SETUP -#line 456 "lexer.l" +#line 501 "lexer.l" { yylval.line = line_no; return DEFAULT_VALUE; } YY_BREAK -case 84: +case 88: YY_RULE_SETUP -#line 457 "lexer.l" +#line 502 "lexer.l" { yylval.line = line_no; return FLAGS; } YY_BREAK -case 85: +case 89: YY_RULE_SETUP -#line 458 "lexer.l" +#line 503 "lexer.l" { yylval.line = line_no; return TYPE; } YY_BREAK -case 86: +case 90: YY_RULE_SETUP -#line 459 "lexer.l" +#line 504 "lexer.l" { yylval.line = line_no; return FLAGS_TYPE; } YY_BREAK -case 87: +case 91: YY_RULE_SETUP -#line 460 "lexer.l" +#line 505 "lexer.l" { yylval.line = line_no; return ENUM_TYPE; } YY_BREAK -case 88: +case 92: YY_RULE_SETUP -#line 461 "lexer.l" +#line 506 "lexer.l" { yylval.line = line_no; return PARAM_TYPE; } YY_BREAK -case 89: +case 93: YY_RULE_SETUP -#line 462 "lexer.l" +#line 507 "lexer.l" { yylval.line = line_no; return BOXED_TYPE; } YY_BREAK -case 90: +case 94: YY_RULE_SETUP -#line 463 "lexer.l" +#line 508 "lexer.l" { yylval.line = line_no; return OBJECT_TYPE; } YY_BREAK -case 91: +case 95: YY_RULE_SETUP -#line 464 "lexer.l" +#line 509 "lexer.l" { yylval.line = line_no; property_paren_depth = 1; @@ -1937,18 +2039,18 @@ YY_RULE_SETUP return '('; } YY_BREAK -case 92: +case 96: YY_RULE_SETUP -#line 470 "lexer.l" +#line 515 "lexer.l" { yylval.line = line_no; property_paren_depth++; return '('; } YY_BREAK -case 93: +case 97: YY_RULE_SETUP -#line 475 "lexer.l" +#line 520 "lexer.l" { yylval.line = line_no; property_paren_depth--; @@ -1958,67 +2060,67 @@ YY_RULE_SETUP return ')'; } YY_BREAK -case 94: +case 98: YY_RULE_SETUP -#line 484 "lexer.l" +#line 529 "lexer.l" { yylval.id = g_strdup(yytext); return NUMBER; } YY_BREAK -case 95: +case 99: YY_RULE_SETUP -#line 488 "lexer.l" +#line 533 "lexer.l" { /* this one is for a classname with a namespace */ yylval.id = g_strdup(yytext); return TYPETOKEN; } YY_BREAK -case 96: +case 100: YY_RULE_SETUP -#line 493 "lexer.l" +#line 538 "lexer.l" { /* this is for a classname with an empty namespace */ yylval.id = g_strdup(yytext); return TYPETOKEN; } YY_BREAK -case 97: +case 101: YY_RULE_SETUP -#line 498 "lexer.l" +#line 543 "lexer.l" { yylval.id = g_strdup(yytext); return TOKEN; } YY_BREAK -case 98: +case 102: YY_RULE_SETUP -#line 502 "lexer.l" +#line 547 "lexer.l" { yylval.id = g_strdup(yytext); return SINGLE_CHAR; } YY_BREAK -case 99: +case 103: YY_RULE_SETUP -#line 507 "lexer.l" +#line 552 "lexer.l" { yylval.id = g_strdup(yytext); return ARRAY_DIM; } YY_BREAK -case 100: +case 104: YY_RULE_SETUP -#line 512 "lexer.l" +#line 557 "lexer.l" { BEGIN(CLASS_CODE_I); return '{'; } YY_BREAK -case 101: +case 105: YY_RULE_SETUP -#line 516 "lexer.l" +#line 561 "lexer.l" { BEGIN(C_CODE); parenth_depth=1; @@ -2029,38 +2131,38 @@ YY_RULE_SETUP return '{'; } YY_BREAK -case 102: +case 106: YY_RULE_SETUP -#line 525 "lexer.l" +#line 570 "lexer.l" { BEGIN(INITIAL); return '}'; } YY_BREAK -case 103: +case 107: YY_RULE_SETUP -#line 530 "lexer.l" +#line 575 "lexer.l" ; /*ignore*/ YY_BREAK -case 104: +case 108: YY_RULE_SETUP -#line 532 "lexer.l" +#line 577 "lexer.l" { yylval.line = line_no; return yytext[0]; } YY_BREAK -case 105: +case 109: YY_RULE_SETUP -#line 537 "lexer.l" +#line 582 "lexer.l" ; /*ignore*/ YY_BREAK -case 106: +case 110: YY_RULE_SETUP -#line 539 "lexer.l" +#line 584 "lexer.l" ECHO; YY_BREAK -#line 2064 "lex.yy.c" +#line 2166 "lex.yy.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): case YY_STATE_EOF(C_CODE): @@ -2360,7 +2462,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 471 ) + if ( yy_current_state >= 508 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2390,11 +2492,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 471 ) + if ( yy_current_state >= 508 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 470); + yy_is_jam = (yy_current_state == 507); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -2630,11 +2732,6 @@ YY_BUFFER_STATE b; } -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif #ifdef YY_USE_PROTOS void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) @@ -2952,7 +3049,7 @@ int main() return 0; } #endif -#line 539 "lexer.l" +#line 584 "lexer.l" /* Ugly warning avoiding */ diff --git a/src/lexer.l b/src/lexer.l index e102286..0832621 100644 --- a/src/lexer.l +++ b/src/lexer.l @@ -23,6 +23,7 @@ #include "config.h" #include #include +#include #include "treefuncs.h" #include "parse.h" @@ -48,6 +49,8 @@ GList *include_files = NULL; static int look_for_includes = 0; int line_no = 1; +/* last filename parsed from a #line directive */ +char *hline_filename = NULL; static void clear_cbuf(void) @@ -138,6 +141,44 @@ REJECT; } \/\/.*$ { ; /*comment, ignore*/ } + +<*>^#[ \t]*line[ \t]+[0-9]+([ \t]\"[^\n\r\f\"]*\")? { + char *p; + char *number; + char *filename; + char *str=g_strdup(yytext); + + /* find first digit of line number */ + p=str; + while(*p&&!isdigit(*p)) p++; + number=p; + + /* find end of line number */ + while(*p&&isdigit(*p)) p++; + if(*p) *p++=0; + + /* find beginning of filename */ + p=strchr(p,'"'); + if(p) p++; + filename=p; + + /* find end of filename */ + if(p) p=strchr(p,'"'); + if(p) *p=0; + + /* stash number (minus one because we don't count this line) */ + if(number) line_no=atoi(number)-1; + + /* stash filename */ + if(filename) { + if(hline_filename) g_free(hline_filename); + hline_filename=g_strdup(filename); + } + + /* clean up */ + g_free(str); +} + ^#[ \t]*include[ \t][<"][^\n">]*[>"] { if(look_for_includes==1) { char *p; @@ -367,6 +408,10 @@ class { return CLASS; } +error { return ERROR; } +enum { return ENUM; } +flags { return FLAGS; } + ^[ \t]*requires[ \t]+[0-9]+\.[0-9]+\.[0-9]+[\t ]*$ { int maj = 0, min = 0, pl = 0; int rmaj = 0, rmin = 0, rpl = 0; @@ -403,7 +448,7 @@ class { "(this is %s)\n" "To upgrade your gob, see: " "http://www.5z.com/jirka/gob.html", - maj, VERSION); + effective_maj, VERSION); } } @@ -481,25 +526,25 @@ class { return ')'; } -0|[1-9][0-9]*|0x[0-9a-fA-F]+|0[0-7]+|[0-9]*\.[0-9]+|\.[0-9][0-9]* { +0|[1-9][0-9]*|0x[0-9a-fA-F]+|0[0-7]+|[0-9]*\.[0-9]+|\.[0-9][0-9]* { yylval.id = g_strdup(yytext); return NUMBER; } -[A-Za-z_][A-Za-z0-9_]*(:[A-Za-z0-9_]*)+ { +[A-Za-z_][A-Za-z0-9_]*(:[A-Za-z0-9_]*)+ { /* this one is for a classname with a namespace */ yylval.id = g_strdup(yytext); return TYPETOKEN; } -:[A-Za-z_][A-Za-z0-9_]*(:[A-Za-z0-9_]*)* { +:[A-Za-z_][A-Za-z0-9_]*(:[A-Za-z0-9_]*)* { /* this is for a classname with an empty namespace */ yylval.id = g_strdup(yytext); return TYPETOKEN; } -[A-Za-z_][A-Za-z0-9_]* { +[A-Za-z_][A-Za-z0-9_]* { yylval.id = g_strdup(yytext); return TOKEN; } -\'\\.\'|\'.\' { +\'\\.\'|\'.\' { yylval.id = g_strdup(yytext); return SINGLE_CHAR; } @@ -527,7 +572,7 @@ class { return '}'; } -[\t ] ; /*ignore*/ +[\f\t ] ; /*ignore*/ <*>. { yylval.line = line_no; diff --git a/src/main.c b/src/main.c index fe74942..7613bc0 100644 --- a/src/main.c +++ b/src/main.c @@ -46,6 +46,7 @@ extern int yydebug; extern FILE * yyin; extern Node *class; extern GList *nodes; +extern GList *enums; extern GList *include_files; @@ -105,6 +106,14 @@ gboolean no_lines = FALSE; gboolean no_self_alias = FALSE; gboolean always_private_struct = FALSE; +gboolean use_m4 = FALSE; /* preprocess sources with m4 */ +gboolean use_m4_clean = FALSE; /* preprocess sources with m4, no m4 flags */ +char *m4_commandline = NULL; +#define M4_INCLUDE_DIR PKGDATADIR "/m4" +#define M4_BASE_FILENAME "gobm4.m4" +#define M4_FLAGS "-P -s -I" M4_INCLUDE_DIR " -DGOBM4_GOB_VERSION=" VERSION " " M4_BASE_FILENAME +#define M4_COMMANDLINE "m4" + int method_unique_id = 1; static void @@ -424,29 +433,64 @@ put_pub_method(const Method *m) static void put_signal_macro (const Method *m, gboolean gnu) { - char *id; - if(m->method != SIGNAL_LAST_METHOD && m->method != SIGNAL_FIRST_METHOD) return; - id = g_strdup (m->id); - g_strup (id); - if ( ! gnu) { - out_printf (outh, "#define %s_SIGNAL_%s(func)\t" - "\"%s\",(GCallback)(func)\n", - macrobase, id, m->id); + /* connect */ + out_printf (outh, "#define %s_connect__%s(object,func,data)\t" + "g_signal_connect(%s(object),\"%s\"," + "(GCallback)(func),(data))\n", + funcbase, m->id, macrobase, m->id); + + /* connect_after */ + out_printf (outh, "#define %s_connect_after__%s(object,func,data)\t" + "g_signal_connect_after(%s(object),\"%s\"," + "(GCallback)(func),(data))\n", + funcbase, m->id, macrobase, m->id); + + /* connect_data */ + out_printf (outh, "#define %s_connect_data__%s" + "(object,func,data,destroy_data,flags)\t" + "g_signal_connect_data(%s(object),\"%s\"," + "(GCallback)(func),(data),(destroy_data),(flags))\n", + funcbase, m->id, macrobase, m->id); } else { - out_printf (outh, "#define %s_SIGNAL_%s(func)\t" - "\"%s\",(GCallback)(({", - macrobase, id, m->id); - print_method (outh, "", "(* ___", "", ") ", ", gpointer data ", - " = func; ", m, FALSE, TRUE, TRUE); - out_printf (outh, "___%s; }))\n", m->id); - + /* connect */ + out_printf (outh, "#define %s_connect__%s(object,func,data)\t" + "g_signal_connect(" + "%s(({%s *___object = (object); ___object; }))," + "\"%s\"," + "(GCallback)({", + funcbase, m->id, macrobase, typebase, m->id); + print_method (outh, "", "(* ___", "", ") ", ", gpointer ___data ", + " = (func); ", m, FALSE, TRUE, TRUE); + out_printf (outh, "___%s; }), (data))\n", m->id); + + /* connect_after */ + out_printf (outh, "#define %s_connect_after__%s(object,func,data)\t" + "g_signal_connect_after(" + "%s(({%s *___object = (object); ___object; }))," + "\"%s\"," + "(GCallback)({", + funcbase, m->id, macrobase, typebase, m->id); + print_method (outh, "", "(* ___", "", ") ", ", gpointer ___data ", + " = (func); ", m, FALSE, TRUE, TRUE); + out_printf (outh, "___%s; }), (data))\n", m->id); + + /* connect_data */ + out_printf (outh, "#define %s_connect_data__%s" + "(object,func,data,destroy_data,flags)\t" + "g_signal_connect_data(" + "%s(({%s *___object = (object); ___object; }))," + "\"%s\"," + "(GCallback)({", + funcbase, m->id, macrobase, typebase, m->id); + print_method (outh, "", "(* ___", "", ") ", ", gpointer ___data ", + " = (func); ", m, FALSE, TRUE, TRUE); + out_printf (outh, "___%s; }), (data), (destroy_data), (flags))\n", m->id); } - g_free (id); } static void @@ -464,6 +508,44 @@ put_signal_macros (const Class *c, gboolean gnu) } } +static void +put_local_signal_macro (const Method *m) +{ + if(m->method != SIGNAL_LAST_METHOD && + m->method != SIGNAL_FIRST_METHOD) + return; + + /* connect */ + out_printf (out, "#define self_connect__%s(object,func,data)\t" + "%s_connect__%s((object),(func),(data))\n", + m->id, funcbase, m->id); + + /* connect_after */ + out_printf (out, "#define self_connect_after__%s(object,func,data)\t" + "%s_connect_after__%s((object),(func),(data))\n", + m->id, funcbase, m->id); + + /* connect_data */ + out_printf (out, "#define self_connect_data__%s(object,func,data,destroy_data,flags)\t" + "%s_connect_data__%s((object),(func),(data),(destroy_data),(flags))\n", + m->id, funcbase, m->id); +} + +static void +put_local_signal_macros (const Class *c) +{ + const GList *li; + + if (signals < 0) + return; + + for (li = c->nodes; li != NULL; li = li->next) { + const Node *n = li->data; + if (n->type == METHOD_NODE) + put_local_signal_macro ((Method *)n); + } +} + static void put_prot_method(const Method *m) @@ -511,16 +593,16 @@ put_priv_method_prot(Method *m) } static GList * -make_func_arg(char *typename, int is_class, char *name) +make_func_arg (const char *typename, gboolean is_class, const char *name) { Node *node; Node *type; char *tn; - if(is_class) - tn = g_strconcat(typename, ":Class", NULL); + if (is_class) + tn = g_strconcat (typename, ":Class", NULL); else - tn = g_strdup(typename); + tn = g_strdup (typename); type = node_new (TYPE_NODE, "name:steal", tn, @@ -528,9 +610,9 @@ make_func_arg(char *typename, int is_class, char *name) NULL); node = node_new (FUNCARG_NODE, "atype:steal", (Type *)type, - "name:steal", name, + "name", name, NULL); - return g_list_prepend(NULL, node); + return g_list_prepend (NULL, node); } static void @@ -564,7 +646,9 @@ make_inits(Class *cl) "method", CLASS_INIT_METHOD, "mtype:steal", type, "id", "class_init", - "args:steal", make_func_arg (cl->otype, TRUE, g_strdup("c")), + "args:steal", make_func_arg (cl->otype, + TRUE /* is_class */, + "c" /* name */), "unique_id", method_unique_id++, NULL); cl->nodes = g_list_prepend(cl->nodes, node); @@ -578,7 +662,9 @@ make_inits(Class *cl) "method", INIT_METHOD, "mtype:steal", type, "id", "init", - "args:steal", make_func_arg (cl->otype, TRUE, g_strdup("o")), + "args:steal", make_func_arg (cl->otype, + FALSE /* is_class */, + "o" /* name */), "unique_id", method_unique_id++, NULL); cl->nodes = g_list_prepend(cl->nodes, node); @@ -873,6 +959,106 @@ add_enums(Class *c) out_printf(out, "static %sClass *parent_class = NULL;\n\n", ptypebase); } +static void +add_interface_methods (Class *c, const char *interface) +{ + GList *li; + gboolean added_line = FALSE; + + for (li = c->nodes; li != NULL; li = li->next) { + Node *n = li->data; + Method *m = (Method *)n; + if (n->type != METHOD_NODE || + m->method == OVERRIDE_METHOD || + m->interface == NULL || + strcmp (m->interface, interface) != 0) + continue; + + if (m->line_no > 0) { + out_addline_infile (out, m->line_no); + added_line = TRUE; + } else if (m->line_no == 0 && + added_line) { + out_addline_outfile (out); + added_line = FALSE; + } + out_printf (out, "\tiface->%s = self_%s;\n", + m->id, m->id); + } + if (added_line) + out_addline_outfile (out); +} + +static void +add_interface_inits (Class *c) +{ + GList *li; + + if (c->interfaces == NULL) + return; + + out_printf(out, "\n"); + + for (li = c->interfaces; li != NULL; li = li->next) { + const char *interface = li->data; + char *name = replace_sep (interface, '_'); + char *type = remove_sep (interface); + + out_printf (out, "\nstatic void\n" + "___%s_init (%sIface *iface)\n" + "{\n", + name, type); + + add_interface_methods (c, interface); + + out_printf (out, "}\n\n"); + + g_free (name); + g_free (type); + } +} + +static void +add_interface_infos (void) +{ + GList *li; + for (li = ((Class *)class)->interfaces; + li != NULL; + li = li->next) { + char *name = replace_sep (li->data, '_'); + out_printf (out, + "\t\tstatic const GInterfaceInfo %s_info = {\n" + "\t\t\t(GInterfaceInitFunc) ___%s_init,\n" + "\t\t\tNULL,\n" + "\t\t\tNULL\n" + "\t\t};\n\n", + name, name); + g_free (name); + } +} + +static void +add_interfaces (void) +{ + GList *li; + for (li = ((Class *)class)->interfaces; + li != NULL; + li = li->next) { + char *name = replace_sep (li->data, '_'); + char *type = make_pre_macro (li->data, "TYPE"); + + out_printf (out, + "\t\tg_type_add_interface_static (type,\n" + "\t\t\t%s,\n" + "\t\t\t&%s_info);\n", + type, + name); + + g_free (type); + g_free (name); + } +} + static void add_get_type(void) { @@ -894,10 +1080,17 @@ add_get_type(void) "\t\t\tsizeof (%s),\n" "\t\t\t0 /* n_preallocs */,\n" "\t\t\t(GInstanceInitFunc) %s_init,\n" - "\t\t};\n\n" - "\t\ttype = g_type_register_static (%s, \"%s\", &info, (GTypeFlags)0);\n", - funcbase, typebase, funcbase, typebase, funcbase, - pmacrotype, typebase); + "\t\t};\n\n", + funcbase, typebase, funcbase, typebase, funcbase); + + add_interface_infos (); + + out_printf (out, + "\t\ttype = g_type_register_static (%s, \"%s\", &info, (GTypeFlags)0);\n", + pmacrotype, typebase); + + add_interfaces (); + /* if(chunk_size) { out_printf(out, @@ -914,39 +1107,54 @@ add_get_type(void) } static void -add_bonobo_x_get_type (void) +add_bonobo_object_get_type (void) { /* char *chunk_size = ((Class*)class)->chunk_size; */ + /* _vicious_ spanks seth with a rusty nail + out_printf(out, + "\n#warning \"Bonobo isn't fully ported to glib 2.0 and " + "gob2 doesn't officially support it yet. It'd be safer " + "and a lot more fun to blow goats.\"\n"); + */ + + out_printf (out, + "GType\n" + "%s_get_type (void)\n" /* 1 */ + "{\n" + "\tstatic GType type = 0;\n\n" + "\tif (type == 0) {\n" + "\t\tstatic const GTypeInfo info = {\n" + "\t\t\tsizeof (%sClass),\n" /* 2 */ + "\t\t\t(GBaseInitFunc) NULL,\n" + "\t\t\t(GBaseFinalizeFunc) NULL,\n" + "\t\t\t(GClassInitFunc) %s_class_init,\n" /* 3 */ + "\t\t\tNULL, /* class_finalize */\n" + "\t\t\tNULL, /* class_data */\n" + "\t\t\tsizeof (%s),\n" /* 4 */ + "\t\t\t0, /* n_preallocs */\n" + "\t\t\t(GInstanceInitFunc) %s_init,\n" /* 5 */ + "\t\t\tNULL\n" + "\t\t};\n\n", + funcbase /* 1 */, + typebase /* 2 */, + funcbase /* 3 */, + typebase /* 4 */, + funcbase /* 5 */); + + add_interface_infos (); + + out_printf (out, + "\t\ttype = bonobo_type_unique (\n" + "\t\t\tBONOBO_OBJECT_TYPE,\n" + "\t\t\tPOA_%s__init, NULL,\n" /* 1 */ + "\t\t\tG_STRUCT_OFFSET (%sClass, _epv),\n" /* 2 */ + "\t\t\t&info, \"%s\");\n", /* 3 */ + ((Class*)class)->bonobo_object_class /* 1 */, + typebase /* 2 */, + typebase /* 3 */); + + add_interfaces (); - out_printf(out, - "\n#error \"BonoboX isn't ported to glib 2.0 and " - "gob2 doesn't support it yet\""); - - out_printf(out, - "GtkType\n" - "%s_get_type (void)\n" - "{\n" - "\tstatic GtkType type = 0;\n\n" - "\tif (type == 0) {\n" - "\t\tstatic const GtkTypeInfo info = {\n" - "\t\t\t\"%s\",\n" - "\t\t\tsizeof (%s),\n" - "\t\t\tsizeof (%sClass),\n" - "\t\t\t(GtkClassInitFunc) %s_class_init,\n" - "\t\t\t(GtkObjectInitFunc) %s_init,\n" - "\t\t\t/* reserved_1 */ NULL,\n" - "\t\t\t/* reserved_2 */ NULL,\n" - "\t\t\t(GtkClassInitFunc) NULL\n" - "\t\t};\n\n" - "\t\ttype = bonobo_x_type_unique\n" - "\t\t\t(%s_get_type (),\n" - "\t\t\tPOA_%s__init, NULL,\n" - "\t\t\tGTK_STRUCT_OFFSET (%sClass, _epv),\n" - "\t\t\t&info);\n", - funcbase, typebase, typebase, typebase, - funcbase, funcbase, pfuncbase, - ((Class*)class)->bonobo_x_class, - typebase); /*if(chunk_size) { out_printf(out, "#if %s > 0\n" @@ -1693,6 +1901,10 @@ static void make_arguments(Class *c) { GList *li; + if (get_properties > 0) + out_printf(out, "\tg_object_class->get_property = ___object_get_property;\n"); + if (set_properties > 0) + out_printf(out, "\tg_object_class->set_property = ___object_set_property;\n"); out_printf (out, " {\n" "\tGParamSpec *param_spec;\n\n"); @@ -1704,11 +1916,6 @@ make_arguments(Class *c) make_argument ((Argument *)n); } out_printf(out, " }\n"); - - if (get_properties > 0) - out_printf(out, "\tg_object_class->get_property = ___object_get_property;\n"); - if (set_properties > 0) - out_printf(out, "\tg_object_class->set_property = ___object_set_property;\n"); } static void @@ -1891,7 +2098,7 @@ add_finalize (Class *c) } static void -make_bonobo_x_epv (Class *c, const char *classname) +make_bonobo_object_epv (Class *c, const char *classname) { GList *li; gboolean added_line = FALSE; @@ -1903,7 +2110,7 @@ make_bonobo_x_epv (Class *c, const char *classname) m->method == OVERRIDE_METHOD) continue; - if (m->bonobo_x_func) { + if (m->bonobo_object_func) { if(m->line_no > 0) { out_addline_infile(out, m->line_no); added_line = TRUE; @@ -1912,7 +2119,7 @@ make_bonobo_x_epv (Class *c, const char *classname) out_addline_outfile(out); added_line = FALSE; } - out_printf (out, "\t%s->_epv.%s = %s;\n", + out_printf (out, "\t%s->_epv.%s = self_%s;\n", classname, m->id, m->id); } } @@ -2032,8 +2239,8 @@ add_inits(Class *c) if(get_properties > 0 || set_properties > 0) make_arguments(c); - if (c->bonobo_x_class != NULL) { - make_bonobo_x_epv (c, ((FuncArg *)m->args->data)->name); + if (c->bonobo_object_class != NULL) { + make_bonobo_object_epv (c, ((FuncArg *)m->args->data)->name); } } else continue; @@ -2116,7 +2323,7 @@ add_argument (Argument *a, gboolean is_set) out_printf (out, "\t\t}\n"); if ( ! is_set) { if (strcmp (a->gtktype, "OBJECT") == 0) - out_printf (out, "\t\tg_value_set_%s (VAL, G_OBJECT (ARG))\n", + out_printf (out, "\t\tg_value_set_%s (VAL, G_OBJECT (ARG));\n", the_type_lower); else out_printf (out, "\t\t" @@ -2932,11 +3139,11 @@ print_class_block(Class *c) put_vs_method((Method *)n); } /* If BonoboX type class put down the epv */ - if (c->bonobo_x_class != NULL) { + if (c->bonobo_object_class != NULL) { out_printf (outh, "\t/* Bonobo object epv */\n" "\tPOA_%s__epv _epv;\n", - c->bonobo_x_class); + c->bonobo_object_class); } /* put class scope variables */ for (li = c->nodes; li != NULL; li = li->next) { @@ -2992,10 +3199,17 @@ print_class_block(Class *c) put_signal_macros (c, TRUE); out_printf(outh, "#else /* __GNUC__ && !__STRICT_ANSI__ */\n"); put_signal_macros (c, FALSE); - out_printf(outh, "#endif /* __GNUC__ && !__STRICT_ANSI__ */\n\n"); + out_printf(outh, "#endif /* __GNUC__ && !__STRICT_ANSI__ */\n"); } else { put_signal_macros (c, FALSE); + out_printf(outh, "\n"); } + + out_printf (out, "\n/*\n" + " * Signal connection wrapper macro shortcuts\n" + " */\n"); + put_local_signal_macros (c); + out_printf(outh, "\n"); } /* argument wrapping macros */ @@ -3022,14 +3236,7 @@ print_class_block(Class *c) } } - add_enums(c); - - if ( ! overrode_get_type) { - if (c->bonobo_x_class != NULL) - add_bonobo_x_get_type (); - else - add_get_type (); - } + add_enums (c); if(any_method_to_alias(c)) { if( ! no_gnu) { @@ -3041,6 +3248,15 @@ print_class_block(Class *c) make_method_nongnu_aliases(c); } + add_interface_inits (c); + + if ( ! overrode_get_type) { + if (c->bonobo_object_class != NULL) + add_bonobo_object_get_type (); + else + add_get_type (); + } + out_printf (out, "/* a macro for creating a new object of our type */\n"); out_printf (out, "#define GET_NEW ((%s *)g_object_new(%s_get_type(), NULL))\n\n", @@ -3226,24 +3442,231 @@ print_header_top(void) GList *li; /* mandatory includes */ - out_printf(outh, "#include \n"); - out_printf(outh, "#include \n"); - out_printf(outh, "#include \n"); - out_printf(outh, "#include \n"); - out_printf(outh, "#include \n"); - out_printf(outh, "#include \n\n"); + out_printf (outh, "#include \n"); + out_printf (outh, "#include \n"); /* print the HT_CCODE blocks */ for (li = nodes; li != NULL; li = li->next) { Node *node = li->data; - if(node->type == CCODE_NODE) { + if (node->type == CCODE_NODE) { CCode *cc = (CCode *)node; - if(cc->cctype == HT_CCODE) - print_ccode_block((CCode *)node); + if (cc->cctype == HT_CCODE) + print_ccode_block ((CCode *)node); } } } +static void +print_enum (EnumDef *enode) +{ + GList *li; + char *funcprefix; + char *type; + char *str; + + funcprefix = replace_sep (enode->etype, '_'); + g_strdown (funcprefix); + out_printf (out, "static const GEnumValue _%s_values[] = {\n", + funcprefix); + type = remove_sep (enode->etype); + + out_printf (outh, "\ntypedef enum {\n"); + + for (li = enode->values; li != NULL; li = li->next) { + EnumValue *value = li->data; + char *p; + char *sname = g_strdown (g_strdup (value->name)); + + while ((p = strchr (sname, '_')) != NULL) + *p = '-'; + + out_printf (outh, "\t%s_%s", enode->prefix, value->name); + if (value->value != NULL) + out_printf (outh, " = %s", value->value); + if (li->next != NULL) + out_printf (outh, ",\n"); + else + out_printf (outh, "\n"); + + out_printf (out, "\t{ %s_%s, \"%s_%s\", \"%s\" },\n", + enode->prefix, value->name, + enode->prefix, value->name, + sname); + + g_free (sname); + } + + out_printf (out, "\t{ 0, NULL, NULL }\n};\n\n"); + + out_printf (outh, "} %s;\n", type); + + str = make_pre_macro (enode->etype, "TYPE"); + out_printf (outh, "#define %s ", str); + g_free (str); + + out_printf (outh, "%s_get_type()\n", funcprefix); + out_printf (outh, "GType %s_get_type (void);\n\n", funcprefix); + + out_printf (out, + "GType\n%s_get_type (void)\n" + "{\n" + "\tstatic GType type = 0;\n" + "\tif (type == 0)\n" + "\t\ttype = g_enum_register_static (\"%s\", _%s_values);\n" + "\treturn type;\n" + "}\n\n", + funcprefix, type, funcprefix); + + g_free (funcprefix); + g_free (type); +} + +static void +print_flags (Flags *fnode) +{ + GList *li; + char *funcprefix; + char *type; + char *str; + int i; + + funcprefix = replace_sep (fnode->ftype, '_'); + g_strdown (funcprefix); + out_printf (out, "static const GFlagsValue _%s_values[] = {\n", + funcprefix); + type = remove_sep (fnode->ftype); + + out_printf (outh, "\ntypedef enum {\n"); + + for (i = 0, li = fnode->values; li != NULL; i++, li = li->next) { + const char *name = li->data; + char *p; + char *sname = g_strdown (g_strdup (name)); + + while ((p = strchr (sname, '_')) != NULL) + *p = '-'; + + out_printf (outh, "\t%s_%s = 1<<%d", + fnode->prefix, name, i); + if (li->next != NULL) + out_printf (outh, ",\n"); + else + out_printf (outh, "\n"); + + out_printf (out, "\t{ %s_%s, \"%s_%s\", \"%s\" },\n", + fnode->prefix, name, + fnode->prefix, name, + sname); + + g_free (sname); + } + + out_printf (out, "\t{ 0, NULL, NULL }\n};\n\n"); + + out_printf (outh, "} %s;\n", type); + + str = make_pre_macro (fnode->ftype, "TYPE"); + out_printf (outh, "#define %s ", str); + g_free (str); + + out_printf (outh, "%s_get_type()\n", funcprefix); + out_printf (outh, "GType %s_get_type (void);\n\n", funcprefix); + + out_printf (out, + "GType\n%s_get_type (void)\n" + "{\n" + "\tstatic GType type = 0;\n" + "\tif (type == 0)\n" + "\t\ttype = g_flags_register_static (\"%s\", _%s_values);\n" + "\treturn type;\n" + "}\n\n", + funcprefix, type, funcprefix); + + g_free (funcprefix); + g_free (type); +} + +static void +print_error (Error *enode) +{ + GList *li; + char *funcprefix; + char *type; + char *str; + + funcprefix = replace_sep (enode->etype, '_'); + g_strdown (funcprefix); + out_printf (out, "static const GEnumValue _%s_values[] = {\n", + funcprefix); + type = remove_sep (enode->etype); + + out_printf (outh, "\ntypedef enum {\n"); + + for (li = enode->values; li != NULL; li = li->next) { + const char *name = li->data; + char *p; + char *sname = g_strdown (g_strdup (name)); + + while ((p = strchr (sname, '_')) != NULL) + *p = '-'; + + out_printf (outh, "\t%s_%s", enode->prefix, name); + if (li->next != NULL) + out_printf (outh, ",\n"); + else + out_printf (outh, "\n"); + + out_printf (out, "\t{ %s_%s, \"%s_%s\", \"%s\" },\n", + enode->prefix, name, + enode->prefix, name, + sname); + + g_free (sname); + } + + out_printf (out, "\t{ 0, NULL, NULL }\n};\n\n"); + + out_printf (outh, "} %s;\n", type); + + str = make_pre_macro (enode->etype, "TYPE"); + out_printf (outh, "#define %s ", str); + g_free (str); + + out_printf (outh, "%s_get_type ()\n", funcprefix); + out_printf (outh, "GType %s_get_type (void);\n\n", funcprefix); + + out_printf (out, + "GType\n%s_get_type (void)\n" + "{\n" + "\tstatic GType type = 0;\n" + "\tif (type == 0)\n" + "\t\ttype = g_enum_register_static (\"%s\", _%s_values);\n" + "\treturn type;\n" + "}\n\n", + funcprefix, type, funcprefix); + + out_printf (outh, "#define %s %s_quark ()\n", enode->prefix, funcprefix); + out_printf (outh, "GQuark %s_quark (void);\n\n", funcprefix); + + str = replace_sep (enode->etype, '-'); + g_strdown (str); + + out_printf (out, + "GQuark\n%s_quark (void)\n" + "{\n" + "\tstatic GQuark q = 0;\n" + "\tif (q == 0)\n" + "\t\tq = g_quark_from_static_string (\"%s\");\n" + "\treturn q;\n" + "}\n\n", + funcprefix, str); + + g_free (str); + + g_free (funcprefix); + g_free (type); +} + static void generate_outfiles(void) { @@ -3261,17 +3684,24 @@ generate_outfiles(void) print_includes(); - for(li=nodes;li;li=g_list_next(li)) { + for (li = nodes; li != NULL; li = li->next) { Node *node = li->data; - if(node->type == CCODE_NODE) { + if (node->type == CCODE_NODE) { CCode *cc = (CCode *)node; - if(cc->cctype != HT_CCODE && - cc->cctype != AT_CCODE) - print_ccode_block((CCode *)node); - } else if(node->type == CLASS_NODE) { - print_class_block((Class *)node); - } else + if (cc->cctype != HT_CCODE && + cc->cctype != AT_CCODE) + print_ccode_block ((CCode *)node); + } else if (node->type == CLASS_NODE) { + print_class_block ((Class *)node); + } else if (node->type == ENUMDEF_NODE) { + print_enum ((EnumDef *)node); + } else if (node->type == FLAGS_NODE) { + print_flags ((Flags *)node); + } else if (node->type == ERROR_NODE) { + print_error ((Error *)node); + } else { g_assert_not_reached(); + } } print_header_postfixes(); @@ -3306,6 +3736,12 @@ print_help(void) "\t--always-private-struct Always create a private pointer " "in\n" "\t the object structure\n" + "\t--m4 Preprocess source with m4. " + "Following args will\n" + "\t be passed to m4\n" + "\t--m4-dir Print directory that will be " + "searched for m4\n" + "\t files\n" "\t--no-write,-n Don't write output files, just " "check syntax\n" "\t--no-lines Don't print '#line' to output\n" @@ -3320,11 +3756,43 @@ parse_options(int argc, char *argv[]) int i; int got_file = FALSE; int no_opts = FALSE; + int m4_opts = FALSE; /* if we are just passing on args to m4 */ filename = NULL; for(i = 1 ; i < argc; i++) { - if(no_opts || + if(m4_opts) { + char *new_commandline; + g_assert(m4_commandline!=NULL); + + /* check whether this one looks like the filename */ + if((!strcmp(argv[i],"-") || argv[i][0] != '-') + && !got_file) { + const gchar *m4_flags=use_m4_clean?"":M4_FLAGS; + filename = argv[i]; + got_file = TRUE; + + /* insert flags before the filename */ + new_commandline=g_strconcat(m4_commandline, + " ", + m4_flags, + " ", + argv[i], + NULL); + } + + /* just an ordinary option */ + else + new_commandline=g_strconcat(m4_commandline, + " ", + argv[i], + NULL); + + /* free old commandline */ + g_free(m4_commandline); + m4_commandline=new_commandline; + + } else if(no_opts || argv[i][0] != '-') { /*must be a file*/ if(got_file) { @@ -3368,6 +3836,19 @@ parse_options(int argc, char *argv[]) /* no op */; } else if(strcmp(argv[i], "--always-private-struct")==0) { always_private_struct = TRUE; + } else if(strcmp(argv[i], "--m4-dir")==0) { + printf("%s\n",M4_INCLUDE_DIR); + exit(0); + } else if(strcmp(argv[i], "--m4")==0) { + use_m4 = TRUE; + use_m4_clean=FALSE; + m4_opts = TRUE; + m4_commandline=g_strdup(M4_COMMANDLINE); + } else if(strcmp(argv[i], "--m4-clean")==0) { + use_m4 = TRUE; + use_m4_clean=TRUE; + m4_opts = TRUE; + m4_commandline=g_strdup(M4_COMMANDLINE); } else if(strcmp(argv[i], "--")==0) { /*further arguments are files*/ no_opts = TRUE; @@ -3401,6 +3882,19 @@ parse_options(int argc, char *argv[]) } } } + +#if 0 + /* if we are using m4, and got no filename, append m4 flags now */ + if(!got_file && use_m4 && !use_m4_clean) { + char *new_commandline; + new_commandline=g_strconcat(m4_commandline, + " ", + M4_FLAGS, + NULL); + g_free(m4_commandline); + m4_commandline=new_commandline; + } +#endif } /* this is a somewhat ugly hack, but it appears to work */ @@ -3439,14 +3933,23 @@ main(int argc, char *argv[]) { parse_options(argc, argv); - if(filename) { + if(use_m4) { + yyin = popen(m4_commandline, "r"); + if(!yyin) { + fprintf(stderr, "Error: can't open pipe from '%s'\n", + m4_commandline); + exit(1); + } + } else if(filename) { yyin = fopen(filename, "r"); if(!yyin) { fprintf(stderr, "Error: can't open file '%s'\n", filename); exit(1); } - } else + } + + if(filename==NULL) filename = "stdin"; /* This is where parsing is done */ @@ -3454,6 +3957,11 @@ main(int argc, char *argv[]) if(yyparse() != 0) g_error("Parsing errors, quitting"); + /* close input file */ + if(use_m4) pclose(yyin); + else fclose(yyin); + yyin=stdin; + if( ! class) error_print(GOB_ERROR, 0, " no class defined"); diff --git a/src/parse.c b/src/parse.c index 8a806d8..b9f0a27 100644 --- a/src/parse.c +++ b/src/parse.c @@ -46,13 +46,14 @@ #define MAXIMUM 296 #define MINIMUM 297 #define DEFAULT_VALUE 298 -#define FLAGS 299 -#define TYPE 300 -#define FLAGS_TYPE 301 -#define ENUM_TYPE 302 -#define PARAM_TYPE 303 -#define BOXED_TYPE 304 -#define OBJECT_TYPE 305 +#define ERROR 299 +#define FLAGS 300 +#define TYPE 301 +#define FLAGS_TYPE 302 +#define ENUM_TYPE 303 +#define PARAM_TYPE 304 +#define BOXED_TYPE 305 +#define OBJECT_TYPE 306 #line 22 "parse.y" @@ -67,15 +68,21 @@ #include "main.h" #include "util.h" +/* FIXME: add gettext support */ #define _(x) (x) GList *nodes = NULL; static GList *class_nodes = NULL; Node *class = NULL; +GList *enums = NULL; +static GList *enum_vals = NULL; +static GList *flag_vals = NULL; +static GList *error_vals = NULL; static char *chunk_size = NULL; -static char *bonobo_x_class = NULL; +static char *bonobo_object_class = NULL; +static GList *interfaces = NULL; static GList *typestack = NULL; static GList *funcargs = NULL; static GList *checks = NULL; @@ -498,8 +505,8 @@ property_link_and_export (Node *node) } if (strcmp (prop->gtktype, "STRING") == 0) { - set = g_strdup_printf("g_free (%s->%s); " - "%s->%s = g_value_dup_string (VAL);", + set = g_strdup_printf("{ char *old = %s->%s; " + "%s->%s = g_value_dup_string (VAL); g_free (old); }", root, prop->name, root, prop->name); get = g_strdup_printf("g_value_set_string (VAL, %s->%s);", @@ -602,7 +609,7 @@ ensure_property (void) } -#line 570 "parse.y" +#line 576 "parse.y" typedef union { char *id; GString *cbuf; @@ -624,26 +631,26 @@ typedef union { -#define YYFINAL 340 +#define YYFINAL 393 #define YYFLAG -32768 -#define YYNTBASE 65 +#define YYNTBASE 66 -#define YYTRANSLATE(x) ((unsigned)(x) <= 305 ? yytranslate[x] : 110) +#define YYTRANSLATE(x) ((unsigned)(x) <= 306 ? yytranslate[x] : 118) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 63, 2, 2, 2, 2, 2, 2, 54, - 55, 60, 2, 58, 64, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 56, 62, - 57, 61, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 64, 2, 2, 2, 2, 2, 2, 55, + 56, 61, 2, 59, 65, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 57, 63, + 58, 62, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 52, 59, 53, 2, 2, 2, 2, 2, + 2, 2, 53, 60, 54, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -661,112 +668,126 @@ static const char yytranslate[] = { 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51 + 47, 48, 49, 50, 51, 52 }; #if YYDEBUG != 0 static const short yyprhs[] = { 0, 0, 4, 7, 10, 12, 14, 16, 18, 20, 22, - 24, 27, 29, 34, 38, 44, 45, 51, 57, 60, - 62, 64, 67, 69, 71, 73, 75, 77, 79, 81, - 83, 86, 90, 93, 97, 100, 103, 105, 107, 108, - 114, 121, 134, 144, 151, 155, 156, 168, 177, 183, - 187, 188, 192, 194, 196, 201, 203, 205, 209, 213, - 217, 221, 225, 229, 233, 237, 241, 245, 249, 253, - 255, 261, 263, 267, 268, 272, 274, 277, 279, 281, - 283, 286, 289, 292, 296, 300, 303, 306, 309, 311, - 314, 316, 319, 321, 323, 325, 327, 329, 331, 333, - 335, 337, 339, 341, 343, 345, 348, 351, 355, 358, - 360, 364, 368, 371, 373, 378, 382, 384, 387, 389, - 400, 412, 422, 432, 441, 453, 462, 468, 471, 476, - 477, 479, 482, 484, 486, 489, 492, 496, 501, 506, - 508, 512, 514, 518, 520, 523, 527, 534, 542, 545, - 547, 549, 552, 555, 559, 563, 567, 571, 573, 576, - 578 + 24, 27, 30, 33, 36, 38, 40, 42, 44, 49, + 53, 59, 60, 66, 72, 78, 81, 83, 85, 88, + 92, 94, 96, 98, 100, 102, 104, 106, 108, 111, + 115, 118, 122, 125, 128, 130, 132, 133, 139, 146, + 159, 169, 176, 180, 181, 193, 202, 208, 212, 213, + 217, 219, 221, 226, 228, 230, 234, 238, 242, 246, + 250, 254, 258, 262, 266, 270, 274, 278, 280, 286, + 288, 292, 293, 297, 299, 302, 304, 306, 308, 311, + 314, 317, 321, 325, 328, 331, 334, 336, 339, 341, + 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, + 364, 366, 368, 370, 373, 376, 380, 383, 385, 389, + 393, 396, 398, 403, 407, 409, 412, 414, 425, 437, + 447, 457, 466, 478, 487, 493, 496, 501, 502, 504, + 507, 509, 511, 514, 517, 521, 526, 531, 533, 537, + 539, 543, 545, 548, 552, 559, 567, 570, 572, 574, + 577, 580, 584, 588, 592, 596, 604, 613, 617, 619, + 623, 625, 633, 642, 646, 648, 656, 665, 669, 671, + 673, 676, 678 }; -static const short yyrhs[] = { 67, - 68, 67, 0, 68, 67, 0, 67, 68, 0, 68, +static const short yyrhs[] = { 68, + 69, 68, 0, 69, 68, 0, 68, 69, 0, 69, 0, 24, 0, 27, 0, 25, 0, 26, 0, 28, - 0, 29, 0, 67, 66, 0, 66, 0, 69, 52, - 71, 53, 0, 69, 52, 53, 0, 3, 21, 4, - 21, 70, 0, 0, 54, 19, 19, 55, 70, 0, - 54, 19, 20, 55, 70, 0, 71, 72, 0, 72, - 0, 100, 0, 19, 100, 0, 77, 0, 78, 0, - 80, 0, 56, 0, 31, 0, 32, 0, 33, 0, - 34, 0, 19, 19, 0, 19, 52, 24, 0, 57, - 109, 0, 57, 52, 24, 0, 74, 75, 0, 75, - 74, 0, 75, 0, 74, 0, 0, 73, 89, 19, - 76, 56, 0, 73, 89, 19, 22, 76, 56, 0, - 36, 87, 86, 19, 79, 19, 52, 24, 19, 52, - 24, 56, 0, 36, 87, 86, 19, 79, 19, 52, - 24, 56, 0, 36, 87, 86, 19, 79, 19, 0, - 54, 19, 55, 0, 0, 35, 19, 19, 81, 19, - 52, 24, 19, 52, 24, 56, 0, 35, 19, 19, - 81, 19, 52, 24, 56, 0, 35, 19, 19, 81, - 56, 0, 54, 82, 55, 0, 0, 82, 58, 85, - 0, 85, 0, 30, 0, 19, 54, 30, 55, 0, - 109, 0, 83, 0, 40, 57, 83, 0, 41, 57, - 83, 0, 42, 57, 109, 0, 43, 57, 109, 0, - 44, 57, 84, 0, 45, 57, 88, 0, 46, 57, - 89, 0, 47, 57, 19, 0, 48, 57, 19, 0, - 49, 57, 19, 0, 50, 57, 19, 0, 51, 57, - 19, 0, 19, 0, 19, 54, 19, 89, 55, 0, - 19, 0, 54, 88, 55, 0, 0, 19, 59, 88, - 0, 19, 0, 90, 94, 0, 90, 0, 91, 0, - 19, 0, 5, 19, 0, 19, 5, 0, 93, 19, - 0, 5, 93, 19, 0, 93, 19, 5, 0, 92, - 91, 0, 21, 91, 0, 5, 91, 0, 21, 0, - 21, 5, 0, 92, 0, 92, 5, 0, 6, 0, - 18, 0, 14, 0, 15, 0, 13, 0, 16, 0, - 17, 0, 11, 0, 12, 0, 7, 0, 8, 0, - 9, 0, 60, 0, 60, 5, 0, 60, 94, 0, - 60, 5, 94, 0, 19, 97, 0, 97, 0, 73, - 19, 97, 0, 19, 73, 97, 0, 73, 97, 0, - 95, 0, 19, 54, 98, 55, 0, 98, 58, 19, - 0, 19, 0, 52, 24, 0, 56, 0, 38, 87, - 96, 89, 19, 54, 103, 55, 101, 99, 0, 73, - 38, 87, 95, 89, 19, 54, 103, 55, 101, 99, - 0, 37, 73, 89, 19, 54, 103, 55, 101, 99, - 0, 73, 37, 89, 19, 54, 103, 55, 101, 99, - 0, 37, 89, 19, 54, 103, 55, 101, 99, 0, - 39, 54, 21, 55, 89, 19, 54, 103, 55, 101, - 99, 0, 73, 89, 19, 54, 103, 55, 101, 99, - 0, 19, 54, 19, 55, 99, 0, 19, 102, 0, - 19, 102, 19, 102, 0, 0, 109, 0, 52, 24, - 0, 6, 0, 19, 0, 19, 5, 0, 5, 19, - 0, 19, 58, 104, 0, 19, 5, 58, 104, 0, - 5, 19, 58, 104, 0, 104, 0, 105, 58, 10, - 0, 105, 0, 105, 58, 106, 0, 106, 0, 89, - 19, 0, 89, 19, 22, 0, 89, 19, 54, 19, - 107, 55, 0, 89, 19, 22, 54, 19, 107, 55, - 0, 107, 108, 0, 108, 0, 19, 0, 61, 109, - 0, 62, 109, 0, 61, 57, 109, 0, 62, 57, - 109, 0, 57, 57, 109, 0, 63, 57, 109, 0, - 20, 0, 64, 20, 0, 23, 0, 19, 0 + 0, 29, 0, 68, 67, 0, 68, 110, 0, 68, + 113, 0, 68, 115, 0, 67, 0, 110, 0, 113, + 0, 115, 0, 70, 53, 72, 54, 0, 70, 53, + 54, 0, 3, 21, 4, 21, 71, 0, 0, 55, + 19, 19, 56, 71, 0, 55, 19, 21, 56, 71, + 0, 55, 19, 20, 56, 71, 0, 72, 73, 0, + 73, 0, 101, 0, 19, 101, 0, 19, 21, 101, + 0, 78, 0, 79, 0, 81, 0, 57, 0, 31, + 0, 32, 0, 33, 0, 34, 0, 19, 19, 0, + 19, 53, 24, 0, 58, 117, 0, 58, 53, 24, + 0, 75, 76, 0, 76, 75, 0, 76, 0, 75, + 0, 0, 74, 90, 19, 77, 57, 0, 74, 90, + 19, 22, 77, 57, 0, 36, 88, 87, 19, 80, + 19, 53, 24, 19, 53, 24, 57, 0, 36, 88, + 87, 19, 80, 19, 53, 24, 57, 0, 36, 88, + 87, 19, 80, 19, 0, 55, 19, 56, 0, 0, + 35, 19, 19, 82, 19, 53, 24, 19, 53, 24, + 57, 0, 35, 19, 19, 82, 19, 53, 24, 57, + 0, 35, 19, 19, 82, 57, 0, 55, 83, 56, + 0, 0, 83, 59, 86, 0, 86, 0, 30, 0, + 19, 55, 30, 56, 0, 117, 0, 84, 0, 40, + 58, 84, 0, 41, 58, 84, 0, 42, 58, 117, + 0, 43, 58, 117, 0, 44, 58, 85, 0, 46, + 58, 89, 0, 47, 58, 90, 0, 48, 58, 19, + 0, 49, 58, 19, 0, 50, 58, 19, 0, 51, + 58, 19, 0, 52, 58, 19, 0, 19, 0, 19, + 55, 19, 90, 56, 0, 19, 0, 55, 89, 56, + 0, 0, 19, 60, 89, 0, 19, 0, 91, 95, + 0, 91, 0, 92, 0, 19, 0, 5, 19, 0, + 19, 5, 0, 94, 19, 0, 5, 94, 19, 0, + 94, 19, 5, 0, 93, 92, 0, 21, 92, 0, + 5, 92, 0, 21, 0, 21, 5, 0, 93, 0, + 93, 5, 0, 6, 0, 18, 0, 14, 0, 15, + 0, 13, 0, 16, 0, 17, 0, 11, 0, 12, + 0, 7, 0, 8, 0, 9, 0, 61, 0, 61, + 5, 0, 61, 95, 0, 61, 5, 95, 0, 19, + 98, 0, 98, 0, 74, 19, 98, 0, 19, 74, + 98, 0, 74, 98, 0, 96, 0, 19, 55, 99, + 56, 0, 99, 59, 19, 0, 19, 0, 53, 24, + 0, 57, 0, 38, 88, 97, 90, 19, 55, 104, + 56, 102, 100, 0, 74, 38, 88, 96, 90, 19, + 55, 104, 56, 102, 100, 0, 37, 74, 90, 19, + 55, 104, 56, 102, 100, 0, 74, 37, 90, 19, + 55, 104, 56, 102, 100, 0, 37, 90, 19, 55, + 104, 56, 102, 100, 0, 39, 55, 21, 56, 90, + 19, 55, 104, 56, 102, 100, 0, 74, 90, 19, + 55, 104, 56, 102, 100, 0, 19, 55, 19, 56, + 100, 0, 19, 103, 0, 19, 103, 19, 103, 0, + 0, 117, 0, 53, 24, 0, 6, 0, 19, 0, + 19, 5, 0, 5, 19, 0, 19, 59, 105, 0, + 19, 5, 59, 105, 0, 5, 19, 59, 105, 0, + 105, 0, 106, 59, 10, 0, 106, 0, 106, 59, + 107, 0, 107, 0, 90, 19, 0, 90, 19, 22, + 0, 90, 19, 55, 19, 108, 56, 0, 90, 19, + 22, 55, 19, 108, 56, 0, 108, 109, 0, 109, + 0, 19, 0, 62, 117, 0, 63, 117, 0, 62, + 58, 117, 0, 63, 58, 117, 0, 58, 58, 117, + 0, 64, 58, 117, 0, 9, 19, 53, 111, 54, + 21, 57, 0, 9, 19, 53, 111, 59, 54, 21, + 57, 0, 111, 59, 112, 0, 112, 0, 19, 58, + 117, 0, 19, 0, 46, 19, 53, 114, 54, 21, + 57, 0, 46, 19, 53, 114, 59, 54, 21, 57, + 0, 114, 59, 19, 0, 19, 0, 45, 19, 53, + 116, 54, 21, 57, 0, 45, 19, 53, 116, 59, + 54, 21, 57, 0, 116, 59, 19, 0, 19, 0, + 20, 0, 65, 20, 0, 23, 0, 19, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 591, 592, 593, 594, 597, 606, 615, 624, 633, 642, - 653, 654, 657, 662, 669, 679, 680, 692, 706, 707, - 710, 711, 719, 720, 721, 722, 725, 726, 727, 728, - 731, 751, 775, 779, 787, 788, 789, 790, 791, 797, - 800, 805, 873, 927, 1015, 1023, 1028, 1076, 1112, 1128, - 1129, 1132, 1133, 1136, 1137, 1149, 1150, 1153, 1159, 1165, - 1171, 1177, 1183, 1189, 1196, 1202, 1208, 1214, 1220, 1226, - 1246, 1255, 1261, 1262, 1265, 1268, 1274, 1281, 1290, 1293, - 1296, 1300, 1304, 1308, 1313, 1321, 1325, 1330, 1334, 1337, - 1341, 1344, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, - 1357, 1360, 1361, 1362, 1365, 1366, 1367, 1371, 1378, 1390, - 1396, 1408, 1420, 1423, 1429, 1434, 1437, 1442, 1443, 1447, - 1463, 1479, 1495, 1511, 1522, 1528, 1538, 1561, 1572, 1591, - 1597, 1598, 1604, 1605, 1616, 1627, 1638, 1648, 1658, 1668, - 1671, 1672, 1675, 1676, 1679, 1682, 1685, 1693, 1703, 1704, - 1707, 1724, 1731, 1738, 1745, 1752, 1759, 1768, 1769, 1773, - 1774 + 597, 598, 599, 600, 603, 612, 621, 630, 639, 648, + 659, 660, 661, 662, 663, 664, 665, 666, 669, 674, + 681, 695, 696, 708, 717, 731, 732, 735, 736, 745, + 757, 758, 759, 760, 763, 764, 765, 766, 769, 789, + 813, 817, 825, 826, 827, 828, 829, 835, 838, 843, + 911, 965, 1053, 1061, 1066, 1114, 1150, 1166, 1167, 1170, + 1171, 1174, 1175, 1187, 1188, 1191, 1197, 1203, 1209, 1215, + 1221, 1227, 1234, 1240, 1246, 1252, 1258, 1264, 1284, 1293, + 1299, 1300, 1303, 1306, 1312, 1319, 1328, 1331, 1334, 1338, + 1342, 1346, 1351, 1359, 1363, 1368, 1372, 1375, 1379, 1382, + 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1398, + 1399, 1400, 1403, 1404, 1405, 1409, 1416, 1428, 1434, 1446, + 1458, 1461, 1467, 1472, 1475, 1480, 1481, 1485, 1501, 1517, + 1533, 1549, 1560, 1566, 1576, 1599, 1610, 1629, 1635, 1636, + 1642, 1643, 1654, 1665, 1676, 1686, 1696, 1706, 1709, 1710, + 1713, 1714, 1717, 1720, 1723, 1731, 1741, 1742, 1745, 1762, + 1769, 1776, 1783, 1790, 1797, 1806, 1815, 1826, 1827, 1830, + 1850, 1860, 1869, 1880, 1883, 1888, 1897, 1908, 1911, 1917, + 1918, 1922, 1923 }; #endif @@ -778,7 +799,7 @@ static const char * const yytname[] = { "$","error","$undefined.","CLASS", "LONG","SHORT","INT","FLOAT","DOUBLE","CHAR","TOKEN","NUMBER","TYPETOKEN","ARRAY_DIM", "SINGLE_CHAR","CCODE","HTCODE","PHCODE","HCODE","ACODE","ATCODE","STRING","PUBLIC", "PRIVATE","PROTECTED","CLASSWIDE","PROPERTY","ARGUMENT","VIRTUAL","SIGNAL","OVERRIDE", -"NICK","BLURB","MAXIMUM","MINIMUM","DEFAULT_VALUE","FLAGS","TYPE","FLAGS_TYPE", +"NICK","BLURB","MAXIMUM","MINIMUM","DEFAULT_VALUE","ERROR","FLAGS","TYPE","FLAGS_TYPE", "ENUM_TYPE","PARAM_TYPE","BOXED_TYPE","OBJECT_TYPE","'{'","'}'","'('","')'", "';'","'='","','","'|'","'*'","'>'","'<'","'!'","'-'","prog","ccode","ccodes", "class","classdec","classflags","classcode","thing","scope","destructor","initializer", @@ -786,248 +807,285 @@ static const char * const yytname[] = { "$","error","$undefined.","CLASS", "string","anyval","param_spec_value","argtype","flags","flaglist","type","specifier_list", "spec_list","specifier","strunionenum","pointer","simplesigtype","fullsigtype", "sigtype","tokenlist","codenocode","method","returnvals","retcode","funcargs", -"arglist","arglist1","arg","checklist","check","numtok", NULL +"arglist","arglist1","arg","checklist","check","enumcode","enumvals","enumval", +"flagcode","flagvals","errorcode","errorvals","numtok", NULL }; #endif static const short yyr1[] = { 0, - 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, - 67, 67, 68, 68, 69, 70, 70, 70, 71, 71, - 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, - 74, 74, 75, 75, 76, 76, 76, 76, 76, 77, - 77, 78, 78, 78, 79, 79, 80, 80, 80, 81, - 81, 82, 82, 83, 83, 84, 84, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, - 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, - 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 93, 93, 93, 94, 94, 94, 94, 95, 95, - 96, 96, 96, 96, 97, 98, 98, 99, 99, 100, - 100, 100, 100, 100, 100, 100, 100, 101, 101, 101, - 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, - 104, 104, 105, 105, 106, 106, 106, 106, 107, 107, - 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, - 109 + 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, + 68, 68, 68, 68, 68, 68, 68, 68, 69, 69, + 70, 71, 71, 71, 71, 72, 72, 73, 73, 73, + 73, 73, 73, 73, 74, 74, 74, 74, 75, 75, + 76, 76, 77, 77, 77, 77, 77, 78, 78, 79, + 79, 79, 80, 80, 81, 81, 81, 82, 82, 83, + 83, 84, 84, 85, 85, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, + 88, 88, 89, 89, 90, 90, 91, 91, 91, 91, + 91, 91, 91, 92, 92, 92, 92, 92, 92, 92, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, + 94, 94, 95, 95, 95, 95, 96, 96, 97, 97, + 97, 97, 98, 99, 99, 100, 100, 101, 101, 101, + 101, 101, 101, 101, 101, 102, 102, 102, 103, 103, + 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, + 106, 106, 107, 107, 107, 107, 108, 108, 109, 109, + 109, 109, 109, 109, 109, 110, 110, 111, 111, 112, + 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, + 117, 117, 117 }; static const short yyr2[] = { 0, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 4, 3, 5, 0, 5, 5, 2, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 3, 2, 3, 2, 2, 1, 1, 0, 5, - 6, 12, 9, 6, 3, 0, 11, 8, 5, 3, - 0, 3, 1, 1, 4, 1, 1, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, - 5, 1, 3, 0, 3, 1, 2, 1, 1, 1, - 2, 2, 2, 3, 3, 2, 2, 2, 1, 2, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 3, 2, 1, - 3, 3, 2, 1, 4, 3, 1, 2, 1, 10, - 11, 9, 9, 8, 11, 8, 5, 2, 4, 0, - 1, 2, 1, 1, 2, 2, 3, 4, 4, 1, - 3, 1, 3, 1, 2, 3, 6, 7, 2, 1, - 1, 2, 2, 3, 3, 3, 3, 1, 2, 1, - 1 + 2, 2, 2, 2, 1, 1, 1, 1, 4, 3, + 5, 0, 5, 5, 5, 2, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 2, 3, 2, 2, 1, 1, 0, 5, 6, 12, + 9, 6, 3, 0, 11, 8, 5, 3, 0, 3, + 1, 1, 4, 1, 1, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 1, 5, 1, + 3, 0, 3, 1, 2, 1, 1, 1, 2, 2, + 2, 3, 3, 2, 2, 2, 1, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 3, 2, 1, 3, 3, + 2, 1, 4, 3, 1, 2, 1, 10, 11, 9, + 9, 8, 11, 8, 5, 2, 4, 0, 1, 2, + 1, 1, 2, 2, 3, 4, 4, 1, 3, 1, + 3, 1, 2, 3, 6, 7, 2, 1, 1, 2, + 2, 3, 3, 3, 3, 7, 8, 3, 1, 3, + 1, 7, 8, 3, 1, 7, 8, 3, 1, 1, + 2, 1, 1 }; static const short yydefact[] = { 0, - 0, 5, 7, 8, 6, 9, 10, 12, 0, 4, - 0, 0, 11, 3, 2, 0, 0, 1, 0, 27, - 28, 29, 30, 0, 74, 0, 74, 0, 14, 26, - 0, 20, 0, 23, 24, 25, 21, 16, 0, 0, - 0, 22, 0, 0, 0, 0, 93, 102, 103, 104, - 100, 101, 97, 95, 96, 98, 99, 94, 80, 89, - 0, 0, 78, 79, 91, 0, 0, 0, 13, 19, - 0, 74, 0, 0, 15, 0, 0, 51, 76, 0, - 72, 0, 0, 81, 88, 0, 82, 90, 87, 0, - 0, 105, 77, 92, 86, 83, 0, 0, 114, 0, - 110, 0, 0, 0, 39, 0, 0, 0, 0, 0, - 0, 73, 0, 46, 84, 0, 0, 106, 107, 85, - 0, 0, 0, 109, 0, 113, 0, 0, 0, 0, - 0, 0, 39, 0, 0, 38, 37, 0, 0, 0, - 0, 119, 127, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 53, 0, 49, - 75, 0, 0, 0, 0, 0, 93, 80, 0, 0, - 140, 142, 144, 108, 117, 0, 112, 111, 0, 0, - 0, 0, 31, 0, 0, 0, 161, 158, 160, 0, - 0, 33, 35, 36, 40, 16, 16, 118, 0, 0, + 0, 0, 5, 7, 8, 6, 9, 10, 0, 0, + 15, 0, 4, 0, 16, 17, 18, 0, 0, 0, + 0, 11, 3, 12, 13, 14, 2, 0, 0, 0, + 0, 0, 1, 0, 35, 36, 37, 38, 0, 82, + 0, 82, 0, 20, 34, 0, 27, 0, 31, 32, + 33, 28, 22, 171, 0, 169, 179, 0, 175, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 101, + 110, 111, 112, 108, 109, 105, 103, 104, 106, 107, + 102, 88, 97, 0, 0, 86, 87, 99, 0, 0, + 0, 19, 26, 0, 82, 0, 0, 21, 0, 0, + 0, 0, 0, 0, 0, 30, 0, 0, 59, 84, + 0, 80, 0, 0, 89, 96, 0, 90, 98, 95, + 0, 0, 113, 85, 100, 94, 91, 0, 0, 122, + 0, 118, 0, 0, 0, 47, 0, 183, 180, 182, + 0, 170, 0, 0, 168, 0, 178, 0, 0, 174, + 0, 0, 0, 0, 0, 0, 81, 0, 54, 92, + 0, 0, 114, 115, 93, 0, 0, 0, 117, 0, + 121, 0, 0, 0, 0, 0, 0, 47, 0, 0, + 46, 45, 0, 0, 0, 0, 181, 166, 0, 176, + 0, 172, 0, 0, 127, 135, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 0, 0, 0, 0, 44, 0, 81, 82, 0, - 145, 130, 0, 115, 0, 0, 0, 0, 0, 32, - 41, 130, 34, 159, 17, 18, 0, 54, 58, 59, - 60, 61, 161, 57, 62, 56, 63, 64, 65, 66, - 67, 68, 69, 52, 0, 71, 45, 0, 130, 0, - 0, 137, 146, 0, 0, 0, 141, 143, 116, 0, - 0, 130, 0, 0, 0, 0, 48, 0, 0, 139, - 138, 0, 0, 0, 128, 131, 124, 130, 0, 0, - 0, 126, 0, 0, 0, 43, 122, 0, 151, 0, - 0, 0, 0, 0, 150, 132, 0, 0, 130, 123, - 130, 55, 0, 0, 0, 0, 0, 152, 0, 153, - 0, 147, 149, 129, 120, 0, 0, 47, 0, 148, - 156, 154, 155, 157, 125, 121, 42, 0, 0, 0 + 61, 0, 57, 83, 0, 0, 0, 0, 0, 101, + 88, 0, 0, 148, 150, 152, 116, 125, 0, 120, + 119, 0, 0, 0, 0, 39, 0, 0, 0, 0, + 41, 43, 44, 48, 22, 22, 22, 167, 177, 173, + 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 58, 0, 0, 0, 0, 52, 0, + 89, 90, 0, 153, 138, 0, 123, 0, 0, 0, + 0, 0, 40, 49, 138, 42, 23, 25, 24, 0, + 62, 66, 67, 68, 69, 183, 65, 70, 64, 71, + 72, 73, 74, 75, 76, 77, 60, 0, 79, 53, + 0, 138, 0, 0, 145, 154, 0, 0, 0, 149, + 151, 124, 0, 0, 138, 0, 0, 0, 0, 56, + 0, 0, 147, 146, 0, 0, 0, 136, 139, 132, + 138, 0, 0, 0, 134, 0, 0, 0, 51, 130, + 0, 159, 0, 0, 0, 0, 0, 158, 140, 0, + 0, 138, 131, 138, 63, 0, 0, 0, 0, 0, + 160, 0, 161, 0, 155, 157, 137, 128, 0, 0, + 55, 0, 156, 164, 162, 163, 165, 133, 129, 50, + 0, 0, 0 }; -static const short yydefgoto[] = { 338, - 8, 9, 10, 11, 75, 31, 32, 33, 136, 137, - 138, 34, 35, 164, 36, 110, 157, 239, 245, 158, - 82, 45, 80, 169, 63, 64, 65, 66, 93, 99, - 100, 101, 176, 143, 37, 266, 285, 170, 171, 172, - 173, 304, 305, 286 +static const short yydefgoto[] = { 391, + 11, 12, 13, 14, 98, 46, 47, 48, 181, 182, + 183, 49, 50, 217, 51, 155, 210, 292, 298, 211, + 113, 68, 111, 222, 86, 87, 88, 89, 124, 130, + 131, 132, 229, 196, 52, 319, 338, 223, 224, 225, + 226, 357, 358, 15, 55, 56, 16, 60, 17, 58, + 339 }; -static const short yypact[] = { 144, - -7,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 144, 407, - -21, 40,-32768, 407, 407, 121, 71, 407, 166,-32768, --32768,-32768,-32768, 78, 45, 266, 45, 54,-32768,-32768, - 156,-32768, 216,-32768,-32768,-32768,-32768, 92, 94, 97, - 216,-32768, 157, 159, 160, 313,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 158, 381, - 330, 164, 136,-32768, 395, 183, 257, 185,-32768,-32768, - 330, 45, 200, 207,-32768, 184, 221, 187, 188, 189, - 192, 223, 409,-32768,-32768, 229,-32768, 409,-32768, 230, - 197, 1,-32768, 409,-32768, 247, 182, 236,-32768, 330, --32768, 201, 238, 239, 68, 10, 61, 232, 219, 22, - 159,-32768, 273, 240,-32768, 241, 347, 136,-32768,-32768, - 242, 274, 297,-32768, -4,-32768, 304, 330, 279, -4, - 330, 60, -9, 347, 0, 283, 331, 301, 312, 319, - 360,-32768,-32768,-32768, 332, 333, 334, 346, 348, 361, - 362, 371, 372, 380, 382, 383, 106,-32768, 336,-32768, --32768, 330, 385, 398, 347, 364, 386, 7, 419, 387, --32768, 388,-32768,-32768,-32768, 107,-32768,-32768, 389, 425, - 347, 426,-32768, 423, 392, 394,-32768,-32768,-32768, 427, - 430,-32768,-32768,-32768,-32768, 92, 92,-32768, 13, 13, - 37, 37, 5, 159, 330, 433, 434, 435, 436, 437, --32768, 219, 438, 402, 403, 408, 404, 152, 153, 330, - 66, 442, 296,-32768, 444, 347, 410, 411, 413,-32768, --32768, 442,-32768,-32768,-32768,-32768, 414,-32768,-32768,-32768, --32768,-32768, 414,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 39,-32768,-32768, 441, 442, 330, - 330,-32768, 415, 451, 19, 61,-32768,-32768,-32768, 416, - 347, 442, 347, 61, 443, 420,-32768, 53, 61,-32768, --32768, 455, 88, 452, 456,-32768,-32768, 442, 422, 61, - 424,-32768, 428, 454, 429,-32768,-32768, 88,-32768, 431, - 57, 62, 432, 72,-32768,-32768, 19, 61, 442,-32768, - 442,-32768, 439, 458, 81, 37, 37,-32768, 37,-32768, - 37,-32768,-32768,-32768,-32768, 61, 61,-32768, 440,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 480, 484,-32768 +static const short yypact[] = { 168, + 18, 21,-32768,-32768,-32768,-32768,-32768,-32768, 41, 89, +-32768, 168, 213, 56,-32768,-32768,-32768, 138, 77, 109, + 110,-32768, 213,-32768,-32768,-32768, 213, 167, 123, 153, + 155, 189, 213, 230,-32768,-32768,-32768,-32768, 190, 156, + 309, 156, 161,-32768,-32768, 196,-32768, 275,-32768,-32768, +-32768,-32768, 162, 165, -17,-32768,-32768, -13,-32768, 91, + 164, 300, 201, 275,-32768, 206, 207, 217, 356,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 247, 424, 373, 235, 199,-32768, 438, 238, 443, + 244,-32768,-32768, 373, 156, 253, 255,-32768, 6, 245, + -1, 256, 26, 258, 73,-32768, 222, 276, 274, 242, + 254, 280, 292, 452,-32768,-32768, 317,-32768, 452,-32768, + 340, 311, 2,-32768, 452,-32768, 371, 157, 364,-32768, + 373,-32768, 337, 381, 391, 88, 224,-32768,-32768,-32768, + 397,-32768, 370, 410,-32768, 375,-32768, 412, 377,-32768, + 425, -34, 392, 257, -7, 207,-32768, 429, 405,-32768, + 406, 390, 199,-32768,-32768, 416, 453, 459,-32768, 14, +-32768, 460, 373, 426, 14, 373, 13, 9, 390, 59, + 422, 463, 427, 430, 431, 432,-32768,-32768, 428,-32768, + 433,-32768, 434, 465,-32768,-32768,-32768, 435, 436, 437, + 439, 440, 441, 442, 444, 445, 446, 447, 448, 122, +-32768, 454,-32768,-32768, 373, 464, 473, 390, 407, 455, + 5, 477, 456,-32768, 449,-32768,-32768,-32768, 124,-32768, +-32768, 458, 482, 390, 490,-32768, 486, 457, 461, 491, +-32768,-32768,-32768,-32768, 162, 162, 162,-32768,-32768,-32768, +-32768, 84, 84, 6, 6, 64, 207, 373, 497, 499, + 500, 501, 502,-32768, 257, 498, 467, 468, 472, 470, + 126, 128, 373, 63, 508, 339,-32768, 509, 390, 474, + 475, 478,-32768,-32768, 508,-32768,-32768,-32768,-32768, 479, +-32768,-32768,-32768,-32768,-32768, 479,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, -2,-32768,-32768, + 506, 508, 373, 373,-32768, 480, 513, 70, -34,-32768, +-32768,-32768, 481, 390, 508, 390, -34, 510, 483,-32768, + 16, -34,-32768,-32768, 519, 106, 515, 522,-32768,-32768, + 508, 487, -34, 488,-32768, 489, 518, 493,-32768,-32768, + 106,-32768, 492, 76, 82, 494, 57,-32768,-32768, 70, + -34, 508,-32768, 508,-32768, 496, 523, 103, 6, 6, +-32768, 6,-32768, 6,-32768,-32768,-32768,-32768, -34, -34, +-32768, 503,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 548, 549,-32768 }; static const short yypgoto[] = {-32768, - 87, 118, 476,-32768, -66,-32768, 459, -8, 349, 351, - 358,-32768,-32768,-32768,-32768,-32768,-32768, -85,-32768, 280, --32768, -18, -106, -25,-32768, -43,-32768, -42, -65, 390, --32768, 120,-32768, -253, 474, -225, 190, -132, -150,-32768, - 275, 202, -211, -135 + 99, 125, 539,-32768, 1,-32768, 511, -28, 372, 374, + 378,-32768,-32768,-32768,-32768,-32768,-32768, -46,-32768, 293, +-32768, -27, -151, -40,-32768, -67,-32768, -66, -112, 450, +-32768, -98,-32768, -305, -14, -276, 202, -175, -216,-32768, + 283, 210, -240, 104,-32768, 462, 127,-32768, 146,-32768, + -99 }; -#define YYLAST 500 - - -static const short yytable[] = { 192, - 62, 186, 85, 86, 161, 118, 274, 73, 67, 132, - 41, 219, 287, 12, 121, 77, 89, 61, 187, 188, - 292, 95, 189, 243, 188, 297, 119, 189, 139, 140, - 16, 237, 217, 279, 238, 90, 310, 187, 188, 85, - 159, 189, 238, 17, 85, 103, 290, 135, 228, 122, - 85, 190, 174, 104, 325, 187, 188, 276, 98, 189, - 92, -134, 308, 191, 220, 241, 242, 246, 191, 262, - 284, 295, 335, 336, 127, 187, 188, 160, 183, 189, - 187, 188, 191, 326, 189, 327, 132, 263, 123, 133, - 299, 38, 323, 270, 277, 13, 43, 247, 44, 299, - 191, 13, 180, 323, 13, 182, 299, 68, 296, 280, - 281, 184, 141, 317, 240, 76, 142, 244, 319, 264, - 191, 134, 85, 86, 135, 191, 322, 15, 300, 235, - 236, 18, 301, 302, 303, 330, 214, 300, 289, 19, - 291, 301, 302, 303, 300, 74, 1, 40, 301, 302, - 303, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 211, 224, 87, 212, 225, 318, 320, 2, 3, 4, - 5, 6, 7, 29, 19, 78, 30, 79, 81, 248, - 331, 332, 91, 333, 39, 334, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 92, 20, 21, 22, 23, - 121, 96, 26, 27, 28, 102, -136, -135, 69, 260, - 261, 30, 20, 21, 22, 23, 124, 126, 105, 40, - 46, 47, 48, 49, 50, 106, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 122, 60, 144, 107, 108, - 109, 114, 177, 112, 178, 113, 111, 115, 116, 124, - 117, 120, 71, 72, 125, 128, 129, 130, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 46, 47, 48, 49, 50, 97, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 134, 60, 20, 21, 22, - 23, 162, 175, 163, 165, 122, 20, 21, 22, 23, - 46, 47, 48, 49, 50, 267, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 121, 60, 83, 47, 48, - 49, 50, 179, 51, 52, 53, 54, 55, 56, 57, - 58, 84, 181, 60, 46, 47, 48, 49, 50, 135, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 132, - 60, 166, 167, 48, 49, 50, 195, 51, 52, 53, - 54, 55, 56, 57, 58, 168, 196, 60, 83, 47, - 48, 49, 50, 197, 51, 52, 53, 54, 55, 56, - 57, 58, 218, 198, 60, 88, 47, 213, 199, 200, - 201, 51, 52, 53, 54, 55, 56, 57, 58, 94, - 47, 60, 202, 215, 203, 51, 52, 53, 54, 55, - 56, 57, 58, 83, 47, 60, 216, 204, 205, 51, - 52, 53, 54, 55, 56, 57, 58, 206, 207, 60, - 2, 3, 4, 5, 6, 7, 208, 221, 209, 210, - -133, 222, 226, 227, 229, 223, 230, 231, 232, 234, - 233, 249, 250, 251, 252, 253, 256, 257, 259, 258, - 265, 255, 269, 271, 278, 272, 273, 275, 282, 283, - 288, 294, 293, 298, 307, 306, 309, 313, 311, 339, - 314, 329, 312, 340, 14, 194, 193, 316, 321, 70, - 185, 254, 42, 131, 328, 337, 324, 268, 0, 315 +#define YYLAST 585 + + +static const short yytable[] = { 142, + 85, 116, 117, 239, 214, 64, 163, 96, 327, 272, + 164, 212, 84, 340, 90, 120, 329, 54, 194, 65, + 126, 345, 195, 108, 138, 139, 350, 177, 140, 169, + 171, 236, 166, 64, 348, 332, 100, 363, 18, 19, + 102, 101, 270, 121, 147, 103, 116, 106, 343, 213, + 227, 116, 144, 134, 330, 378, 315, 116, 281, 20, + -142, 129, 123, 273, 361, 237, 180, 135, 167, 230, + 141, 231, 349, 388, 389, 352, 169, 138, 139, 148, + 241, 140, 296, 139, 316, 379, 140, 380, 138, 139, + 172, 150, 140, 291, 138, 139, 333, 334, 140, 168, + 138, 139, 290, 323, 140, 300, 177, 21, 28, 178, + 22, 240, 375, 291, 353, 24, 376, 317, 354, 355, + 356, 352, 337, 141, 352, 22, 151, 376, 141, 30, + 24, 22, 233, 370, 141, 235, 24, 27, 25, 372, + 141, 29, 179, 53, 104, 180, 141, 33, 342, 105, + 344, 116, 117, 25, 294, 295, 299, 26, 383, 25, + 353, 31, 32, 353, 354, 355, 356, 354, 355, 356, + 1, 54, 26, 57, 267, 166, 2, 264, 26, 277, + 265, -144, 278, -143, 313, 34, 314, 35, 36, 37, + 38, 3, 4, 5, 6, 7, 8, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 293, 59, 66, 297, + 67, 167, 9, 10, 34, 91, 97, 301, 63, 107, + 44, 2, 99, 45, 109, 110, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 112, 3, 4, 5, 6, + 7, 8, 184, 185, 186, 287, 288, 289, 61, 92, + 62, 118, 45, 122, 371, 373, 127, 9, 10, 123, + 35, 36, 37, 38, 133, 143, 41, 42, 43, 384, + 385, 136, 386, 137, 387, 197, 146, 152, 149, 69, + 70, 71, 72, 73, 63, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 153, 83, 198, 199, 200, 201, + 202, 156, 203, 204, 205, 206, 207, 208, 209, 157, + 159, 94, 95, 69, 70, 71, 72, 73, 61, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 154, 83, + 35, 36, 37, 38, 158, 160, 41, 42, 43, 35, + 36, 37, 38, 69, 70, 71, 72, 73, 320, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 161, 83, + 114, 70, 71, 72, 73, 162, 74, 75, 76, 77, + 78, 79, 80, 81, 115, 165, 83, 69, 70, 71, + 72, 73, 170, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 173, 83, 219, 220, 71, 72, 73, 174, + 74, 75, 76, 77, 78, 79, 80, 81, 221, 175, + 83, 114, 70, 71, 72, 73, 187, 74, 75, 76, + 77, 78, 79, 80, 81, 271, 188, 83, 119, 70, + 189, 190, 191, 192, 74, 75, 76, 77, 78, 79, + 80, 81, 125, 70, 83, 193, 179, 215, 74, 75, + 76, 77, 78, 79, 80, 81, 114, 70, 83, 216, + 218, 128, 74, 75, 76, 77, 78, 79, 80, 81, + 167, 228, 83, 35, 36, 37, 38, 166, 232, 180, + 234, 177, 268, 244, 248, 245, 246, 247, 251, 249, + 250, 269, 252, 253, 254, 274, 255, 256, 257, 258, + 280, 259, 260, 261, 262, 263, 266, 276, 282, 283, + -141, 275, 279, 284, 286, 302, 285, 303, 304, 305, + 306, 308, 309, 310, 311, 312, 318, 322, 324, 331, + 325, 336, 326, 328, 335, 347, 341, 351, 359, 346, + 360, 366, 362, 364, 365, 367, 382, 392, 393, 369, + 23, 374, 381, 243, 242, 238, 93, 307, 321, 390, + 368, 377, 145, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 176 }; -static const short yycheck[] = { 135, - 26, 134, 46, 46, 111, 5, 232, 33, 27, 19, - 19, 5, 266, 21, 19, 41, 60, 26, 19, 20, - 274, 65, 23, 19, 20, 279, 92, 23, 19, 20, - 52, 19, 165, 259, 30, 61, 290, 19, 20, 83, - 19, 23, 30, 4, 88, 71, 272, 57, 181, 54, - 94, 52, 118, 72, 308, 19, 20, 19, 67, 23, - 60, 55, 288, 64, 58, 201, 202, 203, 64, 220, - 52, 19, 326, 327, 100, 19, 20, 56, 19, 23, - 19, 20, 64, 309, 23, 311, 19, 22, 97, 22, - 19, 21, 304, 226, 56, 9, 19, 204, 54, 19, - 64, 15, 128, 315, 18, 131, 19, 54, 56, 260, - 261, 52, 52, 57, 200, 19, 56, 203, 57, 54, - 64, 54, 166, 166, 57, 64, 55, 10, 57, 196, - 197, 14, 61, 62, 63, 55, 162, 57, 271, 19, - 273, 61, 62, 63, 57, 54, 3, 54, 61, 62, - 63, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 55, 55, 5, 58, 58, 301, 302, 24, 25, 26, - 27, 28, 29, 53, 19, 19, 56, 19, 19, 205, - 316, 317, 19, 319, 19, 321, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 60, 31, 32, 33, 34, - 19, 19, 37, 38, 39, 21, 55, 55, 53, 58, - 58, 56, 31, 32, 33, 34, 97, 98, 19, 54, - 5, 6, 7, 8, 9, 19, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 54, 21, 19, 55, 19, - 54, 19, 123, 55, 125, 54, 59, 19, 19, 130, - 54, 5, 37, 38, 19, 55, 19, 19, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 5, 6, 7, 8, 9, 19, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 54, 21, 31, 32, 33, - 34, 19, 19, 54, 54, 54, 31, 32, 33, 34, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 19, 21, 5, 6, 7, +static const short yycheck[] = { 99, + 41, 69, 69, 179, 156, 34, 5, 48, 285, 5, + 123, 19, 41, 319, 42, 83, 19, 19, 53, 34, + 88, 327, 57, 64, 19, 20, 332, 19, 23, 128, + 129, 19, 19, 62, 19, 312, 54, 343, 21, 19, + 54, 59, 218, 84, 19, 59, 114, 62, 325, 57, + 163, 119, 54, 94, 57, 361, 273, 125, 234, 19, + 56, 90, 61, 59, 341, 53, 58, 95, 55, 168, + 65, 170, 57, 379, 380, 19, 175, 19, 20, 54, + 180, 23, 19, 20, 22, 362, 23, 364, 19, 20, + 131, 19, 23, 30, 19, 20, 313, 314, 23, 128, + 19, 20, 19, 279, 23, 257, 19, 19, 53, 22, + 12, 53, 56, 30, 58, 12, 357, 55, 62, 63, + 64, 19, 53, 65, 19, 27, 54, 368, 65, 53, + 27, 33, 173, 58, 65, 176, 33, 13, 12, 58, + 65, 4, 55, 21, 54, 58, 65, 23, 324, 59, + 326, 219, 219, 27, 254, 255, 256, 12, 56, 33, + 58, 53, 53, 58, 62, 63, 64, 62, 63, 64, + 3, 19, 27, 19, 215, 19, 9, 56, 33, 56, + 59, 56, 59, 56, 59, 19, 59, 31, 32, 33, + 34, 24, 25, 26, 27, 28, 29, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 253, 19, 19, 256, + 55, 55, 45, 46, 19, 55, 55, 258, 55, 19, + 54, 9, 58, 57, 19, 19, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 19, 24, 25, 26, 27, + 28, 29, 19, 20, 21, 245, 246, 247, 19, 54, + 21, 5, 57, 19, 354, 355, 19, 45, 46, 61, + 31, 32, 33, 34, 21, 21, 37, 38, 39, 369, + 370, 19, 372, 19, 374, 19, 21, 56, 21, 5, + 6, 7, 8, 9, 55, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 19, 21, 40, 41, 42, 43, + 44, 60, 46, 47, 48, 49, 50, 51, 52, 56, + 19, 37, 38, 5, 6, 7, 8, 9, 19, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 55, 21, + 31, 32, 33, 34, 55, 19, 37, 38, 39, 31, + 32, 33, 34, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 19, 21, + 5, 6, 7, 8, 9, 55, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 5, 21, 5, 6, 7, 8, 9, 19, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 54, 21, 5, 6, 7, 8, 9, 57, + 18, 19, 56, 21, 5, 6, 7, 8, 9, 19, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, - 21, 5, 6, 7, 8, 9, 56, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 55, 21, 5, 6, - 7, 8, 9, 55, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 24, 21, 5, 6, 52, 57, 57, - 57, 11, 12, 13, 14, 15, 16, 17, 18, 5, - 6, 21, 57, 19, 57, 11, 12, 13, 14, 15, - 16, 17, 18, 5, 6, 21, 19, 57, 57, 11, - 12, 13, 14, 15, 16, 17, 18, 57, 57, 21, - 24, 25, 26, 27, 28, 29, 57, 19, 57, 57, - 55, 55, 54, 19, 19, 58, 24, 56, 55, 20, - 24, 19, 19, 19, 19, 19, 55, 55, 55, 52, - 19, 24, 19, 54, 24, 55, 54, 54, 54, 19, - 55, 52, 30, 19, 19, 24, 55, 24, 55, 0, - 52, 24, 55, 0, 9, 137, 136, 57, 57, 31, - 133, 212, 19, 104, 56, 56, 307, 223, -1, 298 + 21, 5, 6, 7, 8, 9, 20, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 57, 21, 5, 6, + 21, 57, 21, 57, 11, 12, 13, 14, 15, 16, + 17, 18, 5, 6, 21, 21, 55, 19, 11, 12, + 13, 14, 15, 16, 17, 18, 5, 6, 21, 55, + 55, 19, 11, 12, 13, 14, 15, 16, 17, 18, + 55, 19, 21, 31, 32, 33, 34, 19, 19, 58, + 55, 19, 19, 57, 57, 56, 56, 56, 24, 57, + 57, 19, 58, 58, 58, 19, 58, 58, 58, 58, + 19, 58, 58, 58, 58, 58, 53, 59, 19, 24, + 56, 56, 55, 57, 24, 19, 56, 19, 19, 19, + 19, 24, 56, 56, 53, 56, 19, 19, 55, 24, + 56, 19, 55, 55, 55, 53, 56, 19, 24, 30, + 19, 24, 56, 56, 56, 53, 24, 0, 0, 58, + 12, 58, 57, 182, 181, 178, 46, 265, 276, 57, + 351, 360, 101, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 135 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" @@ -1573,23 +1631,23 @@ yyreduce: switch (yyn) { case 1: -#line 591 "parse.y" +#line 597 "parse.y" { ; ; break;} case 2: -#line 592 "parse.y" +#line 598 "parse.y" { ; ; break;} case 3: -#line 593 "parse.y" +#line 599 "parse.y" { ; ; break;} case 4: -#line 594 "parse.y" +#line 600 "parse.y" { ; ; break;} case 5: -#line 597 "parse.y" +#line 603 "parse.y" { Node *node = node_new (CCODE_NODE, "cctype", C_CCODE, @@ -1601,7 +1659,7 @@ case 5: ; break;} case 6: -#line 606 "parse.y" +#line 612 "parse.y" { Node *node = node_new (CCODE_NODE, "cctype", H_CCODE, @@ -1613,7 +1671,7 @@ case 6: ; break;} case 7: -#line 615 "parse.y" +#line 621 "parse.y" { Node *node = node_new (CCODE_NODE, "cctype", HT_CCODE, @@ -1625,7 +1683,7 @@ case 7: ; break;} case 8: -#line 624 "parse.y" +#line 630 "parse.y" { Node *node = node_new (CCODE_NODE, "cctype", PH_CCODE, @@ -1637,7 +1695,7 @@ case 8: ; break;} case 9: -#line 633 "parse.y" +#line 639 "parse.y" { Node *node = node_new (CCODE_NODE, "cctype", A_CCODE, @@ -1649,7 +1707,7 @@ case 9: ; break;} case 10: -#line 642 "parse.y" +#line 648 "parse.y" { Node *node = node_new (CCODE_NODE, "cctype", AT_CCODE, @@ -1661,57 +1719,97 @@ case 10: ; break;} case 11: -#line 653 "parse.y" +#line 659 "parse.y" { ; ; break;} case 12: -#line 654 "parse.y" +#line 660 "parse.y" { ; ; break;} case 13: -#line 657 "parse.y" +#line 661 "parse.y" +{ ; ; + break;} +case 14: +#line 662 "parse.y" +{ ; ; + break;} +case 15: +#line 663 "parse.y" +{ ; ; + break;} +case 16: +#line 664 "parse.y" +{ ; ; + break;} +case 17: +#line 665 "parse.y" +{ ; ; + break;} +case 18: +#line 666 "parse.y" +{ ; ; + break;} +case 19: +#line 669 "parse.y" { ((Class *)class)->nodes = class_nodes; class_nodes = NULL; nodes = g_list_append(nodes,class); ; break;} -case 14: -#line 662 "parse.y" +case 20: +#line 674 "parse.y" { ((Class *)class)->nodes = NULL; class_nodes = NULL; nodes = g_list_append(nodes,class); ; break;} -case 15: -#line 669 "parse.y" +case 21: +#line 681 "parse.y" { class = node_new (CLASS_NODE, "otype:steal", yyvsp[-3].id, "ptype:steal", yyvsp[-1].id, - "bonobo_x_class:steal", bonobo_x_class, + "bonobo_object_class:steal", bonobo_object_class, + "interfaces:steal", interfaces, "chunk_size:steal", chunk_size, NULL); + bonobo_object_class = NULL; + chunk_size = NULL; + interfaces = NULL; ; break;} -case 17: -#line 680 "parse.y" +case 23: +#line 696 "parse.y" { if(strcmp(yyvsp[-3].id,"chunks") == 0) { g_free (chunk_size); chunk_size = g_strdup(yyvsp[-2].id); - } else if(strcmp(yyvsp[-3].id,"BonoboX") == 0) { - g_free (bonobo_x_class); - bonobo_x_class = g_strdup(yyvsp[-2].id); + } else if(strcmp(yyvsp[-3].id,"BonoboObject") == 0) { + g_free (bonobo_object_class); + bonobo_object_class = g_strdup(yyvsp[-2].id); } else { yyerror(_("parse error")); YYERROR; } ; break;} -case 18: -#line 692 "parse.y" +case 24: +#line 708 "parse.y" +{ + if (strcmp (yyvsp[-3].id, "interface") == 0) { + interfaces = g_list_append (interfaces, + g_strdup (yyvsp[-2].id)); + } else { + yyerror(_("parse error")); + YYERROR; + } + ; + break;} +case 25: +#line 717 "parse.y" { if(strcmp(yyvsp[-3].id,"chunks") == 0) { g_free (chunk_size); @@ -1725,63 +1823,79 @@ case 18: } ; break;} -case 19: -#line 706 "parse.y" +case 26: +#line 731 "parse.y" { ; ; break;} -case 20: -#line 707 "parse.y" +case 27: +#line 732 "parse.y" { ; ; break;} -case 21: -#line 710 "parse.y" +case 28: +#line 735 "parse.y" { ; ; break;} -case 22: -#line 711 "parse.y" +case 29: +#line 736 "parse.y" { - if (strcmp (yyvsp[-1].id, "BonoboX") != 0) { - g_free(yyvsp[-1].id); - yyerror(_("parse error")); + if (strcmp (yyvsp[-1].id, "BonoboObject") != 0) { + g_free (yyvsp[-1].id); + yyerror (_("parse error")); YYERROR; } - last_added_method->bonobo_x_func = TRUE; + g_free (yyvsp[-1].id); + last_added_method->bonobo_object_func = TRUE; ; break;} -case 23: -#line 719 "parse.y" +case 30: +#line 745 "parse.y" +{ + if (strcmp (yyvsp[-2].id, "interface") != 0) { + g_free (yyvsp[-2].id); + g_free (yyvsp[-1].id); + yyerror (_("parse error")); + YYERROR; + } + g_free (yyvsp[-2].id); + node_set ((Node *)last_added_method, + "interface:steal", yyvsp[-1].id, + NULL); + ; + break;} +case 31: +#line 757 "parse.y" { ; ; break;} -case 24: -#line 720 "parse.y" +case 32: +#line 758 "parse.y" { ; ; break;} -case 25: -#line 721 "parse.y" +case 33: +#line 759 "parse.y" { ; ; break;} -case 26: -#line 722 "parse.y" +case 34: +#line 760 "parse.y" { ; ; break;} -case 27: -#line 725 "parse.y" +case 35: +#line 763 "parse.y" { the_scope = PUBLIC_SCOPE; ; break;} -case 28: -#line 726 "parse.y" +case 36: +#line 764 "parse.y" { the_scope = PRIVATE_SCOPE; ; break;} -case 29: -#line 727 "parse.y" +case 37: +#line 765 "parse.y" { the_scope = PROTECTED_SCOPE; ; break;} -case 30: -#line 728 "parse.y" +case 38: +#line 766 "parse.y" { the_scope = CLASS_SCOPE; ; break;} -case 31: -#line 731 "parse.y" +case 39: +#line 769 "parse.y" { if (strcmp (yyvsp[-1].id, "destroywith") == 0) { g_free (yyvsp[-1].id); @@ -1803,8 +1917,8 @@ case 31: } ; break;} -case 32: -#line 751 "parse.y" +case 40: +#line 789 "parse.y" { if (strcmp (yyvsp[-2].id, "destroy") == 0) { g_free(yyvsp[-2].id); @@ -1828,58 +1942,58 @@ case 32: } ; break;} -case 33: -#line 775 "parse.y" +case 41: +#line 813 "parse.y" { initializer = yyvsp[0].id; initializer_line = ccode_line; ; break;} -case 34: -#line 779 "parse.y" +case 42: +#line 817 "parse.y" { initializer = (yyvsp[0].cbuf)->str; initializer_line = ccode_line; g_string_free(yyvsp[0].cbuf, FALSE); ; break;} -case 35: -#line 787 "parse.y" +case 43: +#line 825 "parse.y" { ; ; break;} -case 36: -#line 788 "parse.y" +case 44: +#line 826 "parse.y" { ; ; break;} -case 37: -#line 789 "parse.y" +case 45: +#line 827 "parse.y" { destructor = NULL; ; break;} -case 38: -#line 790 "parse.y" +case 46: +#line 828 "parse.y" { initializer = NULL; ; break;} -case 39: -#line 791 "parse.y" +case 47: +#line 829 "parse.y" { destructor = NULL; initializer = NULL; ; break;} -case 40: -#line 797 "parse.y" +case 48: +#line 835 "parse.y" { push_variable(yyvsp[-2].id, the_scope,yyvsp[-4].line, NULL); ; break;} -case 41: -#line 800 "parse.y" +case 49: +#line 838 "parse.y" { push_variable(yyvsp[-3].id, the_scope, yyvsp[-5].line, yyvsp[-2].id); ; break;} -case 42: -#line 805 "parse.y" +case 50: +#line 843 "parse.y" { Node *node = NULL; if(strcmp(yyvsp[-6].id,"get")==0 && @@ -1949,8 +2063,8 @@ case 42: ; break;} -case 43: -#line 873 "parse.y" +case 51: +#line 911 "parse.y" { Node *node = NULL; if(strcmp(yyvsp[-3].id, "get") == 0) { @@ -2006,8 +2120,8 @@ case 43: } ; break;} -case 44: -#line 927 "parse.y" +case 52: +#line 965 "parse.y" { Node *node; char *get, *set = NULL; @@ -2095,8 +2209,8 @@ case 44: class_nodes = g_list_append (class_nodes, node); ; break;} -case 45: -#line 1015 "parse.y" +case 53: +#line 1053 "parse.y" { if (strcmp (yyvsp[-1].id, "export")!=0) { g_free (yyvsp[-1].id); @@ -2106,14 +2220,14 @@ case 45: yyval.id = yyvsp[-1].id; ; break;} -case 46: -#line 1023 "parse.y" +case 54: +#line 1061 "parse.y" { yyval.id = NULL; ; break;} -case 47: -#line 1028 "parse.y" +case 55: +#line 1066 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2163,8 +2277,8 @@ case 47: } ; break;} -case 48: -#line 1076 "parse.y" +case 56: +#line 1114 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2202,8 +2316,8 @@ case 48: } ; break;} -case 49: -#line 1112 "parse.y" +case 57: +#line 1150 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2219,28 +2333,28 @@ case 49: } ; break;} -case 50: -#line 1128 "parse.y" +case 58: +#line 1166 "parse.y" { ; ; break;} -case 51: -#line 1129 "parse.y" +case 59: +#line 1167 "parse.y" { ; ; break;} -case 52: -#line 1132 "parse.y" +case 60: +#line 1170 "parse.y" { ; ; break;} -case 53: -#line 1133 "parse.y" +case 61: +#line 1171 "parse.y" { ; ; break;} -case 54: -#line 1136 "parse.y" +case 62: +#line 1174 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 55: -#line 1137 "parse.y" +case 63: +#line 1175 "parse.y" { if (strcmp (yyvsp[-3].id, "_") != 0) { g_free (yyvsp[-3].id); @@ -2252,16 +2366,16 @@ case 55: g_free (yyvsp[-1].id); ; break;} -case 56: -#line 1149 "parse.y" +case 64: +#line 1187 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 57: -#line 1150 "parse.y" +case 65: +#line 1188 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 58: -#line 1153 "parse.y" +case 66: +#line 1191 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2269,8 +2383,8 @@ case 58: NULL); ; break;} -case 59: -#line 1159 "parse.y" +case 67: +#line 1197 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2278,8 +2392,8 @@ case 59: NULL); ; break;} -case 60: -#line 1165 "parse.y" +case 68: +#line 1203 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2287,8 +2401,8 @@ case 60: NULL); ; break;} -case 61: -#line 1171 "parse.y" +case 69: +#line 1209 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2296,8 +2410,8 @@ case 61: NULL); ; break;} -case 62: -#line 1177 "parse.y" +case 70: +#line 1215 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2305,8 +2419,8 @@ case 62: NULL); ; break;} -case 63: -#line 1183 "parse.y" +case 71: +#line 1221 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2314,8 +2428,8 @@ case 63: NULL); ; break;} -case 64: -#line 1189 "parse.y" +case 72: +#line 1227 "parse.y" { Type *type = pop_type (); ensure_property (); @@ -2324,8 +2438,8 @@ case 64: NULL); ; break;} -case 65: -#line 1196 "parse.y" +case 73: +#line 1234 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2333,8 +2447,8 @@ case 65: NULL); ; break;} -case 66: -#line 1202 "parse.y" +case 74: +#line 1240 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2342,8 +2456,8 @@ case 66: NULL); ; break;} -case 67: -#line 1208 "parse.y" +case 75: +#line 1246 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2351,8 +2465,8 @@ case 67: NULL); ; break;} -case 68: -#line 1214 "parse.y" +case 76: +#line 1252 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2360,8 +2474,8 @@ case 68: NULL); ; break;} -case 69: -#line 1220 "parse.y" +case 77: +#line 1258 "parse.y" { ensure_property (); node_set ((Node *)property, @@ -2369,8 +2483,8 @@ case 69: NULL); ; break;} -case 70: -#line 1226 "parse.y" +case 78: +#line 1264 "parse.y" { ensure_property (); if (strcmp (yyvsp[0].id, "link") == 0) { @@ -2390,8 +2504,8 @@ case 70: } ; break;} -case 71: -#line 1246 "parse.y" +case 79: +#line 1284 "parse.y" { if(strcmp(yyvsp[-2].id,"type")!=0) { g_free(yyvsp[-4].id); @@ -2402,35 +2516,35 @@ case 71: yyval.id = debool (yyvsp[-4].id); ; break;} -case 72: -#line 1255 "parse.y" +case 80: +#line 1293 "parse.y" { yyval.id = debool (yyvsp[0].id); typestack = g_list_prepend(typestack,NULL); ; break;} -case 73: -#line 1261 "parse.y" +case 81: +#line 1299 "parse.y" { yyval.list = yyvsp[-1].list; ; break;} -case 74: -#line 1262 "parse.y" +case 82: +#line 1300 "parse.y" { yyval.list = NULL; ; break;} -case 75: -#line 1265 "parse.y" +case 83: +#line 1303 "parse.y" { yyval.list = g_list_append(yyvsp[0].list,yyvsp[-2].id); ; break;} -case 76: -#line 1268 "parse.y" +case 84: +#line 1306 "parse.y" { yyval.list = g_list_append(NULL,yyvsp[0].id); ; break;} -case 77: -#line 1274 "parse.y" +case 85: +#line 1312 "parse.y" { Node *node = node_new (TYPE_NODE, "name:steal", yyvsp[-1].id, @@ -2439,8 +2553,8 @@ case 77: typestack = g_list_prepend(typestack,node); ; break;} -case 78: -#line 1281 "parse.y" +case 86: +#line 1319 "parse.y" { Node *node = node_new (TYPE_NODE, "name:steal", yyvsp[0].id, @@ -2448,174 +2562,174 @@ case 78: typestack = g_list_prepend(typestack,node); ; break;} -case 79: -#line 1290 "parse.y" +case 87: +#line 1328 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 80: -#line 1293 "parse.y" +case 88: +#line 1331 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 81: -#line 1296 "parse.y" +case 89: +#line 1334 "parse.y" { yyval.id = g_strconcat("const ", yyvsp[0].id, NULL); g_free(yyvsp[0].id); ; break;} -case 82: -#line 1300 "parse.y" +case 90: +#line 1338 "parse.y" { yyval.id = g_strconcat(yyvsp[-1].id, " const", NULL); g_free(yyvsp[-1].id); ; break;} -case 83: -#line 1304 "parse.y" +case 91: +#line 1342 "parse.y" { yyval.id = g_strconcat(yyvsp[-1].id, " ", yyvsp[0].id, NULL); g_free(yyvsp[0].id); ; break;} -case 84: -#line 1308 "parse.y" +case 92: +#line 1346 "parse.y" { yyval.id = g_strconcat("const ", yyvsp[-1].id, " ", yyvsp[0].id, NULL); g_free(yyvsp[0].id); ; break;} -case 85: -#line 1313 "parse.y" +case 93: +#line 1351 "parse.y" { yyval.id = g_strconcat(yyvsp[-2].id, " ", yyvsp[-1].id, " const", NULL); g_free(yyvsp[-1].id); ; break;} -case 86: -#line 1321 "parse.y" +case 94: +#line 1359 "parse.y" { yyval.id = g_strconcat(yyvsp[-1].id, " ", yyvsp[0].id, NULL); g_free(yyvsp[0].id); ; break;} -case 87: -#line 1325 "parse.y" +case 95: +#line 1363 "parse.y" { yyval.id = g_strconcat(yyvsp[-1].id, " ", yyvsp[0].id, NULL); g_free(yyvsp[-1].id); g_free(yyvsp[0].id); ; break;} -case 88: -#line 1330 "parse.y" +case 96: +#line 1368 "parse.y" { yyval.id = g_strconcat("const ", yyvsp[0].id, NULL); g_free(yyvsp[0].id); ; break;} -case 89: -#line 1334 "parse.y" +case 97: +#line 1372 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 90: -#line 1337 "parse.y" +case 98: +#line 1375 "parse.y" { yyval.id = g_strconcat(yyvsp[-1].id, " const", NULL); g_free(yyvsp[-1].id); ; break;} -case 91: -#line 1341 "parse.y" +case 99: +#line 1379 "parse.y" { yyval.id = g_strdup(yyvsp[0].id); ; break;} -case 92: -#line 1344 "parse.y" +case 100: +#line 1382 "parse.y" { yyval.id = g_strconcat(yyvsp[-1].id, " const", NULL); ; break;} -case 93: -#line 1349 "parse.y" +case 101: +#line 1387 "parse.y" { yyval.id = "void"; ; break;} -case 94: -#line 1350 "parse.y" +case 102: +#line 1388 "parse.y" { yyval.id = "char"; ; break;} -case 95: -#line 1351 "parse.y" +case 103: +#line 1389 "parse.y" { yyval.id = "short"; ; break;} -case 96: -#line 1352 "parse.y" +case 104: +#line 1390 "parse.y" { yyval.id = "int"; ; break;} -case 97: -#line 1353 "parse.y" +case 105: +#line 1391 "parse.y" { yyval.id = "long"; ; break;} -case 98: -#line 1354 "parse.y" +case 106: +#line 1392 "parse.y" { yyval.id = "float"; ; break;} -case 99: -#line 1355 "parse.y" +case 107: +#line 1393 "parse.y" { yyval.id = "double"; ; break;} -case 100: -#line 1356 "parse.y" +case 108: +#line 1394 "parse.y" { yyval.id = "signed"; ; break;} -case 101: -#line 1357 "parse.y" +case 109: +#line 1395 "parse.y" { yyval.id = "unsigned"; ; break;} -case 102: -#line 1360 "parse.y" +case 110: +#line 1398 "parse.y" { yyval.id = "struct"; ; break;} -case 103: -#line 1361 "parse.y" +case 111: +#line 1399 "parse.y" { yyval.id = "union"; ; break;} -case 104: -#line 1362 "parse.y" +case 112: +#line 1400 "parse.y" { yyval.id = "enum"; ; break;} -case 105: -#line 1365 "parse.y" +case 113: +#line 1403 "parse.y" { yyval.id = g_strdup("*"); ; break;} -case 106: -#line 1366 "parse.y" +case 114: +#line 1404 "parse.y" { yyval.id = g_strdup("* const"); ; break;} -case 107: -#line 1367 "parse.y" +case 115: +#line 1405 "parse.y" { yyval.id = g_strconcat("*", yyvsp[0].id, NULL); g_free(yyvsp[0].id); ; break;} -case 108: -#line 1371 "parse.y" +case 116: +#line 1409 "parse.y" { yyval.id = g_strconcat("* const", yyvsp[0].id, NULL); g_free(yyvsp[0].id); ; break;} -case 109: -#line 1378 "parse.y" +case 117: +#line 1416 "parse.y" { if(strcmp(yyvsp[-1].id, "first")==0) yyval.sigtype = SIGNAL_FIRST_METHOD; @@ -2629,14 +2743,14 @@ case 109: g_free(yyvsp[-1].id); ; break;} -case 110: -#line 1390 "parse.y" +case 118: +#line 1428 "parse.y" { yyval.sigtype = SIGNAL_LAST_METHOD; ; break;} -case 111: -#line 1396 "parse.y" +case 119: +#line 1434 "parse.y" { if(strcmp(yyvsp[-1].id,"first")==0) yyval.sigtype = SIGNAL_FIRST_METHOD; @@ -2650,8 +2764,8 @@ case 111: g_free(yyvsp[-1].id); ; break;} -case 112: -#line 1408 "parse.y" +case 120: +#line 1446 "parse.y" { if(strcmp(yyvsp[-2].id,"first")==0) yyval.sigtype = SIGNAL_FIRST_METHOD; @@ -2665,47 +2779,47 @@ case 112: g_free(yyvsp[-2].id); ; break;} -case 113: -#line 1420 "parse.y" +case 121: +#line 1458 "parse.y" { yyval.sigtype = SIGNAL_LAST_METHOD; ; break;} -case 114: -#line 1423 "parse.y" +case 122: +#line 1461 "parse.y" { /* the_scope was default thus public */ the_scope = PUBLIC_SCOPE; ; break;} -case 115: -#line 1429 "parse.y" +case 123: +#line 1467 "parse.y" { gtktypes = g_list_prepend(gtktypes, debool (yyvsp[-3].id)); ; break;} -case 116: -#line 1434 "parse.y" +case 124: +#line 1472 "parse.y" { gtktypes = g_list_append(gtktypes, debool (yyvsp[0].id)); ; break;} -case 117: -#line 1437 "parse.y" +case 125: +#line 1475 "parse.y" { gtktypes = g_list_append(gtktypes, debool (yyvsp[0].id)); ; break;} -case 118: -#line 1442 "parse.y" +case 126: +#line 1480 "parse.y" { yyval.cbuf = yyvsp[0].cbuf; ; break;} -case 119: -#line 1443 "parse.y" +case 127: +#line 1481 "parse.y" { yyval.cbuf = NULL; ; break;} -case 120: -#line 1447 "parse.y" +case 128: +#line 1485 "parse.y" { if(!has_self) { yyerror(_("signal without 'self' as " @@ -2723,8 +2837,8 @@ case 120: ccode_line, vararg, yyvsp[-8].list); ; break;} -case 121: -#line 1463 "parse.y" +case 129: +#line 1501 "parse.y" { if(!has_self) { yyerror(_("signal without 'self' as " @@ -2742,8 +2856,8 @@ case 121: ccode_line, vararg, yyvsp[-8].list); ; break;} -case 122: -#line 1479 "parse.y" +case 130: +#line 1517 "parse.y" { if(!has_self) { yyerror(_("virtual method without 'self' as " @@ -2761,8 +2875,8 @@ case 122: ccode_line, vararg, NULL); ; break;} -case 123: -#line 1495 "parse.y" +case 131: +#line 1533 "parse.y" { if(!has_self) { yyerror(_("virtual method without 'self' as " @@ -2780,8 +2894,8 @@ case 123: ccode_line, vararg, NULL); ; break;} -case 124: -#line 1511 "parse.y" +case 132: +#line 1549 "parse.y" { if(!has_self) { yyerror(_("virtual method without 'self' as " @@ -2794,8 +2908,8 @@ case 124: ccode_line, vararg, NULL); ; break;} -case 125: -#line 1522 "parse.y" +case 133: +#line 1560 "parse.y" { push_function(NO_SCOPE, OVERRIDE_METHOD, yyvsp[-8].id, yyvsp[-5].id, yyvsp[0].cbuf, @@ -2803,8 +2917,8 @@ case 125: vararg, NULL); ; break;} -case 126: -#line 1528 "parse.y" +case 134: +#line 1566 "parse.y" { if(the_scope == CLASS_SCOPE) { yyerror(_("a method cannot be of class scope")); @@ -2816,8 +2930,8 @@ case 126: vararg, NULL); ; break;} -case 127: -#line 1538 "parse.y" +case 135: +#line 1576 "parse.y" { if(strcmp(yyvsp[-4].id, "init")==0) { push_init_arg(yyvsp[-2].id,FALSE); @@ -2840,8 +2954,8 @@ case 127: } ; break;} -case 128: -#line 1561 "parse.y" +case 136: +#line 1599 "parse.y" { g_free(onerror); onerror = NULL; g_free(defreturn); defreturn = NULL; @@ -2854,8 +2968,8 @@ case 128: g_free(yyvsp[-1].id); ; break;} -case 129: -#line 1572 "parse.y" +case 137: +#line 1610 "parse.y" { g_free(onerror); onerror = NULL; g_free(defreturn); defreturn = NULL; @@ -2876,30 +2990,30 @@ case 129: g_free(yyvsp[-1].id); ; break;} -case 130: -#line 1591 "parse.y" +case 138: +#line 1629 "parse.y" { g_free(onerror); onerror = NULL; g_free(defreturn); defreturn = NULL; ; break;} -case 131: -#line 1597 "parse.y" +case 139: +#line 1635 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 132: -#line 1598 "parse.y" +case 140: +#line 1636 "parse.y" { yyval.id = (yyvsp[1].cbuf)->str; g_string_free(yyvsp[1].cbuf, FALSE); ; break;} -case 133: -#line 1604 "parse.y" +case 141: +#line 1642 "parse.y" { vararg = FALSE; has_self = FALSE; ; break;} -case 134: -#line 1605 "parse.y" +case 142: +#line 1643 "parse.y" { vararg = FALSE; has_self = TRUE; @@ -2912,8 +3026,8 @@ case 134: } ; break;} -case 135: -#line 1616 "parse.y" +case 143: +#line 1654 "parse.y" { vararg = FALSE; has_self = TRUE; @@ -2926,8 +3040,8 @@ case 135: } ; break;} -case 136: -#line 1627 "parse.y" +case 144: +#line 1665 "parse.y" { vararg = FALSE; has_self = TRUE; @@ -2940,8 +3054,8 @@ case 136: } ; break;} -case 137: -#line 1638 "parse.y" +case 145: +#line 1676 "parse.y" { has_self = TRUE; if(strcmp(yyvsp[-2].id,"self")==0) @@ -2953,8 +3067,8 @@ case 137: } ; break;} -case 138: -#line 1648 "parse.y" +case 146: +#line 1686 "parse.y" { has_self = TRUE; if(strcmp(yyvsp[-3].id,"self")==0) @@ -2966,8 +3080,8 @@ case 138: } ; break;} -case 139: -#line 1658 "parse.y" +case 147: +#line 1696 "parse.y" { has_self = TRUE; if(strcmp(yyvsp[-2].id,"self")==0) @@ -2979,40 +3093,40 @@ case 139: } ; break;} -case 140: -#line 1668 "parse.y" +case 148: +#line 1706 "parse.y" { has_self = FALSE; ; break;} -case 141: -#line 1671 "parse.y" +case 149: +#line 1709 "parse.y" { vararg = TRUE; ; break;} -case 142: -#line 1672 "parse.y" +case 150: +#line 1710 "parse.y" { vararg = FALSE; ; break;} -case 143: -#line 1675 "parse.y" +case 151: +#line 1713 "parse.y" { ; ; break;} -case 144: -#line 1676 "parse.y" +case 152: +#line 1714 "parse.y" { ; ; break;} -case 145: -#line 1679 "parse.y" +case 153: +#line 1717 "parse.y" { push_funcarg(yyvsp[0].id,NULL); ; break;} -case 146: -#line 1682 "parse.y" +case 154: +#line 1720 "parse.y" { push_funcarg(yyvsp[-1].id,yyvsp[0].id); ; break;} -case 147: -#line 1685 "parse.y" +case 155: +#line 1723 "parse.y" { if(strcmp(yyvsp[-2].id,"check")!=0) { yyerror(_("parse error")); @@ -3022,8 +3136,8 @@ case 147: push_funcarg(yyvsp[-4].id,NULL); ; break;} -case 148: -#line 1693 "parse.y" +case 156: +#line 1731 "parse.y" { if(strcmp(yyvsp[-2].id,"check")!=0) { yyerror(_("parse error")); @@ -3033,16 +3147,16 @@ case 148: push_funcarg(yyvsp[-5].id,yyvsp[-4].id); ; break;} -case 149: -#line 1703 "parse.y" +case 157: +#line 1741 "parse.y" { ; ; break;} -case 150: -#line 1704 "parse.y" +case 158: +#line 1742 "parse.y" { ; ; break;} -case 151: -#line 1707 "parse.y" +case 159: +#line 1745 "parse.y" { if(strcmp(yyvsp[0].id,"type")==0) { Node *node = node_new (CHECK_NODE, @@ -3061,8 +3175,8 @@ case 151: g_free(yyvsp[0].id); ; break;} -case 152: -#line 1724 "parse.y" +case 160: +#line 1762 "parse.y" { Node *node = node_new (CHECK_NODE, "chtype", GT_CHECK, @@ -3071,8 +3185,8 @@ case 152: checks = g_list_append(checks,node); ; break;} -case 153: -#line 1731 "parse.y" +case 161: +#line 1769 "parse.y" { Node *node = node_new (CHECK_NODE, "chtype", LT_CHECK, @@ -3081,8 +3195,8 @@ case 153: checks = g_list_append(checks,node); ; break;} -case 154: -#line 1738 "parse.y" +case 162: +#line 1776 "parse.y" { Node *node = node_new (CHECK_NODE, "chtype", GE_CHECK, @@ -3091,8 +3205,8 @@ case 154: checks = g_list_append(checks,node); ; break;} -case 155: -#line 1745 "parse.y" +case 163: +#line 1783 "parse.y" { Node *node = node_new (CHECK_NODE, "chtype", LE_CHECK, @@ -3101,8 +3215,8 @@ case 155: checks = g_list_append(checks,node); ; break;} -case 156: -#line 1752 "parse.y" +case 164: +#line 1790 "parse.y" { Node *node = node_new (CHECK_NODE, "chtype", EQ_CHECK, @@ -3111,8 +3225,8 @@ case 156: checks = g_list_append(checks,node); ; break;} -case 157: -#line 1759 "parse.y" +case 165: +#line 1797 "parse.y" { Node *node = node_new (CHECK_NODE, "chtype", NE_CHECK, @@ -3121,23 +3235,161 @@ case 157: checks = g_list_append(checks,node); ; break;} -case 158: -#line 1768 "parse.y" +case 166: +#line 1806 "parse.y" +{ + Node *node = node_new (ENUMDEF_NODE, + "etype:steal", yyvsp[-1].id, + "prefix:steal", yyvsp[-5].id, + "values:steal", enum_vals, + NULL); + enum_vals = NULL; + nodes = g_list_append (nodes, node); + ; + break;} +case 167: +#line 1815 "parse.y" +{ + Node *node = node_new (ENUMDEF_NODE, + "etype:steal", yyvsp[-1].id, + "prefix:steal", yyvsp[-6].id, + "values:steal", enum_vals, + NULL); + enum_vals = NULL; + nodes = g_list_append (nodes, node); + ; + break;} +case 168: +#line 1826 "parse.y" +{;; + break;} +case 169: +#line 1827 "parse.y" +{;; + break;} +case 170: +#line 1830 "parse.y" +{ + Node *node; + char *num = yyvsp[0].id; + + /* A float value, that's a bad enum */ + if (num[0] >= '0' && + num[0] <= '9' && + strchr (num, '.') != NULL) { + g_free (yyvsp[-2].id); + g_free (num); + yyerror(_("parse error (enumerator value not integer constant)")); + YYERROR; + } + + node = node_new (ENUMVALUE_NODE, + "name:steal", yyvsp[-2].id, + "value:steal", num, + NULL); + enum_vals = g_list_append (enum_vals, node); + ; + break;} +case 171: +#line 1850 "parse.y" +{ + Node *node; + + node = node_new (ENUMVALUE_NODE, + "name:steal", yyvsp[0].id, + NULL); + enum_vals = g_list_append (enum_vals, node); + ; + break;} +case 172: +#line 1860 "parse.y" +{ + Node *node = node_new (FLAGS_NODE, + "ftype:steal", yyvsp[-1].id, + "prefix:steal", yyvsp[-5].id, + "values:steal", flag_vals, + NULL); + flag_vals = NULL; + nodes = g_list_append (nodes, node); + ; + break;} +case 173: +#line 1869 "parse.y" +{ + Node *node = node_new (FLAGS_NODE, + "ftype:steal", yyvsp[-1].id, + "prefix:steal", yyvsp[-6].id, + "values:steal", flag_vals, + NULL); + flag_vals = NULL; + nodes = g_list_append (nodes, node); + ; + break;} +case 174: +#line 1880 "parse.y" +{ + flag_vals = g_list_append (flag_vals, yyvsp[0].id); + ; + break;} +case 175: +#line 1883 "parse.y" +{ + flag_vals = g_list_append (flag_vals, yyvsp[0].id); + ; + break;} +case 176: +#line 1888 "parse.y" +{ + Node *node = node_new (ERROR_NODE, + "etype:steal", yyvsp[-1].id, + "prefix:steal", yyvsp[-5].id, + "values:steal", error_vals, + NULL); + error_vals = NULL; + nodes = g_list_append (nodes, node); + ; + break;} +case 177: +#line 1897 "parse.y" +{ + Node *node = node_new (ERROR_NODE, + "etype:steal", yyvsp[-1].id, + "prefix:steal", yyvsp[-6].id, + "values:steal", error_vals, + NULL); + error_vals = NULL; + nodes = g_list_append (nodes, node); + ; + break;} +case 178: +#line 1908 "parse.y" +{ + error_vals = g_list_append (error_vals, yyvsp[0].id); + ; + break;} +case 179: +#line 1911 "parse.y" +{ + error_vals = g_list_append (error_vals, yyvsp[0].id); + ; + break;} +case 180: +#line 1917 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 159: -#line 1769 "parse.y" +case 181: +#line 1918 "parse.y" { yyval.id = g_strconcat("-",yyvsp[0].id,NULL); g_free(yyvsp[0].id); ; break;} -case 160: -#line 1773 "parse.y" +case 182: +#line 1922 "parse.y" { yyval.id = yyvsp[0].id; ; break;} -case 161: -#line 1774 "parse.y" +case 183: +#line 1923 "parse.y" { yyval.id = yyvsp[0].id; ; break;} } @@ -3362,5 +3614,5 @@ yyerrhandle: } return 1; } -#line 1777 "parse.y" +#line 1926 "parse.y" diff --git a/src/parse.h b/src/parse.h index 6ebbe8d..af83451 100644 --- a/src/parse.h +++ b/src/parse.h @@ -47,13 +47,14 @@ typedef union { #define MAXIMUM 296 #define MINIMUM 297 #define DEFAULT_VALUE 298 -#define FLAGS 299 -#define TYPE 300 -#define FLAGS_TYPE 301 -#define ENUM_TYPE 302 -#define PARAM_TYPE 303 -#define BOXED_TYPE 304 -#define OBJECT_TYPE 305 +#define ERROR 299 +#define FLAGS 300 +#define TYPE 301 +#define FLAGS_TYPE 302 +#define ENUM_TYPE 303 +#define PARAM_TYPE 304 +#define BOXED_TYPE 305 +#define OBJECT_TYPE 306 extern YYSTYPE yylval; diff --git a/src/parse.y b/src/parse.y index 36f9abc..a8d3341 100644 --- a/src/parse.y +++ b/src/parse.y @@ -31,15 +31,21 @@ #include "main.h" #include "util.h" +/* FIXME: add gettext support */ #define _(x) (x) GList *nodes = NULL; static GList *class_nodes = NULL; Node *class = NULL; +GList *enums = NULL; +static GList *enum_vals = NULL; +static GList *flag_vals = NULL; +static GList *error_vals = NULL; static char *chunk_size = NULL; -static char *bonobo_x_class = NULL; +static char *bonobo_object_class = NULL; +static GList *interfaces = NULL; static GList *typestack = NULL; static GList *funcargs = NULL; static GList *checks = NULL; @@ -462,8 +468,8 @@ property_link_and_export (Node *node) } if (strcmp (prop->gtktype, "STRING") == 0) { - set = g_strdup_printf("g_free (%s->%s); " - "%s->%s = g_value_dup_string (VAL);", + set = g_strdup_printf("{ char *old = %s->%s; " + "%s->%s = g_value_dup_string (VAL); g_free (old); }", root, prop->name, root, prop->name); get = g_strdup_printf("g_value_set_string (VAL, %s->%s);", @@ -583,7 +589,7 @@ ensure_property (void) %token CCODE HTCODE PHCODE HCODE ACODE ATCODE STRING %token PUBLIC PRIVATE PROTECTED CLASSWIDE PROPERTY ARGUMENT %token VIRTUAL SIGNAL OVERRIDE -%token NICK BLURB MAXIMUM MINIMUM DEFAULT_VALUE FLAGS TYPE +%token NICK BLURB MAXIMUM MINIMUM DEFAULT_VALUE ERROR FLAGS TYPE %token FLAGS_TYPE ENUM_TYPE PARAM_TYPE BOXED_TYPE OBJECT_TYPE %% @@ -651,7 +657,13 @@ ccode: CCODE { ; ccodes: ccodes ccode { ; } + | ccodes enumcode { ; } + | ccodes flagcode { ; } + | ccodes errorcode { ; } | ccode { ; } + | enumcode { ; } + | flagcode { ; } + | errorcode { ; } ; class: classdec '{' classcode '}' { @@ -670,9 +682,13 @@ classdec: CLASS TYPETOKEN FROM TYPETOKEN classflags { class = node_new (CLASS_NODE, "otype:steal", $2, "ptype:steal", $4, - "bonobo_x_class:steal", bonobo_x_class, + "bonobo_object_class:steal", bonobo_object_class, + "interfaces:steal", interfaces, "chunk_size:steal", chunk_size, NULL); + bonobo_object_class = NULL; + chunk_size = NULL; + interfaces = NULL; } ; @@ -681,9 +697,18 @@ classflags: if(strcmp($2,"chunks") == 0) { g_free (chunk_size); chunk_size = g_strdup($3); - } else if(strcmp($2,"BonoboX") == 0) { - g_free (bonobo_x_class); - bonobo_x_class = g_strdup($3); + } else if(strcmp($2,"BonoboObject") == 0) { + g_free (bonobo_object_class); + bonobo_object_class = g_strdup($3); + } else { + yyerror(_("parse error")); + YYERROR; + } + } + | '(' TOKEN TYPETOKEN ')' classflags { + if (strcmp ($2, "interface") == 0) { + interfaces = g_list_append (interfaces, + g_strdup ($3)); } else { yyerror(_("parse error")); YYERROR; @@ -709,12 +734,25 @@ classcode: classcode thing { ; } thing: method { ; } | TOKEN method { - if (strcmp ($1, "BonoboX") != 0) { - g_free($1); - yyerror(_("parse error")); + if (strcmp ($1, "BonoboObject") != 0) { + g_free ($1); + yyerror (_("parse error")); YYERROR; } - last_added_method->bonobo_x_func = TRUE; + g_free ($1); + last_added_method->bonobo_object_func = TRUE; + } + | TOKEN TYPETOKEN method { + if (strcmp ($1, "interface") != 0) { + g_free ($1); + g_free ($2); + yyerror (_("parse error")); + YYERROR; + } + g_free ($1); + node_set ((Node *)last_added_method, + "interface:steal", $2, + NULL); } | variable { ; } | argument { ; } @@ -1764,7 +1802,118 @@ check: TOKEN { checks = g_list_append(checks,node); } ; - + +enumcode: ENUM TOKEN '{' enumvals '}' TYPETOKEN ';' { + Node *node = node_new (ENUMDEF_NODE, + "etype:steal", $6, + "prefix:steal", $2, + "values:steal", enum_vals, + NULL); + enum_vals = NULL; + nodes = g_list_append (nodes, node); + } + | ENUM TOKEN '{' enumvals ',' '}' TYPETOKEN ';' { + Node *node = node_new (ENUMDEF_NODE, + "etype:steal", $7, + "prefix:steal", $2, + "values:steal", enum_vals, + NULL); + enum_vals = NULL; + nodes = g_list_append (nodes, node); + } + ; + +enumvals: enumvals ',' enumval {;} + | enumval {;} + ; + +enumval: TOKEN '=' numtok { + Node *node; + char *num = $3; + + /* A float value, that's a bad enum */ + if (num[0] >= '0' && + num[0] <= '9' && + strchr (num, '.') != NULL) { + g_free ($1); + g_free (num); + yyerror(_("parse error (enumerator value not integer constant)")); + YYERROR; + } + + node = node_new (ENUMVALUE_NODE, + "name:steal", $1, + "value:steal", num, + NULL); + enum_vals = g_list_append (enum_vals, node); + } + | TOKEN { + Node *node; + + node = node_new (ENUMVALUE_NODE, + "name:steal", $1, + NULL); + enum_vals = g_list_append (enum_vals, node); + } + ; + +flagcode: FLAGS TOKEN '{' flagvals '}' TYPETOKEN ';' { + Node *node = node_new (FLAGS_NODE, + "ftype:steal", $6, + "prefix:steal", $2, + "values:steal", flag_vals, + NULL); + flag_vals = NULL; + nodes = g_list_append (nodes, node); + } + | FLAGS TOKEN '{' flagvals ',' '}' TYPETOKEN ';' { + Node *node = node_new (FLAGS_NODE, + "ftype:steal", $7, + "prefix:steal", $2, + "values:steal", flag_vals, + NULL); + flag_vals = NULL; + nodes = g_list_append (nodes, node); + } + ; + +flagvals: flagvals ',' TOKEN { + flag_vals = g_list_append (flag_vals, $3); + } + | TOKEN { + flag_vals = g_list_append (flag_vals, $1); + } + ; + +errorcode: ERROR TOKEN '{' errorvals '}' TYPETOKEN ';' { + Node *node = node_new (ERROR_NODE, + "etype:steal", $6, + "prefix:steal", $2, + "values:steal", error_vals, + NULL); + error_vals = NULL; + nodes = g_list_append (nodes, node); + } + | ERROR TOKEN '{' errorvals ',' '}' TYPETOKEN ';' { + Node *node = node_new (ERROR_NODE, + "etype:steal", $7, + "prefix:steal", $2, + "values:steal", error_vals, + NULL); + error_vals = NULL; + nodes = g_list_append (nodes, node); + } + ; + +errorvals: errorvals ',' TOKEN { + error_vals = g_list_append (error_vals, $3); + } + | TOKEN { + error_vals = g_list_append (error_vals, $1); + } + ; + + numtok: NUMBER { $$ = $1; } | '-' NUMBER { $$ = g_strconcat("-",$2,NULL); diff --git a/src/test.gob b/src/test.gob index 8c7cf85..67f25cf 100644 --- a/src/test.gob +++ b/src/test.gob @@ -26,6 +26,7 @@ requires 1.99.0 %{ #include +#include /* the next line is not mandatory, but if gob finds an include in one of the %{ %} sections above the class definitions, it will not put it in the file itself. So you can this way select where the include file is @@ -61,7 +62,39 @@ void bubu(void); #define TEST_ARRAY 5 %} -class Test:Object from G:Object { +enum LAME_CLIENT { + IS_CONNECTED, + NONE = 9, + LAST +} Test:Enum; + +flags BUGA_BUGA { + ONE, + TWO, + MANY, +} Some:Flags; + +error TEST_OBJECT_ERROR { + BAD_THIS, + BAD_THAT +} Test:Object:Error; + +class Test:Object from G:Object + (interface Gtk:Tree:Model) + /* We can add more interfaces by adding more lines like the above */ + /* Note that there must exist a GtkTreeModelIface structure */ +{ + + /* function implemented for the Gtk:Tree:Model interface */ + interface Gtk:Tree:Model + private GtkTreeModelFlags + get_flags (Gtk:Tree:Model *self (check null type)) + { + /* FOO */ + return (GtkTreeModelFlags)0; + } + + public int test_array[TEST_ARRAY]; public int i; @@ -173,10 +206,10 @@ class Test:Object from G:Object { } private - int + char * test_handler (self, GObject *w, int h, gpointer data) { - return -1; + return NULL; } /** @@ -191,9 +224,13 @@ class Test:Object from G:Object { signal last INT (POINTER, INT) int bleh2(self, const G:Object * wid (check null type), int h (check > 0)) { - /*gtk_signal_connect (GTK_OBJECT (self), - GTK_WEIRD_BUTTON_SIGNAL_BLEH (test_handler), - NULL);*/ + + test_object_connect__bleh (self, self_test_handler, NULL); + self_connect__bleh (self, self_test_handler, NULL); + test_object_connect_after__bleh (self, self_test_handler, NULL); + self_connect_after__bleh (self, self_test_handler, NULL); + test_object_connect_data__bleh (self, self_test_handler, NULL, NULL, 0); + self_connect_data__bleh (self, self_test_handler, NULL, NULL, 0); /* testing multiple marshaller support */ return 0; diff --git a/src/treefuncs.c b/src/treefuncs.c index 486a599..6f77f47 100644 --- a/src/treefuncs.c +++ b/src/treefuncs.c @@ -15,6 +15,14 @@ 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 * @@ -35,6 +43,14 @@ 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); @@ -54,6 +70,14 @@ 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); @@ -72,10 +96,12 @@ enum { QUARK_otype_STEAL, QUARK_ptype, QUARK_ptype_STEAL, - QUARK_bonobo_x_class, - QUARK_bonobo_x_class_STEAL, + QUARK_bonobo_object_class, + QUARK_bonobo_object_class_STEAL, QUARK_chunk_size, QUARK_chunk_size_STEAL, + QUARK_interfaces, + QUARK_interfaces_STEAL, QUARK_nodes, QUARK_nodes_STEAL, QUARK_name, @@ -136,7 +162,9 @@ enum { QUARK_ccode_line, QUARK_vararg, QUARK_unique_id, - QUARK_bonobo_x_func, + QUARK_bonobo_object_func, + QUARK_interface, + QUARK_interface_STEAL, QUARK_vtype, QUARK_vtype_STEAL, QUARK_destructor_unref, @@ -147,6 +175,16 @@ enum { QUARK_initializer, QUARK_initializer_STEAL, QUARK_initializer_line, + 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 }; @@ -161,10 +199,12 @@ ensure_quarks (void) 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_x_class", GINT_TO_POINTER (QUARK_bonobo_x_class)); - g_hash_table_insert (quark_ht, "bonobo_x_class:steal", GINT_TO_POINTER (QUARK_bonobo_x_class_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, "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, "name", GINT_TO_POINTER (QUARK_name)); @@ -225,7 +265,9 @@ ensure_quarks (void) 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_x_func", GINT_TO_POINTER (QUARK_bonobo_x_func)); + 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, "destructor_unref", GINT_TO_POINTER (QUARK_destructor_unref)); @@ -236,6 +278,16 @@ ensure_quarks (void) 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, "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 * @@ -295,12 +347,68 @@ copy_class (Class * self) new->type = CLASS_NODE; new->otype = g_strdup (self->otype); new->ptype = g_strdup (self->ptype); - new->bonobo_x_class = g_strdup (self->bonobo_x_class); + new->bonobo_object_class = g_strdup (self->bonobo_object_class); 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); 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) { @@ -338,7 +446,8 @@ copy_method (Method * self) new->ccode_line = self->ccode_line; new->vararg = self->vararg; new->unique_id = self->unique_id; - new->bonobo_x_func = self->bonobo_x_func; + new->bonobo_object_func = self->bonobo_object_func; + new->interface = g_strdup (self->interface); return new; } @@ -444,12 +553,56 @@ free_class (Class * self) g_return_if_fail (self->type == CLASS_NODE); g_free (self->otype); g_free (self->ptype); - g_free (self->bonobo_x_class); + 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) { @@ -475,6 +628,7 @@ free_method (Method * self) g_free (self->onerror); g_free (self->defreturn); g_free (self->cbuf); + g_free (self->interface); g_free (self); } @@ -728,16 +882,16 @@ setv_class (Class * self, va_list __ap) self->ptype = ptype; break; } - case QUARK_bonobo_x_class: { - char * bonobo_x_class = va_arg (__ap, char *); - char * __old_value = self->bonobo_x_class; - self->bonobo_x_class = g_strdup (bonobo_x_class); + 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_x_class_STEAL: { - char * bonobo_x_class = va_arg (__ap, char *); - self->bonobo_x_class = bonobo_x_class; + case QUARK_bonobo_object_class_STEAL: { + char * bonobo_object_class = va_arg (__ap, char *); + self->bonobo_object_class = bonobo_object_class; break; } case QUARK_chunk_size: { @@ -752,6 +906,18 @@ setv_class (Class * self, va_list __ap) 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; @@ -771,6 +937,202 @@ setv_class (Class * self, va_list __ap) } } +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) { @@ -970,9 +1332,21 @@ setv_method (Method * self, va_list __ap) self->unique_id = unique_id; break; } - case QUARK_bonobo_x_func: { - gboolean bonobo_x_func = va_arg (__ap, gboolean); - self->bonobo_x_func = bonobo_x_func; + 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: @@ -1323,6 +1697,10 @@ node_copy (Node *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); @@ -1342,6 +1720,10 @@ node_setv (Node *node, va_list __ap) 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; @@ -1388,6 +1770,26 @@ node_new (NodeType type, ...) 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; @@ -1429,6 +1831,10 @@ node_free (Node *node) 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; diff --git a/src/treefuncs.def b/src/treefuncs.def index fde15cb..d410772 100644 --- a/src/treefuncs.def +++ b/src/treefuncs.def @@ -1,3 +1,8 @@ +# Run ./generate_treefuncs.pl after modifying this to regenerate +# treefuncs.[ch] + +# These are the parse tree definitions, eliminates typos + HEADER /* for ccode type */ enum { @@ -46,8 +51,9 @@ ENDHEADER CLASS Class STRING otype # this object class type STRING ptype # parent class type - STRING bonobo_x_class # Class for BonoboXObject + STRING bonobo_object_class # Class for BonoboObject STRING chunk_size # if the object should be allocated with mem_chunks + STRINGLIST interfaces # GObject interfaces this class exports NODELIST nodes ENDCLASS @@ -122,7 +128,8 @@ CLASS Method INT ccode_line BOOL vararg INT unique_id # A unique id for new methods - BOOL bonobo_x_func # Function for BonoboXObject + BOOL bonobo_object_func # Function for BonoboObject + STRING interface # interface this belongs to ENDCLASS CLASS Variable @@ -137,3 +144,26 @@ CLASS Variable STRING initializer INT initializer_line ENDCLASS + +CLASS EnumDef + STRING etype + STRING prefix + NODELIST values +ENDCLASS + +CLASS EnumValue + STRING name + STRING value +ENDCLASS + +CLASS Flags + STRING ftype + STRING prefix + STRINGLIST values +ENDCLASS + +CLASS Error + STRING etype + STRING prefix + STRINGLIST values +ENDCLASS diff --git a/src/treefuncs.h b/src/treefuncs.h index f7ba204..33801d8 100644 --- a/src/treefuncs.h +++ b/src/treefuncs.h @@ -60,6 +60,10 @@ enum { PROPERTY_NODE, METHOD_NODE, VARIABLE_NODE, + ENUMDEF_NODE, + ENUMVALUE_NODE, + FLAGS_NODE, + ERROR_NODE, LAST_NODE_TYPE }; @@ -73,6 +77,10 @@ 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 { @@ -105,11 +113,39 @@ struct _Class { NodeType type; char * otype; char * ptype; - char * bonobo_x_class; + char * bonobo_object_class; char * chunk_size; + GList * interfaces; GList * nodes; }; +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; @@ -134,7 +170,8 @@ struct _Method { int ccode_line; gboolean vararg; int unique_id; - gboolean bonobo_x_func; + gboolean bonobo_object_func; + char * interface; }; struct _Property { @@ -185,6 +222,10 @@ union _Node { CCode ccode; Check check; Class class; + EnumDef enumdef; + EnumValue enumvalue; + Error error; + Flags flags; FuncArg funcarg; Method method; Property property; diff --git a/stamp-h.in b/stamp-h.in index e69de29..9788f70 100644 --- a/stamp-h.in +++ b/stamp-h.in @@ -0,0 +1 @@ +timestamp -- 2.43.2