]> git.draconx.ca Git - gob-dx.git/commitdiff
Release 0.90.3 v0.90.3
authorGeorge Lebl <jirka@5z.com>
Sun, 14 Nov 1999 10:36:00 +0000 (02:36 -0800)
committerNick Bowler <nbowler@draconx.ca>
Tue, 19 Feb 2019 17:18:20 +0000 (12:18 -0500)
19 files changed:
ChangeLog
Makefile.am
Makefile.in
NEWS
README
configure
configure.in
doc/Makefile.am
doc/Makefile.in
doc/gob.1 [deleted file]
doc/gob.1.in
gob.spec
src/Makefile.am
src/Makefile.in
src/lexer.c
src/lexer.l
src/main.c
src/out.c
src/parse.c

index cddb2f4c984fb916fd5c7cdef098bc01429adeaf..8f913fba1339e178a0912173bf2734c2efda3f35 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,37 @@
+Sat Nov 13 17:22:49 1999  George Lebl <jirka@5z.com>
+
+       * **/Makefile.am, configure.in: fix the conditional installation
+         stuff, don't even go into the doc directory if we aren't installing
+
+Sat Nov 13 16:53:20 1999  George Lebl <jirka@5z.com>
+
+       * doc/gob.1.in: describe BUGS better
+
+Sat Nov 13 16:20:41 1999  George Lebl <jirka@5z.com>
+
+       * src/lexer.l: don't kill C++ style comments from C blocks
+
+Sat Nov 13 16:16:59 1999  George Lebl <jirka@5z.com>
+
+       * src/{lexer.l,main.c,out.c}: fixed spurious newline printing, don't
+         kill comments from C blocks so that line counts are right, accept
+         newlines in strings, and don't take \'\"\' as a string delimiter
+
+Sat Nov 13 14:53:26 1999  George Lebl <jirka@5z.com>
+
+       * src/main.c: don't add gtk_object_class to class_init if we only
+         have non-GtkObject overrides to avoid warning
+
+Sat Nov 13 14:31:25 1999  George Lebl <jirka@5z.com>
+
+       * configure.in,src/Makefile.am,doc/Makefile.am: check for
+         ../NOINST_GOB and in case it's found don't install self
+
+Fri Nov 12 16:25:35 1999  George Lebl <jirka@5z.com>
+
+       * configure.in,Makefile.am,src/main.c: don't use popt, our arguments
+         are simple enough and popt doesn't seem to be widely used yet
+
 Sun Sep 05 22:08:40 1999  George Lebl  <jirka@5z.com>
 
        * Release 0.90.2
index a5e1570e1ab069d9053ce5cee65dc3f99fde5328..997c25a1bf8ffbddd0ca008f9eea60c8928adad4 100644 (file)
@@ -1,6 +1,7 @@
-SUBDIRS = src doc
+SUBDIRS = @SUBDIRS@
+DIST_SUBDIRS = src doc
 
 EXTRA_DIST = gob.spec.in
 
-dist-hook:
+dist-hook: gob.spec
        cp gob.spec $(distdir)
index 85ebb523184e18e5895e9b1bc069009409bf44f0..8f02198a5fcee30ba13ed0c314ec92b262d9cb1a 100644 (file)
@@ -61,6 +61,7 @@ CC = @CC@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
+DOINSTGOB = @DOINSTGOB@
 GLIB_CFLAGS = @GLIB_CFLAGS@
 GLIB_CONFIG = @GLIB_CONFIG@
 GLIB_LIBS = @GLIB_LIBS@
@@ -69,14 +70,15 @@ LEX = @LEX@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MV = @MV@
+NOINSTGOB = @NOINSTGOB@
 PACKAGE = @PACKAGE@
-POPT_LIB = @POPT_LIB@
 RM = @RM@
 TAR = @TAR@
 VERSION = @VERSION@
 YACC = @YACC@
 
-SUBDIRS = src doc
+SUBDIRS = @SUBDIRS@
+DIST_SUBDIRS = src doc
 
 EXTRA_DIST = gob.spec.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -275,7 +277,7 @@ distdir: $(DISTFILES)
            || cp -p $$d/$$file $(distdir)/$$file || :; \
          fi; \
        done
-       for subdir in $(SUBDIRS); do \
+       for subdir in $(DIST_SUBDIRS); do \
          if test "$$subdir" = .; then :; else \
            test -d $(distdir)/$$subdir \
            || mkdir $(distdir)/$$subdir \
@@ -360,7 +362,7 @@ installdirs mostlyclean-generic distclean-generic clean-generic \
 maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 
-dist-hook:
+dist-hook: gob.spec
        cp gob.spec $(distdir)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/NEWS b/NEWS
index 1b097903651bccdd35a58f8e868039e1f6baf764..e21dbacd223d37c25f9c38b0da0c5ada320638f0 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+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
diff --git a/README b/README
index b0637d89d0542d1eee0d4136aefd7ae30110edcf..454ed5903ce7189ecb9b9484b85ac46736e91964 100644 (file)
--- a/README
+++ b/README
@@ -30,6 +30,16 @@ How to write .gob files?
        2) if you can't find what you need, read src/test.gob and
           src/lexer.l and src/parse.y (in other words: RTFS)
 
+How to include gob inside your project:
+
+       Put the gob distribution into a subdirectory in your main
+       project directory.  Use the AC_CONFIG_SUBDIRS to include that
+       directory in your configure run.  And finally add a file called
+       NOINST_GOB into your toplevel project directory (this can be done
+       inside your configure script in fact) so that gob doesn't install
+       itself.  Then just use the made gob binary as you would other
+       preprocessors.
+
 TODO:
        - clean up code
        - make it behave nice
index e077feec2f8d45a6f6e0d2c866e909d7a59792a1..1c3665e33404ca0035452cb32efe09556d348837 100755 (executable)
--- a/configure
+++ b/configure
@@ -703,7 +703,7 @@ fi
 
 PACKAGE=gob
 
-VERSION=0.90.2
+VERSION=0.90.3
 
 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
   { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
@@ -786,10 +786,25 @@ fi
 
 
 
+if test -f ../NOINST_GOB ; then
+  DOINSTGOB=
+  NOINSTGOB=gob
+  echo "$ac_t""*** NOT Going to install GOB ***" 1>&6
+  SUBDIRS="src"
+  
+else
+  DOINSTGOB=gob
+  NOINSTGOB=
+  SUBDIRS="src doc"
+  
+fi
+
+
+
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:793: checking for $ac_word" >&5
+echo "configure:808: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -819,7 +834,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:823: checking for $ac_word" >&5
+echo "configure:838: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -870,7 +885,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:874: checking for $ac_word" >&5
+echo "configure:889: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -902,7 +917,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:906: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:921: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -913,12 +928,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 917 "configure"
+#line 932 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -944,12 +959,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:948: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:963: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:953: checking whether we are using GNU C" >&5
+echo "configure:968: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -958,7 +973,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:962: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -977,7 +992,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:981: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:996: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1009,7 +1024,7 @@ else
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1013: checking how to run the C preprocessor" >&5
+echo "configure:1028: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1024,13 +1039,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1028 "configure"
+#line 1043 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1049: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1041,13 +1056,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1045 "configure"
+#line 1060 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1051: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1066: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1058,13 +1073,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1062 "configure"
+#line 1077 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1068: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1089,12 +1104,12 @@ fi
 echo "$ac_t""$CPP" 1>&6
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1093: checking for ANSI C header files" >&5
+echo "configure:1108: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1098 "configure"
+#line 1113 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1102,7 +1117,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1106: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1121: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1119,7 +1134,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1123 "configure"
+#line 1138 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1137,7 +1152,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 <<EOF
-#line 1141 "configure"
+#line 1156 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1158,7 +1173,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1162 "configure"
+#line 1177 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1169,7 +1184,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:1173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1197,7 +1212,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1201: checking for $ac_word" >&5
+echo "configure:1216: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1233,7 +1248,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1237: checking for $ac_word" >&5
+echo "configure:1252: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1266,7 +1281,7 @@ test -n "$LEX" || LEX=""$missing_dir/missing flex""
 # Extract the first word of "flex", so it can be a program name with args.
 set dummy flex; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1270: checking for $ac_word" >&5
+echo "configure:1285: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1300,7 +1315,7 @@ then
   *) ac_lib=l ;;
   esac
   echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
-echo "configure:1304: checking for yywrap in -l$ac_lib" >&5
+echo "configure:1319: checking for yywrap in -l$ac_lib" >&5
 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1308,7 +1323,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$ac_lib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1312 "configure"
+#line 1327 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -1319,7 +1334,7 @@ int main() {
 yywrap()
 ; return 0; }
 EOF
-if { (eval echo configure:1323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -1342,7 +1357,7 @@ fi
 fi
 
 echo $ac_n "checking lex output file root""... $ac_c" 1>&6
-echo "configure:1346: checking lex output file root" >&5
+echo "configure:1361: checking lex output file root" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1363,7 +1378,7 @@ echo "$ac_t""$ac_cv_prog_lex_root" 1>&6
 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
 
 echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6
-echo "configure:1367: checking whether yytext is a pointer" >&5
+echo "configure:1382: checking whether yytext is a pointer" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1375,14 +1390,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c
 ac_save_LIBS="$LIBS"
 LIBS="$LIBS $LEXLIB"
 cat > conftest.$ac_ext <<EOF
-#line 1379 "configure"
+#line 1394 "configure"
 #include "confdefs.h"
 `cat $LEX_OUTPUT_ROOT.c`
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:1386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_prog_lex_yytext_pointer=yes
 else
@@ -1415,7 +1430,7 @@ fi
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1419: checking for a BSD compatible install" >&5
+echo "configure:1434: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1468,7 +1483,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1472: checking how to run the C preprocessor" >&5
+echo "configure:1487: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1483,13 +1498,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1487 "configure"
+#line 1502 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1493: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1508: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1500,13 +1515,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1504 "configure"
+#line 1519 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1510: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1517,13 +1532,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1521 "configure"
+#line 1536 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1527: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1542: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1550,7 +1565,7 @@ echo "$ac_t""$CPP" 1>&6
 # Extract the first word of "rm", so it can be a program name with args.
 set dummy rm; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1554: checking for $ac_word" >&5
+echo "configure:1569: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_RM'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1586,7 +1601,7 @@ fi
 # Extract the first word of "mv", so it can be a program name with args.
 set dummy mv; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1590: checking for $ac_word" >&5
+echo "configure:1605: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MV'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1622,7 +1637,7 @@ fi
 # Extract the first word of "tar", so it can be a program name with args.
 set dummy tar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1626: checking for $ac_word" >&5
+echo "configure:1641: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_TAR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1708,7 +1723,7 @@ fi
   # Extract the first word of "glib-config", so it can be a program name with args.
 set dummy glib-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1712: checking for $ac_word" >&5
+echo "configure:1727: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1743,7 +1758,7 @@ fi
 
   min_glib_version=1.2.0
   echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6
-echo "configure:1747: checking for GLIB - version >= $min_glib_version" >&5
+echo "configure:1762: checking for GLIB - version >= $min_glib_version" >&5
   no_glib=""
   if test "$GLIB_CONFIG" = "no" ; then
     no_glib=yes
@@ -1766,7 +1781,7 @@ echo "configure:1747: checking for GLIB - version >= $min_glib_version" >&5
   echo $ac_n "cross compiling; assumed OK... $ac_c"
 else
   cat > conftest.$ac_ext <<EOF
-#line 1770 "configure"
+#line 1785 "configure"
 #include "confdefs.h"
 
 #include <glib.h>
@@ -1842,7 +1857,7 @@ main ()
 }
 
 EOF
-if { (eval echo configure:1846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1876,7 +1891,7 @@ fi
           CFLAGS="$CFLAGS $GLIB_CFLAGS"
           LIBS="$LIBS $GLIB_LIBS"
           cat > conftest.$ac_ext <<EOF
-#line 1880 "configure"
+#line 1895 "configure"
 #include "confdefs.h"
 
 #include <glib.h>
@@ -1886,7 +1901,7 @@ int main() {
  return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); 
 ; return 0; }
 EOF
-if { (eval echo configure:1890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    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"
@@ -1924,54 +1939,11 @@ rm -f conftest*
   
   rm -f conf.glibtest
 
-echo $ac_n "checking for poptGetContext in -lpopt""... $ac_c" 1>&6
-echo "configure:1929: checking for poptGetContext in -lpopt" >&5
-ac_lib_var=`echo popt'_'poptGetContext | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lpopt  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1937 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char poptGetContext();
-
-int main() {
-poptGetContext()
-; return 0; }
-EOF
-if { (eval echo configure:1948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  POPT_LIB="-lpopt"
-else
-  echo "$ac_t""no" 1>&6
-{ echo "configure: error: Popt library not found" 1>&2; exit 1; }
-fi
-
-
 
 
-#AM_PROG_LIBTOOL
 
 echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:1975: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:1947: checking whether to enable maintainer-specific portions of Makefiles" >&5
     # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then
   enableval="$enable_maintainer_mode"
@@ -2147,6 +2119,9 @@ s%@AUTOMAKE@%$AUTOMAKE%g
 s%@AUTOHEADER@%$AUTOHEADER%g
 s%@MAKEINFO@%$MAKEINFO%g
 s%@SET_MAKE@%$SET_MAKE%g
+s%@SUBDIRS@%$SUBDIRS%g
+s%@DOINSTGOB@%$DOINSTGOB%g
+s%@NOINSTGOB@%$NOINSTGOB%g
 s%@CC@%$CC%g
 s%@CPP@%$CPP%g
 s%@YACC@%$YACC%g
@@ -2159,7 +2134,6 @@ s%@TAR@%$TAR%g
 s%@GLIB_CONFIG@%$GLIB_CONFIG%g
 s%@GLIB_CFLAGS@%$GLIB_CFLAGS%g
 s%@GLIB_LIBS@%$GLIB_LIBS%g
-s%@POPT_LIB@%$POPT_LIB%g
 s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g
 s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g
 s%@MAINT@%$MAINT%g
index 1dc72a0567622e089684883e22462364b557e2ba..325f17ac1cdf7bfceab0ea162db49a7e0aa9e2fa 100644 (file)
@@ -2,7 +2,22 @@ dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.2)
 AC_INIT(src/tree.h)
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(gob,0.90.2)
+AM_INIT_AUTOMAKE(gob,0.90.3)
+
+if test -f ../NOINST_GOB ; then
+  DOINSTGOB=
+  NOINSTGOB=gob
+  AC_MSG_RESULT([*** NOT Going to install GOB ***])
+  SUBDIRS="src"
+  AC_SUBST(SUBDIRS)
+else
+  DOINSTGOB=gob
+  NOINSTGOB=
+  SUBDIRS="src doc"
+  AC_SUBST(SUBDIRS)
+fi
+AC_SUBST(DOINSTGOB)
+AC_SUBST(NOINSTGOB)
 
 dnl Checks for programs.
 AC_PROG_CC
@@ -15,12 +30,14 @@ AC_PATH_PROG(RM, rm, /bin/rm)
 AC_PATH_PROG(MV, mv, /bin/mv)
 AC_PATH_PROG(TAR, tar, /bin/tar)
 AM_PATH_GLIB(1.2.0,,,)
-AC_CHECK_LIB(popt,poptGetContext, [POPT_LIB="-lpopt"],
-            AC_MSG_ERROR(Popt library not found))
-AC_SUBST(POPT_LIB)
+dnl We don't check popt since we're not using it at the moment, but
+dnl We just might use it later
+dnl AC_CHECK_LIB(popt,poptGetContext, [POPT_LIB="-lpopt"],
+dnl         AC_MSG_ERROR(Popt library not found, find it on ftp://ftp.redhat.com/pub/redhat/code/))
+dnl AC_SUBST(POPT_LIB)
 
 
-#AM_PROG_LIBTOOL
+dnl AM_PROG_LIBTOOL
 
 AM_MAINTAINER_MODE
 
index 9346657ae658fdc979bc8288e49a9e448d9dd027..ffe85562c2af2d680446f2205af1849d7ce30df3 100644 (file)
@@ -1,3 +1,4 @@
 man_MANS = gob.1
+SUBDIRS =
 
-EXTRA_DIST = $(man_MANS)
+EXTRA_DIST = gob.1.in
index e257a0a54956ac2a3a984c488507af8a801bb633..ce6de43aaa04442b99db455882cfb2fe06b6eaeb 100644 (file)
@@ -61,6 +61,7 @@ CC = @CC@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
+DOINSTGOB = @DOINSTGOB@
 GLIB_CFLAGS = @GLIB_CFLAGS@
 GLIB_CONFIG = @GLIB_CONFIG@
 GLIB_LIBS = @GLIB_LIBS@
@@ -69,16 +70,17 @@ LEX = @LEX@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MV = @MV@
+NOINSTGOB = @NOINSTGOB@
 PACKAGE = @PACKAGE@
-POPT_LIB = @POPT_LIB@
 RM = @RM@
 TAR = @TAR@
 VERSION = @VERSION@
 YACC = @YACC@
 
 man_MANS = gob.1
+SUBDIRS = 
 
-EXTRA_DIST = $(man_MANS)
+EXTRA_DIST = gob.1.in
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = ../config.h
 CONFIG_CLEAN_FILES =  gob.1
@@ -142,9 +144,95 @@ install-man: $(MANS)
 uninstall-man:
        @$(NORMAL_UNINSTALL)
        $(MAKE) $(AM_MAKEFLAGS) uninstall-man1
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+
+@SET_MAKE@
+
+all-recursive install-data-recursive install-exec-recursive \
+installdirs-recursive install-recursive uninstall-recursive  \
+check-recursive installcheck-recursive info-recursive dvi-recursive:
+       @set fnord $(MAKEFLAGS); amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @set fnord $(MAKEFLAGS); amf=$$2; \
+       dot_seen=no; \
+       rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
+         rev="$$subdir $$rev"; \
+         test "$$subdir" = "." && dot_seen=yes; \
+       done; \
+       test "$$dot_seen" = "no" && rev=". $$rev"; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+
 tags: TAGS
-TAGS:
 
+ID: $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS)'; \
+       unique=`for i in $$list; do echo $$i; done | \
+         awk '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       here=`pwd` && cd $(srcdir) \
+         && mkid -f$$here/ID $$unique $(LISP)
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+   if test "$$subdir" = .; then :; else \
+           test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+   fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)'; \
+       unique=`for i in $$list; do echo $$i; done | \
+         awk '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
+         || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)
+
+mostlyclean-tags:
+
+clean-tags:
+
+distclean-tags:
+       -rm -f TAGS ID
+
+maintainer-clean-tags:
 
 distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
 
@@ -161,30 +249,41 @@ distdir: $(DISTFILES)
            || cp -p $$d/$$file $(distdir)/$$file || :; \
          fi; \
        done
+       for subdir in $(SUBDIRS); do \
+         if test "$$subdir" = .; then :; else \
+           test -d $(distdir)/$$subdir \
+           || mkdir $(distdir)/$$subdir \
+           || exit 1; \
+           chmod 777 $(distdir)/$$subdir; \
+           (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \
+             || exit 1; \
+         fi; \
+       done
 info-am:
-info: info-am
+info: info-recursive
 dvi-am:
-dvi: dvi-am
+dvi: dvi-recursive
 check-am: all-am
-check: check-am
+check: check-recursive
 installcheck-am:
-installcheck: installcheck-am
+installcheck: installcheck-recursive
 install-exec-am:
-install-exec: install-exec-am
+install-exec: install-exec-recursive
 
 install-data-am: install-man
-install-data: install-data-am
+install-data: install-data-recursive
 
 install-am: all-am
        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
+install: install-recursive
 uninstall-am: uninstall-man
-uninstall: uninstall-am
+uninstall: uninstall-recursive
 all-am: Makefile $(MANS)
-all-redirect: all-am
+all-redirect: all-recursive
 install-strip:
        $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
+installdirs: installdirs-recursive
+installdirs-am:
        $(mkinstalldirs)  $(DESTDIR)$(mandir)/man1
 
 
@@ -197,28 +296,35 @@ distclean-generic:
        -rm -f config.cache config.log stamp-h stamp-h[0-9]*
 
 maintainer-clean-generic:
-mostlyclean-am:  mostlyclean-generic
+mostlyclean-am:  mostlyclean-tags mostlyclean-generic
 
-mostlyclean: mostlyclean-am
+mostlyclean: mostlyclean-recursive
 
-clean-am:  clean-generic mostlyclean-am
+clean-am:  clean-tags clean-generic mostlyclean-am
 
-clean: clean-am
+clean: clean-recursive
 
-distclean-am:  distclean-generic clean-am
+distclean-am:  distclean-tags distclean-generic clean-am
 
-distclean: distclean-am
+distclean: distclean-recursive
 
-maintainer-clean-am:  maintainer-clean-generic distclean-am
+maintainer-clean-am:  maintainer-clean-tags maintainer-clean-generic \
+               distclean-am
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
 
-maintainer-clean: maintainer-clean-am
-
-.PHONY: install-man1 uninstall-man1 install-man uninstall-man tags \
-distdir info-am info dvi-am dvi check check-am installcheck-am \
-installcheck install-exec-am install-exec install-data-am install-data \
-install-am install uninstall-am uninstall all-redirect all-am all \
+maintainer-clean: maintainer-clean-recursive
+
+.PHONY: install-man1 uninstall-man1 install-man uninstall-man \
+install-data-recursive uninstall-data-recursive install-exec-recursive \
+uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
+all-recursive check-recursive installcheck-recursive info-recursive \
+dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
+maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
+distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
+dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
+install-exec install-data-am install-data install-am install \
+uninstall-am uninstall all-redirect all-am all installdirs-am \
 installdirs mostlyclean-generic distclean-generic clean-generic \
 maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
diff --git a/doc/gob.1 b/doc/gob.1
deleted file mode 100644 (file)
index 73c5385..0000000
--- a/doc/gob.1
+++ /dev/null
@@ -1,287 +0,0 @@
-.\"
-.\" gob manual page
-.\" (C) 1999 George Lebl <jirka@5z.com>
-.\" 
-.\" This manual page is covered by the terms of the GNU General
-.\" Public License.  
-.\"
-.TH GOB 1 "GOB 0.90.2" 
-.SH NAME
-GOB \- The GTK+ Object Builder
-.SH SYNOPSIS
-.PP
-.B gob
-.SH DESCRIPTION
-.PP
-GTK+ Object Builder is a simple preprocessor for easily creating
-GTK+ objects.  It does not parse any C code and ignores any C errors.  It
-is in spirit similar to things like lex or yacc.
-
-.SH TYPENAMES
-.PP
-Because we need to parse out different parts of the typename, 
-sometimes you need to specify the typename with some special syntax.
-Types are specified in capitalized form and words are separated by ':'.
-The first word of the type (which can be empty) is the "namespace".  This
-fact is for example used for the type checking macro.  For "Gtk:New:Button",
-the macro will be GTK_IS_NEW_BUTTON.  This format of typenames is used in
-the class declaration header and for method argument types.
-
-.SH OUTPUT FILE NAMES
-.PP
-The filenames are created from the typename.  The words are
-separated by '-' and all in lower case.  For example for an object named
-"Gtk:New:Button", the files are gtk-new-button.c and gtk-new-button.h.
-
-.SH INCLUDING NORMAL C CODE IN THE OUTPUT FILES
-.PP
-To include some code directly in the output C file begin with
-'%{' on an empty line and end the code with a '%{' on an empty line.  To
-put the code in the output header file, start the code with a '%h{'.
-For example:
-.nf
-
-  %h{
-  void somefunc(int i);
-  %}
-  %{
-  void somefunc(int i)
-  {
-         /* some code */
-  }
-  %}
-
-.fi
-
-.SH MAKING A NEW CLASS
-.PP
-The class header:
-.PP
-There can be only one class per input file.  Defining a class
-is sort of like in Java, you define the class and write inline code
-directly into the class definition.  To define a class you need to specify
-the new object name and the name of the object from which it is derived
-from, such as this "class <new type> from <parent type> { <class code> }".
-For example:
-.nf
-
-  class Gtk:New:Button from Gtk:Button {
-         <class code>
-  }
-
-.fi
-.PP
-Data members:
-.PP
-There are three types of data members.  Two of them are normal
-data numbers, and one is a virtual one, usually linked to a normal public
-data member.  The two normal data members are public or private. They are
-basically just copied into the object directly.  There is only one
-identifier allowed per typename unlike in normal C.  Example:
-.nf
-
-  public int i;
-  private GtkWidget *h;
-
-.fi
-.PP
-The private members are not currently protected from outside use,
-they are just marked by a comment in the header file, this will most likely
-be somehow solved in some future version.
-.PP
-The third type is an argument type.  It is a named datamember which
-is one of the features of the GTK+ object system.  You need to define a get
-and a set handler.  They are fragments of C code that will be used to 
-get the value or set the value of the argument.  Inside them you can use the
-define ARG to which you assign the data or get the data.  You can also use
-the identifier "self" as pointer to the object instance.  The type is
-defined as one of the gtk type enums, but without the GTK_TYPE_ prefix.
-For example:
-.nf
-
-  public int height;
-  argument INT height set { self->height = ARG; } get { ARG = self->height; };
-
-.fi
-.PP
-If you don't define a set or a get handler it will be a readonly
-or a writeonly argument.  If you want to add extra argument flags, add
-them into parenthesis after the argument keyword, separated by '|' and
-without the GTK_ARG_ prefix.  For example:
-.nf
-
-  public int height;
-  argument (CONSTRUCT) INT height get { ARG = self->height; };
-
-.fi
-.PP
-Methods:
-.PP
-There is a whole array of possible methods.  The two normal,
-"familiar" method types are private and public.  Public are defined as
-normal functions with a prototype in the header file.  Private methods
-are defined as static functions with prototypes at the top of the .c
-file.  Then there are signal, virtual and override methods.  You can also
-define init and init_class methods with a special definition if you want
-to add code to the constructors or you can just leave them out.
-.PP
-Argument lists:
-.PP
-For all but the init and init_class methods, you use the
-following syntax for arguments.  The first argument can be just "self",
-which gob will translate into a pointer to the object instance.  The rest
-of the arguments are very similar to normal C arguments.  If the
-typename is an object pointer you should use the syntax defined above
-with the words separated by ':'
-.nf
-<type> <argument id>
-or
-<type> <argument id> (check <list of checks>)
-.fi
-.PP
-The checks are glib type preconditions, and can be the following:
-"null", which tests pointers for being NULL, "type" which checks GTK+
-object pointers for being the right type, "<test> <number>" which tests
-numeric arguments for being a certain value.  The test can be a <,>,<=,>=
-!= or ==.  Example:
-.nf
-  
-  public int foo(self, int h (check > 0 < 11), Gtk:Widget *w (check null type))
-
-.fi
-.PP
-This will be the prototype of a function which has a self pointer
-as the first argument, an integer argument which will be checked and has
-to be more then 0 and less then 11, and a pointer to a GtkWidget object
-instance and it is checked for being null and the type will also be
-checked.
-.PP
-Error return:
-.PP
-Methods which have a return value, there also has to be something
-returned if there is an error, such as if a precondition is not met.  The
-default is 0, casted to the type of the method.  If you need to return
-something else then you can specify an "onerror" keyword after the
-prototype and after that a number, a token (an identifier) or a bit of C
-code enclosed in braces {}.  The braces will not be printed into the
-output, they just delimit the string.  For example
-.nf
-
-  public void * get_something(self, int i (check >= 0)) onerror NULL {
-         ...
-  }
-
-.fi
-.PP
-Virtual methods:
-.PP
-Virtual methods are basically pointers in the class structure,
-so that one can override the method in derived methods.  They can be empty
-(if you put ';' instead of the C code).  A wrapper will also be defined
-which makes calling the methods he same as public methods.  This type of
-method is just a little bit "slower" then normal functions, but not as
-slow as signals.  You define them by using "virtual" keyword before the
-prototype. If you put the keyword "private" right after the "virtual"
-keyword, the wrapper will not be a public method, but a private one.
-.PP
-Signals:
-.PP
-Signals are methods to which the user can bind other handlers
-and override the default handler.  The default handler is basically the
-method body.  This is the most versatile and flexible type of a method
-and also the slowest.  You need to specify a whole bunch of things when
-you define a signal.  One thing is when the default handler will be run,
-first or last.  You specify that by "first" or "last" right after the
-"signal" keyword.  Then you need to define the gtk enum types (again
-without the GTK_TYPE_ prefix).  For that you define the return types
-and the types of arguments after the "self" pointer (not including the
-"self" pointer).  You put it in the following syntax "<return type> (<list
-of arguments>)".  If the return type is void, the type should be "NONE",
-the same should be for the argument list.  The rest of the prototype is
-the same as for other method types.  The body can also be empty, and
-also there is a public method wrapper which you can use for calling the
-signal just like a public method.  Example:
-.nf
-
-  signal first INT(POINTER,INT)
-  int do_something(self, Gtk:Widget *w (check null type), int length)
-  {
-         ...
-  }
-  
-or
-
-  signal last NONE(NONE) void foo(self);
-
-.fi
-.PP
-If you don't want the wrapper that emits the signal to be public, you can
-include the keyword "private" after the "signal" keyword. This will make
-the wrapper a normal private method.
-.PP
-If you don't define a "first" or a "last", the default will be taken as
-"last".
-.PP
-Override methods:
-.PP
-If you need to override some method (a signal or a virtual method
-of some class in the parent tree of the new object), you can define and
-override method.  After the "override" keyword, you should put the
-typename of the class you are overriding a method from.  Other then that
-it is the same as for other methods.  The "self" pointer in this case
-should be the type of the method you are overriding so that you don't
-get warnings during compilation.  Example:
-.nf
-
-  override (Gtk:Container) void
-  add (Gtk:Container *self (check null type), Gtk:Widget *wid (check null type))
-  {
-         ...
-  }
-.fi
-.PP
-Calling methods:
-.PP
-Inside the code, defines are set for the methods, so that you don't
-have to type the class name before each call.  Example:
-.nf
-
-  private int
-  foo(self)
-  {
-         return self->len;
-  }
-  
-  private int
-  bar(self,int i)
-  {
-         return foo(self) + i;
-  }
-
-.fi
-.PP
-Making new objects:
-.PP
-You should define a new method which should be a normal public method.  Inside
-this method, you can use the GET_NEW macro that is defined for you and that
-will fetch a new object, so a fairly standard new method would look like:
-.nf
-
-  public GtkWidget *
-  new(void) {
-         GtkObject *ret;
-         ret = GTK_OBJECT (GET_NEW);
-         return ret;
-  }
-
-.fi
-
-.SH BUGS
-.PP
-The generated header file is included as the first file in the .c file, no
-matter what. This means that you will have to put things that need to be
-included before that, into an %h{ } section.
-
-.SH AUTHOR
-.PP
-George Lebl <jirka@5z.com>
index afd3bf50f198c1013cd720cb56a039e439d3e8d7..82f31ab325951e34259c099c61c28f8243d0d951 100644 (file)
@@ -281,6 +281,21 @@ will fetch a new object, so a fairly standard new method would look like:
 The generated header file is included as the first file in the .c file, no
 matter what. This means that you will have to put things that need to be
 included before that, into an %h{ } section.
+.PP
+Also the lexer does not actually parse the C code, so I'm sure that some corner
+cases or maybe even some not so corner cases of C syntax might confuse gob
+completely.  If you find any, send me the source that makes it go gaga and I'll
+try to make the lexer try to handle it properly, but no promises.
+.PP
+Gob uses a lot of #define's so sometimes it can confuse your code.  One way
+to make sure you don't get confused is not to use method names for absolutely
+anything else since gob will use defines of the type:
+.nf
+
+  #define method_name class_name_method_name
+
+.fi
+For your class code.
 
 .SH AUTHOR
 .PP
index 5a91ffd1cf6427a1b58e209f726a5cc0aa18f701..7bfc8f2d0d52285781a013983eccacd28b3db717 100644 (file)
--- a/gob.spec
+++ b/gob.spec
@@ -1,4 +1,4 @@
-%define  ver     0.90.2
+%define  ver     0.90.3
 %define  rel     1
 %define  prefix  /usr
 
index 37541877d8f1172e759de5ff9360fed21276cf8f..58a615727585c6a80ebc5613a5b6c015a4459562 100644 (file)
@@ -1,9 +1,12 @@
 #YACCFLAGS += -d -t
 YFLAGS += -d -t
+SUBDIRS =
 
 INCLUDES = @GLIB_CFLAGS@ -I$(includedir)
 
-bin_PROGRAMS = gob
+bin_PROGRAMS = @DOINSTGOB@
+noinst_PROGRAMS = @NOINSTGOB@
+EXTRA_PROGRAMS = gob
 
 gob_SOURCES =  \
        main.c          \
@@ -17,10 +20,12 @@ gob_SOURCES =       \
 
 gob_LDADD = \
        -lm \
-       @POPT_LIB@ \
        $(GLIB_LIBS) \
        @LEXLIB@
 
+# we might want popt back in the future
+#      @POPT_LIB@
+
 BUILT_SOURCES = parse.h parse.c lexer.c
 
 CLEANFILES += $(BUILT_SOURCES) gtk-weird-button.*
index 4b076bdd8affa2f3acb7925e26ed3012ee9aecf3..2cf31408df3c27a401b8215533576162c9027339 100644 (file)
@@ -63,6 +63,7 @@ CC = @CC@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
+DOINSTGOB = @DOINSTGOB@
 GLIB_CFLAGS = @GLIB_CFLAGS@
 GLIB_CONFIG = @GLIB_CONFIG@
 GLIB_LIBS = @GLIB_LIBS@
@@ -71,25 +72,31 @@ LEX = @LEX@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MV = @MV@
+NOINSTGOB = @NOINSTGOB@
 PACKAGE = @PACKAGE@
-POPT_LIB = @POPT_LIB@
 RM = @RM@
 TAR = @TAR@
 VERSION = @VERSION@
 YACC = @YACC@
 
 YFLAGS =  -d -t
+SUBDIRS = 
 
 INCLUDES = @GLIB_CFLAGS@ -I$(includedir)
 
-bin_PROGRAMS = gob
+bin_PROGRAMS = @DOINSTGOB@
+noinst_PROGRAMS = @NOINSTGOB@
+EXTRA_PROGRAMS = gob
 
 gob_SOURCES =          main.c                  main.h                  tree.c                  tree.h                  out.c                   out.h                   parse.y                 lexer.l
 
 
-gob_LDADD =    -lm     @POPT_LIB@      $(GLIB_LIBS)    @LEXLIB@
+gob_LDADD =    -lm     $(GLIB_LIBS)    @LEXLIB@
 
 
+# we might want popt back in the future
+#      @POPT_LIB@
+
 BUILT_SOURCES = parse.h parse.c lexer.c
 
 CLEANFILES =  $(BUILT_SOURCES) gtk-weird-button.*
@@ -98,7 +105,7 @@ EXTRA_DIST = test.gob
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = ../config.h
 CONFIG_CLEAN_FILES = 
-PROGRAMS =  $(bin_PROGRAMS)
+PROGRAMS =  $(bin_PROGRAMS) $(noinst_PROGRAMS)
 
 
 DEFS = @DEFS@ -I. -I$(srcdir) -I..
@@ -156,6 +163,15 @@ uninstall-binPROGRAMS:
          rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
        done
 
+mostlyclean-noinstPROGRAMS:
+
+clean-noinstPROGRAMS:
+       -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+
+distclean-noinstPROGRAMS:
+
+maintainer-clean-noinstPROGRAMS:
+
 .c.o:
        $(COMPILE) -c $<
 
@@ -188,6 +204,61 @@ gob: $(gob_OBJECTS) $(gob_DEPENDENCIES)
 parse.h: parse.c
 
 
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+
+@SET_MAKE@
+
+all-recursive install-data-recursive install-exec-recursive \
+installdirs-recursive install-recursive uninstall-recursive  \
+check-recursive installcheck-recursive info-recursive dvi-recursive:
+       @set fnord $(MAKEFLAGS); amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @set fnord $(MAKEFLAGS); amf=$$2; \
+       dot_seen=no; \
+       rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
+         rev="$$subdir $$rev"; \
+         test "$$subdir" = "." && dot_seen=yes; \
+       done; \
+       test "$$dot_seen" = "no" && rev=". $$rev"; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+
 tags: TAGS
 
 ID: $(HEADERS) $(SOURCES) $(LISP)
@@ -198,9 +269,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP)
        here=`pwd` && cd $(srcdir) \
          && mkid -f$$here/ID $$unique $(LISP)
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
        tags=; \
        here=`pwd`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+   if test "$$subdir" = .; then :; else \
+           test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+   fi; \
+       done; \
        list='$(SOURCES) $(HEADERS)'; \
        unique=`for i in $$list; do echo $$i; done | \
          awk '    { files[$$0] = 1; } \
@@ -232,6 +308,16 @@ distdir: $(DISTFILES)
            || cp -p $$d/$$file $(distdir)/$$file || :; \
          fi; \
        done
+       for subdir in $(SUBDIRS); do \
+         if test "$$subdir" = .; then :; else \
+           test -d $(distdir)/$$subdir \
+           || mkdir $(distdir)/$$subdir \
+           || exit 1; \
+           chmod 777 $(distdir)/$$subdir; \
+           (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \
+             || exit 1; \
+         fi; \
+       done
 lexer.o: lexer.c ../config.h parse.h
 main.o: main.c ../config.h tree.h parse.h out.h main.h
 out.o: out.c out.h
@@ -239,29 +325,30 @@ parse.o: parse.c ../config.h tree.h main.h
 tree.o: tree.c ../config.h tree.h
 
 info-am:
-info: info-am
+info: info-recursive
 dvi-am:
-dvi: dvi-am
+dvi: dvi-recursive
 check-am: all-am
-check: check-am
+check: check-recursive
 installcheck-am:
-installcheck: installcheck-am
+installcheck: installcheck-recursive
 install-exec-am: install-binPROGRAMS
-install-exec: install-exec-am
+install-exec: install-exec-recursive
 
 install-data-am:
-install-data: install-data-am
+install-data: install-data-recursive
 
 install-am: all-am
        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
+install: install-recursive
 uninstall-am: uninstall-binPROGRAMS
-uninstall: uninstall-am
+uninstall: uninstall-recursive
 all-am: Makefile $(PROGRAMS)
-all-redirect: all-am
+all-redirect: all-recursive
 install-strip:
        $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
+installdirs: installdirs-recursive
+installdirs-am:
        $(mkinstalldirs)  $(DESTDIR)$(bindir)
 
 
@@ -276,39 +363,49 @@ distclean-generic:
 
 maintainer-clean-generic:
        -test -z "lexerlparsehparsec$(BUILT_SOURCES)" || rm -f lexerl parseh parsec $(BUILT_SOURCES)
-mostlyclean-am:  mostlyclean-binPROGRAMS mostlyclean-compile \
-               mostlyclean-tags mostlyclean-generic
+mostlyclean-am:  mostlyclean-binPROGRAMS mostlyclean-noinstPROGRAMS \
+               mostlyclean-compile mostlyclean-tags \
+               mostlyclean-generic
 
-mostlyclean: mostlyclean-am
+mostlyclean: mostlyclean-recursive
 
-clean-am:  clean-binPROGRAMS clean-compile clean-tags clean-generic \
-               mostlyclean-am
+clean-am:  clean-binPROGRAMS clean-noinstPROGRAMS clean-compile \
+               clean-tags clean-generic mostlyclean-am
 
-clean: clean-am
+clean: clean-recursive
 
-distclean-am:  distclean-binPROGRAMS distclean-compile distclean-tags \
-               distclean-generic clean-am
+distclean-am:  distclean-binPROGRAMS distclean-noinstPROGRAMS \
+               distclean-compile distclean-tags distclean-generic \
+               clean-am
 
-distclean: distclean-am
+distclean: distclean-recursive
 
 maintainer-clean-am:  maintainer-clean-binPROGRAMS \
+               maintainer-clean-noinstPROGRAMS \
                maintainer-clean-compile maintainer-clean-tags \
                maintainer-clean-generic distclean-am
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
 
-maintainer-clean: maintainer-clean-am
+maintainer-clean: maintainer-clean-recursive
 
 .PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
 maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
+mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \
+clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \
 mostlyclean-compile distclean-compile clean-compile \
-maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \
-check-am installcheck-am installcheck install-exec-am install-exec \
-install-data-am install-data install-am install uninstall-am uninstall \
-all-redirect all-am all installdirs mostlyclean-generic \
-distclean-generic clean-generic maintainer-clean-generic clean \
-mostlyclean distclean maintainer-clean
+maintainer-clean-compile install-data-recursive \
+uninstall-data-recursive install-exec-recursive \
+uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
+all-recursive check-recursive installcheck-recursive info-recursive \
+dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
+maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
+distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
+dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
+install-exec install-data-am install-data install-am install \
+uninstall-am uninstall all-redirect all-am all installdirs-am \
+installdirs mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 
 parse.h: parse.y
index 95f696411a50684158054a63170a25f688edc674..0902fb5863f4699e9d7b13092f0de88963128842 100644 (file)
@@ -284,92 +284,94 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 61
-#define YY_END_OF_BUFFER 62
-static yyconst short int yy_acclist[302] =
+#define YY_NUM_RULES 65
+#define YY_END_OF_BUFFER 66
+static yyconst short int yy_acclist[323] =
     {   0,
-       62,   60,   61,   59,   60,   61,    1,   59,   61,   60,
-       61,   60,   61,   60,   61,   60,   61,   12,   60,   61,
-        1,   13,   61,   12,   60,   61,   12,   60,   61,   28,
-       60,   61,    1,   29,   61,   22,   28,   60,   61,   28,
-       60,   61,   28,   60,   61,   28,   60,   61,   28,   60,
-       61,   26,   28,   60,   61,   27,   28,   60,   61,   28,
-       60,   61,   25,   60,   61,    1,   61,   24,   25,   60,
-       61,   25,   60,   61,   25,   60,   61,   60,   61,   60,
-       61,   55,   60,   61,   55,   60,   61,   55,   60,   61,
-       56,   60,   61,   60,   61,   60,   61,   53,   60,   61,
-
-       53,   60,   61,   55,   60,   61,   55,   60,   61,   55,
-       60,   61,   55,   60,   61,   55,   60,   61,   55,   60,
-       61,   55,   60,   61,   55,   60,   61,   55,   60,   61,
-       55,   60,   61,   55,   60,   61,   55,   60,   61,   57,
-       60,   61,   58,   60,   61,    7,   15,   11,    8,   21,
-       16,   23,    9,   55,   54,   55,   55,   53,   10,   53,
-       53,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,    3,
-       14,   17,   19,    4,    5,   54,   55,   55,   45,   53,
-        6,   53,   53,   55,   55,   55,   55,   55,   55,   40,
-
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   18,   20,   55,   31,   55,   55,   43,
-       55,   55,   55,   35,   55,   55,   38,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   32,   55,
-       30,   55,   55,   44,   55,   55,   41,   55,   55,   55,
-       55,   55,   39,   55,   55,   55,   55,   34,   55,   55,
-       55,   55,   55,   42,   55,   55,   55,   55,   46,   55,
-       50,   55,   36,   55,   33,   55,   55,   55,   55,   55,
-       52,   55,   55,   47,   55,   55,   49,   55,   55,   48,
-       55,   51,   55,   37,   55,   55,   55,   55,    2,    2,
-
-       55
+       66,   63,   65,   62,   63,   65,    1,   64,   65,   63,
+       64,   65,   63,   65,   63,   65,   63,   65,   63,   65,
+       12,   63,   65,    1,   13,   64,   65,   12,   63,   64,
+       65,   12,   63,   65,   12,   63,   65,   31,   63,   65,
+        1,   32,   64,   65,   31,   63,   64,   65,   24,   31,
+       63,   65,   31,   63,   65,   31,   63,   65,   31,   63,
+       65,   31,   63,   65,   29,   31,   63,   65,   30,   31,
+       63,   65,   31,   63,   65,   27,   63,   65,    1,   28,
+       64,   65,   27,   63,   64,   65,   26,   27,   63,   65,
+       27,   63,   65,   27,   63,   65,   63,   65,   63,   65,
+
+       58,   63,   65,   58,   63,   65,   58,   63,   65,   59,
+       63,   65,   63,   65,   63,   65,   56,   63,   65,   56,
+       63,   65,   58,   63,   65,   58,   63,   65,   58,   63,
+       65,   58,   63,   65,   58,   63,   65,   58,   63,   65,
+       58,   63,   65,   58,   63,   65,   58,   63,   65,   58,
+       63,   65,   58,   63,   65,   58,   63,   65,   60,   63,
+       65,   61,   63,   65,    7,   15,   11,    8,   23,   16,
+       25,    9,   58,   57,   58,   58,   56,   10,   56,   56,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,    3,   14,
+
+       21,   17,   19,    4,    5,   57,   58,   58,   48,   56,
+        6,   56,   56,   58,   58,   58,   58,   58,   58,   43,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   22,   18,   20,   58,   34,   58,   58,
+       46,   58,   58,   58,   38,   58,   58,   41,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   35,
+       58,   33,   58,   58,   47,   58,   58,   44,   58,   58,
+       58,   58,   58,   42,   58,   58,   58,   58,   37,   58,
+       58,   58,   58,   58,   45,   58,   58,   58,   58,   49,
+       58,   53,   58,   39,   58,   36,   58,   58,   58,   58,
+
+       58,   55,   58,   58,   50,   58,   58,   52,   58,   58,
+       51,   58,   54,   58,   40,   58,   58,   58,   58,    2,
+        2,   58
     } ;
 
-static yyconst short int yy_accept[233] =
+static yyconst short int yy_accept[241] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    2,    4,    7,   10,   12,   14,   16,
-       18,   21,   24,   27,   30,   33,   36,   40,   43,   46,
-       49,   52,   56,   60,   63,   66,   68,   72,   75,   78,
-       80,   82,   85,   88,   91,   94,   96,   98,  101,  104,
-      107,  110,  113,  116,  119,  122,  125,  128,  131,  134,
-      137,  140,  143,  146,  147,  147,  147,  147,  147,  148,
-      149,  149,  149,  149,  150,  150,  151,  152,  153,  154,
-      154,  154,  155,  156,  157,  158,  158,  159,  160,  160,
-      160,  161,  161,  161,  162,  163,  164,  165,  166,  167,
-
-      168,  169,  170,  171,  172,  173,  174,  175,  176,  177,
-      178,  179,  180,  180,  181,  181,  181,  182,  182,  182,
-      183,  184,  184,  185,  185,  186,  186,  187,  188,  189,
-      190,  191,  191,  192,  193,  194,  195,  196,  197,  198,
-      199,  200,  202,  203,  204,  205,  206,  207,  208,  209,
-      210,  211,  212,  213,  214,  214,  214,  215,  216,  217,
-      219,  220,  222,  223,  224,  226,  227,  229,  230,  231,
-      232,  233,  234,  235,  236,  237,  238,  239,  241,  241,
-      242,  243,  244,  246,  247,  249,  250,  251,  252,  253,
-      255,  256,  257,  258,  260,  261,  262,  262,  263,  264,
-
-      266,  267,  268,  269,  271,  273,  275,  277,  278,  279,
-      279,  280,  281,  283,  284,  286,  287,  289,  289,  290,
-      292,  294,  296,  296,  297,  297,  298,  298,  299,  300,
-      302,  302
+        1,    1,    1,    2,    4,    7,   10,   13,   15,   17,
+       19,   21,   24,   28,   32,   35,   38,   41,   45,   49,
+       53,   56,   59,   62,   65,   69,   73,   76,   79,   83,
+       87,   91,   94,   97,   99,  101,  104,  107,  110,  113,
+      115,  117,  120,  123,  126,  129,  132,  135,  138,  141,
+      144,  147,  150,  153,  156,  159,  162,  165,  166,  166,
+      166,  166,  166,  167,  168,  168,  168,  168,  168,  169,
+      169,  170,  171,  172,  173,  173,  173,  174,  175,  176,
+      177,  177,  178,  179,  179,  179,  180,  180,  180,  181,
+
+      182,  183,  184,  185,  186,  187,  188,  189,  190,  191,
+      192,  193,  194,  195,  196,  197,  198,  199,  199,  200,
+      200,  200,  201,  202,  202,  202,  202,  203,  204,  204,
+      205,  205,  206,  206,  207,  208,  209,  210,  211,  211,
+      212,  213,  214,  215,  216,  217,  218,  219,  220,  222,
+      223,  224,  225,  226,  227,  228,  229,  230,  231,  232,
+      233,  234,  234,  234,  235,  236,  237,  238,  240,  241,
+      243,  244,  245,  247,  248,  250,  251,  252,  253,  254,
+      255,  256,  257,  258,  259,  260,  262,  262,  263,  264,
+      265,  267,  268,  270,  271,  272,  273,  274,  276,  277,
+
+      278,  279,  281,  282,  283,  283,  284,  285,  287,  288,
+      289,  290,  292,  294,  296,  298,  299,  300,  300,  301,
+      302,  304,  305,  307,  308,  310,  310,  311,  313,  315,
+      317,  317,  318,  318,  319,  319,  320,  321,  323,  323
     } ;
 
 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,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    4,    1,    1,    5,    1,    6,    1,
-        1,    7,    1,    1,    1,    8,    9,   10,   11,   11,
-       11,   11,   11,   11,   11,   12,   12,   13,    1,    1,
-        1,    1,    1,    1,   14,   14,   15,   14,   16,   17,
-       18,   19,   18,   18,   20,   18,   21,   18,   22,   18,
-       18,   23,   18,   24,   25,   18,   18,   18,   18,   18,
-        1,   26,    1,    1,   18,    1,   27,   28,   29,   30,
-
-       31,   32,   33,   34,   35,   18,   18,   36,   37,   38,
-       39,   40,   18,   41,   42,   43,   44,   45,   18,   46,
-       18,   18,   47,    1,   48,    1,    1,    1,    1,    1,
+        1,    2,    1,    5,    1,    1,    6,    1,    7,    1,
+        1,    8,    1,    1,    1,    9,   10,   11,   12,   12,
+       12,   12,   12,   12,   12,   13,   13,   14,    1,    1,
+        1,    1,    1,    1,   15,   15,   16,   15,   17,   18,
+       19,   20,   19,   19,   21,   19,   22,   19,   23,   19,
+       19,   24,   19,   25,   26,   19,   19,   19,   19,   19,
+        1,   27,    1,    1,   19,    1,   28,   29,   30,   31,
+
+       32,   33,   34,   35,   36,   19,   19,   37,   38,   39,
+       40,   41,   19,   42,   43,   44,   45,   46,   19,   47,
+       19,   19,   48,    1,   49,    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,
@@ -386,203 +388,207 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[49] =
+static yyconst int yy_meta[50] =
     {   0,
-        1,    1,    2,    1,    1,    1,    1,    1,    1,    3,
-        3,    3,    4,    5,    5,    5,    5,    6,    6,    6,
-        6,    6,    6,    6,    6,    1,    5,    5,    5,    5,
-        5,    5,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    1,    1
+        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        3,    3,    3,    4,    5,    5,    5,    5,    6,    6,
+        6,    6,    6,    6,    6,    6,    1,    5,    5,    5,
+        5,    5,    5,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    1,    1
     } ;
 
-static yyconst short int yy_base[248] =
+static yyconst short int yy_base[256] =
     {   0,
-        0,    2,    3,    5,   29,   75,   13,   15,  123,  171,
-      212,    0,  493,  494,  494,  494,    6,  470,  455,    6,
-      494,  494,  481,  467,  494,  494,  494,    1,   13,  466,
-        0,  494,  494,  439,  494,  494,  494,  464,    0,   21,
-        0,  472,   24,    1,  494,   46,   36,   51,   56,   31,
-       52,   12,   47,   34,   56,   60,   62,   61,   69,   70,
-       74,  494,  494,  494,  481,  459,  455,  434,  494,  494,
-       41,  474,  473,  494,  475,  494,  494,  494,  494,  474,
-      463,  462,  461,   82,   77,  465,  107,  494,  469,  127,
-      135,  140,    0,  146,  107,  140,  128,   98,  146,  147,
-
-      148,  149,   79,  175,   58,  172,  150,  180,  155,  191,
-      186,  181,  468,  494,  451,  427,  494,  462,  461,  494,
-      494,  463,  494,  462,  494,  451,  450,  102,  188,  494,
-      197,  459,  494,  200,    0,  151,  189,  156,  201,  218,
-      219,  448,  202,  204,  221,  192,  225,  223,  215,  227,
-      236,  237,  245,  250,  444,  417,  494,  494,  252,  445,
-      253,  444,  254,  256,  443,  257,  442,  260,  261,  264,
-      263,  265,  268,   85,  266,  270,  269,  441,  430,  494,
-      271,  274,  439,  276,  438,  272,  280,  273,  283,  437,
-      293,  296,  297,  436,  301,  304,  431,  305,  306,  434,
-
-      307,  308,  310,  433,  432,  431,  430,  311,  314,  417,
-      312,  315,  427,  320,  383,  317,  377,  342,  319,  343,
-      342,  341,  333,  323,  336,  333,  142,  322,  494,   39,
-      494,  358,  364,  370,  376,  382,  388,  394,  396,  400,
-      406,  412,  418,  422,  426,  432,  436
+        0,    3,   12,   15,   35,   82,   24,   44,  131,  180,
+      221,    0,  509,  510,  510,  510,  510,    4,  485,  470,
+        6,  510,  510,  510,  496,  482,  510,  510,  510,  510,
+       16,   16,  481,    0,  510,  510,  454,  510,  510,  510,
+      510,  479,    0,   42,    0,  487,   21,   17,  510,   61,
+       45,   66,   82,   18,   62,   42,   22,   44,   66,   76,
+       82,   84,  111,   85,   87,  510,  510,  510,  497,  474,
+      470,  449,  510,  510,  489,   58,  488,  487,  510,  490,
+      510,  510,  510,  510,  489,  477,  476,  475,   86,  108,
+      479,   56,  510,  484,  106,  148,  154,    0,  159,  135,
+
+      148,  136,  106,  159,  138,  181,  160,  182,  183,  184,
+      187,  163,  192,  194,  203,  195,  186,  483,  510,  465,
+      441,  510,  510,  476,  475,  474,  510,  510,  477,  510,
+      476,  510,  464,  463,   94,  197,  510,  229,  473,  510,
+      232,    0,  205,  196,  204,  198,  210,  245,  461,  241,
+      242,  246,  249,  254,  251,  257,  258,  260,  262,  263,
+      266,  457,  430,  510,  510,  510,   98,  458,  264,  457,
+      265,  267,  456,  268,  455,  269,  271,  273,  272,  275,
+      278,  191,  276,  280,  285,  454,  443,  510,  302,  291,
+      452,  303,  451,  304,  306,  307,  308,  450,  310,  314,
+
+      311,  449,  313,  315,  444,  318,  317,  446,  319,  323,
+      325,  402,  396,  363,  362,  326,  327,  349,  320,  334,
+      360,  335,  359,  339,  358,  355,  140,  355,  354,  352,
+      344,   89,  346,  345,  199,  336,  510,    3,  510,  378,
+      384,  390,  396,  402,  408,  414,  416,  420,  426,  432,
+      438,  442,  446,  452,  456
     } ;
 
-static yyconst short int yy_def[248] =
+static yyconst short int yy_def[256] =
     {   0,
-      232,  232,  233,  233,  234,  234,  235,  235,  236,  236,
-       10,   11,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
-      237,  231,  231,  231,  231,  231,  231,  231,  238,  231,
-      239,  240,  240,  240,  231,  231,  231,  231,  231,  240,
-      240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
-      240,  231,  231,  231,  241,  231,  231,  231,  231,  231,
-      231,  231,  231,  231,  242,  231,  231,  231,  231,  243,
-      244,  240,  245,  240,  240,  231,  231,  231,  246,  231,
-      231,  231,  247,  231,  240,  240,  240,  240,  240,  240,
-
-      240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
-      240,  240,  241,  231,  231,  231,  231,  231,  231,  231,
-      231,  242,  231,  243,  231,  244,  245,  240,  240,  231,
-      231,  246,  231,  231,  247,  240,  240,  240,  240,  240,
-      240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
-      240,  240,  240,  240,  231,  231,  231,  231,  240,  240,
-      240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
-      240,  240,  240,  240,  240,  240,  240,  240,  231,  231,
-      240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
-      240,  240,  240,  240,  240,  240,  231,  240,  240,  240,
-
-      240,  240,  240,  240,  240,  240,  240,  240,  240,  231,
-      240,  240,  240,  240,  240,  240,  240,  231,  240,  240,
-      240,  240,  231,  240,  231,  240,  231,  240,  231,  240,
-        0,  231,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,  231,  231,  231,  231,  231,  231
+      240,  240,  241,  241,  242,  242,  243,  243,  244,  244,
+       10,   11,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  245,  239,  239,  239,  239,  239,  239,
+      239,  239,  246,  239,  247,  248,  248,  248,  239,  239,
+      239,  239,  239,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  239,  239,  239,  249,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  250,
+      239,  239,  239,  239,  251,  252,  248,  253,  248,  248,
+      239,  239,  239,  254,  239,  239,  239,  255,  239,  248,
+
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  249,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  250,  239,
+      251,  239,  252,  253,  248,  248,  239,  239,  254,  239,
+      239,  255,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  239,  239,  239,  239,  239,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  239,  239,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+
+      248,  248,  248,  248,  239,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  239,  248,  248,
+      248,  248,  248,  248,  248,  239,  248,  248,  248,  248,
+      239,  248,  239,  248,  239,  248,  239,  248,    0,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239
     } ;
 
-static yyconst short int yy_nxt[543] =
+static yyconst short int yy_nxt[560] =
     {   0,
-      231,   15,   16,   15,   16,   22,   20,   22,   17,   23,
-       17,   23,   64,   83,   65,   36,   37,   36,   37,   74,
-       18,   75,   18,   24,   83,   24,   71,   79,   19,   80,
-       19,   26,   27,   38,   28,   38,   83,   29,   39,   68,
-       39,   85,   88,   83,   89,   84,   83,   72,   73,   30,
-       98,   83,   69,   86,   31,   87,   87,   87,   90,   83,
-       91,   91,   92,   90,   83,   94,   94,   94,   83,  100,
-       83,   95,   83,   83,   83,   32,   33,   26,   27,   34,
-       28,   83,   83,   29,   99,   96,   83,  118,  119,   83,
-       97,   83,  146,  101,   83,   30,   93,   83,  102,  103,
-
-       31,  105,  107,  108,  106,  128,  104,  110,  111,  144,
-       83,  109,  112,  193,   83,  129,  131,  131,  131,   83,
-      159,   32,   33,   14,   15,   16,   14,   14,   14,   14,
-       14,   40,   14,   14,   14,   41,  134,  134,  134,  136,
-       83,  139,   90,   43,   91,   91,   92,   90,   14,   92,
-       92,   92,   83,   90,   44,   94,   94,   94,   83,   83,
-       83,   83,   83,   83,  229,  138,  137,   83,   83,   45,
-       14,   14,   15,   16,   14,   14,   14,   14,   14,   40,
-       14,   14,   14,   41,   83,  141,  143,   83,  148,  140,
-      142,   43,   83,   83,  161,  150,   14,  163,   83,  147,
-
-       83,   83,   44,   83,   83,  145,  131,  131,  131,  134,
-      134,  134,  149,   83,   83,  154,   83,   45,   14,   46,
-       47,   48,   49,   49,  160,  151,  153,   83,  164,  162,
-       83,   83,  152,   83,  167,   83,  170,   83,   50,   83,
-       51,   52,   53,   54,  168,  166,   55,   56,   83,   83,
-       57,   58,  173,   59,  165,   60,   61,   83,   62,   63,
-      171,  169,   83,  172,   83,   83,   83,  181,   83,   83,
-      174,  176,   83,   83,  175,   83,   83,   83,   83,  178,
-       83,   83,   83,   83,   83,   83,   83,  177,   83,  182,
-      188,  184,   83,  198,  191,   83,  183,  189,  192,  185,
-
-      186,  187,  195,  194,  199,   83,  200,  190,   83,   83,
-      201,  204,  196,   83,  202,  203,   83,   83,   83,   83,
-       83,  211,   83,   83,   83,  206,   83,   83,  205,   83,
-      209,   83,   83,  224,   83,   83,  219,  214,  208,  207,
-      215,  216,  226,  212,  230,   83,  222,  213,  228,  217,
-      221,  227,  225,   83,   83,   83,  223,  220,   14,   14,
-       14,   14,   14,   14,   21,   21,   21,   21,   21,   21,
-       25,   25,   25,   25,   25,   25,   35,   35,   35,   35,
-       35,   35,   42,   42,   42,   42,   42,   42,   76,   83,
-       76,   76,   76,   76,   78,   83,   78,   78,   78,   78,
-
-       81,   81,   82,   82,   82,   82,  113,  113,  113,  113,
-      113,  113,  122,  122,  122,  122,  122,  122,  124,  124,
-      124,  124,  124,  124,  126,  126,  126,  126,  127,  127,
-      127,  127,  132,  132,  132,  132,  132,  132,  135,   83,
-      135,  218,   83,   83,   83,   83,   83,  210,   83,   83,
-       83,   83,  197,   83,   83,   83,   83,   83,  180,  179,
-       83,  133,   83,   83,  125,  123,  158,  157,  156,  155,
-      114,  133,  130,   83,   83,   83,  125,  123,  121,  120,
-      117,  116,  115,  114,   83,   66,   77,   66,   66,   70,
-       67,   66,  231,   13,  231,  231,  231,  231,  231,  231,
-
-      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,  231
+      239,   15,   16,   17,   15,   16,   17,  239,   21,   18,
+      239,   68,   18,   69,   23,   24,   88,   23,   24,   25,
+       75,   19,   25,   79,   19,   80,   39,   40,   41,   20,
+       88,   88,   20,   26,   88,   88,   26,   28,   29,   30,
+       72,   31,   76,   89,   32,   42,   39,   40,   41,   84,
+       43,   85,   93,   73,   94,   88,   33,   88,   90,  100,
+      104,   34,  124,   77,   78,   42,  138,  138,  138,   91,
+       43,   92,   92,   92,   95,   88,   96,   96,   97,   88,
+      105,  103,   35,   36,   28,   29,   30,   37,   31,   88,
+       95,   32,   99,   99,   99,   88,  101,   88,   88,   88,
+
+       88,  102,   88,   33,  106,  125,  126,   88,   34,  234,
+      135,   88,   98,  167,  189,  107,  141,  141,  141,   88,
+      108,   88,  116,  115,   88,  110,  117,  109,  111,   35,
+       36,   14,   15,   16,   17,   14,   14,   14,   14,   14,
+       44,   14,   14,   14,   45,  112,  113,  136,   88,   88,
+      146,   88,   47,   88,  114,  232,   95,   14,   96,   96,
+       97,   88,   95,   48,   97,   97,   97,   95,  143,   99,
+       99,   99,   88,   88,  145,  144,   88,  148,   49,   14,
+       14,   15,   16,   17,   14,   14,   14,   14,   14,   44,
+       14,   14,   14,   45,   88,   88,   88,   88,  150,   88,
+
+       88,   47,  155,  147,   88,   88,   14,   88,   88,   88,
+       88,   88,   48,  151,  152,  154,   88,   88,   88,  153,
+      201,  161,  237,   88,  149,  156,  172,   49,   14,   50,
+       51,   52,   53,   53,  168,  157,  160,  170,  158,  138,
+      138,  138,  141,  141,  141,  159,  171,  173,   54,  169,
+       55,   56,   57,   58,   88,   88,   59,   60,   88,   88,
+       61,   62,   88,   63,   88,   64,   65,   88,   66,   67,
+       88,   88,  174,   88,  175,   88,   88,   88,   88,   88,
+       88,   88,   88,  176,   88,   88,   88,  177,   88,   88,
+      179,   88,  180,   88,  178,  181,  186,  184,   88,  183,
+
+      196,  190,  182,  192,   88,  199,  185,  197,  191,  200,
+      194,  193,  195,  203,  202,   88,   88,   88,  198,   88,
+       88,   88,  207,   88,   88,  206,   88,   88,   88,  204,
+       88,   88,   88,   88,  208,  219,   88,  212,   88,   88,
+       88,  210,  217,  209,  214,  227,  213,   88,   88,   88,
+      211,  216,   88,  222,  215,  220,  223,  224,   88,  238,
+      221,  236,  235,  225,  233,   88,  229,   88,   88,  230,
+      231,   88,   88,   88,  226,   88,   88,  228,   14,   14,
+       14,   14,   14,   14,   22,   22,   22,   22,   22,   22,
+       27,   27,   27,   27,   27,   27,   38,   38,   38,   38,
+
+       38,   38,   46,   46,   46,   46,   46,   46,   81,   88,
+       81,   81,   81,   81,   83,   88,   83,   83,   83,   83,
+       86,   86,   87,   87,   87,   87,  118,  118,  118,  118,
+      118,  118,  129,  129,  129,  129,  129,  129,  131,  131,
+      131,  131,  131,  131,  133,  133,  133,  133,  134,  134,
+      134,  134,  139,  139,  139,  139,  139,  139,  142,   88,
+      142,  218,   88,   88,   88,   88,  205,   88,   88,   88,
+       88,   88,  188,  187,   88,  140,   88,   88,  132,  130,
+      166,  165,  164,  163,  162,  119,  140,  137,   88,   88,
+       88,  132,  130,  128,  127,  123,  122,  121,  120,  119,
+
+       88,   70,   82,   70,   70,   74,   71,   70,  239,   13,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239
     } ;
 
-static yyconst short int yy_chk[543] =
+static yyconst short int yy_chk[560] =
     {   0,
-        0,    1,    1,    2,    2,    3,    2,    4,    1,    3,
-        2,    4,   17,   44,   17,    7,    7,    8,    8,   29,
-        1,   29,    2,    3,   52,    4,   28,   40,    1,   40,
-        2,    5,    5,    7,    5,    8,   43,    5,    7,   20,
-        8,   44,   47,   50,   47,   43,   54,   28,   28,    5,
-       52,  230,   20,   46,    5,   46,   46,   46,   48,   53,
-       48,   48,   48,   49,   51,   49,   49,   49,   55,   54,
-      105,   50,   56,   58,   57,    5,    5,    6,    6,    6,
-        6,   59,   60,    6,   53,   51,   61,   71,   71,   85,
-       51,  103,  105,   55,   84,    6,   48,  174,   56,   57,
-
-        6,   58,   59,   59,   58,   84,   57,   60,   61,  103,
-       98,   59,   61,  174,  128,   85,   87,   87,   87,   95,
-      128,    6,    6,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,   90,   90,   90,   95,
-       97,   98,   91,    9,   91,   91,   91,   92,    9,   92,
-       92,   92,   96,   94,    9,   94,   94,   94,   99,  100,
-      101,  102,  107,  136,  227,   97,   96,  109,  138,    9,
-        9,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-       10,   10,   10,   10,  106,  100,  102,  104,  107,   99,
-      101,   10,  108,  112,  136,  109,   10,  138,  111,  106,
-
-      129,  137,   10,  110,  146,  104,  131,  131,  131,  134,
-      134,  134,  108,  139,  143,  112,  144,   10,   10,   11,
-       11,   11,   11,   11,  129,  110,  111,  149,  139,  137,
-      140,  141,  110,  145,  143,  148,  146,  147,   11,  150,
-       11,   11,   11,   11,  144,  141,   11,   11,  151,  152,
-       11,   11,  149,   11,  140,   11,   11,  153,   11,   11,
-      147,  145,  154,  148,  159,  161,  163,  159,  164,  166,
-      150,  152,  168,  169,  151,  171,  170,  172,  175,  154,
-      173,  177,  176,  181,  186,  188,  182,  153,  184,  161,
-      170,  164,  187,  181,  173,  189,  163,  171,  173,  166,
-
-      168,  169,  176,  175,  182,  191,  184,  172,  192,  193,
-      186,  189,  177,  195,  187,  188,  196,  198,  199,  201,
-      202,  198,  203,  208,  211,  192,  209,  212,  191,  216,
-      196,  219,  214,  219,  228,  224,  211,  202,  195,  193,
-      203,  208,  224,  199,  228,  226,  216,  201,  226,  209,
-      214,  225,  223,  222,  221,  220,  218,  212,  232,  232,
-      232,  232,  232,  232,  233,  233,  233,  233,  233,  233,
-      234,  234,  234,  234,  234,  234,  235,  235,  235,  235,
-      235,  235,  236,  236,  236,  236,  236,  236,  237,  217,
-      237,  237,  237,  237,  238,  215,  238,  238,  238,  238,
-
-      239,  239,  240,  240,  240,  240,  241,  241,  241,  241,
-      241,  241,  242,  242,  242,  242,  242,  242,  243,  243,
-      243,  243,  243,  243,  244,  244,  244,  244,  245,  245,
-      245,  245,  246,  246,  246,  246,  246,  246,  247,  213,
-      247,  210,  207,  206,  205,  204,  200,  197,  194,  190,
-      185,  183,  179,  178,  167,  165,  162,  160,  156,  155,
-      142,  132,  127,  126,  124,  122,  119,  118,  116,  115,
-      113,   89,   86,   83,   82,   81,   80,   75,   73,   72,
-       68,   67,   66,   65,   42,   38,   34,   30,   24,   23,
-       19,   18,   13,  231,  231,  231,  231,  231,  231,  231,
-
-      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,  231
+        0,    1,    1,    1,    2,    2,    2,    0,    2,    1,
+        0,   18,    2,   18,    3,    3,  238,    4,    4,    3,
+       31,    1,    4,   32,    2,   32,    7,    7,    7,    1,
+       48,   54,    2,    3,   47,   57,    4,    5,    5,    5,
+       21,    5,   31,   47,    5,    7,    8,    8,    8,   44,
+        7,   44,   51,   21,   51,   56,    5,   58,   48,   54,
+       57,    5,   76,   31,   31,    8,   92,   92,   92,   50,
+        8,   50,   50,   50,   52,   55,   52,   52,   52,   59,
+       58,   56,    5,    5,    6,    6,    6,    6,    6,   60,
+       53,    6,   53,   53,   53,   61,   55,   62,   64,   89,
+
+       65,   55,  232,    6,   59,   76,   76,  135,    6,  232,
+       89,  167,   52,  135,  167,   60,   95,   95,   95,  103,
+       61,   90,   65,   64,   63,   62,   65,   61,   62,    6,
+        6,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,   63,   63,   90,  100,  102,
+      103,  105,    9,  227,   63,  227,   96,    9,   96,   96,
+       96,  101,   97,    9,   97,   97,   97,   99,  100,   99,
+       99,   99,  104,  107,  102,  101,  112,  105,    9,    9,
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,   10,   10,   10,  106,  108,  109,  110,  107,  117,
+
+      111,   10,  112,  104,  182,  113,   10,  114,  116,  144,
+      136,  146,   10,  108,  109,  111,  115,  145,  143,  110,
+      182,  117,  235,  147,  106,  113,  146,   10,   10,   11,
+       11,   11,   11,   11,  136,  114,  116,  144,  115,  138,
+      138,  138,  141,  141,  141,  115,  145,  147,   11,  143,
+       11,   11,   11,   11,  150,  151,   11,   11,  148,  152,
+       11,   11,  153,   11,  155,   11,   11,  154,   11,   11,
+      156,  157,  148,  158,  150,  159,  160,  169,  171,  161,
+      172,  174,  176,  151,  177,  179,  178,  152,  180,  183,
+      154,  181,  155,  184,  153,  156,  161,  159,  185,  158,
+
+      178,  169,  157,  172,  190,  181,  160,  179,  171,  181,
+      176,  174,  177,  184,  183,  189,  192,  194,  180,  195,
+      196,  197,  190,  199,  201,  189,  203,  200,  204,  185,
+      207,  206,  209,  219,  192,  206,  210,  197,  211,  216,
+      217,  195,  204,  194,  200,  219,  199,  220,  222,  236,
+      196,  203,  224,  210,  201,  207,  211,  216,  234,  236,
+      209,  234,  233,  217,  231,  230,  222,  229,  228,  224,
+      226,  225,  223,  221,  218,  215,  214,  220,  240,  240,
+      240,  240,  240,  240,  241,  241,  241,  241,  241,  241,
+      242,  242,  242,  242,  242,  242,  243,  243,  243,  243,
+
+      243,  243,  244,  244,  244,  244,  244,  244,  245,  213,
+      245,  245,  245,  245,  246,  212,  246,  246,  246,  246,
+      247,  247,  248,  248,  248,  248,  249,  249,  249,  249,
+      249,  249,  250,  250,  250,  250,  250,  250,  251,  251,
+      251,  251,  251,  251,  252,  252,  252,  252,  253,  253,
+      253,  253,  254,  254,  254,  254,  254,  254,  255,  208,
+      255,  205,  202,  198,  193,  191,  187,  186,  175,  173,
+      170,  168,  163,  162,  149,  139,  134,  133,  131,  129,
+      126,  125,  124,  121,  120,  118,   94,   91,   88,   87,
+       86,   85,   80,   78,   77,   75,   72,   71,   70,   69,
+
+       46,   42,   37,   33,   26,   25,   20,   19,   13,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239
     } ;
 
 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@@ -668,7 +674,7 @@ add_to_cbuf(char *s)
 
 #define CLASS_CODE_I 5
 
-#line 672 "lex.yy.c"
+#line 678 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -819,13 +825,13 @@ YY_MALLOC_DECL
 YY_DECL
        {
        register yy_state_type yy_current_state;
-       register char *yy_cp, *yy_bp;
+       register char *yy_cp = NULL, *yy_bp = NULL;
        register int yy_act;
 
 #line 66 "lexer.l"
 
 
-#line 829 "lex.yy.c"
+#line 835 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -874,14 +880,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 >= 232 )
+                               if ( yy_current_state >= 240 )
                                        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] != 494 );
+               while ( yy_base[yy_current_state] != 510 );
 
 yy_find_action:
                yy_current_state = *--yy_state_ptr;
@@ -934,7 +940,7 @@ yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
 #line 73 "lexer.l"
-{ ; /*comment, ignore*/ }
+{ add_to_cbuf(yytext); /*comment, ignore*/ }
        YY_BREAK
 case 5:
 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
@@ -960,36 +966,49 @@ YY_RULE_SETUP
 case 8:
 YY_RULE_SETUP
 #line 77 "lexer.l"
-{BEGIN(COMMENT); before_comment = C_CODE; }
+{
+       add_to_cbuf(yytext);
+       BEGIN(COMMENT);
+       before_comment = C_CODE;
+}
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 78 "lexer.l"
+#line 82 "lexer.l"
 {BEGIN(COMMENT); before_comment = CLASS_CODE; }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 79 "lexer.l"
+#line 83 "lexer.l"
 {BEGIN(COMMENT); before_comment = CLASS_CODE_I; }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 80 "lexer.l"
-{BEGIN(before_comment);}
+#line 84 "lexer.l"
+{
+       if(before_comment == C_CODE) add_to_cbuf(yytext);
+       BEGIN(before_comment);
+               }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 81 "lexer.l"
-{ ; /* comment, ignore */ }
+#line 88 "lexer.l"
+{
+       /* comment, ignore */
+       if(before_comment == C_CODE) add_to_cbuf(yytext);
+               }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 82 "lexer.l"
-{ ; /* comment, ignore */ }
+#line 92 "lexer.l"
+{
+       /* comment, ignore */
+       if(before_comment == C_CODE) add_to_cbuf(yytext);
+               }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 84 "lexer.l"
+#line 97 "lexer.l"
 {
                        BEGIN(C_CODE);
                        parenth_depth = 1;
@@ -1001,7 +1020,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 92 "lexer.l"
+#line 105 "lexer.l"
 {
                        BEGIN(C_CODE);
                        parenth_depth = 1;
@@ -1013,7 +1032,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 100 "lexer.l"
+#line 113 "lexer.l"
 {
                        BEGIN(INITIAL);
                        yylval.cbuf = cbuf;
@@ -1026,70 +1045,81 @@ YY_RULE_SETUP
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 110 "lexer.l"
+#line 123 "lexer.l"
 { add_to_cbuf(yytext); }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 111 "lexer.l"
+#line 124 "lexer.l"
 { add_to_cbuf(yytext); }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 112 "lexer.l"
+#line 125 "lexer.l"
 { add_to_cbuf(yytext); }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 113 "lexer.l"
+#line 126 "lexer.l"
 { add_to_cbuf(yytext); }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 115 "lexer.l"
+#line 127 "lexer.l"
 { add_to_cbuf(yytext); }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 116 "lexer.l"
+#line 128 "lexer.l"
+{ add_to_cbuf(yytext); }
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 130 "lexer.l"
+{ add_to_cbuf(yytext); }
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 131 "lexer.l"
 {
                        BEGIN(C_CODE_STRING);
                        add_to_cbuf(yytext);
                }
        YY_BREAK
-case 23:
+case 25:
 YY_RULE_SETUP
-#line 120 "lexer.l"
-{
-                               add_to_cbuf(yytext);
-                       }
+#line 135 "lexer.l"
+{ add_to_cbuf(yytext); }
        YY_BREAK
-case 24:
+case 26:
 YY_RULE_SETUP
-#line 123 "lexer.l"
+#line 136 "lexer.l"
 {
                                BEGIN(C_CODE);
                                add_to_cbuf(yytext);
                        }
        YY_BREAK
-case 25:
+case 27:
 YY_RULE_SETUP
-#line 127 "lexer.l"
-{
-                               add_to_cbuf(yytext);
-                       }
+#line 140 "lexer.l"
+{ add_to_cbuf(yytext); }
        YY_BREAK
-case 26:
+case 28:
 YY_RULE_SETUP
-#line 131 "lexer.l"
+#line 141 "lexer.l"
+{ add_to_cbuf(yytext); }
+       YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 143 "lexer.l"
 {
                        parenth_depth++;
                        add_to_cbuf(yytext);
                }
        YY_BREAK
-case 27:
+case 30:
 YY_RULE_SETUP
-#line 135 "lexer.l"
+#line 147 "lexer.l"
 {
                        parenth_depth--;
                        if(parenth_depth<0) {
@@ -1103,169 +1133,169 @@ YY_RULE_SETUP
                        add_to_cbuf(yytext);
                }
        YY_BREAK
-case 28:
+case 31:
 YY_RULE_SETUP
-#line 148 "lexer.l"
+#line 160 "lexer.l"
 { add_to_cbuf(yytext); }
        YY_BREAK
-case 29:
+case 32:
 YY_RULE_SETUP
-#line 149 "lexer.l"
+#line 161 "lexer.l"
 { add_to_cbuf(yytext); }
        YY_BREAK
-case 30:
+case 33:
 YY_RULE_SETUP
-#line 151 "lexer.l"
+#line 163 "lexer.l"
 {
                        BEGIN(CLASS_CODE);
                        return CLASS;
                }
        YY_BREAK
-case 31:
+case 34:
 YY_RULE_SETUP
-#line 156 "lexer.l"
+#line 168 "lexer.l"
 {return FROM;}
        YY_BREAK
-case 32:
+case 35:
 YY_RULE_SETUP
-#line 158 "lexer.l"
+#line 170 "lexer.l"
 {return VOID;}
        YY_BREAK
-case 33:
+case 36:
 YY_RULE_SETUP
-#line 159 "lexer.l"
+#line 171 "lexer.l"
 {return STRUCT;}
        YY_BREAK
-case 34:
+case 37:
 YY_RULE_SETUP
-#line 160 "lexer.l"
+#line 172 "lexer.l"
 {return UNION;}
        YY_BREAK
-case 35:
+case 38:
 YY_RULE_SETUP
-#line 161 "lexer.l"
+#line 173 "lexer.l"
 {return ENUM;}
        YY_BREAK
-case 36:
+case 39:
 YY_RULE_SETUP
-#line 162 "lexer.l"
+#line 174 "lexer.l"
 {return SIGNED;}
        YY_BREAK
-case 37:
+case 40:
 YY_RULE_SETUP
-#line 163 "lexer.l"
+#line 175 "lexer.l"
 {return UNSIGNED;}
        YY_BREAK
-case 38:
+case 41:
 YY_RULE_SETUP
-#line 164 "lexer.l"
+#line 176 "lexer.l"
 {return LONG;}
        YY_BREAK
-case 39:
+case 42:
 YY_RULE_SETUP
-#line 165 "lexer.l"
+#line 177 "lexer.l"
 {return SHORT;}
        YY_BREAK
-case 40:
+case 43:
 YY_RULE_SETUP
-#line 166 "lexer.l"
+#line 178 "lexer.l"
 {return INT;}
        YY_BREAK
-case 41:
+case 44:
 YY_RULE_SETUP
-#line 167 "lexer.l"
+#line 179 "lexer.l"
 {return FLOAT;}
        YY_BREAK
-case 42:
+case 45:
 YY_RULE_SETUP
-#line 168 "lexer.l"
+#line 180 "lexer.l"
 {return DOUBLE;}
        YY_BREAK
-case 43:
+case 46:
 YY_RULE_SETUP
-#line 169 "lexer.l"
+#line 181 "lexer.l"
 {return CHAR;}
        YY_BREAK
-case 44:
+case 47:
 YY_RULE_SETUP
-#line 170 "lexer.l"
+#line 182 "lexer.l"
 {return CONST;}
        YY_BREAK
-case 45:
+case 48:
 YY_RULE_SETUP
-#line 172 "lexer.l"
+#line 184 "lexer.l"
 {return THREEDOTS;}
        YY_BREAK
-case 46:
+case 49:
 YY_RULE_SETUP
-#line 174 "lexer.l"
+#line 186 "lexer.l"
 {yylval.line = line_no; return PUBLIC;}
        YY_BREAK
-case 47:
+case 50:
 YY_RULE_SETUP
-#line 175 "lexer.l"
+#line 187 "lexer.l"
 {yylval.line = line_no; return PRIVATE;}
        YY_BREAK
-case 48:
+case 51:
 YY_RULE_SETUP
-#line 176 "lexer.l"
+#line 188 "lexer.l"
 {yylval.line = line_no; return ARGUMENT;}
        YY_BREAK
-case 49:
+case 52:
 YY_RULE_SETUP
-#line 177 "lexer.l"
+#line 189 "lexer.l"
 {yylval.line = line_no; return VIRTUAL;}
        YY_BREAK
-case 50:
+case 53:
 YY_RULE_SETUP
-#line 178 "lexer.l"
+#line 190 "lexer.l"
 {yylval.line = line_no; return SIGNAL;}
        YY_BREAK
-case 51:
+case 54:
 YY_RULE_SETUP
-#line 179 "lexer.l"
+#line 191 "lexer.l"
 {yylval.line = line_no; return OVERRIDE;}
        YY_BREAK
-case 52:
+case 55:
 YY_RULE_SETUP
-#line 180 "lexer.l"
+#line 192 "lexer.l"
 {return ONERROR;}
        YY_BREAK
-case 53:
+case 56:
 YY_RULE_SETUP
-#line 181 "lexer.l"
+#line 193 "lexer.l"
 {
                        yylval.id = g_strdup(yytext);
                        return NUMBER;
                }
        YY_BREAK
-case 54:
+case 57:
 YY_RULE_SETUP
-#line 185 "lexer.l"
+#line 197 "lexer.l"
 {
                        yylval.id = g_strdup(yytext);
                        return TYPETOKEN;
                }
        YY_BREAK
-case 55:
+case 58:
 YY_RULE_SETUP
-#line 189 "lexer.l"
+#line 201 "lexer.l"
 {
                        yylval.id = g_strdup(yytext);
                        return TOKEN;
                }
        YY_BREAK
-case 56:
+case 59:
 YY_RULE_SETUP
-#line 194 "lexer.l"
+#line 206 "lexer.l"
 {
                        BEGIN(CLASS_CODE_I);
                        return '{';
                }
        YY_BREAK
-case 57:
+case 60:
 YY_RULE_SETUP
-#line 198 "lexer.l"
+#line 210 "lexer.l"
 {
                        BEGIN(C_CODE);
                        parenth_depth=1;
@@ -1275,33 +1305,38 @@ YY_RULE_SETUP
                        return '{';
                }
        YY_BREAK
-case 58:
+case 61:
 YY_RULE_SETUP
-#line 206 "lexer.l"
+#line 218 "lexer.l"
 {
                                BEGIN(INITIAL);
                                return '}';
                        }
        YY_BREAK
-case 59:
+case 62:
 YY_RULE_SETUP
-#line 211 "lexer.l"
+#line 223 "lexer.l"
 ;  /*ignore*/
        YY_BREAK
-case 60:
+case 63:
 YY_RULE_SETUP
-#line 213 "lexer.l"
+#line 225 "lexer.l"
 {
                        yylval.line = line_no;
                        return yytext[0];
                }
        YY_BREAK
-case 61:
+case 64:
+YY_RULE_SETUP
+#line 230 "lexer.l"
+;  /*ignore*/
+       YY_BREAK
+case 65:
 YY_RULE_SETUP
-#line 217 "lexer.l"
+#line 231 "lexer.l"
 ECHO;
        YY_BREAK
-#line 1305 "lex.yy.c"
+#line 1340 "lex.yy.c"
                        case YY_STATE_EOF(INITIAL):
                        case YY_STATE_EOF(COMMENT):
                        case YY_STATE_EOF(C_CODE):
@@ -1596,7 +1631,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 >= 232 )
+                       if ( yy_current_state >= 240 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1626,11 +1661,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 >= 232 )
+               if ( yy_current_state >= 240 )
                        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 == 231);
+       yy_is_jam = (yy_current_state == 239);
        if ( ! yy_is_jam )
                *yy_state_ptr++ = yy_current_state;
 
@@ -2188,4 +2223,4 @@ int main()
        return 0;
        }
 #endif
-#line 217 "lexer.l"
+#line 231 "lexer.l"
index cabafca6a919875378b1baa4f7ffc76fabdf643d..0037b85181537998dce2b3ebe8401a4b7e0b3b95 100644 (file)
@@ -70,16 +70,29 @@ add_to_cbuf(char *s)
 <*>MOTHERFUCKER                { fprintf(stderr,"You are a bad bad person!\n"); REJECT; }
 
 \/\/.*$                        { ; /*comment, ignore*/ }
-<C_CODE>\/\/.*$                { ; /*comment, ignore*/ }
+<C_CODE>\/\/.*$                { add_to_cbuf(yytext); /*comment, ignore*/ }
 <CLASS_CODE>\/\/.*$    { ; /*comment, ignore*/ }
 <CLASS_CODE_I>\/\/.*$  { ; /*comment, ignore*/ }
 \/\*           {BEGIN(COMMENT); before_comment = INITIAL; }
-<C_CODE>\/\*   {BEGIN(COMMENT); before_comment = C_CODE; }
+<C_CODE>\/\*   {
+       add_to_cbuf(yytext);
+       BEGIN(COMMENT);
+       before_comment = C_CODE;
+}
 <CLASS_CODE>\/\*       {BEGIN(COMMENT); before_comment = CLASS_CODE; }
 <CLASS_CODE_I>\/\*     {BEGIN(COMMENT); before_comment = CLASS_CODE_I; }
-<COMMENT>\*\/  {BEGIN(before_comment);}
-<COMMENT>.     { ; /* comment, ignore */ }
-<COMMENT>\n    { ; /* comment, ignore */ }
+<COMMENT>\*\/  {
+       if(before_comment == C_CODE) add_to_cbuf(yytext);
+       BEGIN(before_comment);
+               }
+<COMMENT>.     {
+       /* comment, ignore */
+       if(before_comment == C_CODE) add_to_cbuf(yytext);
+               }
+<COMMENT>\n    {
+       /* comment, ignore */
+       if(before_comment == C_CODE) add_to_cbuf(yytext);
+               }
 
 ^\%h\{         {
                        BEGIN(C_CODE);
@@ -111,22 +124,21 @@ add_to_cbuf(char *s)
 <C_CODE>\'\\\{\'       { add_to_cbuf(yytext); }
 <C_CODE>\'\}\'         { add_to_cbuf(yytext); }
 <C_CODE>\'\\\}\'       { add_to_cbuf(yytext); }
+<C_CODE>\'\"\'         { add_to_cbuf(yytext); }
+<C_CODE>\'\\\"\'       { add_to_cbuf(yytext); }
        
 <C_CODE>\\.    { add_to_cbuf(yytext); }
 <C_CODE>\"     {
                        BEGIN(C_CODE_STRING);
                        add_to_cbuf(yytext);
                }
-<C_CODE_STRING>\\.     {
-                               add_to_cbuf(yytext);
-                       }
+<C_CODE_STRING>\\.     { add_to_cbuf(yytext); }
 <C_CODE_STRING>\"      {
                                BEGIN(C_CODE);
                                add_to_cbuf(yytext);
                        }
-<C_CODE_STRING>.       {
-                               add_to_cbuf(yytext);
-                       }
+<C_CODE_STRING>.       { add_to_cbuf(yytext); }
+<C_CODE_STRING>\n      { add_to_cbuf(yytext); }
 
 <C_CODE>\{     {
                        parenth_depth++;
@@ -208,9 +220,11 @@ class              {
                                return '}';
                        }
 
-<CLASS_CODE,CLASS_CODE_I,INITIAL>[\n\t ]       ;  /*ignore*/
+<CLASS_CODE,CLASS_CODE_I,INITIAL>[\t ] ;  /*ignore*/
 
 <*>.           {
                        yylval.line = line_no;
                        return yytext[0];
                }
+
+<*>[\n\r]      ;  /*ignore*/
index 1b2b19c034aad7c1ab1746dd76bb616caba982f8..d706cef14382e893646baaa56a829dac7461c247 100644 (file)
@@ -21,7 +21,9 @@
 
 #include "config.h"
 #include <glib.h>
+#if 0
 #include <popt.h>
+#endif
 #include <time.h>
 #include <stdio.h>
 #include <string.h>
@@ -31,7 +33,7 @@
 #include "out.h"
 #include "main.h"
 
-char *filename = "stdin";
+char *filename = NULL;
 
 int yyparse(void);
 
@@ -527,15 +529,17 @@ add_get_type(void)
 }
 
 static void
-add_overrides(Class *c, char *oname)
+add_overrides(Class *c, char *oname, gboolean did_gtk_obj)
 {
        GList *li;
        GHashTable *done;
        char *s;
        
        done = g_hash_table_new(g_str_hash,g_str_equal);
-       s = g_strdup("GtkObject"); /* This was already done */
-       g_hash_table_insert(done,s,s);
+       if(did_gtk_obj) {
+               s = g_strdup("GtkObject"); /* This was already done */
+               g_hash_table_insert(done,s,s);
+       }
        for(li=c->nodes;li;li=g_list_next(li)) {
                Node *n = li->data;
                char *f;
@@ -737,8 +741,7 @@ add_inits(Class *c)
                                out_addline_outfile(out);
                        out_printf(out,"{\n");
                        if(signals>0 ||
-                          arguments>0 ||
-                          overrides>0)
+                          arguments>0)
                                out_printf(out,
                                           "\tGtkObjectClass *"
                                           "gtk_object_class = "
@@ -747,7 +750,8 @@ add_inits(Class *c)
                        
                        if(overrides>0)
                                add_overrides(c,
-                                             ((FuncArg *)m->args->data)->name);
+                                             ((FuncArg *)m->args->data)->name,
+                                             (signals>0 || arguments>0));
                        
                        out_printf(out,"\n\tparent_class = "
                                "gtk_type_class (%s_get_type ());\n",
@@ -1270,13 +1274,15 @@ generate_outfiles(void)
                if(node->type == CCODE_NODE) {
                        CCode *cc = (CCode *)node;
                        FILE *fp;
-                       if(cc->header)
+                       if(cc->header) {
                                fp = outh;
-                       else {
+                               out_printf(fp,"\n");
+                       } else {
                                fp = out;
+                               out_printf(fp,"\n");
                                out_addline_infile(fp,cc->line_no);
                        }
-                       out_printf(fp,"\n%s\n",cc->cbuf->str);
+                       out_printf(fp,"%s\n",cc->cbuf->str);
                        if(!cc->header)
                                out_addline_outfile(fp);
                } else if(node->type == CLASS_NODE) {
@@ -1389,6 +1395,7 @@ generate_outfiles(void)
                "#endif");
 }
 
+#if 0
 static void
 usage(poptContext optCon, int exitcode, char *error, char *addl)
 {
@@ -1396,11 +1403,80 @@ usage(poptContext optCon, int exitcode, char *error, char *addl)
        if (error) fprintf(stderr, "%s: %s", error, addl);
        exit(exitcode);
 }
+#endif
 
+static void
+print_help(void)
+{
+       fprintf(stderr,"Gob version %s\n\n",VERSION);
+       fprintf(stderr,"Options:\n"
+               "\t--help,-h,-?         Display this help\n"
+               "\t--exit-on-warn,-w    Exit with an error on warnings\n"
+               "\t--no-exit-on-warn    Don't exit on warnings [default]\n");
+}
+
+static void
+parse_options(int argc, char *argv[])
+{
+       int i;
+       int got_file = FALSE;
+       int no_opts = FALSE;
+
+       filename = NULL;
+
+       for(i=1;i<argc;i++) {
+               if(no_opts || argv[i][0]!='-') {
+                       /*must be a file*/
+                       if(got_file) {
+                               fprintf(stderr,"Specify only one file!\n");
+                               print_help();
+                               exit(1);
+                       }
+                       filename = argv[i];
+                       got_file = TRUE;
+               } else if(strcmp(argv[i],"--help")==0) {
+                       print_help();
+                       exit(0);
+               } else if(strcmp(argv[i],"--exit-on-warn")==0) {
+                       exit_on_warn = TRUE;
+               } else if(strcmp(argv[i],"--no-exit-on-warn")==0) {
+                       exit_on_warn = FALSE;
+               } else if(strcmp(argv[i],"--")==0) {
+                       /*further arguments are files*/
+                       no_opts = TRUE;
+               } else if(strncmp(argv[i],"--",2)==0) {
+                       /*unknown long option*/
+                       fprintf(stderr,"Unknown option '%s'!\n",argv[i]);
+                       print_help();
+                       exit(1);
+               } else {
+                       /*by now we know we have a string starting with
+                         - which is a short option string*/
+                       char *p = argv[i]+1;
+                       for(p=argv[i]+1;*p;p++) {
+                               switch(*p) {
+                               case 'w':
+                                       exit_on_warn=TRUE;
+                                       break;
+                               case 'h':
+                               case '?':
+                                       print_help();
+                                       exit(0);
+                               default:
+                                       fprintf(stderr,
+                                               "Unknown option '%c'!\n",*p);
+                                       print_help();
+                                       exit(1);
+                               }
+                       }
+               }
+       }
+}
 
 int
 main(int argc, char *argv[])
 {
+#if 0
        int c;
        poptContext optCon;
        
@@ -1429,6 +1505,9 @@ main(int argc, char *argv[])
                        poptStrerror(c));
                return 1;
        }
+#endif
+
+       parse_options(argc,argv);
        
        if(filename) {
                yyin = fopen(filename,"r");
@@ -1466,6 +1545,8 @@ main(int argc, char *argv[])
        fclose(out);
        fclose(outh);
        
+#if 0
        poptFreeContext(optCon);
+#endif
        return 0;
 }
index df0d7f57f6ccc6c03204a4ac1798cdb4feb5e42e..3183635acbaed6cada22c41e6e0c8c03c4e527cc 100644 (file)
--- a/src/out.c
+++ b/src/out.c
@@ -28,9 +28,10 @@ out_printf(FILE *fp,char *format,...)
 {
        va_list ap;
        char *s;
+
        va_start(ap,format);
-       
        s = g_strdup_vprintf(format,ap);
+       va_end(ap);
 
        if(fp == out)
                outline += strchrcnt(s,'\n');
@@ -41,8 +42,6 @@ out_printf(FILE *fp,char *format,...)
 
        fprintf(fp,"%s",s);
        g_free(s);
-
-       va_end(ap);
 }
 
 void
index 665f536185b5494df4121b5b9894456717010f33..51a215a7aa061424e29be62fe08270ef309c0171 100644 (file)
@@ -1,38 +1,37 @@
 
 /*  A Bison parser, made from parse.y
- by  GNU Bison version 1.25
-  */
+    by GNU Bison version 1.28  */
 
 #define YYBISON 1  /* Identify Bison output.  */
 
-#define        CLASS   258
-#define        FROM    259
-#define        CONST   260
-#define        VOID    261
-#define        STRUCT  262
-#define        UNION   263
-#define        ENUM    264
-#define        THREEDOTS       265
-#define        SIGNED  266
-#define        UNSIGNED        267
-#define        LONG    268
-#define        SHORT   269
-#define        INT     270
-#define        FLOAT   271
-#define        DOUBLE  272
-#define        CHAR    273
-#define        ONERROR 274
-#define        TOKEN   275
-#define        NUMBER  276
-#define        TYPETOKEN       277
-#define        CCODE   278
-#define        HCODE   279
-#define        PUBLIC  280
-#define        PRIVATE 281
-#define        ARGUMENT        282
-#define        VIRTUAL 283
-#define        SIGNAL  284
-#define        OVERRIDE        285
+#define        CLASS   257
+#define        FROM    258
+#define        CONST   259
+#define        VOID    260
+#define        STRUCT  261
+#define        UNION   262
+#define        ENUM    263
+#define        THREEDOTS       264
+#define        SIGNED  265
+#define        UNSIGNED        266
+#define        LONG    267
+#define        SHORT   268
+#define        INT     269
+#define        FLOAT   270
+#define        DOUBLE  271
+#define        CHAR    272
+#define        ONERROR 273
+#define        TOKEN   274
+#define        NUMBER  275
+#define        TYPETOKEN       276
+#define        CCODE   277
+#define        HCODE   278
+#define        PUBLIC  279
+#define        PRIVATE 280
+#define        ARGUMENT        281
+#define        VIRTUAL 282
+#define        SIGNAL  283
+#define        OVERRIDE        284
 
 #line 21 "parse.y"
 
@@ -199,7 +198,7 @@ typedef union {
 #define        YYFLAG          -32768
 #define        YYNTBASE        45
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 285 ? yytranslate[x] : 73)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 284 ? yytranslate[x] : 73)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -227,10 +226,10 @@ 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,     2,     2,     2,     1,     2,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30
+     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+    27,    28,    29,    30
 };
 
 #if YYDEBUG != 0
@@ -464,6 +463,7 @@ static const short yycheck[] = {    16,
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/lib/bison.simple"
+/* This file comes from bison-1.28.  */
 
 /* Skeleton output parser for bison,
    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -480,46 +480,66 @@ static const short yycheck[] = {    16,
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /* As a special exception, when this file is copied by Bison into a
    Bison output file, you may use that output file without restriction.
    This special exception was added by the Free Software Foundation
    in version 1.24 of Bison.  */
 
-#ifndef alloca
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
+
+#ifndef YYSTACK_USE_ALLOCA
+#ifdef alloca
+#define YYSTACK_USE_ALLOCA
+#else /* alloca not defined */
 #ifdef __GNUC__
+#define YYSTACK_USE_ALLOCA
 #define alloca __builtin_alloca
 #else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
+#define YYSTACK_USE_ALLOCA
 #include <alloca.h>
 #else /* not sparc */
-#if defined (MSDOS) && !defined (__TURBOC__)
+/* We think this test detects Watcom and Microsoft C.  */
+/* This used to test MSDOS, but that is a bad idea
+   since that symbol is in the user namespace.  */
+#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
+#if 0 /* No need for malloc.h, which pollutes the namespace;
+        instead, just don't use alloca.  */
 #include <malloc.h>
+#endif
 #else /* not MSDOS, or __TURBOC__ */
 #if defined(_AIX)
-#include <malloc.h>
+/* I don't know what this was needed for, but it pollutes the namespace.
+   So I turned it off.   rms, 2 May 1997.  */
+/* #include <malloc.h>  */
  #pragma alloca
-#else /* not MSDOS, __TURBOC__, or _AIX */
-#ifdef __hpux
-#ifdef __cplusplus
-extern "C" {
-void *alloca (unsigned int);
-};
-#else /* not __cplusplus */
-void *alloca ();
-#endif /* not __cplusplus */
+#define YYSTACK_USE_ALLOCA
+#else /* not MSDOS, or __TURBOC__, or _AIX */
+#if 0
+#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
+                and on HPUX 10.  Eventually we can turn this on.  */
+#define YYSTACK_USE_ALLOCA
+#define alloca __builtin_alloca
 #endif /* __hpux */
+#endif
 #endif /* not _AIX */
 #endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc.  */
-#endif /* not GNU C.  */
-#endif /* alloca not defined.  */
+#endif /* not sparc */
+#endif /* not GNU C */
+#endif /* alloca not defined */
+#endif /* YYSTACK_USE_ALLOCA not defined */
 
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
+#ifdef YYSTACK_USE_ALLOCA
+#define YYSTACK_ALLOC alloca
+#else
+#define YYSTACK_ALLOC malloc
+#endif
 
 /* Note: there must be only one dollar sign in this file.
    It is replaced by the list of actions, each action
@@ -529,8 +549,8 @@ void *alloca ();
 #define yyclearin      (yychar = YYEMPTY)
 #define YYEMPTY                -2
 #define YYEOF          0
-#define YYACCEPT       return(0)
-#define YYABORT        return(1)
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT        goto yyabortlab
 #define YYERROR                goto yyerrlab1
 /* Like YYERROR except do call yyerror.
    This remains here temporarily to ease the
@@ -611,12 +631,12 @@ int yydebug;                      /*  nonzero means print parse trace     */
 #ifndef YYMAXDEPTH
 #define YYMAXDEPTH 10000
 #endif
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-int yyparse (void);
-#endif
 \f
+/* Define __yy_memcpy.  Note that the size argument
+   should be passed with type unsigned int, because that is what the non-GCC
+   definitions require.  With GCC, __builtin_memcpy takes an arg
+   of type size_t, but it can handle unsigned int.  */
+
 #if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
 #define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
 #else                          /* not GNU C or C++ */
@@ -628,7 +648,7 @@ static void
 __yy_memcpy (to, from, count)
      char *to;
      char *from;
-     int count;
+     unsigned int count;
 {
   register char *f = from;
   register char *t = to;
@@ -643,10 +663,10 @@ __yy_memcpy (to, from, count)
 /* This is the most reliable way to avoid incompatibilities
    in available built-in functions on various systems.  */
 static void
-__yy_memcpy (char *to, char *from, int count)
+__yy_memcpy (char *to, char *from, unsigned int count)
 {
-  register char *f = from;
   register char *t = to;
+  register char *f = from;
   register int i = count;
 
   while (i-- > 0)
@@ -656,7 +676,7 @@ __yy_memcpy (char *to, char *from, int count)
 #endif
 #endif
 \f
-#line 196 "/usr/lib/bison.simple"
+#line 217 "/usr/lib/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -677,6 +697,15 @@ __yy_memcpy (char *to, char *from, int count)
 #define YYPARSE_PARAM_DECL
 #endif /* not YYPARSE_PARAM */
 
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+#ifdef YYPARSE_PARAM
+int yyparse (void *);
+#else
+int yyparse (void);
+#endif
+#endif
+
 int
 yyparse(YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
@@ -705,6 +734,7 @@ yyparse(YYPARSE_PARAM_ARG)
 #endif
 
   int yystacksize = YYINITDEPTH;
+  int yyfree_stacks = 0;
 
 #ifdef YYPURE
   int yychar;
@@ -789,18 +819,32 @@ yynewstate:
       if (yystacksize >= YYMAXDEPTH)
        {
          yyerror("parser stack overflow");
+         if (yyfree_stacks)
+           {
+             free (yyss);
+             free (yyvs);
+#ifdef YYLSP_NEEDED
+             free (yyls);
+#endif
+           }
          return 2;
        }
       yystacksize *= 2;
       if (yystacksize > YYMAXDEPTH)
        yystacksize = YYMAXDEPTH;
-      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
-      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
+#ifndef YYSTACK_USE_ALLOCA
+      yyfree_stacks = 1;
+#endif
+      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
+      __yy_memcpy ((char *)yyss, (char *)yyss1,
+                  size * (unsigned int) sizeof (*yyssp));
+      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
+      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
+                  size * (unsigned int) sizeof (*yyvsp));
 #ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
+      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
+      __yy_memcpy ((char *)yyls, (char *)yyls1,
+                  size * (unsigned int) sizeof (*yylsp));
 #endif
 #endif /* no yyoverflow */
 
@@ -1639,7 +1683,7 @@ case 93:
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/lib/bison.simple"
+#line 543 "/usr/lib/bison.simple"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -1834,6 +1878,30 @@ yyerrhandle:
 
   yystate = yyn;
   goto yynewstate;
+
+ yyacceptlab:
+  /* YYACCEPT comes here.  */
+  if (yyfree_stacks)
+    {
+      free (yyss);
+      free (yyvs);
+#ifdef YYLSP_NEEDED
+      free (yyls);
+#endif
+    }
+  return 0;
+
+ yyabortlab:
+  /* YYABORT comes here.  */
+  if (yyfree_stacks)
+    {
+      free (yyss);
+      free (yyvs);
+#ifdef YYLSP_NEEDED
+      free (yyls);
+#endif
+    }
+  return 1;
 }
 #line 634 "parse.y"