aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitmodules84
-rw-r--r--coin/platform_configs/default.yaml52
-rw-r--r--coin/platform_configs/qtbase.yaml6
-rw-r--r--coin/platform_configs/qtconnectivity.yaml6
-rw-r--r--gnuwin32/README9
-rwxr-xr-xgnuwin32/bin/bison.exebin539648 -> 0 bytes
-rw-r--r--gnuwin32/bin/data/README70
-rw-r--r--gnuwin32/bin/data/bison.m41063
-rw-r--r--gnuwin32/bin/data/c++-skel.m426
-rw-r--r--gnuwin32/bin/data/c++.m4544
-rw-r--r--gnuwin32/bin/data/c-like.m465
-rw-r--r--gnuwin32/bin/data/c-skel.m426
-rw-r--r--gnuwin32/bin/data/c.m4839
-rw-r--r--gnuwin32/bin/data/glr.c2563
-rw-r--r--gnuwin32/bin/data/glr.cc345
-rw-r--r--gnuwin32/bin/data/java-skel.m426
-rw-r--r--gnuwin32/bin/data/java.m4342
-rw-r--r--gnuwin32/bin/data/lalr1.cc1161
-rw-r--r--gnuwin32/bin/data/lalr1.java1065
-rw-r--r--gnuwin32/bin/data/local.mk45
-rw-r--r--gnuwin32/bin/data/location.cc335
-rw-r--r--gnuwin32/bin/data/m4sugar/foreach.m4362
-rw-r--r--gnuwin32/bin/data/m4sugar/m4sugar.m43307
-rw-r--r--gnuwin32/bin/data/stack.hh154
-rw-r--r--gnuwin32/bin/data/variant.hh362
-rw-r--r--gnuwin32/bin/data/xslt/bison.xsl105
-rw-r--r--gnuwin32/bin/data/xslt/xml2dot.xsl397
-rw-r--r--gnuwin32/bin/data/xslt/xml2text.xsl569
-rw-r--r--gnuwin32/bin/data/xslt/xml2xhtml.xsl745
-rw-r--r--gnuwin32/bin/data/yacc.c1915
-rwxr-xr-xgnuwin32/bin/flex.exebin546816 -> 0 bytes
-rw-r--r--gnuwin32/bin/gperf.exebin103424 -> 0 bytes
-rw-r--r--gnuwin32/bin/iconv.exebin16896 -> 0 bytes
-rw-r--r--gnuwin32/bin/libcharset1.dllbin11776 -> 0 bytes
-rw-r--r--gnuwin32/bin/libiconv2.dllbin1008128 -> 0 bytes
-rw-r--r--gnuwin32/bin/libintl3.dllbin103424 -> 0 bytes
-rw-r--r--gnuwin32/bin/m4.exebin179200 -> 0 bytes
-rw-r--r--gnuwin32/bin/regex2.dllbin79360 -> 0 bytes
-rw-r--r--gnuwin32/contrib/gperf/3.0.1/depends-GnuWin32.lst3
-rw-r--r--gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-GnuWin32.README54
-rw-r--r--gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/AUTHORS2
-rw-r--r--gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/COPYING340
-rw-r--r--gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/ChangeLog3185
-rw-r--r--gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/INSTALL183
-rw-r--r--gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/NEWS80
-rw-r--r--gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/README28
-rw-r--r--gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check.log156
-rw-r--r--gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check_err.log21
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/depends-GnuWin32.lst9
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-1-GnuWin32.README54
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/ABOUT-NLS477
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/AUTHORS1
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/ChangeLog2633
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/DESIGN64
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/NEWS119
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/NOTES392
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/PORTS46
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/README149
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/THANKS13
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/djgpp/README122
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/extras/ChangeLog64
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/AUTHORS1
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/ChangeLog322
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/NEWS2
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/README60
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/djgpp/README123
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/lib/ChangeLog302
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/m4/ChangeLog18
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/tools/README25
-rw-r--r--gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/po/ChangeLog148
-rw-r--r--gnuwin32/lib/charset.alias4
-rw-r--r--gnuwin32/lib/libcharset.la35
-rw-r--r--gnuwin32/lib/libcharset.la.orig35
-rw-r--r--gnuwin32/lib/libiconv.la35
-rw-r--r--gnuwin32/lib/libiconv.la.orig35
-rw-r--r--gnuwin32/man/cat1/gperf.1.txt226
-rw-r--r--gnuwin32/man/cat1/iconv.1.txt48
-rw-r--r--gnuwin32/man/cat1/yacc.1.txt42
-rw-r--r--gnuwin32/man/cat1p/yacc.1p.txt1269
-rw-r--r--gnuwin32/man/cat3/iconv.3.txt97
-rw-r--r--gnuwin32/man/cat3/iconv_close.3.txt32
-rw-r--r--gnuwin32/man/cat3/iconv_open.3.txt152
-rw-r--r--gnuwin32/manifest/gperf-3.0.1-bin.mft14
-rw-r--r--gnuwin32/manifest/gperf-3.0.1-bin.ver2
-rw-r--r--gnuwin32/manifest/libiconv-1.9.2-1-bin.mft0
-rw-r--r--gnuwin32/manifest/libiconv-1.9.2-1-bin.ver2
-rw-r--r--gnuwin32/manifest/libiconv-1.9.2-1-dep.mft0
-rw-r--r--gnuwin32/manifest/libiconv-1.9.2-1-dep.ver2
-rw-r--r--gnuwin32/patches/win_flex.patch47
-rw-r--r--gnuwin32/share/aclocal/bison-i18n.m448
-rw-r--r--gnuwin32/share/locale/ca/LC_MESSAGES/libiconv.mobin1803 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/da/LC_MESSAGES/bison-runtime.mobin1268 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/da/LC_MESSAGES/bison.mobin9458 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/da/LC_MESSAGES/libiconv.mobin1728 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/de/LC_MESSAGES/bison-runtime.mobin1347 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/de/LC_MESSAGES/bison.mobin18417 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/de/LC_MESSAGES/libiconv.mobin1847 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/el/LC_MESSAGES/bison-runtime.mobin1545 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/el/LC_MESSAGES/bison.mobin23536 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/eo/LC_MESSAGES/libiconv.mobin1739 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/es/LC_MESSAGES/bison-runtime.mobin514 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/es/LC_MESSAGES/bison.mobin10645 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/es/LC_MESSAGES/libiconv.mobin1758 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/et/LC_MESSAGES/bison-runtime.mobin1248 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/et/LC_MESSAGES/bison.mobin10820 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/et/LC_MESSAGES/libiconv.mobin1723 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/fi/LC_MESSAGES/bison-runtime.mobin1303 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/fi/LC_MESSAGES/libiconv.mobin1862 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/fr/LC_MESSAGES/bison-runtime.mobin1296 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/fr/LC_MESSAGES/bison.mobin11517 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/fr/LC_MESSAGES/libiconv.mobin1778 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ga/LC_MESSAGES/bison-runtime.mobin1324 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ga/LC_MESSAGES/bison.mobin18930 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ga/LC_MESSAGES/libiconv.mobin1704 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/gl/LC_MESSAGES/libiconv.mobin1752 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/hr/LC_MESSAGES/bison-runtime.mobin529 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/hr/LC_MESSAGES/bison.mobin4127 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/hr/LC_MESSAGES/libiconv.mobin1783 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/hu/LC_MESSAGES/libiconv.mobin1876 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/id/LC_MESSAGES/bison-runtime.mobin1393 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/id/LC_MESSAGES/bison.mobin10896 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/id/LC_MESSAGES/libiconv.mobin1767 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/it/LC_MESSAGES/bison-runtime.mobin1232 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/it/LC_MESSAGES/bison.mobin9864 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/it/LC_MESSAGES/libiconv.mobin1913 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ja/LC_MESSAGES/bison-runtime.mobin505 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ja/LC_MESSAGES/bison.mobin4346 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ky/LC_MESSAGES/bison-runtime.mobin1582 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/lt/LC_MESSAGES/bison-runtime.mobin1407 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ms/LC_MESSAGES/bison-runtime.mobin1362 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ms/LC_MESSAGES/bison.mobin16368 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/nb/LC_MESSAGES/bison-runtime.mobin1302 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/nb/LC_MESSAGES/bison.mobin9579 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/nl/LC_MESSAGES/bison-runtime.mobin1275 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/nl/LC_MESSAGES/bison.mobin18338 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/nl/LC_MESSAGES/libiconv.mobin1719 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/pl/LC_MESSAGES/bison-runtime.mobin1438 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/pl/LC_MESSAGES/bison.mobin18475 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/pl/LC_MESSAGES/libiconv.mobin1831 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/pt_BR/LC_MESSAGES/bison-runtime.mobin1284 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/pt_BR/LC_MESSAGES/bison.mobin9241 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/pt_BR/LC_MESSAGES/libiconv.mobin1810 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ro/LC_MESSAGES/bison-runtime.mobin1366 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ro/LC_MESSAGES/bison.mobin9948 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ro/LC_MESSAGES/libiconv.mobin1408 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ru/LC_MESSAGES/bison-runtime.mobin571 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ru/LC_MESSAGES/bison.mobin7718 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/ru/LC_MESSAGES/libiconv.mobin1793 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/sk/LC_MESSAGES/libiconv.mobin1780 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/sl/LC_MESSAGES/bison-runtime.mobin1513 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/sl/LC_MESSAGES/libiconv.mobin1808 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/sr/LC_MESSAGES/libiconv.mobin1989 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/sv/LC_MESSAGES/bison-runtime.mobin1238 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/sv/LC_MESSAGES/bison.mobin17501 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/sv/LC_MESSAGES/libiconv.mobin1716 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/th/LC_MESSAGES/bison-runtime.mobin1936 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/tr/LC_MESSAGES/bison-runtime.mobin509 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/tr/LC_MESSAGES/bison.mobin9654 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/tr/LC_MESSAGES/libiconv.mobin1778 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/uk/LC_MESSAGES/bison-runtime.mobin1781 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/uk/LC_MESSAGES/bison.mobin14418 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/uk/LC_MESSAGES/libiconv.mobin1809 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/vi/LC_MESSAGES/bison-runtime.mobin1423 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/vi/LC_MESSAGES/bison.mobin18090 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/wa/LC_MESSAGES/libiconv.mobin2007 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/zh_CN/LC_MESSAGES/bison-runtime.mobin1243 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/zh_CN/LC_MESSAGES/libiconv.mobin1743 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/zh_TW/LC_MESSAGES/bison-runtime.mobin1294 -> 0 bytes
-rw-r--r--gnuwin32/share/locale/zh_TW/LC_MESSAGES/bison.mobin10645 -> 0 bytes
-rwxr-xr-xinit-repository1
m---------qt3d0
m---------qtactiveqt0
m---------qtandroidextras0
m---------qtbase0
m---------qtcharts0
m---------qtconnectivity0
m---------qtdatavis3d0
m---------qtdeclarative0
m---------qtdoc0
m---------qtgamepad0
m---------qtgraphicaleffects0
m---------qtimageformats0
m---------qtlocation0
m---------qtlottie0
m---------qtmacextras0
m---------qtmultimedia0
m---------qtnetworkauth0
m---------qtpurchasing0
m---------qtqa0
m---------qtquick3d0
m---------qtquickcontrols0
m---------qtquickcontrols20
m---------qtquicktimeline0
m---------qtremoteobjects0
m---------qtrepotools0
m---------qtscript0
m---------qtscxml0
m---------qtsensors0
m---------qtserialbus0
m---------qtserialport0
m---------qtspeech0
m---------qtsvg0
m---------qttools0
m---------qttranslations0
m---------qtvirtualkeyboard0
m---------qtwayland0
m---------qtwebchannel0
m---------qtwebengine0
m---------qtwebglplugin0
m---------qtwebsockets0
m---------qtwebview0
m---------qtwinextras0
m---------qtx11extras0
m---------qtxmlpatterns0
214 files changed, 43 insertions, 27867 deletions
diff --git a/.gitmodules b/.gitmodules
index 930b43cd..ef01576e 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,60 +1,60 @@
[submodule "qtbase"]
path = qtbase
url = ../qtbase.git
- branch = 5.15
+ branch = dev
status = essential
[submodule "qtsvg"]
depends = qtbase
path = qtsvg
url = ../qtsvg.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtdeclarative"]
depends = qtbase
recommends = qtsvg
path = qtdeclarative
url = ../qtdeclarative.git
- branch = 5.15
+ branch = dev
status = essential
[submodule "qtactiveqt"]
depends = qtbase
path = qtactiveqt
url = ../qtactiveqt.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtscript"]
depends = qtbase
recommends = qttools
path = qtscript
url = ../qtscript.git
- branch = 5.15
+ branch = dev
status = deprecated
[submodule "qtmultimedia"]
depends = qtbase
recommends = qtdeclarative
path = qtmultimedia
url = ../qtmultimedia.git
- branch = 5.15
+ branch = dev
status = essential
[submodule "qttools"]
depends = qtbase
recommends = qtdeclarative qtactiveqt
path = qttools
url = ../qttools.git
- branch = 5.15
+ branch = dev
status = essential
[submodule "qtxmlpatterns"]
depends = qtbase
recommends = qtdeclarative
path = qtxmlpatterns
url = ../qtxmlpatterns.git
- branch = 5.15
+ branch = dev
status = deprecated
[submodule "qttranslations"]
depends = qttools
path = qttranslations
url = ../qttranslations.git
- branch = 5.15
+ branch = dev
status = essential
priority = 30
[submodule "qtdoc"]
@@ -62,7 +62,7 @@
recommends = qtmultimedia qtquickcontrols qtquickcontrols2
path = qtdoc
url = ../qtdoc.git
- branch = 5.15
+ branch = dev
status = essential
priority = 40
[submodule "qtrepotools"]
@@ -83,14 +83,14 @@
recommends = qtdeclarative qtquickcontrols qtquickcontrols2 qtserialport
path = qtlocation
url = ../qtlocation.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtsensors"]
depends = qtbase
recommends = qtdeclarative
path = qtsensors
url = ../qtsensors.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtsystems"]
depends = qtbase
@@ -123,99 +123,99 @@
recommends = qtdeclarative qtandroidextras
path = qtconnectivity
url = ../qtconnectivity.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtwayland"]
depends = qtbase
recommends = qtdeclarative
path = qtwayland
url = ../qtwayland.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qt3d"]
depends = qtbase
recommends = qtdeclarative qtimageformats qtgamepad
path = qt3d
url = ../qt3d.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtimageformats"]
depends = qtbase
path = qtimageformats
url = ../qtimageformats.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtgraphicaleffects"]
depends = qtdeclarative
path = qtgraphicaleffects
url = ../qtgraphicaleffects.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtquickcontrols"]
depends = qtdeclarative
recommends = qtgraphicaleffects
path = qtquickcontrols
url = ../qtquickcontrols.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtserialbus"]
depends = qtbase
recommends = qtserialport
path = qtserialbus
url = ../qtserialbus.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtserialport"]
depends = qtbase
path = qtserialport
url = ../qtserialport.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtx11extras"]
depends = qtbase
path = qtx11extras
url = ../qtx11extras.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtmacextras"]
depends = qtbase
path = qtmacextras
url = ../qtmacextras.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtwinextras"]
depends = qtbase
recommends = qtdeclarative qtmultimedia
path = qtwinextras
url = ../qtwinextras.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtandroidextras"]
depends = qtbase
path = qtandroidextras
url = ../qtandroidextras.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtwebsockets"]
depends = qtbase
recommends = qtdeclarative
path = qtwebsockets
url = ../qtwebsockets.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtwebchannel"]
depends = qtbase
recommends = qtdeclarative qtwebsockets
path = qtwebchannel
url = ../qtwebchannel.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtwebengine"]
depends = qtdeclarative
recommends = qtquickcontrols qtquickcontrols2 qtlocation qtwebchannel qttools
path = qtwebengine
url = ../qtwebengine.git
- branch = 5.15
+ branch = dev
status = addon
priority = 10
[submodule "qtcanvas3d"]
@@ -229,98 +229,98 @@
recommends = qtwebengine
path = qtwebview
url = ../qtwebview.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtquickcontrols2"]
depends = qtgraphicaleffects
recommends = qtimageformats
path = qtquickcontrols2
url = ../qtquickcontrols2.git
- branch = 5.15
+ branch = dev
status = essential
[submodule "qtpurchasing"]
depends = qtbase
recommends = qtdeclarative qtandroidextras
path = qtpurchasing
url = ../qtpurchasing.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtcharts"]
depends = qtbase
recommends = qtdeclarative qtmultimedia
path = qtcharts
url = ../qtcharts.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtdatavis3d"]
depends = qtbase
recommends = qtdeclarative qtmultimedia
path = qtdatavis3d
url = ../qtdatavis3d.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtvirtualkeyboard"]
depends = qtbase qtdeclarative qtsvg
recommends = qtmultimedia qtquickcontrols
path = qtvirtualkeyboard
url = ../qtvirtualkeyboard.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtgamepad"]
depends = qtbase
recommends = qtdeclarative
path = qtgamepad
url = ../qtgamepad.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtscxml"]
depends = qtbase qtdeclarative
path = qtscxml
url = ../qtscxml.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtspeech"]
depends = qtbase
recommends = qtdeclarative qtmultimedia
path = qtspeech
url = ../qtspeech.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtnetworkauth"]
depends = qtbase
path = qtnetworkauth
url = ../qtnetworkauth.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtremoteobjects"]
depends = qtbase
recommends = qtdeclarative
path = qtremoteobjects
url = ../qtremoteobjects.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtwebglplugin"]
depends = qtbase qtwebsockets
recommends = qtdeclarative
path = qtwebglplugin
url = ../qtwebglplugin.git
- branch = 5.15
+ branch = dev
status = addon
[submodule "qtlottie"]
depends = qtbase qtdeclarative
path = qtlottie
url = ../qtlottie.git
- branch = 5.15
+ branch = dev
status = preview
[submodule "qtquicktimeline"]
depends = qtbase qtdeclarative
path = qtquicktimeline
url = ../qtquicktimeline
- branch = 5.15
+ branch = dev
status = preview
[submodule "qtquick3d"]
depends = qtbase qtdeclarative
path = qtquick3d
url = ../qtquick3d.git
- branch = 5.15
+ branch = dev
status = preview
diff --git a/coin/platform_configs/default.yaml b/coin/platform_configs/default.yaml
index 5cbb2f68..753578a2 100644
--- a/coin/platform_configs/default.yaml
+++ b/coin/platform_configs/default.yaml
@@ -2,47 +2,11 @@ Version: 2
Module only: True
Configurations:
-
- Template: 'qtci-windows-10-x86_64-15'
- Compiler: 'MSVC2015'
- Features: ['DisableTests']
- Configure arguments: '-opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -developer-build -release -angle -qtnamespace TestNamespace -qtlibinfix TestInfix -nomake tests -openssl -I %OPENSSL_INCLUDE_x64% -L %OPENSSL_LIB_x64% -plugin-sql-mysql -plugin-sql-sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x64% -L %MYSQL_LIB_x64% -plugin-sql-psql -I %POSTGRESQL_INCLUDE_x64% -L %POSTGRESQL_LIB_x64%'
--
Template: 'qtci-windows-7-x86-3'
Compiler: 'Mingw73'
Configure arguments: '-opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -developer-build -release -nomake tests -opengl dynamic -nomake examples -openssl -I %OPENSSL_INCLUDE_x86% -L %OPENSSL_LIB_x86% -plugin-sql-mysql -plugin-sql-sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x86% -L %MYSQL_LIB_x86% -plugin-sql-psql -I %POSTGRESQL_INCLUDE_x86% -L %POSTGRESQL_LIB_x86% -platform win32-g++'
-
Template: 'qtci-windows-10-x86_64-15'
- Target arch: 'x86'
- Compiler: 'MSVC2017'
- Features: ['Packaging']
- Configure arguments: '-opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -debug-and-release -release -force-debug-info -nomake tests -opengl dynamic -nomake examples -openssl -I %OPENSSL_INCLUDE_x86% -L %OPENSSL_LIB_x86% -no-sql-mysql -plugin-sql-sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x86% -L %MYSQL_LIB_x86% -plugin-sql-psql -I %POSTGRESQL_INCLUDE_x86% -L %POSTGRESQL_LIB_x86%'
--
- Template: 'qtci-windows-10-x86_64-15'
- Target arch: 'x86'
- Compiler: 'MSVC2019'
- Features: ['DisableTests']
- Configure arguments: '-opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -debug-and-release -release -force-debug-info -nomake tests -opengl dynamic -nomake examples -openssl -I %OPENSSL_INCLUDE_x86% -L %OPENSSL_LIB_x86% -no-sql-mysql -plugin-sql-sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x86% -L %MYSQL_LIB_x86% -plugin-sql-psql -I %POSTGRESQL_INCLUDE_x86% -L %POSTGRESQL_LIB_x86%'
--
- Template: 'qtci-windows-10-x86_64-15'
- Compiler: 'MSVC2015'
- Features: ['Packaging', 'DisableTests']
- Configure arguments: '-opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -debug-and-release -release -force-debug-info -nomake tests -nomake examples -opengl dynamic -openssl -I %OPENSSL_INCLUDE_x64% -L %OPENSSL_LIB_x64% -no-sql-mysql -plugin-sql-sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x64% -L %MYSQL_LIB_x64% -plugin-sql-psql -I %POSTGRESQL_INCLUDE_x64% -L %POSTGRESQL_LIB_x64%'
--
- Template: 'qtci-windows-10-x86_64-15'
- Target os: 'WinRT_10'
- Target arch: 'x86'
- Compiler: 'MSVC2015'
- Features: ['DisableTests']
- Configure arguments: '-opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -debug-and-release -release -force-debug-info -nomake tests -nomake examples -no-sql-mysql -platform win32-msvc2015 -xplatform winrt-x86-msvc2015'
--
- Template: 'qtci-windows-10-x86_64-15'
- Target os: 'WinRT_10'
- Target arch: 'armv7'
- Compiler: 'MSVC2015'
- Features: ['Packaging', 'DisableTests']
- Configure arguments: '-opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -debug-and-release -release -force-debug-info -nomake tests -nomake examples -no-sql-mysql -platform win32-msvc2015 -xplatform winrt-arm-msvc2015'
--
- Template: 'qtci-windows-10-x86_64-15'
Compiler: 'MSVC2017'
Features: ['Packaging']
Configure arguments: '-opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -debug-and-release -release -force-debug-info -nomake tests -opengl dynamic -nomake examples -openssl -I %OPENSSL_INCLUDE_x64% -L %OPENSSL_LIB_x64% -no-sql-mysql -plugin-sql-sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x64% -L %MYSQL_LIB_x64% -plugin-sql-psql -I %POSTGRESQL_INCLUDE_x64% -L %POSTGRESQL_LIB_x64%'
@@ -54,21 +18,12 @@ Configurations:
-
Template: 'qtci-linux-Ubuntu-18.04-x86_64'
Compiler: 'GCC'
- Configure arguments: '-opensource -confirm-license -verbose -prefix /home/qt/work/install -developer-build -nomake tests -R . -qtlibinfix TestInfix -qtnamespace TestNamespace -openssl -I {{.Env.OPENSSL_HOME}}/include -L {{.Env.OPENSSL_HOME}}/lib'
--
- Template: 'qtci-linux-Ubuntu-18.04-x86_64'
- Compiler: 'GCC'
Configure arguments: '-opensource -confirm-license -verbose -prefix /home/qt/work/install -force-debug-info -nomake tests -no-widgets -R . -openssl -I {{.Env.OPENSSL_HOME}}/include -L {{.Env.OPENSSL_HOME}}/lib'
-
Template: 'qtci-linux-Ubuntu-18.04-x86_64'
Compiler: 'GCC'
Features: ['OutOfSourceBuild', 'Documentation']
Configure arguments: '-opensource -confirm-license -verbose -prefix /home/qt/work/install -developer-build -nomake tests -R . -qtlibinfix TestInfix -qtnamespace TestNamespace -openssl -I {{.Env.OPENSSL_HOME}}/include -L {{.Env.OPENSSL_HOME}}/lib'
-
--
- Template: 'qtci-linux-openSUSE-15.0-x86_64'
- Compiler: 'GCC'
- Configure arguments: '-opensource -confirm-license -verbose -prefix /home/qt/work/install -developer-build -nomake tests -nomake examples -no-pch -R . -openssl -I {{.Env.OPENSSL_HOME}}/include -L {{.Env.OPENSSL_HOME}}/lib'
-
Template: 'qtci-linux-openSUSE-15.0-x86_64'
Compiler: 'ICC_18'
@@ -161,13 +116,6 @@ Configurations:
Features: ['TestOnly', 'LicenseCheck']
-
Template: 'qtci-linux-RHEL-7.6-x86_64'
- Target os: 'INTEGRITY_11_04'
- Target arch: 'armv7'
- Compiler: 'GCC'
- Features: ['DisableTests']
- Configure arguments: '-opensource -confirm-license -verbose -prefix /home/qt/work/install -release -nomake tests -nomake examples -no-use-gold-linker -opengl es2 -xplatform integrity-armv7-imx6'
--
- Template: 'qtci-linux-RHEL-7.6-x86_64'
Target os: 'QNX_700'
Target arch: 'armv7'
Compiler: 'GCC'
diff --git a/coin/platform_configs/qtbase.yaml b/coin/platform_configs/qtbase.yaml
index 22e16db9..cb45370a 100644
--- a/coin/platform_configs/qtbase.yaml
+++ b/coin/platform_configs/qtbase.yaml
@@ -13,12 +13,6 @@
Features: ['DisableTests']
Configure arguments: '-opensource -confirm-license -verbose -prefix /home/qt/work/install -developer-build -nomake tests -nomake examples -no-xcb -R . -openssl -device linux-generic-g++ -device-option CROSS_COMPILE=/opt/yocto-arm64/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux- -device-option DISTRO_OPTS=boot2qt -sysroot /opt/yocto-arm64/sysroots/aarch64-poky-linux -extprefix /home/qt/work/install -mysql_config /opt/yocto-arm64/sysroots/aarch64-poky-linux/usr/bin/mysql_config -psql_config /dev/null -tslib'
-
- Template: 'qtci-windows-10-x86_64-15'
- Target os: 'WinRT_10'
- Target arch: 'x86_64'
- Compiler: 'MSVC2015'
- Configure arguments: '-opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -release -developer-build -static -nomake tests -nomake examples -no-icu -force-debug-info -platform win32-msvc2015 -xplatform winrt-x64-msvc2015'
--
Template: 'qtci-linux-openSUSE-15.0-x86_64'
Target os: 'WebAssembly'
Compiler: 'GCC'
diff --git a/coin/platform_configs/qtconnectivity.yaml b/coin/platform_configs/qtconnectivity.yaml
deleted file mode 100644
index 13daa23d..00000000
--- a/coin/platform_configs/qtconnectivity.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
--
- Template: 'qtci-windows-10-x86_64-15'
- Target os: 'WinRT_10'
- Target arch: 'x86_64'
- Compiler: 'MSVC2015'
- Configure arguments: '-opensource -confirm-license -verbose -prefix c:\Users\qt\work\install -release -developer-build -static -nomake tests -nomake examples -no-icu -force-debug-info -platform win32-msvc2015 -xplatform winrt-x64-msvc2015'
diff --git a/gnuwin32/README b/gnuwin32/README
deleted file mode 100644
index c3a43063..00000000
--- a/gnuwin32/README
+++ /dev/null
@@ -1,9 +0,0 @@
-This directory contains the Windows binaries of various tools such as bison
-from the GnuWin32 project (http://gnuwin32.sourceforge.net/). We've put them
-here for your convenience, as they are needed to build projects such as
-QtWebKit.
-
-Aside from GnuWin32 binaries this directory also contains a distribution of Win
-flex-bison project (http://sourceforge.net/projects/winflexbison/), which provides
-much newer ports of Flex and Bison than what GnuWin32 provides.
-
diff --git a/gnuwin32/bin/bison.exe b/gnuwin32/bin/bison.exe
deleted file mode 100755
index 035eb2a4..00000000
--- a/gnuwin32/bin/bison.exe
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/bin/data/README b/gnuwin32/bin/data/README
deleted file mode 100644
index 842c0041..00000000
--- a/gnuwin32/bin/data/README
+++ /dev/null
@@ -1,70 +0,0 @@
--*- outline -*-
-
-This directory contains data needed by Bison.
-
-* Skeletons
-Bison skeletons: the general shapes of the different parser kinds,
-that are specialized for specific grammars by the bison program.
-
-Currently, the supported skeletons are:
-
-- yacc.c
- It used to be named bison.simple: it corresponds to C Yacc
- compatible LALR(1) parsers.
-
-- lalr1.cc
- Produces a C++ parser class.
-
-- lalr1.java
- Produces a Java parser class.
-
-- glr.c
- A Generalized LR C parser based on Bison's LALR(1) tables.
-
-- glr.cc
- A Generalized LR C++ parser. Actually a C++ wrapper around glr.c.
-
-These skeletons are the only ones supported by the Bison team.
-Because the interface between skeletons and the bison program is not
-finished, *we are not bound to it*. In particular, Bison is not
-mature enough for us to consider that "foreign skeletons" are
-supported.
-
-* m4sugar
-This directory contains M4sugar, sort of an extended library for M4,
-which is used by Bison to instantiate the skeletons.
-
-* xslt
-This directory contains XSLT programs that transform Bison's XML output
-into various formats.
-
-- bison.xsl
- A library of routines used by the other XSLT programs.
-
-- xml2dot.xsl
- Conversion into GraphViz's dot format.
-
-- xml2text.xsl
- Conversion into text.
-
-- xml2xhtml.xsl
- Conversion into XHTML.
-
------
-
-Copyright (C) 2002, 2008-2013 Free Software Foundation, Inc.
-
-This file is part of GNU Bison.
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/gnuwin32/bin/data/bison.m4 b/gnuwin32/bin/data/bison.m4
deleted file mode 100644
index ca27159c..00000000
--- a/gnuwin32/bin/data/bison.m4
+++ /dev/null
@@ -1,1063 +0,0 @@
- -*- Autoconf -*-
-
-# Language-independent M4 Macros for Bison.
-
-# Copyright (C) 2002, 2004-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-## ---------------- ##
-## Identification. ##
-## ---------------- ##
-
-# b4_copyright(TITLE, [YEARS])
-# ----------------------------
-# If YEARS are not defined, use b4_copyright_years.
-m4_define([b4_copyright],
-[b4_comment([A Bison parser, made by GNU Bison b4_version.])
-
-b4_comment([$1
-
-]m4_dquote(m4_text_wrap([Copyright (C)
-]m4_ifval([$2], [[$2]], [m4_defn([b4_copyright_years])])[
-Free Software Foundation, Inc.]))[
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.])
-
-b4_comment([As a special exception, you may create a larger work that contains
-part or all of the Bison parser skeleton and distribute that work
-under terms of your choice, so long as that work isn't itself a
-parser generator using the skeleton or a modified version thereof
-as a parser skeleton. Alternatively, if you modify or redistribute
-the parser skeleton itself, you may (at your option) remove this
-special exception, which will cause the skeleton and the resulting
-Bison output files to be licensed under the GNU General Public
-License without this special exception.
-
-This special exception was added by the Free Software Foundation in
-version 2.2 of Bison.])])
-
-
-## -------- ##
-## Output. ##
-## -------- ##
-
-# b4_output_begin(FILE)
-# ---------------------
-# Enable output, i.e., send to diversion 0, expand after "#", and
-# generate the tag to output into FILE. Must be followed by EOL.
-m4_define([b4_output_begin],
-[m4_changecom()
-m4_divert_push(0)dnl
-@output(m4_unquote([$1])@)@dnl
-])
-
-
-# b4_output_end()
-# ---------------
-# Output nothing, restore # as comment character (no expansions after #).
-m4_define([b4_output_end],
-[m4_divert_pop(0)
-m4_changecom([#])
-])
-
-
-# b4_divert_kill(CODE)
-# --------------------
-# Expand CODE for its side effects, discard its output.
-m4_define([b4_divert_kill],
-[m4_divert_text([KILL], [$1])])
-
-
-# b4_define_silent(MACRO, CODE)
-# -----------------------------
-# Same as m4_define, but throw away the expansion of CODE.
-m4_define([b4_define_silent],
-[m4_define([$1], [b4_divert_kill([$2])])])
-
-
-## ---------------- ##
-## Error handling. ##
-## ---------------- ##
-
-# The following error handling macros print error directives that should not
-# become arguments of other macro invocations since they would likely then be
-# mangled. Thus, they print to stdout directly.
-
-# b4_cat(TEXT)
-# ------------
-# Write TEXT to stdout. Precede the final newline with an @ so that it's
-# escaped. For example:
-#
-# b4_cat([[@complain(invalid input@)]])
-m4_define([b4_cat],
-[m4_syscmd([cat <<'_m4eof'
-]m4_bpatsubst(m4_dquote($1), [_m4eof], [_m4@`eof])[@
-_m4eof
-])dnl
-m4_if(m4_sysval, [0], [], [m4_fatal([$0: cannot write to stdout])])])
-
-# b4_error(KIND, START, END, FORMAT, [ARG1], [ARG2], ...)
-# -------------------------------------------------------
-# Write @KIND(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout.
-#
-# For example:
-#
-# b4_error([[complain]], [[input.y:2.3]], [[input.y:5.4]],
-# [[invalid %s]], [[foo]])
-m4_define([b4_error],
-[b4_cat([[@complain][(]$1[@,]$2[@,]$3[@,]$4[]]dnl
-[m4_if([$#], [4], [],
- [m4_foreach([b4_arg],
- m4_dquote(m4_shift(m4_shift(m4_shift(m4_shift($@))))),
- [[@,]b4_arg])])[@)]])])
-
-# b4_warn(FORMAT, [ARG1], [ARG2], ...)
-# ------------------------------------
-# Write @warn(FORMAT@,ARG1@,ARG2@,...@) to stdout.
-#
-# For example:
-#
-# b4_warn([[invalid value for '%s': %s]], [[foo]], [[3]])
-#
-# As a simple test suite, this:
-#
-# m4_divert(-1)
-# m4_define([asdf], [ASDF])
-# m4_define([fsa], [FSA])
-# m4_define([fdsa], [FDSA])
-# b4_warn_at([[[asdf), asdf]]], [[[fsa), fsa]]], [[[fdsa), fdsa]]])
-# b4_warn_at([[asdf), asdf]], [[fsa), fsa]], [[fdsa), fdsa]])
-# b4_warn_at()
-# b4_warn_at(1)
-# b4_warn_at(1, 2)
-#
-# Should produce this without newlines:
-#
-# @warn_at([asdf), asdf]@,@,@,[fsa), fsa]@,[fdsa), fdsa]@)
-# @warn(asdf), asdf@,@,@,fsa), fsa@,fdsa), fdsa@)
-# @warn(@)
-# @warn(1@)
-# @warn(1@,2@)
-m4_define([b4_warn],
-[b4_error([[warn]], [], [], $@)])
-
-# b4_warn_at(START, END, FORMAT, [ARG1], [ARG2], ...)
-# ---------------------------------------------------
-# Write @warn(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout.
-#
-# For example:
-#
-# b4_warn_at([[input.y:2.3]], [[input.y:5.4]], [[invalid %s]], [[foo]])
-m4_define([b4_warn_at],
-[b4_error([[warn]], $@)])
-
-# b4_complain(FORMAT, [ARG1], [ARG2], ...)
-# ----------------------------------------
-# Bounce to b4_complain_at.
-#
-# See b4_warn example.
-m4_define([b4_complain],
-[b4_error([[complain]], [], [], $@)])
-
-# b4_complain_at(START, END, FORMAT, [ARG1], [ARG2], ...)
-# -------------------------------------------------------
-# Write @complain(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout.
-#
-# See b4_warn_at example.
-m4_define([b4_complain_at],
-[b4_error([[complain]], $@)])
-
-# b4_fatal(FORMAT, [ARG1], [ARG2], ...)
-# -------------------------------------
-# Bounce to b4_fatal_at.
-#
-# See b4_warn example.
-m4_define([b4_fatal],
-[b4_error([[fatal]], [], [], $@)dnl
-m4_exit(1)])
-
-# b4_fatal_at(START, END, FORMAT, [ARG1], [ARG2], ...)
-# ----------------------------------------------------
-# Write @fatal(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout and exit.
-#
-# See b4_warn_at example.
-m4_define([b4_fatal_at],
-[b4_error([[fatal]], $@)dnl
-m4_exit(1)])
-
-
-## ------------ ##
-## Data Types. ##
-## ------------ ##
-
-# b4_ints_in(INT1, INT2, LOW, HIGH)
-# ---------------------------------
-# Return 1 iff both INT1 and INT2 are in [LOW, HIGH], 0 otherwise.
-m4_define([b4_ints_in],
-[m4_eval([$3 <= $1 && $1 <= $4 && $3 <= $2 && $2 <= $4])])
-
-
-# b4_subtract(LHS, RHS)
-# ---------------------
-# Evaluate LHS - RHS if they are integer literals, otherwise expand
-# to (LHS) - (RHS).
-m4_define([b4_subtract],
-[m4_bmatch([$1$2], [^[0123456789]*$],
- [m4_eval([$1 - $2])],
- [($1) - ($2)])])
-
-# b4_join(ARG1, ...)
-# _b4_join(ARG1, ...)
-# -------------------
-# Join with comma, skipping empty arguments.
-# b4_join calls itself recursively until it sees the first non-empty
-# argument, then calls _b4_join which prepends each non-empty argument
-# with a comma.
-m4_define([b4_join],
-[m4_if([$#$1],
- [1], [],
- [m4_ifval([$1],
- [$1[]_$0(m4_shift($@))],
- [$0(m4_shift($@))])])])
-
-# _b4_join(ARGS1, ...)
-# --------------------
-m4_define([_b4_join],
-[m4_if([$#$1],
- [1], [],
- [m4_ifval([$1], [, $1])[]$0(m4_shift($@))])])
-
-
-
-
-# b4_integral_parser_tables_map(MACRO)
-# -------------------------------------
-# Map MACRO on all the integral tables. MACRO is expected to have
-# the signature MACRO(TABLE-NAME, CONTENT, COMMENT).
-m4_define([b4_integral_parser_tables_map],
-[$1([pact], [b4_pact],
- [[YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-STATE-NUM.]])
-
-$1([defact], [b4_defact],
- [[YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-Performed when YYTABLE does not specify something else to do. Zero
-means the default is an error.]])
-
-$1([pgoto], [b4_pgoto], [[YYPGOTO[NTERM-NUM].]])
-
-$1([defgoto], [b4_defgoto], [[YYDEFGOTO[NTERM-NUM].]])
-
-$1([table], [b4_table],
- [[YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
-positive, shift that token. If negative, reduce the rule whose
-number is the opposite. If YYTABLE_NINF, syntax error.]])
-
-$1([check], [b4_check])
-
-$1([stos], [b4_stos],
- [[YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-symbol of state STATE-NUM.]])
-
-$1([r1], [b4_r1],
- [[YYR1[YYN] -- Symbol number of symbol that rule YYN derives.]])
-
-$1([r2], [b4_r2],
- [[YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.]])
-])
-
-
-# b4_parser_tables_declare
-# b4_parser_tables_define
-# ------------------------
-# Define/declare the (deterministic) parser tables.
-m4_define([b4_parser_tables_declare],
-[b4_integral_parser_tables_map([b4_integral_parser_table_declare])])
-
-m4_define([b4_parser_tables_define],
-[b4_integral_parser_tables_map([b4_integral_parser_table_define])])
-
-
-
-## ------------------ ##
-## Decoding options. ##
-## ------------------ ##
-
-# b4_flag_if(FLAG, IF-TRUE, IF-FALSE)
-# -----------------------------------
-# Run IF-TRUE if b4_FLAG_flag is 1, IF-FALSE if FLAG is 0, otherwise fail.
-m4_define([b4_flag_if],
-[m4_case(b4_$1_flag,
- [0], [$3],
- [1], [$2],
- [m4_fatal([invalid $1 value: ]b4_$1_flag)])])
-
-
-# b4_define_flag_if(FLAG)
-# -----------------------
-# Define "b4_FLAG_if(IF-TRUE, IF-FALSE)" that depends on the
-# value of the Boolean FLAG.
-m4_define([b4_define_flag_if],
-[_b4_define_flag_if($[1], $[2], [$1])])
-
-# _b4_define_flag_if($1, $2, FLAG)
-# --------------------------------
-# Work around the impossibility to define macros inside macros,
-# because issuing '[$1]' is not possible in M4. GNU M4 should provide
-# $$1 a la M5/TeX.
-m4_define([_b4_define_flag_if],
-[m4_if([$1$2], $[1]$[2], [],
- [m4_fatal([$0: Invalid arguments: $@])])dnl
-m4_define([b4_$3_if],
- [b4_flag_if([$3], [$1], [$2])])])
-
-
-# b4_FLAG_if(IF-TRUE, IF-FALSE)
-# -----------------------------
-# Expand IF-TRUE, if FLAG is true, IF-FALSE otherwise.
-b4_define_flag_if([defines]) # Whether headers are requested.
-b4_define_flag_if([glr]) # Whether a GLR parser is requested.
-b4_define_flag_if([nondeterministic]) # Whether conflicts should be handled.
-b4_define_flag_if([token_table]) # Whether yytoken_table is demanded.
-b4_define_flag_if([yacc]) # Whether POSIX Yacc is emulated.
-
-
-## --------- ##
-## Symbols. ##
-## --------- ##
-
-# In order to unify the handling of the various aspects of symbols
-# (tag, type_name, whether terminal, etc.), bison.exe defines one
-# macro per (token, field), where field can has_id, id, etc.: see
-# src/output.c:prepare_symbols_definitions().
-#
-# The various FIELDS are:
-#
-# - has_id: 0 or 1.
-# Whether the symbol has an id.
-# - id: string
-# If has_id, the id. Guaranteed to be usable as a C identifier.
-# Prefixed by api.token.prefix if defined.
-# - tag: string.
-# A representat of the symbol. Can be 'foo', 'foo.id', '"foo"' etc.
-# - user_number: integer
-# The assigned (external) number as used by yylex.
-# - is_token: 0 or 1
-# Whether this is a terminal symbol.
-# - number: integer
-# The internalized number (used after yytranslate).
-# - has_type: 0, 1
-# Whether has a semantic value.
-# - type_tag: string
-# When api.value.type=union, the generated name for the union member.
-# yytype_INT etc. for symbols that has_id, otherwise yytype_1 etc.
-# - type
-# If it has a semantic value, its type tag, or, if variant are used,
-# its type.
-# In the case of api.value.type=union, type is the real type (e.g. int).
-# - has_printer: 0, 1
-# - printer: string
-# - printer_file: string
-# - printer_line: integer
-# If the symbol has a printer, everything about it.
-# - has_destructor, destructor, destructor_file, destructor_line
-# Likewise.
-#
-# The following macros provide access to these values.
-
-# b4_symbol_(NUM, FIELD)
-# ----------------------
-# Recover a FIELD about symbol #NUM. Thanks to m4_indir, fails if
-# undefined.
-m4_define([b4_symbol_],
-[m4_indir([b4_symbol($1, $2)])])
-
-
-# b4_symbol(NUM, FIELD)
-# ---------------------
-# Recover a FIELD about symbol #NUM. Thanks to m4_indir, fails if
-# undefined. If FIELD = id, prepend the token prefix.
-m4_define([b4_symbol],
-[m4_case([$2],
- [id], [m4_do([b4_percent_define_get([api.token.prefix])],
- [b4_symbol_([$1], [id])])],
- [b4_symbol_($@)])])
-
-
-# b4_symbol_if(NUM, FIELD, IF-TRUE, IF-FALSE)
-# -------------------------------------------
-# If FIELD about symbol #NUM is 1 expand IF-TRUE, if is 0, expand IF-FALSE.
-# Otherwise an error.
-m4_define([b4_symbol_if],
-[m4_case(b4_symbol([$1], [$2]),
- [1], [$3],
- [0], [$4],
- [m4_fatal([$0: field $2 of $1 is not a Boolean:] b4_symbol([$1], [$2]))])])
-
-
-# b4_symbol_tag_comment(SYMBOL-NUM)
-# ---------------------------------
-# Issue a comment giving the tag of symbol NUM.
-m4_define([b4_symbol_tag_comment],
-[b4_comment([b4_symbol([$1], [tag])])
-])
-
-
-# b4_symbol_action_location(SYMBOL-NUM, KIND)
-# -------------------------------------------
-# Report the location of the KIND action as FILE:LINE.
-m4_define([b4_symbol_action_location],
-[b4_symbol([$1], [$2_file]):b4_syncline([b4_symbol([$1], [$2_line])])])
-
-
-# b4_symbol_action(SYMBOL-NUM, KIND)
-# ----------------------------------
-# Run the action KIND (destructor or printer) for SYMBOL-NUM.
-# Same as in C, but using references instead of pointers.
-m4_define([b4_symbol_action],
-[b4_symbol_if([$1], [has_$2],
-[b4_dollar_pushdef([(*yyvaluep)],
- b4_symbol_if([$1], [has_type],
- [m4_dquote(b4_symbol([$1], [type]))]),
- [(*yylocationp)])dnl
- b4_symbol_case_([$1])[]dnl
-b4_syncline([b4_symbol([$1], [$2_line])], ["b4_symbol([$1], [$2_file])"])
- b4_symbol([$1], [$2])
-b4_syncline([@oline@], [@ofile@])
- break;
-
-b4_dollar_popdef[]dnl
-])])
-
-
-# b4_symbol_destructor(SYMBOL-NUM)
-# b4_symbol_printer(SYMBOL-NUM)
-# --------------------------------
-m4_define([b4_symbol_destructor], [b4_symbol_action([$1], [destructor])])
-m4_define([b4_symbol_printer], [b4_symbol_action([$1], [printer])])
-
-
-# b4_symbol_actions(KIND, [TYPE = yytype])
-# ----------------------------------------
-# Emit the symbol actions for KIND ("printer" or "destructor").
-# Dispatch on TYPE.
-m4_define([b4_symbol_actions],
-[m4_pushdef([b4_actions_], m4_expand([b4_symbol_foreach([b4_symbol_$1])]))dnl
-m4_ifval(m4_defn([b4_actions_]),
-[switch (m4_default([$2], [yytype]))
- {
- m4_defn([b4_actions_])
- default:
- break;
- }dnl
-],
-[YYUSE (m4_default([$2], [yytype]));])dnl
-m4_popdef([b4_actions_])dnl
-])
-
-# b4_symbol_case_(SYMBOL-NUM)
-# ---------------------------
-# Issue a "case NUM" for SYMBOL-NUM.
-m4_define([b4_symbol_case_],
-[case b4_symbol([$1], [number]): b4_symbol_tag_comment([$1])])
-])
-
-
-# b4_symbol_foreach(MACRO)
-# ------------------------
-# Invoke MACRO(SYMBOL-NUM) for each SYMBOL-NUM.
-m4_define([b4_symbol_foreach],
- [m4_map([$1], m4_defn([b4_symbol_numbers]))])
-
-# b4_symbol_map(MACRO)
-# --------------------
-# Return a list (possibly empty elements) of MACRO invoked for each
-# SYMBOL-NUM.
-m4_define([b4_symbol_map],
-[m4_map_args_sep([$1(], [)], [,], b4_symbol_numbers)])
-
-
-# b4_token_visible_if(NUM, IF-TRUE, IF-FALSE)
-# -------------------------------------------
-# Whether NUM denotes a token that has an exported definition (i.e.,
-# shows in enum yytokentype).
-m4_define([b4_token_visible_if],
-[b4_symbol_if([$1], [is_token],
- [b4_symbol_if([$1], [has_id], [$2], [$3])],
- [$3])])
-
-# b4_token_has_definition(NUM)
-# ----------------------------
-# 1 if NUM is visible, nothing otherwise.
-m4_define([b4_token_has_definition],
-[b4_token_visible_if([$1], [1])])
-
-# b4_any_token_visible_if([IF-TRUE], [IF-FALSE])
-# ----------------------------------------------
-# Whether there is a token that needs to be defined.
-m4_define([b4_any_token_visible_if],
-[m4_ifval(b4_symbol_foreach([b4_token_has_definition]),
- [$1], [$2])])
-
-
-# b4_token_format(FORMAT, NUM)
-# ----------------------------
-m4_define([b4_token_format],
-[b4_token_visible_if([$2],
-[m4_quote(m4_format([$1],
- [b4_symbol([$2], [id])],
- [b4_symbol([$2], [user_number])]))])])
-
-
-## ------- ##
-## Types. ##
-## ------- ##
-
-# b4_type_action_(NUMS)
-# ---------------------
-# Run actions for the symbol NUMS that all have the same type-name.
-# Skip NUMS that have no type-name.
-#
-# To specify the action to run, define b4_dollar_dollar(NUMBER,
-# TAG, TYPE).
-m4_define([b4_type_action_],
-[b4_symbol_if([$1], [has_type],
-[m4_map([ b4_symbol_case_], [$@])[]dnl
- b4_dollar_dollar([b4_symbol([$1], [number])],
- [b4_symbol([$1], [tag])],
- [b4_symbol([$1], [type])]);
- break;
-
-])])
-
-# b4_type_foreach(MACRO)
-# ----------------------
-# Invoke MACRO(SYMBOL-NUMS) for each set of SYMBOL-NUMS for each type set.
-m4_define([b4_type_foreach],
- [m4_map([$1], m4_defn([b4_type_names]))])
-
-
-
-## ----------- ##
-## Synclines. ##
-## ----------- ##
-
-# b4_basename(NAME)
-# -----------------
-# Similar to POSIX basename; the differences don't matter here.
-# Beware that NAME is not evaluated.
-m4_define([b4_basename],
-[m4_bpatsubst([$1], [^.*/\([^/]+\)/*$], [\1])])
-
-
-# b4_syncline(LINE, FILE)
-# -----------------------
-m4_define([b4_syncline],
-[b4_flag_if([synclines],
-[b4_sync_start([$1], [$2]) b4_sync_end([__line__],
- [b4_basename(m4_quote(__file__))])[]dnl
-])])
-
-# b4_sync_start(LINE, FILE)
-# -----------------------
-# Syncline for the new place. Typically a directive for the compiler.
-m4_define([b4_sync_start], [b4_comment([$2:$1])])
-
-# b4_sync_end(LINE, FILE)
-# -----------------------
-# Syncline for the current place, which ends. Typically a comment
-# left for the reader.
-m4_define([b4_sync_end], [b4_comment([$2:$1])])
-
-
-# b4_user_code(USER-CODE)
-# -----------------------
-# Emit code from the user, ending it with synclines.
-m4_define([b4_user_code],
-[$1
-b4_syncline([@oline@], [@ofile@])])
-
-
-# b4_define_user_code(MACRO)
-# --------------------------
-# From b4_MACRO, build b4_user_MACRO that includes the synclines.
-m4_define([b4_define_user_code],
-[m4_define([b4_user_$1],
-[b4_user_code([b4_$1])])])
-
-
-# b4_user_actions
-# b4_user_initial_action
-# b4_user_post_prologue
-# b4_user_pre_prologue
-# b4_user_union_members
-# ----------------------
-# Macros that issue user code, ending with synclines.
-b4_define_user_code([actions])
-b4_define_user_code([initial_action])
-b4_define_user_code([post_prologue])
-b4_define_user_code([pre_prologue])
-b4_define_user_code([union_members])
-
-
-# b4_check_user_names(WHAT, USER-LIST, BISON-NAMESPACE)
-# -----------------------------------------------------
-# Complain if any name of type WHAT is used by the user (as recorded in
-# USER-LIST) but is not used by Bison (as recorded by macros in the
-# namespace BISON-NAMESPACE).
-#
-# USER-LIST must expand to a list specifying all user occurrences of all names
-# of type WHAT. Each item in the list must be a triplet specifying one
-# occurrence: name, start boundary, and end boundary. Empty string names are
-# fine. An empty list is fine.
-#
-# For example, to define b4_foo_user_names to be used for USER-LIST with three
-# name occurrences and with correct quoting:
-#
-# m4_define([b4_foo_user_names],
-# [[[[[[bar]], [[parser.y:1.7]], [[parser.y:1.16]]]],
-# [[[[bar]], [[parser.y:5.7]], [[parser.y:5.16]]]],
-# [[[[baz]], [[parser.y:8.7]], [[parser.y:8.16]]]]]])
-#
-# The macro BISON-NAMESPACE(bar) must be defined iff the name bar of type WHAT
-# is used by Bison (in the front-end or in the skeleton). Empty string names
-# are fine, but it would be ugly for Bison to actually use one.
-#
-# For example, to use b4_foo_bison_names for BISON-NAMESPACE and define that
-# the names bar and baz are used by Bison:
-#
-# m4_define([b4_foo_bison_names(bar)])
-# m4_define([b4_foo_bison_names(baz)])
-#
-# To invoke b4_check_user_names with TYPE foo, with USER-LIST
-# b4_foo_user_names, with BISON-NAMESPACE b4_foo_bison_names, and with correct
-# quoting:
-#
-# b4_check_user_names([[foo]], [b4_foo_user_names],
-# [[b4_foo_bison_names]])
-m4_define([b4_check_user_names],
-[m4_foreach([b4_occurrence], $2,
-[m4_pushdef([b4_occurrence], b4_occurrence)dnl
-m4_pushdef([b4_user_name], m4_car(b4_occurrence))dnl
-m4_pushdef([b4_start], m4_car(m4_shift(b4_occurrence)))dnl
-m4_pushdef([b4_end], m4_shift(m4_shift(b4_occurrence)))dnl
-m4_ifndef($3[(]m4_quote(b4_user_name)[)],
- [b4_complain_at([b4_start], [b4_end],
- [[%s '%s' is not used]],
- [$1], [b4_user_name])])[]dnl
-m4_popdef([b4_occurrence])dnl
-m4_popdef([b4_user_name])dnl
-m4_popdef([b4_start])dnl
-m4_popdef([b4_end])dnl
-])])
-
-
-
-## --------------------- ##
-## b4_percent_define_*. ##
-## --------------------- ##
-
-
-# b4_percent_define_use(VARIABLE)
-# -------------------------------
-# Declare that VARIABLE was used.
-m4_define([b4_percent_define_use],
-[m4_define([b4_percent_define_bison_variables(]$1[)])dnl
-])
-
-# b4_percent_define_get(VARIABLE, [DEFAULT])
-# ------------------------------------------
-# Mimic muscle_percent_define_get in ../src/muscle-tab.h. That is, if
-# the %define variable VARIABLE is defined, emit its value. Contrary
-# to its C counterpart, return DEFAULT otherwise. Also, record
-# Bison's usage of VARIABLE by defining
-# b4_percent_define_bison_variables(VARIABLE).
-#
-# For example:
-#
-# b4_percent_define_get([[foo]])
-m4_define([b4_percent_define_get],
-[b4_percent_define_use([$1])dnl
-b4_percent_define_ifdef_([$1],
- [m4_indir([b4_percent_define(]$1[)])],
- [$2])])
-
-# b4_percent_define_get_loc(VARIABLE)
-# -----------------------------------
-# Mimic muscle_percent_define_get_loc in ../src/muscle-tab.h exactly. That is,
-# if the %define variable VARIABLE is undefined, complain fatally since that's
-# a Bison or skeleton error. Otherwise, return its definition location in a
-# form approriate for the first two arguments of b4_warn_at, b4_complain_at, or
-# b4_fatal_at. Don't record this as a Bison usage of VARIABLE as there's no
-# reason to suspect that the user-supplied value has yet influenced the output.
-#
-# For example:
-#
-# b4_complain_at(b4_percent_define_get_loc([[foo]]), [[invalid foo]])
-m4_define([b4_percent_define_get_loc],
-[m4_ifdef([b4_percent_define_loc(]$1[)],
- [m4_pushdef([b4_loc], m4_indir([b4_percent_define_loc(]$1[)]))dnl
-b4_loc[]dnl
-m4_popdef([b4_loc])],
- [b4_fatal([[$0: undefined %%define variable '%s']], [$1])])])
-
-# b4_percent_define_get_kind(VARIABLE)
-# ------------------------------------
-# Get the kind (code, keyword, string) of VARIABLE, i.e., how its
-# value was defined (braces, not delimiters, quotes).
-#
-# If the %define variable VARIABLE is undefined, complain fatally
-# since that's a Bison or skeleton error. Don't record this as a
-# Bison usage of VARIABLE as there's no reason to suspect that the
-# user-supplied value has yet influenced the output.
-m4_define([b4_percent_define_get_kind],
-[m4_ifdef([b4_percent_define_kind(]$1[)],
- [m4_indir([b4_percent_define_kind(]$1[)])],
- [b4_fatal([[$0: undefined %%define variable '%s']], [$1])])])
-
-# b4_percent_define_get_syncline(VARIABLE)
-# ----------------------------------------
-# Mimic muscle_percent_define_get_syncline in ../src/muscle-tab.h exactly.
-# That is, if the %define variable VARIABLE is undefined, complain fatally
-# since that's a Bison or skeleton error. Otherwise, return its definition
-# location as a b4_syncline invocation. Don't record this as a Bison usage of
-# VARIABLE as there's no reason to suspect that the user-supplied value has yet
-# influenced the output.
-#
-# For example:
-#
-# b4_percent_define_get_syncline([[foo]])
-m4_define([b4_percent_define_get_syncline],
-[m4_ifdef([b4_percent_define_syncline(]$1[)],
- [m4_indir([b4_percent_define_syncline(]$1[)])],
- [b4_fatal([[$0: undefined %%define variable '%s']], [$1])])])
-
-# b4_percent_define_ifdef_(VARIABLE, IF-TRUE, [IF-FALSE])
-# ------------------------------------------------------
-# If the %define variable VARIABLE is defined, expand IF-TRUE, else expand
-# IF-FALSE. Don't record usage of VARIABLE.
-#
-# For example:
-#
-# b4_percent_define_ifdef_([[foo]], [[it's defined]], [[it's undefined]])
-m4_define([b4_percent_define_ifdef_],
-[m4_ifdef([b4_percent_define(]$1[)],
- [$2],
- [$3])])
-
-# b4_percent_define_ifdef(VARIABLE, IF-TRUE, [IF-FALSE])
-# ------------------------------------------------------
-# Mimic muscle_percent_define_ifdef in ../src/muscle-tab.h exactly. That is,
-# if the %define variable VARIABLE is defined, expand IF-TRUE, else expand
-# IF-FALSE. Also, record Bison's usage of VARIABLE by defining
-# b4_percent_define_bison_variables(VARIABLE).
-#
-# For example:
-#
-# b4_percent_define_ifdef([[foo]], [[it's defined]], [[it's undefined]])
-m4_define([b4_percent_define_ifdef],
-[b4_percent_define_ifdef_([$1],
- [b4_percent_define_use([$1])$2],
- [$3])])
-
-
-## --------- ##
-## Options. ##
-## --------- ##
-
-
-# b4_percent_define_flag_if(VARIABLE, IF-TRUE, [IF-FALSE])
-# --------------------------------------------------------
-# Mimic muscle_percent_define_flag_if in ../src/muscle-tab.h exactly. That is,
-# if the %define variable VARIABLE is defined to "" or "true", expand IF-TRUE.
-# If it is defined to "false", expand IF-FALSE. Complain if it is undefined
-# (a Bison or skeleton error since the default value should have been set
-# already) or defined to any other value (possibly a user error). Also, record
-# Bison's usage of VARIABLE by defining
-# b4_percent_define_bison_variables(VARIABLE).
-#
-# For example:
-#
-# b4_percent_define_flag_if([[foo]], [[it's true]], [[it's false]])
-m4_define([b4_percent_define_flag_if],
-[b4_percent_define_ifdef([$1],
- [m4_case(b4_percent_define_get([$1]),
- [], [$2], [true], [$2], [false], [$3],
- [m4_expand_once([b4_complain_at(b4_percent_define_get_loc([$1]),
- [[invalid value for %%define Boolean variable '%s']],
- [$1])],
- [[b4_percent_define_flag_if($1)]])])],
- [b4_fatal([[$0: undefined %%define variable '%s']], [$1])])])
-
-
-# b4_percent_define_default(VARIABLE, DEFAULT, [KIND = keyword])
-# --------------------------------------------------------------
-# Mimic muscle_percent_define_default in ../src/muscle-tab.h exactly. That is,
-# if the %define variable VARIABLE is undefined, set its value to DEFAULT.
-# Don't record this as a Bison usage of VARIABLE as there's no reason to
-# suspect that the value has yet influenced the output.
-#
-# For example:
-#
-# b4_percent_define_default([[foo]], [[default value]])
-m4_define([b4_percent_define_default],
-[b4_percent_define_ifdef_([$1], [],
- [m4_define([b4_percent_define(]$1[)], [$2])dnl
- m4_define([b4_percent_define_kind(]$1[)],
- [m4_default([$3], [keyword])])dnl
- m4_define([b4_percent_define_loc(]$1[)],
- [[[[<skeleton default value>:-1.-1]],
- [[<skeleton default value>:-1.-1]]]])dnl
- m4_define([b4_percent_define_syncline(]$1[)], [[]])])])
-
-
-# b4_percent_define_if_define(NAME, [VARIABLE = NAME])
-# ----------------------------------------------------
-# Define b4_NAME_if that executes its $1 or $2 depending whether
-# VARIABLE was %defined. The characters '.' and `-' in VARIABLE are mapped
-# to '_'.
-m4_define([b4_percent_define_if_define_],
-[m4_define(m4_bpatsubst([b4_$1_if], [[-.]], [_]),
- [b4_percent_define_flag_if(m4_default([$2], [$1]),
- [$3], [$4])])])
-m4_define([b4_percent_define_if_define],
-[b4_percent_define_default([m4_default([$2], [$1])], [[false]])
-b4_percent_define_if_define_([$1], [$2], $[1], $[2])])
-
-
-# b4_percent_define_check_kind(VARIABLE, KIND, [DIAGNOSTIC = complain])
-# ---------------------------------------------------------------------
-m4_define([b4_percent_define_check_kind],
-[b4_percent_define_ifdef_([$1],
- [m4_if(b4_percent_define_get_kind([$1]), [$2], [],
- [b4_error([m4_default([$3], [complain])],
- b4_percent_define_get_loc([$1]),
- [m4_case([$2],
- [code], [[%%define variable '%s' requires '{...}' values]],
- [keyword], [[%%define variable '%s' requires keyword values]],
- [string], [[%%define variable '%s' requires '"..."' values]])],
- [$1])])])dnl
-])
-
-
-# b4_percent_define_check_values(VALUES)
-# --------------------------------------
-# Mimic muscle_percent_define_check_values in ../src/muscle-tab.h exactly
-# except that the VALUES structure is more appropriate for M4. That is, VALUES
-# is a list of sublists of strings. For each sublist, the first string is the
-# name of a %define variable, and all remaining strings in that sublist are the
-# valid values for that variable. Complain if such a variable is undefined (a
-# Bison error since the default value should have been set already) or defined
-# to any other value (possibly a user error). Don't record this as a Bison
-# usage of the variable as there's no reason to suspect that the value has yet
-# influenced the output.
-#
-# For example:
-#
-# b4_percent_define_check_values([[[[foo]], [[foo-value1]], [[foo-value2]]]],
-# [[[[bar]], [[bar-value1]]]])
-m4_define([b4_percent_define_check_values],
-[m4_foreach([b4_sublist], m4_quote($@),
- [_b4_percent_define_check_values(b4_sublist)])])
-
-m4_define([_b4_percent_define_check_values],
-[b4_percent_define_ifdef_([$1],
- [b4_percent_define_check_kind(]$1[, [keyword], [deprecated])dnl
- m4_pushdef([b4_good_value], [0])dnl
- m4_if($#, 1, [],
- [m4_foreach([b4_value], m4_dquote(m4_shift($@)),
- [m4_if(m4_indir([b4_percent_define(]$1[)]), b4_value,
- [m4_define([b4_good_value], [1])])])])dnl
- m4_if(b4_good_value, [0],
- [b4_complain_at(b4_percent_define_get_loc([$1]),
- [[invalid value for %%define variable '%s': '%s']],
- [$1],
- m4_dquote(m4_indir([b4_percent_define(]$1[)])))
- m4_foreach([b4_value], m4_dquote(m4_shift($@)),
- [b4_error([[note]], b4_percent_define_get_loc([$1]), []
- [[accepted value: '%s']],
- m4_dquote(b4_value))])])dnl
- m4_popdef([b4_good_value])],
- [b4_fatal([[$0: undefined %%define variable '%s']], [$1])])])
-
-# b4_percent_code_get([QUALIFIER])
-# --------------------------------
-# If any %code blocks for QUALIFIER are defined, emit them beginning with a
-# comment and ending with synclines and a newline. If QUALIFIER is not
-# specified or empty, do this for the unqualified %code blocks. Also, record
-# Bison's usage of QUALIFIER (if specified) by defining
-# b4_percent_code_bison_qualifiers(QUALIFIER).
-#
-# For example, to emit any unqualified %code blocks followed by any %code
-# blocks for the qualifier foo:
-#
-# b4_percent_code_get
-# b4_percent_code_get([[foo]])
-m4_define([b4_percent_code_get],
-[m4_pushdef([b4_macro_name], [[b4_percent_code(]$1[)]])dnl
-m4_ifval([$1], [m4_define([b4_percent_code_bison_qualifiers(]$1[)])])dnl
-m4_ifdef(b4_macro_name,
-[b4_comment([m4_if([$#], [0], [[Unqualified %code]],
- [["%code ]$1["]])[ blocks.]])
-b4_user_code([m4_indir(b4_macro_name)])
-])dnl
-m4_popdef([b4_macro_name])])
-
-# b4_percent_code_ifdef(QUALIFIER, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------
-# If any %code blocks for QUALIFIER (or unqualified %code blocks if
-# QUALIFIER is empty) are defined, expand IF-TRUE, else expand IF-FALSE.
-# Also, record Bison's usage of QUALIFIER (if specified) by defining
-# b4_percent_code_bison_qualifiers(QUALIFIER).
-m4_define([b4_percent_code_ifdef],
-[m4_ifdef([b4_percent_code(]$1[)],
- [m4_ifval([$1], [m4_define([b4_percent_code_bison_qualifiers(]$1[)])])$2],
- [$3])])
-
-
-## ------------------ ##
-## Common variables. ##
-## ------------------ ##
-
-
-# b4_parse_assert_if([IF-ASSERTIONS-ARE-USED], [IF-NOT])
-# b4_parse_trace_if([IF-DEBUG-TRACES-ARE-ENABLED], [IF-NOT])
-# b4_token_ctor_if([IF-YYLEX-RETURNS-A-TOKEN], [IF-NOT])
-# ----------------------------------------------
-b4_percent_define_if_define([token_ctor], [api.token.constructor])
-b4_percent_define_if_define([locations]) # Whether locations are tracked.
-b4_percent_define_if_define([parse.assert])
-b4_percent_define_if_define([parse.trace])
-
-
-# b4_bison_locations_if([IF-TRUE])
-# --------------------------------
-# Expand IF-TRUE if using locations, and using the default location
-# type.
-m4_define([b4_bison_locations_if],
-[b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [], [$1])])])
-
-
-# b4_error_verbose_if([IF-ERRORS-ARE-VERBOSE], [IF-NOT])
-# ------------------------------------------------------
-# Map %define parse.error "(simple|verbose)" to b4_error_verbose_if and
-# b4_error_verbose_flag.
-b4_percent_define_default([[parse.error]], [[simple]])
-b4_percent_define_check_values([[[[parse.error]],
- [[simple]], [[verbose]]]])
-m4_define([b4_error_verbose_flag],
- [m4_case(b4_percent_define_get([[parse.error]]),
- [simple], [[0]],
- [verbose], [[1]])])
-b4_define_flag_if([error_verbose])
-
-# yytoken_table is needed to support verbose errors.
-b4_error_verbose_if([m4_define([b4_token_table_flag], [1])])
-
-
-# b4_variant_if([IF-VARIANT-ARE-USED], [IF-NOT])
-# ----------------------------------------------
-b4_percent_define_if_define([variant])
-m4_define([b4_variant_flag], [[0]])
-b4_percent_define_ifdef([[api.value.type]],
- [m4_case(b4_percent_define_get_kind([[api.value.type]]), [keyword],
- [m4_case(b4_percent_define_get([[api.value.type]]), [variant],
- [m4_define([b4_variant_flag], [[1]])])])])
-b4_define_flag_if([variant])
-
-
-## ----------------------------------------------------------- ##
-## After processing the skeletons, check that all the user's ##
-## %define variables and %code qualifiers were used by Bison. ##
-## ----------------------------------------------------------- ##
-
-m4_define([b4_check_user_names_wrap],
-[m4_ifdef([b4_percent_]$1[_user_]$2[s],
- [b4_check_user_names([[%]$1 $2],
- [b4_percent_]$1[_user_]$2[s],
- [[b4_percent_]$1[_bison_]$2[s]])])])
-
-m4_wrap_lifo([
-b4_check_user_names_wrap([[define]], [[variable]])
-b4_check_user_names_wrap([[code]], [[qualifier]])
-])
-
-
-## ---------------- ##
-## Default values. ##
-## ---------------- ##
-
-# m4_define_default([b4_lex_param], []) dnl breaks other skeletons
-m4_define_default([b4_pre_prologue], [])
-m4_define_default([b4_post_prologue], [])
-m4_define_default([b4_epilogue], [])
-m4_define_default([b4_parse_param], [])
-
-# The initial column and line.
-m4_define_default([b4_location_initial_column], [1])
-m4_define_default([b4_location_initial_line], [1])
-
-
-## --------------- ##
-## Sanity checks. ##
-## --------------- ##
-
-# api.location.prefix={...} (Java and C++).
-b4_percent_define_check_kind([api.location.type], [code], [deprecated])
-
-# api.position.prefix={...} (Java).
-b4_percent_define_check_kind([api.position.type], [code], [deprecated])
-
-# api.prefix >< %name-prefix.
-b4_percent_define_check_kind([api.prefix], [code], [deprecated])
-b4_percent_define_ifdef([api.prefix],
-[m4_ifdef([b4_prefix],
-[b4_complain_at(b4_percent_define_get_loc([api.prefix]),
- [['%s' and '%s' cannot be used together]],
- [%name-prefix],
- [%define api.prefix])])])
-
-# api.token.prefix={...}
-# Make it a warning for those who used betas of Bison 3.0.
-b4_percent_define_check_kind([api.token.prefix], [code], [deprecated])
-
-# api.value.type >< %union.
-b4_percent_define_ifdef([api.value.type],
-[m4_ifdef([b4_union_members],
-[b4_complain_at(b4_percent_define_get_loc([api.value.type]),
- [['%s' and '%s' cannot be used together]],
- [%union],
- [%define api.value.type])])])
-
-# api.value.type=union >< %yacc.
-b4_percent_define_ifdef([api.value.type],
-[m4_if(b4_percent_define_get([api.value.type]), [union],
-[b4_yacc_if(dnl
-[b4_complain_at(b4_percent_define_get_loc([api.value.type]),
- [['%s' and '%s' cannot be used together]],
- [%yacc],
- [%define api.value.type "union"])])])])
diff --git a/gnuwin32/bin/data/c++-skel.m4 b/gnuwin32/bin/data/c++-skel.m4
deleted file mode 100644
index 06597a8b..00000000
--- a/gnuwin32/bin/data/c++-skel.m4
+++ /dev/null
@@ -1,26 +0,0 @@
- -*- Autoconf -*-
-
-# C++ skeleton dispatching for Bison.
-
-# Copyright (C) 2006-2007, 2009-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-b4_glr_if( [m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.cc]])])
-b4_nondeterministic_if([m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.cc]])])
-
-m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[lalr1.cc]])
-m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"])
-
-m4_include(b4_used_skeleton)
diff --git a/gnuwin32/bin/data/c++.m4 b/gnuwin32/bin/data/c++.m4
deleted file mode 100644
index be12c0a2..00000000
--- a/gnuwin32/bin/data/c++.m4
+++ /dev/null
@@ -1,544 +0,0 @@
- -*- Autoconf -*-
-
-# C++ skeleton for Bison
-
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-m4_include(b4_pkgdatadir/[c.m4])
-
-# b4_comment(TEXT, [PREFIX])
-# --------------------------
-# Put TEXT in comment. Prefix all the output lines with PREFIX.
-m4_define([b4_comment],
-[b4_comment_([$1], [$2// ], [$2// ])])
-
-## -------- ##
-## Checks. ##
-## -------- ##
-
-b4_percent_define_check_kind([api.namespace], [code], [deprecated])
-b4_percent_define_check_kind([parser_class_name], [code], [deprecated])
-
-## ---------------- ##
-## Default values. ##
-## ---------------- ##
-
-b4_percent_define_default([[parser_class_name]], [[parser]])
-
-# Don't do that so that we remember whether we're using a user
-# request, or the default value.
-#
-# b4_percent_define_default([[api.location.type]], [[location]])
-
-b4_percent_define_default([[filename_type]], [[std::string]])
-# Make it a warning for those who used betas of Bison 3.0.
-b4_percent_define_default([[api.namespace]], m4_defn([b4_prefix]))
-
-b4_percent_define_default([[global_tokens_and_yystype]], [[false]])
-b4_percent_define_default([[define_location_comparison]],
- [m4_if(b4_percent_define_get([[filename_type]]),
- [std::string], [[true]], [[false]])])
-
-
-
-## ----------- ##
-## Namespace. ##
-## ----------- ##
-
-m4_define([b4_namespace_ref], [b4_percent_define_get([[api.namespace]])])
-
-
-# Don't permit an empty b4_namespace_ref. Any '::parser::foo' appended to it
-# would compile as an absolute reference with 'parser' in the global namespace.
-# b4_namespace_open would open an anonymous namespace and thus establish
-# internal linkage. This would compile. However, it's cryptic, and internal
-# linkage for the parser would be specified in all translation units that
-# include the header, which is always generated. If we ever need to permit
-# internal linkage somehow, surely we can find a cleaner approach.
-m4_if(m4_bregexp(b4_namespace_ref, [^[ ]*$]), [-1], [],
-[b4_complain_at(b4_percent_define_get_loc([[api.namespace]]),
- [[namespace reference is empty]])])
-
-# Instead of assuming the C++ compiler will do it, Bison should reject any
-# invalid b4_namepsace_ref that would be converted to a valid
-# b4_namespace_open. The problem is that Bison doesn't always output
-# b4_namespace_ref to uncommented code but should reserve the ability to do so
-# in future releases without risking breaking any existing user grammars.
-# Specifically, don't allow empty names as b4_namespace_open would just convert
-# those into anonymous namespaces, and that might tempt some users.
-m4_if(m4_bregexp(b4_namespace_ref, [::[ ]*::]), [-1], [],
-[b4_complain_at(b4_percent_define_get_loc([[api.namespace]]),
- [[namespace reference has consecutive "::"]])])
-m4_if(m4_bregexp(b4_namespace_ref, [::[ ]*$]), [-1], [],
-[b4_complain_at(b4_percent_define_get_loc([[api.namespace]]),
- [[namespace reference has a trailing "::"]])])
-
-m4_define([b4_namespace_open],
-[b4_user_code([b4_percent_define_get_syncline([[api.namespace]])
-[namespace ]m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref),
- [^\(.\)[ ]*::], [\1])),
- [::], [ { namespace ])[ {]])])
-
-m4_define([b4_namespace_close],
-[b4_user_code([b4_percent_define_get_syncline([[api.namespace]])
-m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref[ ]),
- [^\(.\)[ ]*\(::\)?\([^][:]\|:[^:]\)*],
- [\1])),
- [::\([^][:]\|:[^:]\)*], [} ])[} // ]b4_namespace_ref])])
-
-
-# b4_token_enums
-# --------------
-# Output the definition of the tokens as enums.
-m4_define([b4_token_enums],
-[[enum yytokentype
- {
- ]m4_join([,
- ],
- b4_symbol_map([b4_token_enum]))[
- };]dnl
-])
-
-
-
-
-## ----------------- ##
-## Semantic Values. ##
-## ----------------- ##
-
-
-
-# b4_value_type_declare
-# ---------------------
-# Declare semantic_type.
-m4_define([b4_value_type_declare],
-[b4_value_type_setup[]dnl
-[ /// Symbol semantic values.
-]m4_bmatch(b4_percent_define_get_kind([[api.value.type]]),
-[code],
-[[ typedef ]b4_percent_define_get([[api.value.type]])[ semantic_type;]],
-[m4_bmatch(b4_percent_define_get([[api.value.type]]),
-[union\|union-directive],
-[[ union semantic_type
- {
- ]b4_user_union_members[
- };]])])dnl
-])
-
-
-# b4_public_types_declare
-# -----------------------
-# Define the public types: token, semantic value, location, and so forth.
-# Depending on %define token_lex, may be output in the header or source file.
-m4_define([b4_public_types_declare],
-[[#ifndef ]b4_api_PREFIX[STYPE
-]b4_value_type_declare[
-#else
- typedef ]b4_api_PREFIX[STYPE semantic_type;
-#endif]b4_locations_if([
- /// Symbol locations.
- typedef b4_percent_define_get([[api.location.type]],
- [[location]]) location_type;])[
-
- /// Syntax errors thrown from user actions.
- struct syntax_error : std::runtime_error
- {
- syntax_error (]b4_locations_if([const location_type& l, ])[const std::string& m);]b4_locations_if([
- location_type location;])[
- };
-
- /// Tokens.
- struct token
- {
- ]b4_token_enums[
- };
-
- /// (External) token type, as returned by yylex.
- typedef token::yytokentype token_type;
-
- /// Internal symbol number.
- typedef int symbol_number_type;
-
- /// Internal symbol number for tokens (subsumed by symbol_number_type).
- typedef ]b4_int_type_for([b4_translate])[ token_number_type;
-
- /// A complete symbol.
- ///
- /// Expects its Base type to provide access to the symbol type
- /// via type_get().
- ///
- /// Provide access to semantic value]b4_locations_if([ and location])[.
- template <typename Base>
- struct basic_symbol : Base
- {
- /// Alias to Base.
- typedef Base super_type;
-
- /// Default constructor.
- basic_symbol ();
-
- /// Copy constructor.
- basic_symbol (const basic_symbol& other);
-]b4_variant_if([[
- /// Constructor for valueless symbols, and symbols from each type.
-]b4_type_foreach([b4_basic_symbol_constructor_declare])], [[
- /// Constructor for valueless symbols.
- basic_symbol (typename Base::kind_type t]b4_locations_if([,
- const location_type& l])[);]])[
-
- /// Constructor for symbols with semantic value.
- basic_symbol (typename Base::kind_type t,
- const semantic_type& v]b4_locations_if([,
- const location_type& l])[);
-
- ~basic_symbol ();
-
- /// Destructive move, \a s is emptied into this.
- void move (basic_symbol& s);
-
- /// The semantic value.
- semantic_type value;]b4_locations_if([
-
- /// The location.
- location_type location;])[
-
- private:
- /// Assignment operator.
- basic_symbol& operator= (const basic_symbol& other);
- };
-
- /// Type access provider for token (enum) based symbols.
- struct by_type
- {
- /// Default constructor.
- by_type ();
-
- /// Copy constructor.
- by_type (const by_type& other);
-
- /// The symbol type as needed by the constructor.
- typedef token_type kind_type;
-
- /// Constructor from (external) token numbers.
- by_type (kind_type t);
-
- /// Steal the symbol type from \a that.
- void move (by_type& that);
-
- /// The (internal) type number (corresponding to \a type).
- /// -1 when this symbol is empty.
- symbol_number_type type_get () const;
-
- /// The token.
- token_type token () const;
-
- enum { empty = 0 };
-
- /// The symbol type.
- /// -1 when this symbol is empty.
- token_number_type type;
- };
-
- /// "External" symbols: returned by the scanner.
- typedef basic_symbol<by_type> symbol_type;
-
-]b4_symbol_constructor_declare])
-
-
-# b4_public_types_define
-# ----------------------
-# Provide the implementation needed by the public types.
-m4_define([b4_public_types_define],
-[[ inline
- ]b4_parser_class_name[::syntax_error::syntax_error (]b4_locations_if([const location_type& l, ])[const std::string& m)
- : std::runtime_error (m)]b4_locations_if([
- , location (l)])[
- {}
-
- // basic_symbol.
- template <typename Base>
- inline
- ]b4_parser_class_name[::basic_symbol<Base>::basic_symbol ()
- : value ()
- {}
-
- template <typename Base>
- inline
- ]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
- : Base (other)
- , value ()]b4_locations_if([
- , location (other.location)])[
- {
- ]b4_variant_if([b4_symbol_variant([other.type_get ()], [value], [copy],
- [other.value])],
- [value = other.value;])[
- }
-
-
- template <typename Base>
- inline
- ]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (]b4_join(
- [typename Base::kind_type t],
- [const semantic_type& v],
- b4_locations_if([const location_type& l]))[)
- : Base (t)
- , value (]b4_variant_if([], [v])[)]b4_locations_if([
- , location (l)])[
- {]b4_variant_if([[
- (void) v;
- ]b4_symbol_variant([this->type_get ()], [value], [copy], [v])])[}
-
-]b4_variant_if([[
- // Implementation of basic_symbol constructor for each type.
-]b4_type_foreach([b4_basic_symbol_constructor_define])], [[
- /// Constructor for valueless symbols.
- template <typename Base>
- inline
- ]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (]b4_join(
- [typename Base::kind_type t],
- b4_locations_if([const location_type& l]))[)
- : Base (t)
- , value ()]b4_locations_if([
- , location (l)])[
- {}]])[
-
- template <typename Base>
- inline
- ]b4_parser_class_name[::basic_symbol<Base>::~basic_symbol ()
- {]b4_variant_if([[
- // User destructor.
- symbol_number_type yytype = this->type_get ();
- switch (yytype)
- {
-]b4_symbol_foreach([b4_symbol_destructor])dnl
-[ default:
- break;
- }
-
- // Type destructor.
- ]b4_symbol_variant([[yytype]], [[value]], [[template destroy]])])[
- }
-
- template <typename Base>
- inline
- void
- ]b4_parser_class_name[::basic_symbol<Base>::move (basic_symbol& s)
- {
- super_type::move(s);
- ]b4_variant_if([b4_symbol_variant([this->type_get ()], [value], [move],
- [s.value])],
- [value = s.value;])[]b4_locations_if([
- location = s.location;])[
- }
-
- // by_type.
- inline
- ]b4_parser_class_name[::by_type::by_type ()
- : type (empty)
- {}
-
- inline
- ]b4_parser_class_name[::by_type::by_type (const by_type& other)
- : type (other.type)
- {}
-
- inline
- ]b4_parser_class_name[::by_type::by_type (token_type t)
- : type (yytranslate_ (t))
- {}
-
- inline
- void
- ]b4_parser_class_name[::by_type::move (by_type& that)
- {
- type = that.type;
- that.type = empty;
- }
-
- inline
- int
- ]b4_parser_class_name[::by_type::type_get () const
- {
- return type;
- }
-]b4_token_ctor_if([[
- inline
- ]b4_parser_class_name[::token_type
- ]b4_parser_class_name[::by_type::token () const
- {
- // YYTOKNUM[NUM] -- (External) token number corresponding to the
- // (internal) symbol number NUM (which must be that of a token). */
- static
- const ]b4_int_type_for([b4_toknum])[
- yytoken_number_[] =
- {
- ]b4_toknum[
- };
- return static_cast<token_type> (yytoken_number_[type]);
- }
-]])[]dnl
-b4_symbol_constructor_define])
-
-
-# b4_symbol_constructor_declare
-# b4_symbol_constructor_define
-# -----------------------------
-# Declare/define symbol constructors for all the value types.
-# Use at class-level. Redefined in variant.hh.
-m4_define([b4_symbol_constructor_declare], [])
-m4_define([b4_symbol_constructor_define], [])
-
-
-# b4_yytranslate_define
-# ---------------------
-# Define yytranslate_. Sometimes used in the header file,
-# sometimes in the cc file.
-m4_define([b4_yytranslate_define],
-[[ // Symbol number corresponding to token number t.
- inline
- ]b4_parser_class_name[::token_number_type
- ]b4_parser_class_name[::yytranslate_ (]b4_token_ctor_if([token_type],
- [int])[ t)
- {
- static
- const token_number_type
- translate_table[] =
- {
-]b4_translate[
- };
- const unsigned int user_token_number_max_ = ]b4_user_token_number_max[;
- const token_number_type undef_token_ = ]b4_undef_token_number[;
-
- if (static_cast<int>(t) <= yyeof_)
- return yyeof_;
- else if (static_cast<unsigned int> (t) <= user_token_number_max_)
- return translate_table[t];
- else
- return undef_token_;
- }
-]])
-
-
-# b4_lhs_value([TYPE])
-# --------------------
-# Expansion of $<TYPE>$.
-m4_define([b4_lhs_value],
-[b4_symbol_value([yyval], [$1])])
-
-
-# b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
-# --------------------------------------
-# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
-# symbols on RHS.
-m4_define([b4_rhs_value],
-[b4_symbol_value([yysemantic_stack_@{($1) - ($2)@}], [$3])])
-
-
-# b4_lhs_location()
-# -----------------
-# Expansion of @$.
-m4_define([b4_lhs_location],
-[(yyloc)])
-
-
-# b4_rhs_location(RULE-LENGTH, NUM)
-# ---------------------------------
-# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
-# on RHS.
-m4_define([b4_rhs_location],
-[(yylocation_stack_@{($1) - ($2)@})])
-
-
-# b4_parse_param_decl
-# -------------------
-# Extra formal arguments of the constructor.
-# Change the parameter names from "foo" into "foo_yyarg", so that
-# there is no collision bw the user chosen attribute name, and the
-# argument name in the constructor.
-m4_define([b4_parse_param_decl],
-[m4_ifset([b4_parse_param],
- [m4_map_sep([b4_parse_param_decl_1], [, ], [b4_parse_param])])])
-
-m4_define([b4_parse_param_decl_1],
-[$1_yyarg])
-
-
-
-# b4_parse_param_cons
-# -------------------
-# Extra initialisations of the constructor.
-m4_define([b4_parse_param_cons],
- [m4_ifset([b4_parse_param],
- [
- b4_cc_constructor_calls(b4_parse_param)])])
-m4_define([b4_cc_constructor_calls],
- [m4_map_sep([b4_cc_constructor_call], [,
- ], [$@])])
-m4_define([b4_cc_constructor_call],
- [$2 ($2_yyarg)])
-
-# b4_parse_param_vars
-# -------------------
-# Extra instance variables.
-m4_define([b4_parse_param_vars],
- [m4_ifset([b4_parse_param],
- [
- // User arguments.
-b4_cc_var_decls(b4_parse_param)])])
-m4_define([b4_cc_var_decls],
- [m4_map_sep([b4_cc_var_decl], [
-], [$@])])
-m4_define([b4_cc_var_decl],
- [ $1;])
-
-
-## ---------##
-## Values. ##
-## ---------##
-
-# b4_yylloc_default_define
-# ------------------------
-# Define YYLLOC_DEFAULT.
-m4_define([b4_yylloc_default_define],
-[[/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
- If N is 0, then set CURRENT to the empty location which ends
- the previous symbol: RHS[0] (always defined). */
-
-# ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (N) \
- { \
- (Current).begin = YYRHSLOC (Rhs, 1).begin; \
- (Current).end = YYRHSLOC (Rhs, N).end; \
- } \
- else \
- { \
- (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
- } \
- while (/*CONSTCOND*/ false)
-# endif
-]])
-
-## -------- ##
-## Checks. ##
-## -------- ##
-
-b4_token_ctor_if([b4_variant_if([],
- [b4_fatal_at(b4_percent_define_get_loc(api.token.constructor),
- [cannot use '%s' without '%s'],
- [%define api.token.constructor],
- [%define api.value.type variant]))])])
diff --git a/gnuwin32/bin/data/c-like.m4 b/gnuwin32/bin/data/c-like.m4
deleted file mode 100644
index eb06de2a..00000000
--- a/gnuwin32/bin/data/c-like.m4
+++ /dev/null
@@ -1,65 +0,0 @@
- -*- Autoconf -*-
-
-# Common code for C-like languages (C, C++, Java, etc.)
-
-# Copyright (C) 2012-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# b4_comment_(TEXT, OPEN, CONTINUE, END)
-# --------------------------------------
-# Put TEXT in comment. Avoid trailing spaces: don't indent empty lines.
-# Avoid adding indentation to the first line, as the indentation comes
-# from OPEN. That's why we don't patsubst([$1], [^\(.\)], [ \1]).
-#
-# Prefix all the output lines with PREFIX.
-m4_define([b4_comment_],
-[$2[]m4_bpatsubst(m4_expand([[$1]]), [
-\(.\)], [
-$3\1])$4])
-
-
-# b4_comment(TEXT, [PREFIX])
-# --------------------------
-# Put TEXT in comment. Prefix all the output lines with PREFIX.
-m4_define([b4_comment],
-[b4_comment_([$1], [$2/* ], [$2 ], [ */])])
-
-
-
-
-# b4_dollar_dollar_(VALUE, FIELD, DEFAULT-FIELD)
-# ----------------------------------------------
-# If FIELD (or DEFAULT-FIELD) is non-null, return "VALUE.FIELD",
-# otherwise just VALUE. Be sure to pass "(VALUE)" is VALUE is a
-# pointer.
-m4_define([b4_dollar_dollar_],
-[b4_symbol_value([$1],
- m4_if([$2], [[]],
- [[$3]], [[$2]]))])
-
-# b4_dollar_pushdef(VALUE-POINTER, DEFAULT-FIELD, LOCATION)
-# b4_dollar_popdef
-# ---------------------------------------------------------
-# Define b4_dollar_dollar for VALUE and DEFAULT-FIELD,
-# and b4_at_dollar for LOCATION.
-m4_define([b4_dollar_pushdef],
-[m4_pushdef([b4_dollar_dollar],
- [b4_dollar_dollar_([$1], m4_dquote($][1), [$2])])dnl
-m4_pushdef([b4_at_dollar], [$3])dnl
-])
-m4_define([b4_dollar_popdef],
-[m4_popdef([b4_at_dollar])dnl
-m4_popdef([b4_dollar_dollar])dnl
-])
diff --git a/gnuwin32/bin/data/c-skel.m4 b/gnuwin32/bin/data/c-skel.m4
deleted file mode 100644
index 36904aaf..00000000
--- a/gnuwin32/bin/data/c-skel.m4
+++ /dev/null
@@ -1,26 +0,0 @@
- -*- Autoconf -*-
-
-# C skeleton dispatching for Bison.
-
-# Copyright (C) 2006-2007, 2009-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-b4_glr_if( [m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.c]])])
-b4_nondeterministic_if([m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.c]])])
-
-m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[yacc.c]])
-m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"])
-
-m4_include(b4_used_skeleton)
diff --git a/gnuwin32/bin/data/c.m4 b/gnuwin32/bin/data/c.m4
deleted file mode 100644
index b1b43948..00000000
--- a/gnuwin32/bin/data/c.m4
+++ /dev/null
@@ -1,839 +0,0 @@
- -*- Autoconf -*-
-
-# C M4 Macros for Bison.
-
-# Copyright (C) 2002, 2004-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-m4_include(b4_pkgdatadir/[c-like.m4])
-
-# b4_tocpp(STRING)
-# ----------------
-# Convert STRING into a valid C macro name.
-m4_define([b4_tocpp],
-[m4_toupper(m4_bpatsubst(m4_quote($1), [[^a-zA-Z0-9]+], [_]))])
-
-
-# b4_cpp_guard(FILE)
-# ------------------
-# A valid C macro name to use as a CPP header guard for FILE.
-m4_define([b4_cpp_guard],
-[[YY_]b4_tocpp(m4_defn([b4_prefix])/[$1])[_INCLUDED]])
-
-
-# b4_cpp_guard_open(FILE)
-# b4_cpp_guard_close(FILE)
-# ------------------------
-# If FILE does not expand to nothing, open/close CPP inclusion guards for FILE.
-m4_define([b4_cpp_guard_open],
-[m4_ifval(m4_quote($1),
-[#ifndef b4_cpp_guard([$1])
-# define b4_cpp_guard([$1])])])
-
-m4_define([b4_cpp_guard_close],
-[m4_ifval(m4_quote($1),
-[#endif b4_comment([!b4_cpp_guard([$1])])])])
-
-
-## ---------------- ##
-## Identification. ##
-## ---------------- ##
-
-# b4_identification
-# -----------------
-# Depends on individual skeletons to define b4_pure_flag, b4_push_flag, or
-# b4_pull_flag if they use the values of the %define variables api.pure or
-# api.push-pull.
-m4_define([b4_identification],
-[[/* Identify Bison output. */
-#define YYBISON 1
-
-/* Bison version. */
-#define YYBISON_VERSION "]b4_version["
-
-/* Skeleton name. */
-#define YYSKELETON_NAME ]b4_skeleton[]m4_ifdef([b4_pure_flag], [[
-
-/* Pure parsers. */
-#define YYPURE ]b4_pure_flag])[]m4_ifdef([b4_push_flag], [[
-
-/* Push parsers. */
-#define YYPUSH ]b4_push_flag])[]m4_ifdef([b4_pull_flag], [[
-
-/* Pull parsers. */
-#define YYPULL ]b4_pull_flag])[
-]])
-
-
-## ---------------- ##
-## Default values. ##
-## ---------------- ##
-
-# b4_api_prefix, b4_api_PREFIX
-# ----------------------------
-# Corresponds to %define api.prefix
-b4_percent_define_default([[api.prefix]], [[yy]])
-m4_define([b4_api_prefix],
-[b4_percent_define_get([[api.prefix]])])
-m4_define([b4_api_PREFIX],
-[m4_toupper(b4_api_prefix)])
-
-
-# b4_prefix
-# ---------
-# If the %name-prefix is not given, it is api.prefix.
-m4_define_default([b4_prefix], [b4_api_prefix])
-
-# If the %union is not named, its name is YYSTYPE.
-m4_define_default([b4_union_name], [b4_api_PREFIX[]STYPE])
-
-
-## ------------------------ ##
-## Pure/impure interfaces. ##
-## ------------------------ ##
-
-# b4_lex_formals
-# --------------
-# All the yylex formal arguments.
-# b4_lex_param arrives quoted twice, but we want to keep only one level.
-m4_define([b4_lex_formals],
-[b4_pure_if([[[[YYSTYPE *yylvalp]], [[&yylval]]][]dnl
-b4_locations_if([, [[YYLTYPE *yyllocp], [&yylloc]]])])dnl
-m4_ifdef([b4_lex_param], [, ]b4_lex_param)])
-
-
-# b4_lex
-# ------
-# Call yylex.
-m4_define([b4_lex],
-[b4_function_call([yylex], [int], b4_lex_formals)])
-
-
-# b4_user_args
-# ------------
-m4_define([b4_user_args],
-[m4_ifset([b4_parse_param], [, b4_args(b4_parse_param)])])
-
-
-# b4_parse_param
-# --------------
-# If defined, b4_parse_param arrives double quoted, but below we prefer
-# it to be single quoted.
-m4_define([b4_parse_param],
-b4_parse_param)
-
-
-# b4_parse_param_for(DECL, FORMAL, BODY)
-# ---------------------------------------
-# Iterate over the user parameters, binding the declaration to DECL,
-# the formal name to FORMAL, and evaluating the BODY.
-m4_define([b4_parse_param_for],
-[m4_foreach([$1_$2], m4_defn([b4_parse_param]),
-[m4_pushdef([$1], m4_unquote(m4_car($1_$2)))dnl
-m4_pushdef([$2], m4_shift($1_$2))dnl
-$3[]dnl
-m4_popdef([$2])dnl
-m4_popdef([$1])dnl
-])])
-
-# b4_parse_param_use([VAL], [LOC])
-# --------------------------------
-# 'YYUSE' VAL, LOC if locations are enabled, and all the parse-params.
-m4_define([b4_parse_param_use],
-[m4_ifvaln([$1], [ YYUSE ([$1]);])dnl
-b4_locations_if([m4_ifvaln([$2], [ YYUSE ([$2]);])])dnl
-b4_parse_param_for([Decl], [Formal], [ YYUSE (Formal);
-])dnl
-])
-
-
-## ------------ ##
-## Data Types. ##
-## ------------ ##
-
-# b4_int_type(MIN, MAX)
-# ---------------------
-# Return the smallest int type able to handle numbers ranging from
-# MIN to MAX (included).
-m4_define([b4_int_type],
-[m4_if(b4_ints_in($@, [0], [255]), [1], [unsigned char],
- b4_ints_in($@, [-128], [127]), [1], [signed char],
-
- b4_ints_in($@, [0], [65535]), [1], [unsigned short int],
- b4_ints_in($@, [-32768], [32767]), [1], [short int],
-
- m4_eval([0 <= $1]), [1], [unsigned int],
-
- [int])])
-
-
-# b4_int_type_for(NAME)
-# ---------------------
-# Return the smallest int type able to handle numbers ranging from
-# 'NAME_min' to 'NAME_max' (included).
-m4_define([b4_int_type_for],
-[b4_int_type($1_min, $1_max)])
-
-
-# b4_table_value_equals(TABLE, VALUE, LITERAL)
-# --------------------------------------------
-# Without inducing a comparison warning from the compiler, check if the
-# literal value LITERAL equals VALUE from table TABLE, which must have
-# TABLE_min and TABLE_max defined.
-m4_define([b4_table_value_equals],
-[m4_if(m4_eval($3 < m4_indir([b4_]$1[_min])
- || m4_indir([b4_]$1[_max]) < $3), [1],
- [[0]],
- [(!!(($2) == ($3)))])])
-
-
-## ----------------- ##
-## Compiler issues. ##
-## ----------------- ##
-
-# b4_attribute_define
-# -------------------
-# Provide portability for __attribute__.
-m4_define([b4_attribute_define],
-[#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later. */
-# if (! defined __GNUC__ || __GNUC__ < 2 \
- || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
-# define __attribute__(Spec) /* empty */
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E. */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
-#else
-# define YYUSE(E) /* empty */
-#endif
-
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized. */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
- _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
- _Pragma ("GCC diagnostic pop")
-#else
-# define YY_INITIAL_VALUE(Value) Value
-#endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-])
-
-
-## ---------##
-## Values. ##
-## ---------##
-
-
-# b4_null_define
-# --------------
-# Portability issues: define a YY_NULL appropriate for the current
-# language (C, C++98, or C++11).
-m4_define([b4_null_define],
-[# ifndef YY_NULL
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULL nullptr
-# else
-# define YY_NULL 0
-# endif
-# endif[]dnl
-])
-
-
-# b4_null
-# -------
-# Return a null pointer constant.
-m4_define([b4_null], [YY_NULL])
-
-# b4_integral_parser_table_define(TABLE-NAME, CONTENT, COMMENT)
-# -------------------------------------------------------------
-# Define "yy<TABLE-NAME>" whose contents is CONTENT.
-m4_define([b4_integral_parser_table_define],
-[m4_ifvaln([$3], [b4_comment([$3], [ ])])dnl
-static const b4_int_type_for([$2]) yy$1[[]] =
-{
- $2
-};dnl
-])
-
-
-## ------------------------- ##
-## Assigning token numbers. ##
-## ------------------------- ##
-
-# b4_token_define(TOKEN-NUM)
-# --------------------------
-# Output the definition of this token as #define.
-m4_define([b4_token_define],
-[b4_token_format([#define %s %s], [$1])])
-
-# b4_token_defines
-# ----------------
-# Output the definition of the tokens.
-m4_define([b4_token_defines],
-[b4_any_token_visible_if([/* Tokens. */
-m4_join([
-], b4_symbol_map([b4_token_define]))
-])])
-
-
-# b4_token_enum(TOKEN-NUM)
-# ------------------------
-# Output the definition of this token as an enum.
-m4_define([b4_token_enum],
-[b4_token_format([%s = %s], [$1])])
-
-
-# b4_token_enums
-# --------------
-# Output the definition of the tokens (if there are) as enums.
-m4_define([b4_token_enums],
-[b4_any_token_visible_if([[/* Token type. */
-#ifndef ]b4_api_PREFIX[TOKENTYPE
-# define ]b4_api_PREFIX[TOKENTYPE
- enum ]b4_api_prefix[tokentype
- {
- ]m4_join([,
- ],
- b4_symbol_map([b4_token_enum]))[
- };
-#endif
-]])])
-
-
-# b4_token_enums_defines
-# ----------------------
-# Output the definition of the tokens (if there are any) as enums and,
-# if POSIX Yacc is enabled, as #defines.
-m4_define([b4_token_enums_defines],
-[b4_token_enums[]b4_yacc_if([b4_token_defines])])
-
-
-## ----------------- ##
-## Semantic Values. ##
-## ----------------- ##
-
-
-# b4_symbol_value(VAL, [TYPE])
-# ----------------------------
-# Given a semantic value VAL ($$, $1 etc.), extract its value of type
-# TYPE if TYPE is given, otherwise just return VAL. The result can be
-# used safetly, it is put in parens to avoid nasty precedence issues.
-# TYPE is *not* put in braces, provide some if needed.
-m4_define([b4_symbol_value],
-[($1[]m4_ifval([$2], [.$2]))])
-
-
-
-## ---------------------- ##
-## Defining C functions. ##
-## ---------------------- ##
-
-
-# b4_function_define(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
-# -----------------------------------------------------------
-# Declare the function NAME in C.
-m4_define([b4_function_define],
-[$2
-$1 (b4_formals(m4_shift2($@)))[]dnl
-])
-
-
-# b4_formals([DECL1, NAME1], ...)
-# -------------------------------
-# The formal arguments of a C function definition.
-m4_define([b4_formals],
-[m4_if([$#], [0], [void],
- [$#$1], [1], [void],
- [m4_map_sep([b4_formal], [, ], [$@])])])
-
-m4_define([b4_formal],
-[$1])
-
-
-
-## ----------------------- ##
-## Declaring C functions. ##
-## ----------------------- ##
-
-
-# b4_function_declare(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
-# ------------------------------------------------------------
-# Declare the function NAME.
-m4_define([b4_function_declare],
-[$2 $1 (b4_formals(m4_shift2($@)));[]dnl
-])
-
-
-
-
-## --------------------- ##
-## Calling C functions. ##
-## --------------------- ##
-
-
-# b4_function_call(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
-# -----------------------------------------------------------
-# Call the function NAME with arguments NAME1, NAME2 etc.
-m4_define([b4_function_call],
-[$1 (b4_args(m4_shift2($@)))[]dnl
-])
-
-
-# b4_args([DECL1, NAME1], ...)
-# ----------------------------
-# Output the arguments NAME1, NAME2...
-m4_define([b4_args],
-[m4_map_sep([b4_arg], [, ], [$@])])
-
-m4_define([b4_arg],
-[$2])
-
-
-## ----------- ##
-## Synclines. ##
-## ----------- ##
-
-# b4_sync_start(LINE, FILE)
-# -------------------------
-m4_define([b4_sync_start], [[#]line $1 $2])
-
-
-## -------------- ##
-## User actions. ##
-## -------------- ##
-
-# b4_case(LABEL, STATEMENTS)
-# --------------------------
-m4_define([b4_case],
-[ case $1:
-$2
-b4_syncline([@oline@], [@ofile@])
- break;])
-
-
-# b4_predicate_case(LABEL, CONDITIONS)
-# ------------------------------------
-m4_define([b4_predicate_case],
-[ case $1:
- if (! ($2)) YYERROR;
-b4_syncline([@oline@], [@ofile@])
- break;])
-
-
-# b4_yydestruct_define
-# --------------------
-# Define the "yydestruct" function.
-m4_define_default([b4_yydestruct_define],
-[[/*-----------------------------------------------.
-| Release the memory associated to this symbol. |
-`-----------------------------------------------*/
-
-]b4_function_define([yydestruct],
- [static void],
- [[const char *yymsg], [yymsg]],
- [[int yytype], [yytype]],
- [[YYSTYPE *yyvaluep], [yyvaluep]][]dnl
-b4_locations_if( [, [[YYLTYPE *yylocationp], [yylocationp]]])[]dnl
-m4_ifset([b4_parse_param], [, b4_parse_param]))[
-{
-]b4_parse_param_use([yyvaluep], [yylocationp])dnl
-[ if (!yymsg)
- yymsg = "Deleting";
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- ]b4_symbol_actions([destructor])[
- YY_IGNORE_MAYBE_UNINITIALIZED_END
-}]dnl
-])
-
-
-# b4_yy_symbol_print_define
-# -------------------------
-# Define the "yy_symbol_print" function.
-m4_define_default([b4_yy_symbol_print_define],
-[[
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT. |
-`----------------------------------------*/
-
-]b4_function_define([yy_symbol_value_print],
- [static void],
- [[FILE *yyoutput], [yyoutput]],
- [[int yytype], [yytype]],
- [[YYSTYPE const * const yyvaluep], [yyvaluep]][]dnl
-b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl
-m4_ifset([b4_parse_param], [, b4_parse_param]))[
-{
- FILE *yyo = yyoutput;
-]b4_parse_param_use([yyo], [yylocationp])dnl
-[ if (!yyvaluep)
- return;]
-dnl glr.c does not feature yytoknum.
-m4_if(b4_skeleton, ["yacc.c"],
-[[# ifdef YYPRINT
- if (yytype < YYNTOKENS)
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
-]])dnl
- b4_symbol_actions([printer])[
-}
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-
-]b4_function_define([yy_symbol_print],
- [static void],
- [[FILE *yyoutput], [yyoutput]],
- [[int yytype], [yytype]],
- [[YYSTYPE const * const yyvaluep], [yyvaluep]][]dnl
-b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl
-m4_ifset([b4_parse_param], [, b4_parse_param]))[
-{
- YYFPRINTF (yyoutput, "%s %s (",
- yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
-
-]b4_locations_if([ YY_LOCATION_PRINT (yyoutput, *yylocationp);
- YYFPRINTF (yyoutput, ": ");
-])dnl
-[ yy_symbol_value_print (yyoutput, yytype, yyvaluep]dnl
-b4_locations_if([, yylocationp])[]b4_user_args[);
- YYFPRINTF (yyoutput, ")");
-}]dnl
-])
-
-
-## ---------------- ##
-## api.value.type. ##
-## ---------------- ##
-
-
-# ---------------------- #
-# api.value.type=union. #
-# ---------------------- #
-
-# b4_symbol_type_register(SYMBOL-NUM)
-# -----------------------------------
-# Symbol SYMBOL-NUM has a type (for variant) instead of a type-tag.
-# Extend the definition of %union's body with a field of that type,
-# and extend the symbol's "type" field to point to the field name,
-# instead of the type name.
-m4_define([b4_symbol_type_register],
-[m4_define([b4_symbol($1, type_tag)],
- [b4_symbol_if([$1], [has_id],
- [b4_symbol([$1], [id])],
- [yytype_[]b4_symbol([$1], [number])])])dnl
-m4_append([b4_user_union_members],
-m4_expand([
- b4_symbol_tag_comment([$1])dnl
- b4_symbol([$1], [type]) b4_symbol([$1], [type_tag]);]))
-])
-
-
-# b4_type_define_tag(SYMBOL1-NUM, ...)
-# ------------------------------------
-# For the batch of symbols SYMBOL1-NUM... (which all have the same
-# type), enhance the %union definition for each of them, and set
-# there "type" field to the field tag name, instead of the type name.
-m4_define([b4_type_define_tag],
-[b4_symbol_if([$1], [has_type],
- [m4_map([b4_symbol_type_register], [$@])])
-])
-
-
-# b4_symbol_value_union(VAL, [TYPE])
-# ----------------------------------
-# Same of b4_symbol_value, but when api.value.type=union.
-m4_define([b4_symbol_value_union],
-[m4_ifval([$2],
- [(*($2*)(&$1))],
- [$1])])
-])
-
-
-# b4_value_type_setup_union
-# -------------------------
-# Setup support for api.value.type=union. Symbols are defined with a
-# type instead of a union member name: build the corresponding union,
-# and give the symbols their tag.
-m4_define([b4_value_type_setup_union],
-[m4_define([b4_union_members])
-b4_type_foreach([b4_type_define_tag])
-m4_copy_force([b4_symbol_value_union], [b4_symbol_value])
-])
-
-
-# ---------------- #
-# api.value.type. #
-# ---------------- #
-
-
-# b4_value_type_setup_variant
-# ---------------------------
-# Setup support for api.value.type=variant. By default, fail, specialized
-# by other skeletons.
-m4_define([b4_value_type_setup_variant],
-[b4_complain_at(b4_percent_define_get_loc([[api.value.type]]),
- [['%s' does not support '%s']],
- [b4_skeleton],
- [%define api.value.type variant])])
-
-
-# _b4_value_type_setup_keyword
-# ----------------------------
-# api.value.type is defined with a keyword/string syntax. Check if
-# that is properly defined, and prepare its use.
-m4_define([_b4_value_type_setup_keyword],
-[b4_percent_define_check_values([[[[api.value.type]],
- [[none]],
- [[union]],
- [[union-directive]],
- [[variant]],
- [[yystype]]]])dnl
-m4_case(b4_percent_define_get([[api.value.type]]),
- [union], [b4_value_type_setup_union],
- [variant], [b4_value_type_setup_variant])])
-
-
-# b4_value_type_setup
-# -------------------
-# Check if api.value.type is properly defined, and possibly prepare
-# its use.
-b4_define_silent([b4_value_type_setup],
-[# Define default value.
-b4_percent_define_ifdef([[api.value.type]], [],
-[# %union => api.value.type=union-directive
-m4_ifdef([b4_union_members],
-[m4_define([b4_percent_define_kind(api.value.type)], [keyword])
-m4_define([b4_percent_define(api.value.type)], [union-directive])],
-[# no tag seen => api.value.type={int}
-m4_if(b4_tag_seen_flag, 0,
-[m4_define([b4_percent_define_kind(api.value.type)], [code])
-m4_define([b4_percent_define(api.value.type)], [int])],
-[# otherwise api.value.type=yystype
-m4_define([b4_percent_define_kind(api.value.type)], [keyword])
-m4_define([b4_percent_define(api.value.type)], [yystype])])])])
-
-# Set up.
-m4_bmatch(b4_percent_define_get_kind([[api.value.type]]),
- [keyword\|string], [_b4_value_type_setup_keyword])
-])
-
-
-## -------------- ##
-## Declarations. ##
-## -------------- ##
-
-
-# b4_value_type_define
-# --------------------
-m4_define([b4_value_type_define],
-[b4_value_type_setup[]dnl
-/* Value type. */
-m4_bmatch(b4_percent_define_get_kind([[api.value.type]]),
-[code],
-[[#if ! defined ]b4_api_PREFIX[STYPE && ! defined ]b4_api_PREFIX[STYPE_IS_DECLARED
-typedef ]b4_percent_define_get([[api.value.type]])[ ]b4_api_PREFIX[STYPE;
-# define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1
-# define ]b4_api_PREFIX[STYPE_IS_DECLARED 1
-#endif
-]],
-[m4_bmatch(b4_percent_define_get([[api.value.type]]),
-[union\|union-directive],
-[[#if ! defined ]b4_api_PREFIX[STYPE && ! defined ]b4_api_PREFIX[STYPE_IS_DECLARED
-typedef union ]b4_union_name[ ]b4_api_PREFIX[STYPE;
-union ]b4_union_name[
-{
-]b4_user_union_members[
-};
-# define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1
-# define ]b4_api_PREFIX[STYPE_IS_DECLARED 1
-#endif
-]])])])
-
-
-# b4_location_type_define
-# -----------------------
-m4_define([b4_location_type_define],
-[[/* Location type. */
-#if ! defined ]b4_api_PREFIX[LTYPE && ! defined ]b4_api_PREFIX[LTYPE_IS_DECLARED
-typedef struct ]b4_api_PREFIX[LTYPE ]b4_api_PREFIX[LTYPE;
-struct ]b4_api_PREFIX[LTYPE
-{
- int first_line;
- int first_column;
- int last_line;
- int last_column;
-};
-# define ]b4_api_PREFIX[LTYPE_IS_DECLARED 1
-# define ]b4_api_PREFIX[LTYPE_IS_TRIVIAL 1
-#endif
-]])
-
-
-# b4_declare_yylstype
-# -------------------
-# Declarations that might either go into the header (if --defines) or
-# in the parser body. Declare YYSTYPE/YYLTYPE, and yylval/yylloc.
-m4_define([b4_declare_yylstype],
-[b4_value_type_define[]b4_locations_if([
-b4_location_type_define])
-
-b4_pure_if([], [[extern ]b4_api_PREFIX[STYPE ]b4_prefix[lval;
-]b4_locations_if([[extern ]b4_api_PREFIX[LTYPE ]b4_prefix[lloc;]])])[]dnl
-])
-
-
-# b4_YYDEBUG_define
-# -----------------
-m4_define([b4_YYDEBUG_define],
-[[/* Debug traces. */
-]m4_if(b4_api_prefix, [yy],
-[[#ifndef YYDEBUG
-# define YYDEBUG ]b4_parse_trace_if([1], [0])[
-#endif]],
-[[#ifndef ]b4_api_PREFIX[DEBUG
-# if defined YYDEBUG
-#if YYDEBUG
-# define ]b4_api_PREFIX[DEBUG 1
-# else
-# define ]b4_api_PREFIX[DEBUG 0
-# endif
-# else /* ! defined YYDEBUG */
-# define ]b4_api_PREFIX[DEBUG ]b4_parse_trace_if([1], [0])[
-# endif /* ! defined YYDEBUG */
-#endif /* ! defined ]b4_api_PREFIX[DEBUG */]])[]dnl
-])
-
-# b4_declare_yydebug
-# ------------------
-m4_define([b4_declare_yydebug],
-[b4_YYDEBUG_define[
-#if ]b4_api_PREFIX[DEBUG
-extern int ]b4_prefix[debug;
-#endif][]dnl
-])
-
-# b4_yylloc_default_define
-# ------------------------
-# Define YYLLOC_DEFAULT.
-m4_define([b4_yylloc_default_define],
-[[/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
- If N is 0, then set CURRENT to the empty location which ends
- the previous symbol: RHS[0] (always defined). */
-
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (N) \
- { \
- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
- } \
- else \
- { \
- (Current).first_line = (Current).last_line = \
- YYRHSLOC (Rhs, 0).last_line; \
- (Current).first_column = (Current).last_column = \
- YYRHSLOC (Rhs, 0).last_column; \
- } \
- while (0)
-#endif
-]])
-
-# b4_yy_location_print_define
-# ---------------------------
-# Define YY_LOCATION_PRINT.
-m4_define([b4_yy_location_print_define],
-[b4_locations_if([[
-/* YY_LOCATION_PRINT -- Print the location on the stream.
- This macro was not mandated originally: define only if we know
- we won't break user code: when these are the locations we know. */
-
-#ifndef YY_LOCATION_PRINT
-# if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL
-
-/* Print *YYLOCP on YYO. Private, do not rely on its existence. */
-
-__attribute__((__unused__))
-]b4_function_define([yy_location_print_],
- [static unsigned],
- [[FILE *yyo], [yyo]],
- [[YYLTYPE const * const yylocp], [yylocp]])[
-{
- unsigned res = 0;
- int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
- if (0 <= yylocp->first_line)
- {
- res += YYFPRINTF (yyo, "%d", yylocp->first_line);
- if (0 <= yylocp->first_column)
- res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
- }
- if (0 <= yylocp->last_line)
- {
- if (yylocp->first_line < yylocp->last_line)
- {
- res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
- if (0 <= end_col)
- res += YYFPRINTF (yyo, ".%d", end_col);
- }
- else if (0 <= end_col && yylocp->first_column < end_col)
- res += YYFPRINTF (yyo, "-%d", end_col);
- }
- return res;
- }
-
-# define YY_LOCATION_PRINT(File, Loc) \
- yy_location_print_ (File, &(Loc))
-
-# else
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif]],
-[[/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif]])
-])
-
-# b4_yyloc_default
-# ----------------
-# Expand to a possible default value for yylloc.
-m4_define([b4_yyloc_default],
-[[
-# if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL
- = { ]m4_join([, ],
- m4_defn([b4_location_initial_line]),
- m4_defn([b4_location_initial_column]),
- m4_defn([b4_location_initial_line]),
- m4_defn([b4_location_initial_column]))[ }
-# endif
-]])
diff --git a/gnuwin32/bin/data/glr.c b/gnuwin32/bin/data/glr.c
deleted file mode 100644
index ff70890f..00000000
--- a/gnuwin32/bin/data/glr.c
+++ /dev/null
@@ -1,2563 +0,0 @@
- -*- C -*-
-
-# GLR skeleton for Bison
-
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# If we are loaded by glr.cc, do not override c++.m4 definitions by
-# those of c.m4.
-m4_if(b4_skeleton, ["glr.c"],
- [m4_include(b4_pkgdatadir/[c.m4])])
-
-## ---------------- ##
-## Default values. ##
-## ---------------- ##
-
-# Stack parameters.
-m4_define_default([b4_stack_depth_max], [10000])
-m4_define_default([b4_stack_depth_init], [200])
-
-
-
-## ------------------------ ##
-## Pure/impure interfaces. ##
-## ------------------------ ##
-
-b4_define_flag_if([pure])
-# If glr.cc is including this file and thus has already set b4_pure_flag,
-# do not change the value of b4_pure_flag, and do not record a use of api.pure.
-m4_ifndef([b4_pure_flag],
-[b4_percent_define_default([[api.pure]], [[false]])
- m4_define([b4_pure_flag],
- [b4_percent_define_flag_if([[api.pure]], [[1]], [[0]])])])
-
-# b4_user_formals
-# ---------------
-# The possible parse-params formal arguments preceded by a comma.
-#
-# This is not shared with yacc.c in c.m4 because GLR relies on ISO C
-# formal argument declarations.
-m4_define([b4_user_formals],
-[m4_ifset([b4_parse_param], [, b4_formals(b4_parse_param)])])
-
-
-# b4_yyerror_args
-# ---------------
-# Optional effective arguments passed to yyerror: user args plus yylloc, and
-# a trailing comma.
-m4_define([b4_yyerror_args],
-[b4_pure_if([b4_locations_if([yylocp, ])])dnl
-m4_ifset([b4_parse_param], [b4_args(b4_parse_param), ])])
-
-
-# b4_lyyerror_args
-# ----------------
-# Same as above, but on the lookahead, hence &yylloc instead of yylocp.
-m4_define([b4_lyyerror_args],
-[b4_pure_if([b4_locations_if([&yylloc, ])])dnl
-m4_ifset([b4_parse_param], [b4_args(b4_parse_param), ])])
-
-
-# b4_pure_args
-# ------------
-# Same as b4_yyerror_args, but with a leading comma.
-m4_define([b4_pure_args],
-[b4_pure_if([b4_locations_if([, yylocp])])[]b4_user_args])
-
-
-# b4_lpure_args
-# -------------
-# Same as above, but on the lookahead, hence &yylloc instead of yylocp.
-m4_define([b4_lpure_args],
-[b4_pure_if([b4_locations_if([, &yylloc])])[]b4_user_args])
-
-
-
-# b4_pure_formals
-# ---------------
-# Arguments passed to yyerror: user formals plus yylocp with leading comma.
-m4_define([b4_pure_formals],
-[b4_pure_if([b4_locations_if([, YYLTYPE *yylocp])])[]b4_user_formals])
-
-
-# b4_locuser_formals(LOC = yylocp)
-# --------------------------------
-m4_define([b4_locuser_formals],
-[b4_locations_if([, YYLTYPE *m4_default([$1], [yylocp])])[]b4_user_formals])
-
-
-# b4_locuser_args(LOC = yylocp)
-# -----------------------------
-m4_define([b4_locuser_args],
-[b4_locations_if([, m4_default([$1], [yylocp])])[]b4_user_args])
-
-
-
-## ----------------- ##
-## Semantic Values. ##
-## ----------------- ##
-
-
-# b4_lhs_value([TYPE])
-# --------------------
-# Expansion of $<TYPE>$.
-m4_define([b4_lhs_value],
-[b4_symbol_value([(*yyvalp)], [$1])])
-
-
-# b4_rhs_data(RULE-LENGTH, NUM)
-# -----------------------------
-# Expand to the semantic stack place that contains value and location
-# of symbol number NUM in a rule of length RULE-LENGTH.
-m4_define([b4_rhs_data],
-[((yyGLRStackItem const *)yyvsp)@{YYFILL (b4_subtract([$2], [$1]))@}.yystate])
-
-
-# b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
-# --------------------------------------
-# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
-# symbols on RHS.
-m4_define([b4_rhs_value],
-[b4_symbol_value([b4_rhs_data([$1], [$2]).yysemantics.yysval], [$3])])
-
-
-
-## ----------- ##
-## Locations. ##
-## ----------- ##
-
-# b4_lhs_location()
-# -----------------
-# Expansion of @$.
-m4_define([b4_lhs_location],
-[(*yylocp)])
-
-
-# b4_rhs_location(RULE-LENGTH, NUM)
-# ---------------------------------
-# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
-# on RHS.
-m4_define([b4_rhs_location],
-[(b4_rhs_data([$1], [$2]).yyloc)])
-
-
-## -------------- ##
-## Declarations. ##
-## -------------- ##
-
-# b4_shared_declarations
-# ----------------------
-# Declaration that might either go into the header (if --defines)
-# or open coded in the parser body. glr.cc has its own definition.
-m4_if(b4_skeleton, ["glr.c"],
-[m4_define([b4_shared_declarations],
-[b4_declare_yydebug[
-]b4_percent_code_get([[requires]])[
-]b4_token_enums[
-]b4_declare_yylstype[
-]b4_function_declare(b4_prefix[parse], [int], b4_parse_param)[
-]b4_percent_code_get([[provides]])[]dnl
-])
-])
-
-## -------------- ##
-## Output files. ##
-## -------------- ##
-
-b4_output_begin([b4_parser_file_name])
-b4_copyright([Skeleton implementation for Bison GLR parsers in C],
- [2002-2013])[
-
-/* C GLR parser skeleton written by Paul Hilfinger. */
-
-]b4_identification
-
-b4_percent_code_get([[top]])[
-]m4_if(b4_api_prefix, [yy], [],
-[[/* Substitute the type names. */
-#define YYSTYPE ]b4_api_PREFIX[STYPE]b4_locations_if([[
-#define YYLTYPE ]b4_api_PREFIX[LTYPE]])])[
-]m4_if(b4_prefix, [yy], [],
-[[/* Substitute the variable and function names. */
-#define yyparse ]b4_prefix[parse
-#define yylex ]b4_prefix[lex
-#define yyerror ]b4_prefix[error
-#define yydebug ]b4_prefix[debug
-]]b4_pure_if([], [[
-#define yylval ]b4_prefix[lval
-#define yychar ]b4_prefix[char
-#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[
-#define yylloc ]b4_prefix[lloc]])]))[
-
-/* First part of user declarations. */
-]b4_user_pre_prologue[
-
-]b4_null_define[
-
-]b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]],
- [b4_shared_declarations])[
-
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE ]b4_error_verbose_if([1], [0])[
-#endif
-
-/* Default (constant) value used for initialization for null
- right-hand sides. Unlike the standard yacc.c template, here we set
- the default value of $$ to a zeroed-out value. Since the default
- value is undefined, this behavior is technically correct. */
-static YYSTYPE yyval_default;]b4_locations_if([[
-static YYLTYPE yyloc_default][]b4_yyloc_default;])[
-
-/* Copy the second part of user declarations. */
-]b4_user_post_prologue
-b4_percent_code_get[]dnl
-
-[#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-# if ENABLE_NLS
-# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
-# endif
-# endif
-# ifndef YY_
-# define YY_(Msgid) Msgid
-# endif
-#endif
-
-#ifndef YYFREE
-# define YYFREE free
-#endif
-#ifndef YYMALLOC
-# define YYMALLOC malloc
-#endif
-#ifndef YYREALLOC
-# define YYREALLOC realloc
-#endif
-
-#define YYSIZEMAX ((size_t) -1)
-
-#ifdef __cplusplus
- typedef bool yybool;
-#else
- typedef unsigned char yybool;
-#endif
-#define yytrue 1
-#define yyfalse 0
-
-#ifndef YYSETJMP
-# include <setjmp.h>
-# define YYJMP_BUF jmp_buf
-# define YYSETJMP(Env) setjmp (Env)
-/* Pacify clang. */
-# define YYLONGJMP(Env, Val) (longjmp (Env, Val), YYASSERT (0))
-#endif
-
-]b4_attribute_define[
-
-#ifndef YYASSERT
-# define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0)))
-#endif
-
-/* YYFINAL -- State number of the termination state. */
-#define YYFINAL ]b4_final_state_number[
-/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST ]b4_last[
-
-/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS ]b4_tokens_number[
-/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS ]b4_nterms_number[
-/* YYNRULES -- Number of rules. */
-#define YYNRULES ]b4_rules_number[
-/* YYNRULES -- Number of states. */
-#define YYNSTATES ]b4_states_number[
-/* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
-#define YYMAXRHS ]b4_r2_max[
-/* YYMAXLEFT -- Maximum number of symbols to the left of a handle
- accessed by $0, $-1, etc., in any rule. */
-#define YYMAXLEFT ]b4_max_left_semantic_context[
-
-/* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */
-#define YYUNDEFTOK ]b4_undef_token_number[
-#define YYMAXUTOK ]b4_user_token_number_max[
-
-#define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
-static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
-{
- ]b4_translate[
-};
-
-#if ]b4_api_PREFIX[DEBUG
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const ]b4_int_type_for([b4_rline])[ yyrline[] =
-{
- ]b4_rline[
-};
-#endif
-
-#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-static const char *const yytname[] =
-{
- ]b4_tname[
-};
-#endif
-
-#define YYPACT_NINF ]b4_pact_ninf[
-#define YYTABLE_NINF ]b4_table_ninf[
-
-]b4_parser_tables_define[
-
-/* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
-static const ]b4_int_type_for([b4_dprec])[ yydprec[] =
-{
- ]b4_dprec[
-};
-
-/* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
-static const ]b4_int_type_for([b4_merger])[ yymerger[] =
-{
- ]b4_merger[
-};
-
-/* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
- in the case of predicates. */
-static const yybool yyimmediate[] =
-{
- ]b4_immediate[
-};
-
-/* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
- list of conflicting reductions corresponding to action entry for
- state STATE-NUM in yytable. 0 means no conflicts. The list in
- yyconfl is terminated by a rule number of 0. */
-static const ]b4_int_type_for([b4_conflict_list_heads])[ yyconflp[] =
-{
- ]b4_conflict_list_heads[
-};
-
-/* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
- 0, pointed into by YYCONFLP. */
-]dnl Do not use b4_int_type_for here, since there are places where
-dnl pointers onto yyconfl are taken, whose type is "short int *".
-dnl We probably ought to introduce a type for confl.
-[static const short int yyconfl[] =
-{
- ]b4_conflicting_rules[
-};
-
-/* Error token number */
-#define YYTERROR 1
-
-]b4_locations_if([[
-]b4_yylloc_default_define[
-# define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
-]])[
-
-]b4_pure_if(
-[
-#undef yynerrs
-#define yynerrs (yystackp->yyerrcnt)
-#undef yychar
-#define yychar (yystackp->yyrawchar)
-#undef yylval
-#define yylval (yystackp->yyval)
-#undef yylloc
-#define yylloc (yystackp->yyloc)
-m4_if(b4_prefix[], [yy], [],
-[#define b4_prefix[]nerrs yynerrs
-#define b4_prefix[]char yychar
-#define b4_prefix[]lval yylval
-#define b4_prefix[]lloc yylloc])],
-[YYSTYPE yylval;]b4_locations_if([[
-YYLTYPE yylloc;]])[
-
-int yynerrs;
-int yychar;])[
-
-static const int YYEOF = 0;
-static const int YYEMPTY = -2;
-
-typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG;
-
-#define YYCHK(YYE) \
- do { \
- YYRESULTTAG yychk_flag = YYE; \
- if (yychk_flag != yyok) \
- return yychk_flag; \
- } while (0)
-
-#if ]b4_api_PREFIX[DEBUG
-
-# ifndef YYFPRINTF
-# define YYFPRINTF fprintf
-# endif
-
-]b4_yy_location_print_define[
-
-# define YYDPRINTF(Args) \
- do { \
- if (yydebug) \
- YYFPRINTF Args; \
- } while (0)
-
-]b4_yy_symbol_print_define[
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
- do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, Type, Value]b4_locuser_args([Location])[); \
- YYFPRINTF (stderr, "\n"); \
- } \
- } while (0)
-
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int yydebug;
-
-struct yyGLRStack;
-static void yypstack (struct yyGLRStack* yystackp, size_t yyk)
- __attribute__ ((__unused__));
-static void yypdumpstack (struct yyGLRStack* yystackp)
- __attribute__ ((__unused__));
-
-#else /* !]b4_api_PREFIX[DEBUG */
-
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-
-#endif /* !]b4_api_PREFIX[DEBUG */
-
-/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH ]b4_stack_depth_init[
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
- if the built-in stack extension method is used).
-
- Do not make this value too large; the results are undefined if
- SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
- evaluated with infinite-precision integer arithmetic. */
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH ]b4_stack_depth_max[
-#endif
-
-/* Minimum number of free items on the stack allowed after an
- allocation. This is to allow allocation and initialization
- to be completed by functions that call yyexpandGLRStack before the
- stack is expanded, thus insuring that all necessary pointers get
- properly redirected to new data. */
-#define YYHEADROOM 2
-
-#ifndef YYSTACKEXPANDABLE
-# define YYSTACKEXPANDABLE 1
-#endif
-
-#if YYSTACKEXPANDABLE
-# define YY_RESERVE_GLRSTACK(Yystack) \
- do { \
- if (Yystack->yyspaceLeft < YYHEADROOM) \
- yyexpandGLRStack (Yystack); \
- } while (0)
-#else
-# define YY_RESERVE_GLRSTACK(Yystack) \
- do { \
- if (Yystack->yyspaceLeft < YYHEADROOM) \
- yyMemoryExhausted (Yystack); \
- } while (0)
-#endif
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystpcpy
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-{
- char *yyd = yydest;
- const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
- quotes and backslashes, so that it's suitable for yyerror. The
- heuristic is that double-quoting is unnecessary unless the string
- contains an apostrophe, a comma, or backslash (other than
- backslash-backslash). YYSTR is taken from yytname. If YYRES is
- null, do not copy; instead, return the length of what the result
- would have been. */
-static size_t
-yytnamerr (char *yyres, const char *yystr)
-{
- if (*yystr == '"')
- {
- size_t yyn = 0;
- char const *yyp = yystr;
-
- for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
- do_not_strip_quotes: ;
- }
-
- if (! yyres)
- return strlen (yystr);
-
- return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-#endif /* !YYERROR_VERBOSE */
-
-/** State numbers, as in LALR(1) machine */
-typedef int yyStateNum;
-
-/** Rule numbers, as in LALR(1) machine */
-typedef int yyRuleNum;
-
-/** Grammar symbol */
-typedef int yySymbol;
-
-/** Item references, as in LALR(1) machine */
-typedef short int yyItemNum;
-
-typedef struct yyGLRState yyGLRState;
-typedef struct yyGLRStateSet yyGLRStateSet;
-typedef struct yySemanticOption yySemanticOption;
-typedef union yyGLRStackItem yyGLRStackItem;
-typedef struct yyGLRStack yyGLRStack;
-
-struct yyGLRState {
- /** Type tag: always true. */
- yybool yyisState;
- /** Type tag for yysemantics. If true, yysval applies, otherwise
- * yyfirstVal applies. */
- yybool yyresolved;
- /** Number of corresponding LALR(1) machine state. */
- yyStateNum yylrState;
- /** Preceding state in this stack */
- yyGLRState* yypred;
- /** Source position of the last token produced by my symbol */
- size_t yyposn;
- union {
- /** First in a chain of alternative reductions producing the
- * non-terminal corresponding to this state, threaded through
- * yynext. */
- yySemanticOption* yyfirstVal;
- /** Semantic value for this state. */
- YYSTYPE yysval;
- } yysemantics;]b4_locations_if([[
- /** Source location for this state. */
- YYLTYPE yyloc;]])[
-};
-
-struct yyGLRStateSet {
- yyGLRState** yystates;
- /** During nondeterministic operation, yylookaheadNeeds tracks which
- * stacks have actually needed the current lookahead. During deterministic
- * operation, yylookaheadNeeds[0] is not maintained since it would merely
- * duplicate yychar != YYEMPTY. */
- yybool* yylookaheadNeeds;
- size_t yysize, yycapacity;
-};
-
-struct yySemanticOption {
- /** Type tag: always false. */
- yybool yyisState;
- /** Rule number for this reduction */
- yyRuleNum yyrule;
- /** The last RHS state in the list of states to be reduced. */
- yyGLRState* yystate;
- /** The lookahead for this reduction. */
- int yyrawchar;
- YYSTYPE yyval;]b4_locations_if([[
- YYLTYPE yyloc;]])[
- /** Next sibling in chain of options. To facilitate merging,
- * options are chained in decreasing order by address. */
- yySemanticOption* yynext;
-};
-
-/** Type of the items in the GLR stack. The yyisState field
- * indicates which item of the union is valid. */
-union yyGLRStackItem {
- yyGLRState yystate;
- yySemanticOption yyoption;
-};
-
-struct yyGLRStack {
- int yyerrState;
-]b4_locations_if([[ /* To compute the location of the error token. */
- yyGLRStackItem yyerror_range[3];]])[
-]b4_pure_if(
-[
- int yyerrcnt;
- int yyrawchar;
- YYSTYPE yyval;]b4_locations_if([[
- YYLTYPE yyloc;]])[
-])[
- YYJMP_BUF yyexception_buffer;
- yyGLRStackItem* yyitems;
- yyGLRStackItem* yynextFree;
- size_t yyspaceLeft;
- yyGLRState* yysplitPoint;
- yyGLRState* yylastDeleted;
- yyGLRStateSet yytops;
-};
-
-#if YYSTACKEXPANDABLE
-static void yyexpandGLRStack (yyGLRStack* yystackp);
-#endif
-
-static void yyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg)
- __attribute__ ((__noreturn__));
-static void
-yyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg)
-{
- if (yymsg != YY_NULL)
- yyerror (]b4_yyerror_args[yymsg);
- YYLONGJMP (yystackp->yyexception_buffer, 1);
-}
-
-static void yyMemoryExhausted (yyGLRStack* yystackp)
- __attribute__ ((__noreturn__));
-static void
-yyMemoryExhausted (yyGLRStack* yystackp)
-{
- YYLONGJMP (yystackp->yyexception_buffer, 2);
-}
-
-#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE
-/** A printable representation of TOKEN. */
-static inline const char*
-yytokenName (yySymbol yytoken)
-{
- if (yytoken == YYEMPTY)
- return "";
-
- return yytname[yytoken];
-}
-#endif
-
-/** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
- * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
- * containing the pointer to the next state in the chain. */
-static void yyfillin (yyGLRStackItem *, int, int) __attribute__ ((__unused__));
-static void
-yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
-{
- int i;
- yyGLRState *s = yyvsp[yylow0].yystate.yypred;
- for (i = yylow0-1; i >= yylow1; i -= 1)
- {
-#if ]b4_api_PREFIX[DEBUG
- yyvsp[i].yystate.yylrState = s->yylrState;
-#endif
- yyvsp[i].yystate.yyresolved = s->yyresolved;
- if (s->yyresolved)
- yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval;
- else
- /* The effect of using yysval or yyloc (in an immediate rule) is
- * undefined. */
- yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULL;]b4_locations_if([[
- yyvsp[i].yystate.yyloc = s->yyloc;]])[
- s = yyvsp[i].yystate.yypred = s->yypred;
- }
-}
-
-/* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
- * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
- * For convenience, always return YYLOW1. */
-static inline int yyfill (yyGLRStackItem *, int *, int, yybool)
- __attribute__ ((__unused__));
-static inline int
-yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
-{
- if (!yynormal && yylow1 < *yylow)
- {
- yyfillin (yyvsp, *yylow, yylow1);
- *yylow = yylow1;
- }
- return yylow1;
-}
-
-/** Perform user action for rule number YYN, with RHS length YYRHSLEN,
- * and top stack item YYVSP. YYLVALP points to place to put semantic
- * value ($$), and yylocp points to place for location information
- * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT,
- * yyerr for YYERROR, yyabort for YYABORT. */
-static YYRESULTTAG
-yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
- yyGLRStack* yystackp,
- YYSTYPE* yyvalp]b4_locuser_formals[)
-{
- yybool yynormal __attribute__ ((__unused__)) =
- (yystackp->yysplitPoint == YY_NULL);
- int yylow;
-]b4_parse_param_use([yyvalp], [yylocp])dnl
-[ YYUSE (yyrhslen);
-# undef yyerrok
-# define yyerrok (yystackp->yyerrState = 0)
-# undef YYACCEPT
-# define YYACCEPT return yyaccept
-# undef YYABORT
-# define YYABORT return yyabort
-# undef YYERROR
-# define YYERROR return yyerrok, yyerr
-# undef YYRECOVERING
-# define YYRECOVERING() (yystackp->yyerrState != 0)
-# undef yyclearin
-# define yyclearin (yychar = YYEMPTY)
-# undef YYFILL
-# define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal)
-# undef YYBACKUP
-# define YYBACKUP(Token, Value) \
- return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \
- yyerrok, yyerr
-
- yylow = 1;
- if (yyrhslen == 0)
- *yyvalp = yyval_default;
- else
- *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval;]b4_locations_if([[
- YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen);
- yystackp->yyerror_range[1].yystate.yyloc = *yylocp;
-]])[
- switch (yyn)
- {
- ]b4_user_actions[
- default: break;
- }
-
- return yyok;
-# undef yyerrok
-# undef YYABORT
-# undef YYACCEPT
-# undef YYERROR
-# undef YYBACKUP
-# undef yyclearin
-# undef YYRECOVERING
-}
-
-
-static void
-yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
-{
- YYUSE (yy0);
- YYUSE (yy1);
-
- switch (yyn)
- {
-]b4_mergers[
- default: break;
- }
-}
-
- /* Bison grammar-table manipulation. */
-
-]b4_yydestruct_define[
-
-/** Number of symbols composing the right hand side of rule #RULE. */
-static inline int
-yyrhsLength (yyRuleNum yyrule)
-{
- return yyr2[yyrule];
-}
-
-static void
-yydestroyGLRState (char const *yymsg, yyGLRState *yys]b4_user_formals[)
-{
- if (yys->yyresolved)
- yydestruct (yymsg, yystos[yys->yylrState],
- &yys->yysemantics.yysval]b4_locuser_args([&yys->yyloc])[);
- else
- {
-#if ]b4_api_PREFIX[DEBUG
- if (yydebug)
- {
- if (yys->yysemantics.yyfirstVal)
- YYFPRINTF (stderr, "%s unresolved ", yymsg);
- else
- YYFPRINTF (stderr, "%s incomplete ", yymsg);
- yy_symbol_print (stderr, yystos[yys->yylrState],
- YY_NULL]b4_locuser_args([&yys->yyloc])[);
- YYFPRINTF (stderr, "\n");
- }
-#endif
-
- if (yys->yysemantics.yyfirstVal)
- {
- yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
- yyGLRState *yyrh;
- int yyn;
- for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
- yyn > 0;
- yyrh = yyrh->yypred, yyn -= 1)
- yydestroyGLRState (yymsg, yyrh]b4_user_args[);
- }
- }
-}
-
-/** Left-hand-side symbol for rule #YYRULE. */
-static inline yySymbol
-yylhsNonterm (yyRuleNum yyrule)
-{
- return yyr1[yyrule];
-}
-
-#define yypact_value_is_default(Yystate) \
- ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[
-
-/** True iff LR state YYSTATE has only a default reduction (regardless
- * of token). */
-static inline yybool
-yyisDefaultedState (yyStateNum yystate)
-{
- return yypact_value_is_default (yypact[yystate]);
-}
-
-/** The default reduction for YYSTATE, assuming it has one. */
-static inline yyRuleNum
-yydefaultAction (yyStateNum yystate)
-{
- return yydefact[yystate];
-}
-
-#define yytable_value_is_error(Yytable_value) \
- ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[
-
-/** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
- * Result R means
- * R < 0: Reduce on rule -R.
- * R = 0: Error.
- * R > 0: Shift to state R.
- * Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
- * of conflicting reductions.
- */
-static inline void
-yygetLRActions (yyStateNum yystate, int yytoken,
- int* yyaction, const short int** yyconflicts)
-{
- int yyindex = yypact[yystate] + yytoken;
- if (yypact_value_is_default (yypact[yystate])
- || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
- {
- *yyaction = -yydefact[yystate];
- *yyconflicts = yyconfl;
- }
- else if (! yytable_value_is_error (yytable[yyindex]))
- {
- *yyaction = yytable[yyindex];
- *yyconflicts = yyconfl + yyconflp[yyindex];
- }
- else
- {
- *yyaction = 0;
- *yyconflicts = yyconfl + yyconflp[yyindex];
- }
-}
-
-static inline yyStateNum
-yyLRgotoState (yyStateNum yystate, yySymbol yylhs)
-{
- int yyr = yypgoto[yylhs - YYNTOKENS] + yystate;
- if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
- return yytable[yyr];
- else
- return yydefgoto[yylhs - YYNTOKENS];
-}
-
-static inline yybool
-yyisShiftAction (int yyaction)
-{
- return 0 < yyaction;
-}
-
-static inline yybool
-yyisErrorAction (int yyaction)
-{
- return yyaction == 0;
-}
-
- /* GLRStates */
-
-/** Return a fresh GLRStackItem in YYSTACKP. The item is an LR state
- * if YYISSTATE, and otherwise a semantic option. Callers should call
- * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
- * headroom. */
-
-static inline yyGLRStackItem*
-yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
-{
- yyGLRStackItem* yynewItem = yystackp->yynextFree;
- yystackp->yyspaceLeft -= 1;
- yystackp->yynextFree += 1;
- yynewItem->yystate.yyisState = yyisState;
- return yynewItem;
-}
-
-/** Add a new semantic action that will execute the action for rule
- * YYRULE on the semantic values in YYRHS to the list of
- * alternative actions for YYSTATE. Assumes that YYRHS comes from
- * stack #YYK of *YYSTACKP. */
-static void
-yyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate,
- yyGLRState* yyrhs, yyRuleNum yyrule)
-{
- yySemanticOption* yynewOption =
- &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
- yynewOption->yystate = yyrhs;
- yynewOption->yyrule = yyrule;
- if (yystackp->yytops.yylookaheadNeeds[yyk])
- {
- yynewOption->yyrawchar = yychar;
- yynewOption->yyval = yylval;]b4_locations_if([
- yynewOption->yyloc = yylloc;])[
- }
- else
- yynewOption->yyrawchar = YYEMPTY;
- yynewOption->yynext = yystate->yysemantics.yyfirstVal;
- yystate->yysemantics.yyfirstVal = yynewOption;
-
- YY_RESERVE_GLRSTACK (yystackp);
-}
-
- /* GLRStacks */
-
-/** Initialize YYSET to a singleton set containing an empty stack. */
-static yybool
-yyinitStateSet (yyGLRStateSet* yyset)
-{
- yyset->yysize = 1;
- yyset->yycapacity = 16;
- yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]);
- if (! yyset->yystates)
- return yyfalse;
- yyset->yystates[0] = YY_NULL;
- yyset->yylookaheadNeeds =
- (yybool*) YYMALLOC (16 * sizeof yyset->yylookaheadNeeds[0]);
- if (! yyset->yylookaheadNeeds)
- {
- YYFREE (yyset->yystates);
- return yyfalse;
- }
- return yytrue;
-}
-
-static void yyfreeStateSet (yyGLRStateSet* yyset)
-{
- YYFREE (yyset->yystates);
- YYFREE (yyset->yylookaheadNeeds);
-}
-
-/** Initialize *YYSTACKP to a single empty stack, with total maximum
- * capacity for all stacks of YYSIZE. */
-static yybool
-yyinitGLRStack (yyGLRStack* yystackp, size_t yysize)
-{
- yystackp->yyerrState = 0;
- yynerrs = 0;
- yystackp->yyspaceLeft = yysize;
- yystackp->yyitems =
- (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystackp->yynextFree[0]);
- if (!yystackp->yyitems)
- return yyfalse;
- yystackp->yynextFree = yystackp->yyitems;
- yystackp->yysplitPoint = YY_NULL;
- yystackp->yylastDeleted = YY_NULL;
- return yyinitStateSet (&yystackp->yytops);
-}
-
-
-#if YYSTACKEXPANDABLE
-# define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \
- &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE
-
-/** If *YYSTACKP is expandable, extend it. WARNING: Pointers into the
- stack from outside should be considered invalid after this call.
- We always expand when there are 1 or fewer items left AFTER an
- allocation, so that we can avoid having external pointers exist
- across an allocation. */
-static void
-yyexpandGLRStack (yyGLRStack* yystackp)
-{
- yyGLRStackItem* yynewItems;
- yyGLRStackItem* yyp0, *yyp1;
- size_t yynewSize;
- size_t yyn;
- size_t yysize = yystackp->yynextFree - yystackp->yyitems;
- if (YYMAXDEPTH - YYHEADROOM < yysize)
- yyMemoryExhausted (yystackp);
- yynewSize = 2*yysize;
- if (YYMAXDEPTH < yynewSize)
- yynewSize = YYMAXDEPTH;
- yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]);
- if (! yynewItems)
- yyMemoryExhausted (yystackp);
- for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
- 0 < yyn;
- yyn -= 1, yyp0 += 1, yyp1 += 1)
- {
- *yyp1 = *yyp0;
- if (*(yybool *) yyp0)
- {
- yyGLRState* yys0 = &yyp0->yystate;
- yyGLRState* yys1 = &yyp1->yystate;
- if (yys0->yypred != YY_NULL)
- yys1->yypred =
- YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
- if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULL)
- yys1->yysemantics.yyfirstVal =
- YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
- }
- else
- {
- yySemanticOption* yyv0 = &yyp0->yyoption;
- yySemanticOption* yyv1 = &yyp1->yyoption;
- if (yyv0->yystate != YY_NULL)
- yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
- if (yyv0->yynext != YY_NULL)
- yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
- }
- }
- if (yystackp->yysplitPoint != YY_NULL)
- yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
- yystackp->yysplitPoint, yystate);
-
- for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
- if (yystackp->yytops.yystates[yyn] != YY_NULL)
- yystackp->yytops.yystates[yyn] =
- YYRELOC (yystackp->yyitems, yynewItems,
- yystackp->yytops.yystates[yyn], yystate);
- YYFREE (yystackp->yyitems);
- yystackp->yyitems = yynewItems;
- yystackp->yynextFree = yynewItems + yysize;
- yystackp->yyspaceLeft = yynewSize - yysize;
-}
-#endif
-
-static void
-yyfreeGLRStack (yyGLRStack* yystackp)
-{
- YYFREE (yystackp->yyitems);
- yyfreeStateSet (&yystackp->yytops);
-}
-
-/** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
- * splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
- * YYS. */
-static inline void
-yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
-{
- if (yystackp->yysplitPoint != YY_NULL && yystackp->yysplitPoint > yys)
- yystackp->yysplitPoint = yys;
-}
-
-/** Invalidate stack #YYK in *YYSTACKP. */
-static inline void
-yymarkStackDeleted (yyGLRStack* yystackp, size_t yyk)
-{
- if (yystackp->yytops.yystates[yyk] != YY_NULL)
- yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
- yystackp->yytops.yystates[yyk] = YY_NULL;
-}
-
-/** Undelete the last stack in *YYSTACKP that was marked as deleted. Can
- only be done once after a deletion, and only when all other stacks have
- been deleted. */
-static void
-yyundeleteLastStack (yyGLRStack* yystackp)
-{
- if (yystackp->yylastDeleted == YY_NULL || yystackp->yytops.yysize != 0)
- return;
- yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
- yystackp->yytops.yysize = 1;
- YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
- yystackp->yylastDeleted = YY_NULL;
-}
-
-static inline void
-yyremoveDeletes (yyGLRStack* yystackp)
-{
- size_t yyi, yyj;
- yyi = yyj = 0;
- while (yyj < yystackp->yytops.yysize)
- {
- if (yystackp->yytops.yystates[yyi] == YY_NULL)
- {
- if (yyi == yyj)
- {
- YYDPRINTF ((stderr, "Removing dead stacks.\n"));
- }
- yystackp->yytops.yysize -= 1;
- }
- else
- {
- yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
- /* In the current implementation, it's unnecessary to copy
- yystackp->yytops.yylookaheadNeeds[yyi] since, after
- yyremoveDeletes returns, the parser immediately either enters
- deterministic operation or shifts a token. However, it doesn't
- hurt, and the code might evolve to need it. */
- yystackp->yytops.yylookaheadNeeds[yyj] =
- yystackp->yytops.yylookaheadNeeds[yyi];
- if (yyj != yyi)
- {
- YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n",
- (unsigned long int) yyi, (unsigned long int) yyj));
- }
- yyj += 1;
- }
- yyi += 1;
- }
-}
-
-/** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
- * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
- * value *YYVALP and source location *YYLOCP. */
-static inline void
-yyglrShift (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
- size_t yyposn,
- YYSTYPE* yyvalp]b4_locations_if([, YYLTYPE* yylocp])[)
-{
- yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
-
- yynewState->yylrState = yylrState;
- yynewState->yyposn = yyposn;
- yynewState->yyresolved = yytrue;
- yynewState->yypred = yystackp->yytops.yystates[yyk];
- yynewState->yysemantics.yysval = *yyvalp;]b4_locations_if([
- yynewState->yyloc = *yylocp;])[
- yystackp->yytops.yystates[yyk] = yynewState;
-
- YY_RESERVE_GLRSTACK (yystackp);
-}
-
-/** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
- * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
- * semantic value of YYRHS under the action for YYRULE. */
-static inline void
-yyglrShiftDefer (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
- size_t yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
-{
- yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
-
- yynewState->yylrState = yylrState;
- yynewState->yyposn = yyposn;
- yynewState->yyresolved = yyfalse;
- yynewState->yypred = yystackp->yytops.yystates[yyk];
- yynewState->yysemantics.yyfirstVal = YY_NULL;
- yystackp->yytops.yystates[yyk] = yynewState;
-
- /* Invokes YY_RESERVE_GLRSTACK. */
- yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
-}
-
-#if !]b4_api_PREFIX[DEBUG
-# define YY_REDUCE_PRINT(Args)
-#else
-# define YY_REDUCE_PRINT(Args) \
-do { \
- if (yydebug) \
- yy_reduce_print Args; \
-} while (0)
-
-/*----------------------------------------------------------------------.
-| Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
-`----------------------------------------------------------------------*/
-
-static inline void
-yy_reduce_print (int yynormal, yyGLRStackItem* yyvsp, size_t yyk,
- yyRuleNum yyrule]b4_user_formals[)
-{
- int yynrhs = yyrhsLength (yyrule);]b4_locations_if([
- int yylow = 1;])[
- int yyi;
- YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu):\n",
- (unsigned long int) yyk, yyrule - 1,
- (unsigned long int) yyrline[yyrule]);
- if (! yynormal)
- yyfillin (yyvsp, 1, -yynrhs);
- /* The symbols being reduced. */
- for (yyi = 0; yyi < yynrhs; yyi++)
- {
- YYFPRINTF (stderr, " $%d = ", yyi + 1);
- yy_symbol_print (stderr,
- yystos[yyvsp[yyi - yynrhs + 1].yystate.yylrState],
- &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yysval
- ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl
- b4_user_args[);
- if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
- YYFPRINTF (stderr, " (unresolved)");
- YYFPRINTF (stderr, "\n");
- }
-}
-#endif
-
-/** Pop the symbols consumed by reduction #YYRULE from the top of stack
- * #YYK of *YYSTACKP, and perform the appropriate semantic action on their
- * semantic values. Assumes that all ambiguities in semantic values
- * have been previously resolved. Set *YYVALP to the resulting value,
- * and *YYLOCP to the computed location (if any). Return value is as
- * for userAction. */
-static inline YYRESULTTAG
-yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
- YYSTYPE* yyvalp]b4_locuser_formals[)
-{
- int yynrhs = yyrhsLength (yyrule);
-
- if (yystackp->yysplitPoint == YY_NULL)
- {
- /* Standard special case: single stack. */
- yyGLRStackItem* yyrhs = (yyGLRStackItem*) yystackp->yytops.yystates[yyk];
- YYASSERT (yyk == 0);
- yystackp->yynextFree -= yynrhs;
- yystackp->yyspaceLeft += yynrhs;
- yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
- YY_REDUCE_PRINT ((1, yyrhs, yyk, yyrule]b4_user_args[));
- return yyuserAction (yyrule, yynrhs, yyrhs, yystackp,
- yyvalp]b4_locuser_args[);
- }
- else
- {
- int yyi;
- yyGLRState* yys;
- yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
- yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
- = yystackp->yytops.yystates[yyk];]b4_locations_if([[
- if (yynrhs == 0)
- /* Set default location. */
- yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;]])[
- for (yyi = 0; yyi < yynrhs; yyi += 1)
- {
- yys = yys->yypred;
- YYASSERT (yys);
- }
- yyupdateSplit (yystackp, yys);
- yystackp->yytops.yystates[yyk] = yys;
- YY_REDUCE_PRINT ((0, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, yyk, yyrule]b4_user_args[));
- return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
- yystackp, yyvalp]b4_locuser_args[);
- }
-}
-
-/** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
- * and push back on the resulting nonterminal symbol. Perform the
- * semantic action associated with YYRULE and store its value with the
- * newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
- * unambiguous. Otherwise, store the deferred semantic action with
- * the new state. If the new state would have an identical input
- * position, LR state, and predecessor to an existing state on the stack,
- * it is identified with that existing state, eliminating stack #YYK from
- * *YYSTACKP. In this case, the semantic value is
- * added to the options for the existing state's semantic value.
- */
-static inline YYRESULTTAG
-yyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
- yybool yyforceEval]b4_user_formals[)
-{
- size_t yyposn = yystackp->yytops.yystates[yyk]->yyposn;
-
- if (yyforceEval || yystackp->yysplitPoint == YY_NULL)
- {
- YYRESULTTAG yyflag;
- YYSTYPE yysval;]b4_locations_if([
- YYLTYPE yyloc;])[
-
- yyflag = yydoAction (yystackp, yyk, yyrule, &yysval]b4_locuser_args([&yyloc])[);
- if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULL)
- {
- YYDPRINTF ((stderr, "Parse on stack %lu rejected by rule #%d.\n",
- (unsigned long int) yyk, yyrule - 1));
- }
- if (yyflag != yyok)
- return yyflag;
- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyrule], &yysval, &yyloc);
- yyglrShift (yystackp, yyk,
- yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
- yylhsNonterm (yyrule)),
- yyposn, &yysval]b4_locations_if([, &yyloc])[);
- }
- else
- {
- size_t yyi;
- int yyn;
- yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
- yyStateNum yynewLRState;
-
- for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
- 0 < yyn; yyn -= 1)
- {
- yys = yys->yypred;
- YYASSERT (yys);
- }
- yyupdateSplit (yystackp, yys);
- yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
- YYDPRINTF ((stderr,
- "Reduced stack %lu by rule #%d; action deferred. "
- "Now in state %d.\n",
- (unsigned long int) yyk, yyrule - 1, yynewLRState));
- for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
- if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULL)
- {
- yyGLRState *yysplit = yystackp->yysplitPoint;
- yyGLRState *yyp = yystackp->yytops.yystates[yyi];
- while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
- {
- if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
- {
- yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
- yymarkStackDeleted (yystackp, yyk);
- YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n",
- (unsigned long int) yyk,
- (unsigned long int) yyi));
- return yyok;
- }
- yyp = yyp->yypred;
- }
- }
- yystackp->yytops.yystates[yyk] = yys;
- yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
- }
- return yyok;
-}
-
-static size_t
-yysplitStack (yyGLRStack* yystackp, size_t yyk)
-{
- if (yystackp->yysplitPoint == YY_NULL)
- {
- YYASSERT (yyk == 0);
- yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
- }
- if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity)
- {
- yyGLRState** yynewStates;
- yybool* yynewLookaheadNeeds;
-
- yynewStates = YY_NULL;
-
- if (yystackp->yytops.yycapacity
- > (YYSIZEMAX / (2 * sizeof yynewStates[0])))
- yyMemoryExhausted (yystackp);
- yystackp->yytops.yycapacity *= 2;
-
- yynewStates =
- (yyGLRState**) YYREALLOC (yystackp->yytops.yystates,
- (yystackp->yytops.yycapacity
- * sizeof yynewStates[0]));
- if (yynewStates == YY_NULL)
- yyMemoryExhausted (yystackp);
- yystackp->yytops.yystates = yynewStates;
-
- yynewLookaheadNeeds =
- (yybool*) YYREALLOC (yystackp->yytops.yylookaheadNeeds,
- (yystackp->yytops.yycapacity
- * sizeof yynewLookaheadNeeds[0]));
- if (yynewLookaheadNeeds == YY_NULL)
- yyMemoryExhausted (yystackp);
- yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
- }
- yystackp->yytops.yystates[yystackp->yytops.yysize]
- = yystackp->yytops.yystates[yyk];
- yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
- = yystackp->yytops.yylookaheadNeeds[yyk];
- yystackp->yytops.yysize += 1;
- return yystackp->yytops.yysize-1;
-}
-
-/** True iff YYY0 and YYY1 represent identical options at the top level.
- * That is, they represent the same rule applied to RHS symbols
- * that produce the same terminal symbols. */
-static yybool
-yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
-{
- if (yyy0->yyrule == yyy1->yyrule)
- {
- yyGLRState *yys0, *yys1;
- int yyn;
- for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
- yyn = yyrhsLength (yyy0->yyrule);
- yyn > 0;
- yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
- if (yys0->yyposn != yys1->yyposn)
- return yyfalse;
- return yytrue;
- }
- else
- return yyfalse;
-}
-
-/** Assuming identicalOptions (YYY0,YYY1), destructively merge the
- * alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
-static void
-yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
-{
- yyGLRState *yys0, *yys1;
- int yyn;
- for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
- yyn = yyrhsLength (yyy0->yyrule);
- yyn > 0;
- yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
- {
- if (yys0 == yys1)
- break;
- else if (yys0->yyresolved)
- {
- yys1->yyresolved = yytrue;
- yys1->yysemantics.yysval = yys0->yysemantics.yysval;
- }
- else if (yys1->yyresolved)
- {
- yys0->yyresolved = yytrue;
- yys0->yysemantics.yysval = yys1->yysemantics.yysval;
- }
- else
- {
- yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
- yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
- while (yytrue)
- {
- if (yyz1 == *yyz0p || yyz1 == YY_NULL)
- break;
- else if (*yyz0p == YY_NULL)
- {
- *yyz0p = yyz1;
- break;
- }
- else if (*yyz0p < yyz1)
- {
- yySemanticOption* yyz = *yyz0p;
- *yyz0p = yyz1;
- yyz1 = yyz1->yynext;
- (*yyz0p)->yynext = yyz;
- }
- yyz0p = &(*yyz0p)->yynext;
- }
- yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
- }
- }
-}
-
-/** Y0 and Y1 represent two possible actions to take in a given
- * parsing state; return 0 if no combination is possible,
- * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
-static int
-yypreference (yySemanticOption* y0, yySemanticOption* y1)
-{
- yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
- int p0 = yydprec[r0], p1 = yydprec[r1];
-
- if (p0 == p1)
- {
- if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
- return 0;
- else
- return 1;
- }
- if (p0 == 0 || p1 == 0)
- return 0;
- if (p0 < p1)
- return 3;
- if (p1 < p0)
- return 2;
- return 0;
-}
-
-static YYRESULTTAG yyresolveValue (yyGLRState* yys,
- yyGLRStack* yystackp]b4_user_formals[);
-
-
-/** Resolve the previous YYN states starting at and including state YYS
- * on *YYSTACKP. If result != yyok, some states may have been left
- * unresolved possibly with empty semantic option chains. Regardless
- * of whether result = yyok, each state has been left with consistent
- * data so that yydestroyGLRState can be invoked if necessary. */
-static YYRESULTTAG
-yyresolveStates (yyGLRState* yys, int yyn,
- yyGLRStack* yystackp]b4_user_formals[)
-{
- if (0 < yyn)
- {
- YYASSERT (yys->yypred);
- YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp]b4_user_args[));
- if (! yys->yyresolved)
- YYCHK (yyresolveValue (yys, yystackp]b4_user_args[));
- }
- return yyok;
-}
-
-/** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
- * user action, and return the semantic value and location in *YYVALP
- * and *YYLOCP. Regardless of whether result = yyok, all RHS states
- * have been destroyed (assuming the user action destroys all RHS
- * semantic values if invoked). */
-static YYRESULTTAG
-yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
- YYSTYPE* yyvalp]b4_locuser_formals[)
-{
- yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
- int yynrhs = yyrhsLength (yyopt->yyrule);
- YYRESULTTAG yyflag =
- yyresolveStates (yyopt->yystate, yynrhs, yystackp]b4_user_args[);
- if (yyflag != yyok)
- {
- yyGLRState *yys;
- for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
- yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[);
- return yyflag;
- }
-
- yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;]b4_locations_if([[
- if (yynrhs == 0)
- /* Set default location. */
- yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;]])[
- {
- int yychar_current = yychar;
- YYSTYPE yylval_current = yylval;]b4_locations_if([
- YYLTYPE yylloc_current = yylloc;])[
- yychar = yyopt->yyrawchar;
- yylval = yyopt->yyval;]b4_locations_if([
- yylloc = yyopt->yyloc;])[
- yyflag = yyuserAction (yyopt->yyrule, yynrhs,
- yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
- yystackp, yyvalp]b4_locuser_args[);
- yychar = yychar_current;
- yylval = yylval_current;]b4_locations_if([
- yylloc = yylloc_current;])[
- }
- return yyflag;
-}
-
-#if ]b4_api_PREFIX[DEBUG
-static void
-yyreportTree (yySemanticOption* yyx, int yyindent)
-{
- int yynrhs = yyrhsLength (yyx->yyrule);
- int yyi;
- yyGLRState* yys;
- yyGLRState* yystates[1 + YYMAXRHS];
- yyGLRState yyleftmost_state;
-
- for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
- yystates[yyi] = yys;
- if (yys == YY_NULL)
- {
- yyleftmost_state.yyposn = 0;
- yystates[0] = &yyleftmost_state;
- }
- else
- yystates[0] = yys;
-
- if (yyx->yystate->yyposn < yys->yyposn + 1)
- YYFPRINTF (stderr, "%*s%s -> <Rule %d, empty>\n",
- yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
- yyx->yyrule - 1);
- else
- YYFPRINTF (stderr, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
- yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
- yyx->yyrule - 1, (unsigned long int) (yys->yyposn + 1),
- (unsigned long int) yyx->yystate->yyposn);
- for (yyi = 1; yyi <= yynrhs; yyi += 1)
- {
- if (yystates[yyi]->yyresolved)
- {
- if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
- YYFPRINTF (stderr, "%*s%s <empty>\n", yyindent+2, "",
- yytokenName (yystos[yystates[yyi]->yylrState]));
- else
- YYFPRINTF (stderr, "%*s%s <tokens %lu .. %lu>\n", yyindent+2, "",
- yytokenName (yystos[yystates[yyi]->yylrState]),
- (unsigned long int) (yystates[yyi-1]->yyposn + 1),
- (unsigned long int) yystates[yyi]->yyposn);
- }
- else
- yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
- }
-}
-#endif
-
-static YYRESULTTAG
-yyreportAmbiguity (yySemanticOption* yyx0,
- yySemanticOption* yyx1]b4_pure_formals[)
-{
- YYUSE (yyx0);
- YYUSE (yyx1);
-
-#if ]b4_api_PREFIX[DEBUG
- YYFPRINTF (stderr, "Ambiguity detected.\n");
- YYFPRINTF (stderr, "Option 1,\n");
- yyreportTree (yyx0, 2);
- YYFPRINTF (stderr, "\nOption 2,\n");
- yyreportTree (yyx1, 2);
- YYFPRINTF (stderr, "\n");
-#endif
-
- yyerror (]b4_yyerror_args[YY_("syntax is ambiguous"));
- return yyabort;
-}]b4_locations_if([[
-
-/** Resolve the locations for each of the YYN1 states in *YYSTACKP,
- * ending at YYS1. Has no effect on previously resolved states.
- * The first semantic option of a state is always chosen. */
-static void
-yyresolveLocations (yyGLRState* yys1, int yyn1,
- yyGLRStack *yystackp]b4_user_formals[)
-{
- if (0 < yyn1)
- {
- yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp]b4_user_args[);
- if (!yys1->yyresolved)
- {
- yyGLRStackItem yyrhsloc[1 + YYMAXRHS];
- int yynrhs;
- yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal;
- YYASSERT (yyoption != YY_NULL);
- yynrhs = yyrhsLength (yyoption->yyrule);
- if (yynrhs > 0)
- {
- yyGLRState *yys;
- int yyn;
- yyresolveLocations (yyoption->yystate, yynrhs,
- yystackp]b4_user_args[);
- for (yys = yyoption->yystate, yyn = yynrhs;
- yyn > 0;
- yys = yys->yypred, yyn -= 1)
- yyrhsloc[yyn].yystate.yyloc = yys->yyloc;
- }
- else
- {
- /* Both yyresolveAction and yyresolveLocations traverse the GSS
- in reverse rightmost order. It is only necessary to invoke
- yyresolveLocations on a subforest for which yyresolveAction
- would have been invoked next had an ambiguity not been
- detected. Thus the location of the previous state (but not
- necessarily the previous state itself) is guaranteed to be
- resolved already. */
- yyGLRState *yyprevious = yyoption->yystate;
- yyrhsloc[0].yystate.yyloc = yyprevious->yyloc;
- }
- {
- int yychar_current = yychar;
- YYSTYPE yylval_current = yylval;
- YYLTYPE yylloc_current = yylloc;
- yychar = yyoption->yyrawchar;
- yylval = yyoption->yyval;
- yylloc = yyoption->yyloc;
- YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs);
- yychar = yychar_current;
- yylval = yylval_current;
- yylloc = yylloc_current;
- }
- }
- }
-}]])[
-
-/** Resolve the ambiguity represented in state YYS in *YYSTACKP,
- * perform the indicated actions, and set the semantic value of YYS.
- * If result != yyok, the chain of semantic options in YYS has been
- * cleared instead or it has been left unmodified except that
- * redundant options may have been removed. Regardless of whether
- * result = yyok, YYS has been left with consistent data so that
- * yydestroyGLRState can be invoked if necessary. */
-static YYRESULTTAG
-yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp]b4_user_formals[)
-{
- yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
- yySemanticOption* yybest = yyoptionList;
- yySemanticOption** yypp;
- yybool yymerge = yyfalse;
- YYSTYPE yysval;
- YYRESULTTAG yyflag;]b4_locations_if([
- YYLTYPE *yylocp = &yys->yyloc;])[
-
- for (yypp = &yyoptionList->yynext; *yypp != YY_NULL; )
- {
- yySemanticOption* yyp = *yypp;
-
- if (yyidenticalOptions (yybest, yyp))
- {
- yymergeOptionSets (yybest, yyp);
- *yypp = yyp->yynext;
- }
- else
- {
- switch (yypreference (yybest, yyp))
- {
- case 0:]b4_locations_if([[
- yyresolveLocations (yys, 1, yystackp]b4_user_args[);]])[
- return yyreportAmbiguity (yybest, yyp]b4_pure_args[);
- break;
- case 1:
- yymerge = yytrue;
- break;
- case 2:
- break;
- case 3:
- yybest = yyp;
- yymerge = yyfalse;
- break;
- default:
- /* This cannot happen so it is not worth a YYASSERT (yyfalse),
- but some compilers complain if the default case is
- omitted. */
- break;
- }
- yypp = &yyp->yynext;
- }
- }
-
- if (yymerge)
- {
- yySemanticOption* yyp;
- int yyprec = yydprec[yybest->yyrule];
- yyflag = yyresolveAction (yybest, yystackp, &yysval]b4_locuser_args[);
- if (yyflag == yyok)
- for (yyp = yybest->yynext; yyp != YY_NULL; yyp = yyp->yynext)
- {
- if (yyprec == yydprec[yyp->yyrule])
- {
- YYSTYPE yysval_other;]b4_locations_if([
- YYLTYPE yydummy;])[
- yyflag = yyresolveAction (yyp, yystackp, &yysval_other]b4_locuser_args([&yydummy])[);
- if (yyflag != yyok)
- {
- yydestruct ("Cleanup: discarding incompletely merged value for",
- yystos[yys->yylrState],
- &yysval]b4_locuser_args[);
- break;
- }
- yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other);
- }
- }
- }
- else
- yyflag = yyresolveAction (yybest, yystackp, &yysval]b4_locuser_args([yylocp])[);
-
- if (yyflag == yyok)
- {
- yys->yyresolved = yytrue;
- yys->yysemantics.yysval = yysval;
- }
- else
- yys->yysemantics.yyfirstVal = YY_NULL;
- return yyflag;
-}
-
-static YYRESULTTAG
-yyresolveStack (yyGLRStack* yystackp]b4_user_formals[)
-{
- if (yystackp->yysplitPoint != YY_NULL)
- {
- yyGLRState* yys;
- int yyn;
-
- for (yyn = 0, yys = yystackp->yytops.yystates[0];
- yys != yystackp->yysplitPoint;
- yys = yys->yypred, yyn += 1)
- continue;
- YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
- ]b4_user_args[));
- }
- return yyok;
-}
-
-static void
-yycompressStack (yyGLRStack* yystackp)
-{
- yyGLRState* yyp, *yyq, *yyr;
-
- if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULL)
- return;
-
- for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULL;
- yyp != yystackp->yysplitPoint;
- yyr = yyp, yyp = yyq, yyq = yyp->yypred)
- yyp->yypred = yyr;
-
- yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
- yystackp->yynextFree = ((yyGLRStackItem*) yystackp->yysplitPoint) + 1;
- yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
- yystackp->yysplitPoint = YY_NULL;
- yystackp->yylastDeleted = YY_NULL;
-
- while (yyr != YY_NULL)
- {
- yystackp->yynextFree->yystate = *yyr;
- yyr = yyr->yypred;
- yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
- yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
- yystackp->yynextFree += 1;
- yystackp->yyspaceLeft -= 1;
- }
-}
-
-static YYRESULTTAG
-yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
- size_t yyposn]b4_pure_formals[)
-{
- while (yystackp->yytops.yystates[yyk] != YY_NULL)
- {
- yyStateNum yystate = yystackp->yytops.yystates[yyk]->yylrState;
- YYDPRINTF ((stderr, "Stack %lu Entering state %d\n",
- (unsigned long int) yyk, yystate));
-
- YYASSERT (yystate != YYFINAL);
-
- if (yyisDefaultedState (yystate))
- {
- YYRESULTTAG yyflag;
- yyRuleNum yyrule = yydefaultAction (yystate);
- if (yyrule == 0)
- {
- YYDPRINTF ((stderr, "Stack %lu dies.\n",
- (unsigned long int) yyk));
- yymarkStackDeleted (yystackp, yyk);
- return yyok;
- }
- yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule]]b4_user_args[);
- if (yyflag == yyerr)
- {
- YYDPRINTF ((stderr,
- "Stack %lu dies "
- "(predicate failure or explicit user error).\n",
- (unsigned long int) yyk));
- yymarkStackDeleted (yystackp, yyk);
- return yyok;
- }
- if (yyflag != yyok)
- return yyflag;
- }
- else
- {
- yySymbol yytoken;
- int yyaction;
- const short int* yyconflicts;
-
- yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = ]b4_lex[;
- }
-
- if (yychar <= YYEOF)
- {
- yychar = yytoken = YYEOF;
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yytoken = YYTRANSLATE (yychar);
- YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
- }
-
- yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts);
-
- while (*yyconflicts != 0)
- {
- YYRESULTTAG yyflag;
- size_t yynewStack = yysplitStack (yystackp, yyk);
- YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n",
- (unsigned long int) yynewStack,
- (unsigned long int) yyk));
- yyflag = yyglrReduce (yystackp, yynewStack,
- *yyconflicts,
- yyimmediate[*yyconflicts]]b4_user_args[);
- if (yyflag == yyok)
- YYCHK (yyprocessOneStack (yystackp, yynewStack,
- yyposn]b4_pure_args[));
- else if (yyflag == yyerr)
- {
- YYDPRINTF ((stderr, "Stack %lu dies.\n",
- (unsigned long int) yynewStack));
- yymarkStackDeleted (yystackp, yynewStack);
- }
- else
- return yyflag;
- yyconflicts += 1;
- }
-
- if (yyisShiftAction (yyaction))
- break;
- else if (yyisErrorAction (yyaction))
- {
- YYDPRINTF ((stderr, "Stack %lu dies.\n",
- (unsigned long int) yyk));
- yymarkStackDeleted (yystackp, yyk);
- break;
- }
- else
- {
- YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
- yyimmediate[-yyaction]]b4_user_args[);
- if (yyflag == yyerr)
- {
- YYDPRINTF ((stderr,
- "Stack %lu dies "
- "(predicate failure or explicit user error).\n",
- (unsigned long int) yyk));
- yymarkStackDeleted (yystackp, yyk);
- break;
- }
- else if (yyflag != yyok)
- return yyflag;
- }
- }
- }
- return yyok;
-}
-
-static void
-yyreportSyntaxError (yyGLRStack* yystackp]b4_user_formals[)
-{
- if (yystackp->yyerrState != 0)
- return;
-#if ! YYERROR_VERBOSE
- yyerror (]b4_lyyerror_args[YY_("syntax error"));
-#else
- {
- yySymbol yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
- size_t yysize0 = yytnamerr (YY_NULL, yytokenName (yytoken));
- size_t yysize = yysize0;
- yybool yysize_overflow = yyfalse;
- char* yymsg = YY_NULL;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- /* Internationalized format string. */
- const char *yyformat = YY_NULL;
- /* Arguments of yyformat. */
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- /* Number of reported tokens (one for the "unexpected", one per
- "expected"). */
- int yycount = 0;
-
- /* There are many possibilities here to consider:
- - If this state is a consistent state with a default action, then
- the only way this function was invoked is if the default action
- is an error action. In that case, don't check for expected
- tokens because there are none.
- - The only way there can be no lookahead present (in yychar) is if
- this state is a consistent state with a default action. Thus,
- detecting the absence of a lookahead is sufficient to determine
- that there is no unexpected or expected token to report. In that
- case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this state is a
- consistent state with a default action. There might have been a
- previous inconsistent state, consistent state with a non-default
- action, or user semantic action that manipulated yychar.
- - Of course, the expected token list depends on states to have
- correct lookahead information, and it depends on the parser not
- to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state merging
- (from LALR or IELR) and default reductions corrupt the expected
- token list. However, the list is correct for canonical LR with
- one exception: it will still contain any token that will not be
- accepted due to an error action in a later state.
- */
- if (yytoken != YYEMPTY)
- {
- int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
- yyarg[yycount++] = yytokenName (yytoken);
- if (!yypact_value_is_default (yyn))
- {
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. In other words, skip the first -YYN actions for this
- state because they are default actions. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yyx;
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
- && !yytable_value_is_error (yytable[yyx + yyn]))
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- break;
- }
- yyarg[yycount++] = yytokenName (yyx);
- {
- size_t yysz = yysize + yytnamerr (YY_NULL, yytokenName (yyx));
- yysize_overflow |= yysz < yysize;
- yysize = yysz;
- }
- }
- }
- }
-
- switch (yycount)
- {
-#define YYCASE_(N, S) \
- case N: \
- yyformat = S; \
- break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-#undef YYCASE_
- }
-
- {
- size_t yysz = yysize + strlen (yyformat);
- yysize_overflow |= yysz < yysize;
- yysize = yysz;
- }
-
- if (!yysize_overflow)
- yymsg = (char *) YYMALLOC (yysize);
-
- if (yymsg)
- {
- char *yyp = yymsg;
- int yyi = 0;
- while ((*yyp = *yyformat))
- {
- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyformat += 2;
- }
- else
- {
- yyp++;
- yyformat++;
- }
- }
- yyerror (]b4_lyyerror_args[yymsg);
- YYFREE (yymsg);
- }
- else
- {
- yyerror (]b4_lyyerror_args[YY_("syntax error"));
- yyMemoryExhausted (yystackp);
- }
- }
-#endif /* YYERROR_VERBOSE */
- yynerrs += 1;
-}
-
-/* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
- yylval, and yylloc are the syntactic category, semantic value, and location
- of the lookahead. */
-static void
-yyrecoverSyntaxError (yyGLRStack* yystackp]b4_user_formals[)
-{
- size_t yyk;
- int yyj;
-
- if (yystackp->yyerrState == 3)
- /* We just shifted the error token and (perhaps) took some
- reductions. Skip tokens until we can proceed. */
- while (yytrue)
- {
- yySymbol yytoken;
- if (yychar == YYEOF)
- yyFail (yystackp][]b4_lpure_args[, YY_NULL);
- if (yychar != YYEMPTY)
- {]b4_locations_if([[
- /* We throw away the lookahead, but the error range
- of the shifted error token must take it into account. */
- yyGLRState *yys = yystackp->yytops.yystates[0];
- yyGLRStackItem yyerror_range[3];
- yyerror_range[1].yystate.yyloc = yys->yyloc;
- yyerror_range[2].yystate.yyloc = yylloc;
- YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);]])[
- yytoken = YYTRANSLATE (yychar);
- yydestruct ("Error: discarding",
- yytoken, &yylval]b4_locuser_args([&yylloc])[);
- }
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = ]b4_lex[;
- if (yychar <= YYEOF)
- {
- yychar = yytoken = YYEOF;
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yytoken = YYTRANSLATE (yychar);
- YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
- }
- yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
- if (yypact_value_is_default (yyj))
- return;
- yyj += yytoken;
- if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
- {
- if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
- return;
- }
- else if (! yytable_value_is_error (yytable[yyj]))
- return;
- }
-
- /* Reduce to one stack. */
- for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
- if (yystackp->yytops.yystates[yyk] != YY_NULL)
- break;
- if (yyk >= yystackp->yytops.yysize)
- yyFail (yystackp][]b4_lpure_args[, YY_NULL);
- for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
- yymarkStackDeleted (yystackp, yyk);
- yyremoveDeletes (yystackp);
- yycompressStack (yystackp);
-
- /* Now pop stack until we find a state that shifts the error token. */
- yystackp->yyerrState = 3;
- while (yystackp->yytops.yystates[0] != YY_NULL)
- {
- yyGLRState *yys = yystackp->yytops.yystates[0];
- yyj = yypact[yys->yylrState];
- if (! yypact_value_is_default (yyj))
- {
- yyj += YYTERROR;
- if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR
- && yyisShiftAction (yytable[yyj]))
- {
- /* Shift the error token. */]b4_locations_if([[
- /* First adjust its location.*/
- YYLTYPE yyerrloc;
- yystackp->yyerror_range[2].yystate.yyloc = yylloc;
- YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);]])[
- YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]],
- &yylval, &yyerrloc);
- yyglrShift (yystackp, 0, yytable[yyj],
- yys->yyposn, &yylval]b4_locations_if([, &yyerrloc])[);
- yys = yystackp->yytops.yystates[0];
- break;
- }
- }]b4_locations_if([[
- yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;]])[
- if (yys->yypred != YY_NULL)
- yydestroyGLRState ("Error: popping", yys]b4_user_args[);
- yystackp->yytops.yystates[0] = yys->yypred;
- yystackp->yynextFree -= 1;
- yystackp->yyspaceLeft += 1;
- }
- if (yystackp->yytops.yystates[0] == YY_NULL)
- yyFail (yystackp][]b4_lpure_args[, YY_NULL);
-}
-
-#define YYCHK1(YYE) \
- do { \
- switch (YYE) { \
- case yyok: \
- break; \
- case yyabort: \
- goto yyabortlab; \
- case yyaccept: \
- goto yyacceptlab; \
- case yyerr: \
- goto yyuser_error; \
- default: \
- goto yybuglab; \
- } \
- } while (0)
-
-/*----------.
-| yyparse. |
-`----------*/
-
-]b4_function_define([yyparse], [int], b4_parse_param)[
-{
- int yyresult;
- yyGLRStack yystack;
- yyGLRStack* const yystackp = &yystack;
- size_t yyposn;
-
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yychar = YYEMPTY;
- yylval = yyval_default;]b4_locations_if([
- yylloc = yyloc_default;])[
-]m4_ifdef([b4_initial_action], [
-b4_dollar_pushdef([yylval], [], [yylloc])dnl
- /* User initialization code. */
- b4_user_initial_action
-b4_dollar_popdef])[]dnl
-[
- if (! yyinitGLRStack (yystackp, YYINITDEPTH))
- goto yyexhaustedlab;
- switch (YYSETJMP (yystack.yyexception_buffer))
- {
- case 0: break;
- case 1: goto yyabortlab;
- case 2: goto yyexhaustedlab;
- default: goto yybuglab;
- }
- yyglrShift (&yystack, 0, 0, 0, &yylval]b4_locations_if([, &yylloc])[);
- yyposn = 0;
-
- while (yytrue)
- {
- /* For efficiency, we have two loops, the first of which is
- specialized to deterministic operation (single stack, no
- potential ambiguity). */
- /* Standard mode */
- while (yytrue)
- {
- yyRuleNum yyrule;
- int yyaction;
- const short int* yyconflicts;
-
- yyStateNum yystate = yystack.yytops.yystates[0]->yylrState;
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
- if (yystate == YYFINAL)
- goto yyacceptlab;
- if (yyisDefaultedState (yystate))
- {
- yyrule = yydefaultAction (yystate);
- if (yyrule == 0)
- {
-]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[
- yyreportSyntaxError (&yystack]b4_user_args[);
- goto yyuser_error;
- }
- YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue]b4_user_args[));
- }
- else
- {
- yySymbol yytoken;
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = ]b4_lex[;
- }
-
- if (yychar <= YYEOF)
- {
- yychar = yytoken = YYEOF;
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yytoken = YYTRANSLATE (yychar);
- YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
- }
-
- yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts);
- if (*yyconflicts != 0)
- break;
- if (yyisShiftAction (yyaction))
- {
- YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
- yychar = YYEMPTY;
- yyposn += 1;
- yyglrShift (&yystack, 0, yyaction, yyposn, &yylval]b4_locations_if([, &yylloc])[);
- if (0 < yystack.yyerrState)
- yystack.yyerrState -= 1;
- }
- else if (yyisErrorAction (yyaction))
- {
-]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[
- yyreportSyntaxError (&yystack]b4_user_args[);
- goto yyuser_error;
- }
- else
- YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue]b4_user_args[));
- }
- }
-
- while (yytrue)
- {
- yySymbol yytoken_to_shift;
- size_t yys;
-
- for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
- yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY;
-
- /* yyprocessOneStack returns one of three things:
-
- - An error flag. If the caller is yyprocessOneStack, it
- immediately returns as well. When the caller is finally
- yyparse, it jumps to an error label via YYCHK1.
-
- - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
- (&yystack, yys), which sets the top state of yys to NULL. Thus,
- yyparse's following invocation of yyremoveDeletes will remove
- the stack.
-
- - yyok, when ready to shift a token.
-
- Except in the first case, yyparse will invoke yyremoveDeletes and
- then shift the next token onto all remaining stacks. This
- synchronization of the shift (that is, after all preceding
- reductions on all stacks) helps prevent double destructor calls
- on yylval in the event of memory exhaustion. */
-
- for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
- YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn]b4_lpure_args[));
- yyremoveDeletes (&yystack);
- if (yystack.yytops.yysize == 0)
- {
- yyundeleteLastStack (&yystack);
- if (yystack.yytops.yysize == 0)
- yyFail (&yystack][]b4_lpure_args[, YY_("syntax error"));
- YYCHK1 (yyresolveStack (&yystack]b4_user_args[));
- YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
-]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[
- yyreportSyntaxError (&yystack]b4_user_args[);
- goto yyuser_error;
- }
-
- /* If any yyglrShift call fails, it will fail after shifting. Thus,
- a copy of yylval will already be on stack 0 in the event of a
- failure in the following loop. Thus, yychar is set to YYEMPTY
- before the loop to make sure the user destructor for yylval isn't
- called twice. */
- yytoken_to_shift = YYTRANSLATE (yychar);
- yychar = YYEMPTY;
- yyposn += 1;
- for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
- {
- int yyaction;
- const short int* yyconflicts;
- yyStateNum yystate = yystack.yytops.yystates[yys]->yylrState;
- yygetLRActions (yystate, yytoken_to_shift, &yyaction,
- &yyconflicts);
- /* Note that yyconflicts were handled by yyprocessOneStack. */
- YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long int) yys));
- YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
- yyglrShift (&yystack, yys, yyaction, yyposn,
- &yylval]b4_locations_if([, &yylloc])[);
- YYDPRINTF ((stderr, "Stack %lu now in state #%d\n",
- (unsigned long int) yys,
- yystack.yytops.yystates[yys]->yylrState));
- }
-
- if (yystack.yytops.yysize == 1)
- {
- YYCHK1 (yyresolveStack (&yystack]b4_user_args[));
- YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
- yycompressStack (&yystack);
- break;
- }
- }
- continue;
- yyuser_error:
- yyrecoverSyntaxError (&yystack]b4_user_args[);
- yyposn = yystack.yytops.yystates[0]->yyposn;
- }
-
- yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
- yybuglab:
- YYASSERT (yyfalse);
- goto yyabortlab;
-
- yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
- yyexhaustedlab:
- yyerror (]b4_lyyerror_args[YY_("memory exhausted"));
- yyresult = 2;
- goto yyreturn;
-
- yyreturn:
- if (yychar != YYEMPTY)
- yydestruct ("Cleanup: discarding lookahead",
- YYTRANSLATE (yychar), &yylval]b4_locuser_args([&yylloc])[);
-
- /* If the stack is well-formed, pop the stack until it is empty,
- destroying its entries as we go. But free the stack regardless
- of whether it is well-formed. */
- if (yystack.yyitems)
- {
- yyGLRState** yystates = yystack.yytops.yystates;
- if (yystates)
- {
- size_t yysize = yystack.yytops.yysize;
- size_t yyk;
- for (yyk = 0; yyk < yysize; yyk += 1)
- if (yystates[yyk])
- {
- while (yystates[yyk])
- {
- yyGLRState *yys = yystates[yyk];
-]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]]
-)[ if (yys->yypred != YY_NULL)
- yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[);
- yystates[yyk] = yys->yypred;
- yystack.yynextFree -= 1;
- yystack.yyspaceLeft += 1;
- }
- break;
- }
- }
- yyfreeGLRStack (&yystack);
- }
-
- return yyresult;
-}
-
-/* DEBUGGING ONLY */
-#if ]b4_api_PREFIX[DEBUG
-static void
-yy_yypstack (yyGLRState* yys)
-{
- if (yys->yypred)
- {
- yy_yypstack (yys->yypred);
- YYFPRINTF (stderr, " -> ");
- }
- YYFPRINTF (stderr, "%d@@%lu", yys->yylrState,
- (unsigned long int) yys->yyposn);
-}
-
-static void
-yypstates (yyGLRState* yyst)
-{
- if (yyst == YY_NULL)
- YYFPRINTF (stderr, "<null>");
- else
- yy_yypstack (yyst);
- YYFPRINTF (stderr, "\n");
-}
-
-static void
-yypstack (yyGLRStack* yystackp, size_t yyk)
-{
- yypstates (yystackp->yytops.yystates[yyk]);
-}
-
-#define YYINDEX(YYX) \
- ((YYX) == YY_NULL ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems)
-
-
-static void
-yypdumpstack (yyGLRStack* yystackp)
-{
- yyGLRStackItem* yyp;
- size_t yyi;
- for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
- {
- YYFPRINTF (stderr, "%3lu. ",
- (unsigned long int) (yyp - yystackp->yyitems));
- if (*(yybool *) yyp)
- {
- YYFPRINTF (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
- yyp->yystate.yyresolved, yyp->yystate.yylrState,
- (unsigned long int) yyp->yystate.yyposn,
- (long int) YYINDEX (yyp->yystate.yypred));
- if (! yyp->yystate.yyresolved)
- YYFPRINTF (stderr, ", firstVal: %ld",
- (long int) YYINDEX (yyp->yystate
- .yysemantics.yyfirstVal));
- }
- else
- {
- YYFPRINTF (stderr, "Option. rule: %d, state: %ld, next: %ld",
- yyp->yyoption.yyrule - 1,
- (long int) YYINDEX (yyp->yyoption.yystate),
- (long int) YYINDEX (yyp->yyoption.yynext));
- }
- YYFPRINTF (stderr, "\n");
- }
- YYFPRINTF (stderr, "Tops:");
- for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
- YYFPRINTF (stderr, "%lu: %ld; ", (unsigned long int) yyi,
- (long int) YYINDEX (yystackp->yytops.yystates[yyi]));
- YYFPRINTF (stderr, "\n");
-}
-#endif
-
-#undef yylval
-#undef yychar
-#undef yynerrs]b4_locations_if([
-#undef yylloc])
-
-m4_if(b4_prefix, [yy], [],
-[[/* Substitute the variable and function names. */
-#define yyparse ]b4_prefix[parse
-#define yylex ]b4_prefix[lex
-#define yyerror ]b4_prefix[error
-#define yylval ]b4_prefix[lval
-#define yychar ]b4_prefix[char
-#define yydebug ]b4_prefix[debug
-#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[
-#define yylloc ]b4_prefix[lloc]])])[
-
-]b4_epilogue[]dnl
-b4_output_end()
-
-# glr.cc produces its own header.
-m4_if(b4_skeleton, ["glr.c"],
-[b4_defines_if(
-[b4_output_begin([b4_spec_defines_file])
-b4_copyright([Skeleton interface for Bison GLR parsers in C],
- [2002-2013])[
-
-]b4_cpp_guard_open([b4_spec_defines_file])[
-]b4_shared_declarations[
-]b4_cpp_guard_close([b4_spec_defines_file])[
-]b4_output_end()
-])])
diff --git a/gnuwin32/bin/data/glr.cc b/gnuwin32/bin/data/glr.cc
deleted file mode 100644
index e57308bd..00000000
--- a/gnuwin32/bin/data/glr.cc
+++ /dev/null
@@ -1,345 +0,0 @@
-# C++ GLR skeleton for Bison
-
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# This skeleton produces a C++ class that encapsulates a C glr parser.
-# This is in order to reduce the maintenance burden. The glr.c
-# skeleton is clean and pure enough so that there are no real
-# problems. The C++ interface is the same as that of lalr1.cc. In
-# fact, glr.c can replace yacc.c without the user noticing any
-# difference, and similarly for glr.cc replacing lalr1.cc.
-#
-# The passing of parse-params
-#
-# The additional arguments are stored as members of the parser
-# object, yyparser. The C routines need to carry yyparser
-# throughout the C parser; that's easy: make yyparser an
-# additional parse-param. But because the C++ skeleton needs to
-# know the "real" original parse-param, we save them
-# (b4_parse_param_orig). Note that b4_parse_param is overquoted
-# (and c.m4 strips one level of quotes). This is a PITA, and
-# explains why there are so many levels of quotes.
-#
-# The locations
-#
-# We use location.cc just like lalr1.cc, but because glr.c stores
-# the locations in a union, the position and location classes
-# must not have a constructor. Therefore, contrary to lalr1.cc, we
-# must not define "b4_location_constructors". As a consequence the
-# user must initialize the first positions (in particular the
-# filename member).
-
-# We require a pure interface.
-m4_define([b4_pure_flag], [1])
-
-m4_include(b4_pkgdatadir/[c++.m4])
-b4_bison_locations_if([m4_include(b4_pkgdatadir/[location.cc])])
-
-m4_define([b4_parser_class_name],
- [b4_percent_define_get([[parser_class_name]])])
-
-# Save the parse parameters.
-m4_define([b4_parse_param_orig], m4_defn([b4_parse_param]))
-
-# b4_parse_param_wrap
-# -------------------
-# New ones.
-m4_ifset([b4_parse_param],
-[m4_define([b4_parse_param_wrap],
- [[b4_namespace_ref::b4_parser_class_name[& yyparser], [[yyparser]]],]
-m4_defn([b4_parse_param]))],
-[m4_define([b4_parse_param_wrap],
- [[b4_namespace_ref::b4_parser_class_name[& yyparser], [[yyparser]]]])
-])
-
-
-# b4_yy_symbol_print_define
-# -------------------------
-# Bypass the default implementation to generate the "yy_symbol_print"
-# and "yy_symbol_value_print" functions.
-m4_define([b4_yy_symbol_print_define],
-[[
-/*--------------------.
-| Print this symbol. |
-`--------------------*/
-
-]b4_function_define([yy_symbol_print],
- [static void],
- [[FILE *], []],
- [[int yytype], [yytype]],
- [[const ]b4_namespace_ref::b4_parser_class_name[::semantic_type *yyvaluep],
- [yyvaluep]][]dnl
-b4_locations_if([,
- [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp],
- [yylocationp]]]),
- b4_parse_param)[
-{
-]b4_parse_param_use[]dnl
-[ yyparser.yy_symbol_print_ (yytype, yyvaluep]b4_locations_if([, yylocationp])[);
-}
-]])[
-
-# Hijack the initial action to initialize the locations.
-]b4_bison_locations_if([m4_define([b4_initial_action],
-[yylloc.initialize ();]m4_ifdef([b4_initial_action], [
-m4_defn([b4_initial_action])]))])[
-
-# Hijack the post prologue to insert early definition of YYLLOC_DEFAULT
-# and declaration of yyerror.
-]m4_append([b4_post_prologue],
-[b4_syncline([@oline@], [@ofile@])[
-]b4_yylloc_default_define[
-#define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
-]b4_function_declare([yyerror],
- [static void],b4_locations_if([
- [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp],
- [yylocationp]],])
- b4_parse_param,
- [[const char* msg], [msg]])])
-
-
-#undef yynerrs
-#undef yychar
-#undef yylval]b4_locations_if([
-#undef yylloc])
-
-m4_if(b4_prefix, [yy], [],
-[[/* Substitute the variable and function names. */
-#define yyparse ]b4_prefix[parse
-#define yylex ]b4_prefix[lex
-#define yyerror ]b4_prefix[error
-#define yydebug ]b4_prefix[debug
-]]b4_pure_if([], [[
-#define yylval ]b4_prefix[lval
-#define yychar ]b4_prefix[char
-#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[
-#define yylloc ]b4_prefix[lloc]])]))
-
-# Hijack the epilogue to define implementations (yyerror, parser member
-# functions etc.).
-m4_append([b4_epilogue],
-[b4_syncline([@oline@], [@ofile@])[
-
-/*------------------.
-| Report an error. |
-`------------------*/
-
-]b4_function_define([yyerror],
- [static void],b4_locations_if([
- [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp],
- [yylocationp]],])
- b4_parse_param,
- [[const char* msg], [msg]])[
-{
-]b4_parse_param_use[]dnl
-[ yyparser.error (]b4_locations_if([[*yylocationp, ]])[msg);
-}
-
-
-]b4_namespace_open[
-]dnl In this section, the parse params are the original parse_params.
-m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
-[ /// Build a parser object.
- ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [
- :])[
-#if ]b4_api_PREFIX[DEBUG
- ]m4_ifset([b4_parse_param], [ ], [ :])[yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[
-#endif]b4_parse_param_cons[
- {
- }
-
- ]b4_parser_class_name::~b4_parser_class_name[ ()
- {
- }
-
- int
- ]b4_parser_class_name[::parse ()
- {
- return ::yyparse (*this]b4_user_args[);
- }
-
-#if ]b4_api_PREFIX[DEBUG
- /*--------------------.
- | Print this symbol. |
- `--------------------*/
-
- inline void
- ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype,
- const semantic_type* yyvaluep]b4_locations_if([[,
- const location_type* yylocationp]])[)
- {]b4_locations_if([[
- YYUSE (yylocationp);]])[
- YYUSE (yyvaluep);
- std::ostream& yyoutput = debug_stream ();
- std::ostream& yyo = yyoutput;
- YYUSE (yyo);
- ]b4_symbol_actions([printer])[
- }
-
-
- void
- ]b4_parser_class_name[::yy_symbol_print_ (int yytype,
- const semantic_type* yyvaluep]b4_locations_if([[,
- const location_type* yylocationp]])[)
- {
- *yycdebug_ << (yytype < YYNTOKENS ? "token" : "nterm")
- << ' ' << yytname[yytype] << " ("]b4_locations_if([[
- << *yylocationp << ": "]])[;
- yy_symbol_value_print_ (yytype, yyvaluep]b4_locations_if([[, yylocationp]])[);
- *yycdebug_ << ')';
- }
-
- std::ostream&
- ]b4_parser_class_name[::debug_stream () const
- {
- return *yycdebug_;
- }
-
- void
- ]b4_parser_class_name[::set_debug_stream (std::ostream& o)
- {
- yycdebug_ = &o;
- }
-
-
- ]b4_parser_class_name[::debug_level_type
- ]b4_parser_class_name[::debug_level () const
- {
- return yydebug;
- }
-
- void
- ]b4_parser_class_name[::set_debug_level (debug_level_type l)
- {
- // Actually, it is yydebug which is really used.
- yydebug = l;
- }
-
-#endif
-]m4_popdef([b4_parse_param])dnl
-b4_namespace_close
-])
-
-# b4_shared_declarations
-# ----------------------
-# Declaration that might either go into the header (if --defines)
-# or open coded in the parser body.
-m4_define([b4_shared_declarations],
-[m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
-b4_percent_code_get([[requires]])[
-
-#include <stdexcept>
-#include <string>
-#include <iostream>]b4_defines_if([
-b4_bison_locations_if([[#include "location.hh"]])])[
-
-]b4_YYDEBUG_define[
-
-]b4_namespace_open[
-]b4_defines_if([],
-[b4_bison_locations_if([b4_position_define
-b4_location_define])])[
-
- /// A Bison parser.
- class ]b4_parser_class_name[
- {
- public:
-]b4_public_types_declare[
-
- /// Build a parser object.
- ]b4_parser_class_name[ (]b4_parse_param_decl[);
- virtual ~]b4_parser_class_name[ ();
-
- /// Parse.
- /// \returns 0 iff parsing succeeded.
- virtual int parse ();
-
- /// The current debugging stream.
- std::ostream& debug_stream () const;
- /// Set the current debugging stream.
- void set_debug_stream (std::ostream &);
-
- /// Type for debugging levels.
- typedef int debug_level_type;
- /// The current debugging level.
- debug_level_type debug_level () const;
- /// Set the current debugging level.
- void set_debug_level (debug_level_type l);
-
- public:
- /// Report a syntax error.]b4_locations_if([[
- /// \param loc where the syntax error is found.]])[
- /// \param msg a description of the syntax error.
- virtual void error (]b4_locations_if([[const location_type& loc, ]])[const std::string& msg);
-
-# if ]b4_api_PREFIX[DEBUG
- public:
- /// \brief Report a symbol value on the debug stream.
- /// \param yytype The token type.
- /// \param yyvaluep Its semantic value.]b4_locations_if([[
- /// \param yylocationp Its location.]])[
- virtual void yy_symbol_value_print_ (int yytype,
- const semantic_type* yyvaluep]b4_locations_if([[,
- const location_type* yylocationp]])[);
- /// \brief Report a symbol on the debug stream.
- /// \param yytype The token type.
- /// \param yyvaluep Its semantic value.]b4_locations_if([[
- /// \param yylocationp Its location.]])[
- virtual void yy_symbol_print_ (int yytype,
- const semantic_type* yyvaluep]b4_locations_if([[,
- const location_type* yylocationp]])[);
- private:
- // Debugging.
- std::ostream* yycdebug_;
-#endif
-
-]b4_parse_param_vars[
- };
-
-]dnl Redirections for glr.c.
-b4_percent_define_flag_if([[global_tokens_and_yystype]],
-[b4_token_defines])
-[
-#ifndef ]b4_api_PREFIX[STYPE
-# define ]b4_api_PREFIX[STYPE ]b4_namespace_ref[::]b4_parser_class_name[::semantic_type
-#endif
-#ifndef ]b4_api_PREFIX[LTYPE
-# define ]b4_api_PREFIX[LTYPE ]b4_namespace_ref[::]b4_parser_class_name[::location_type
-#endif
-
-]b4_namespace_close[
-]b4_percent_code_get([[provides]])[
-]m4_popdef([b4_parse_param])dnl
-])
-
-b4_defines_if(
-[b4_output_begin([b4_spec_defines_file])
-b4_copyright([Skeleton interface for Bison GLR parsers in C++],
- [2002-2013])[
-
-// C++ GLR parser skeleton written by Akim Demaille.
-
-]b4_cpp_guard_open([b4_spec_defines_file])[
-]b4_shared_declarations[
-]b4_cpp_guard_close([b4_spec_defines_file])[
-]b4_output_end()])
-
-# Let glr.c (and b4_shared_declarations) believe that the user
-# arguments include the parser itself.
-m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_wrap]))
-m4_include(b4_pkgdatadir/[glr.c])
-m4_popdef([b4_parse_param])
diff --git a/gnuwin32/bin/data/java-skel.m4 b/gnuwin32/bin/data/java-skel.m4
deleted file mode 100644
index 384a6370..00000000
--- a/gnuwin32/bin/data/java-skel.m4
+++ /dev/null
@@ -1,26 +0,0 @@
- -*- Autoconf -*-
-
-# Java skeleton dispatching for Bison.
-
-# Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-b4_glr_if( [b4_complain([%%glr-parser not supported for Java])])
-b4_nondeterministic_if([b4_complain([%%nondeterministic-parser not supported for Java])])
-
-m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[lalr1.java]])
-m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"])
-
-m4_include(b4_used_skeleton)
diff --git a/gnuwin32/bin/data/java.m4 b/gnuwin32/bin/data/java.m4
deleted file mode 100644
index f985f977..00000000
--- a/gnuwin32/bin/data/java.m4
+++ /dev/null
@@ -1,342 +0,0 @@
- -*- Autoconf -*-
-
-# Java language support for Bison
-
-# Copyright (C) 2007-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-m4_include(b4_pkgdatadir/[c-like.m4])
-
-
-# b4_list2(LIST1, LIST2)
-# ----------------------
-# Join two lists with a comma if necessary.
-m4_define([b4_list2],
- [$1[]m4_ifval(m4_quote($1), [m4_ifval(m4_quote($2), [[, ]])])[]$2])
-
-
-# b4_percent_define_get3(DEF, PRE, POST, NOT)
-# -------------------------------------------
-# Expand to the value of DEF surrounded by PRE and POST if it's %define'ed,
-# otherwise NOT.
-m4_define([b4_percent_define_get3],
- [m4_ifval(m4_quote(b4_percent_define_get([$1])),
- [$2[]b4_percent_define_get([$1])[]$3], [$4])])
-
-
-
-# b4_flag_value(BOOLEAN-FLAG)
-# ---------------------------
-m4_define([b4_flag_value], [b4_flag_if([$1], [true], [false])])
-
-
-# b4_public_if(TRUE, FALSE)
-# -------------------------
-b4_percent_define_default([[public]], [[false]])
-m4_define([b4_public_if],
-[b4_percent_define_flag_if([public], [$1], [$2])])
-
-
-# b4_abstract_if(TRUE, FALSE)
-# ---------------------------
-b4_percent_define_default([[abstract]], [[false]])
-m4_define([b4_abstract_if],
-[b4_percent_define_flag_if([abstract], [$1], [$2])])
-
-
-# b4_final_if(TRUE, FALSE)
-# ---------------------------
-b4_percent_define_default([[final]], [[false]])
-m4_define([b4_final_if],
-[b4_percent_define_flag_if([final], [$1], [$2])])
-
-
-# b4_strictfp_if(TRUE, FALSE)
-# ---------------------------
-b4_percent_define_default([[strictfp]], [[false]])
-m4_define([b4_strictfp_if],
-[b4_percent_define_flag_if([strictfp], [$1], [$2])])
-
-
-# b4_lexer_if(TRUE, FALSE)
-# ------------------------
-m4_define([b4_lexer_if],
-[b4_percent_code_ifdef([[lexer]], [$1], [$2])])
-
-
-# b4_identification
-# -----------------
-m4_define([b4_identification],
-[ /** Version number for the Bison executable that generated this parser. */
- public static final String bisonVersion = "b4_version";
-
- /** Name of the skeleton that generated this parser. */
- public static final String bisonSkeleton = b4_skeleton;
-])
-
-
-## ------------ ##
-## Data types. ##
-## ------------ ##
-
-# b4_int_type(MIN, MAX)
-# ---------------------
-# Return the smallest int type able to handle numbers ranging from
-# MIN to MAX (included).
-m4_define([b4_int_type],
-[m4_if(b4_ints_in($@, [-128], [127]), [1], [byte],
- b4_ints_in($@, [-32768], [32767]), [1], [short],
- [int])])
-
-# b4_int_type_for(NAME)
-# ---------------------
-# Return the smallest int type able to handle numbers ranging from
-# 'NAME_min' to 'NAME_max' (included).
-m4_define([b4_int_type_for],
-[b4_int_type($1_min, $1_max)])
-
-# b4_null
-# -------
-m4_define([b4_null], [null])
-
-
-# b4_typed_parser_table_define(TYPE, NAME, DATA, COMMENT)
-# -------------------------------------------------------
-m4_define([b4_typed_parser_table_define],
-[m4_ifval([$4], [b4_comment([$4])
- ])dnl
-[private static final ]$1[ yy$2_[] = yy$2_init();
- private static final ]$1[[] yy$2_init()
- {
- return new ]$1[[]
- {
- ]$3[
- };
- }]])
-
-
-# b4_integral_parser_table_define(NAME, DATA, COMMENT)
-#-----------------------------------------------------
-m4_define([b4_integral_parser_table_define],
-[b4_typed_parser_table_define([b4_int_type_for([$2])], [$1], [$2], [$3])])
-
-
-## ------------------------- ##
-## Assigning token numbers. ##
-## ------------------------- ##
-
-# b4_token_enum(TOKEN-NUM)
-# ------------------------
-# Output the definition of this token as an enum.
-m4_define([b4_token_enum],
-[b4_token_format([ /** Token number, to be returned by the scanner. */
- static final int %s = %s;
-], [$1])])
-
-# b4_token_enums
-# --------------
-# Output the definition of the tokens (if there are) as enums.
-m4_define([b4_token_enums],
-[b4_any_token_visible_if([/* Tokens. */
-b4_symbol_foreach([b4_token_enum])])])
-
-# b4-case(ID, CODE)
-# -----------------
-# We need to fool Java's stupid unreachable code detection.
-m4_define([b4_case], [ case $1:
- if (yyn == $1)
- $2;
- break;
- ])
-
-# b4_predicate_case(LABEL, CONDITIONS)
-# ------------------------------------
-m4_define([b4_predicate_case], [ case $1:
- if (! ($2)) YYERROR;
- break;
- ])
-
-
-## -------- ##
-## Checks. ##
-## -------- ##
-
-b4_percent_define_check_kind([[api.value.type]], [code], [deprecated])
-
-b4_percent_define_check_kind([[annotations]], [code], [deprecated])
-b4_percent_define_check_kind([[extends]], [code], [deprecated])
-b4_percent_define_check_kind([[implements]], [code], [deprecated])
-b4_percent_define_check_kind([[init_throws]], [code], [deprecated])
-b4_percent_define_check_kind([[lex_throws]], [code], [deprecated])
-b4_percent_define_check_kind([[parser_class_name]], [code], [deprecated])
-b4_percent_define_check_kind([[throws]], [code], [deprecated])
-
-
-
-## ---------------- ##
-## Default values. ##
-## ---------------- ##
-
-m4_define([b4_yystype], [b4_percent_define_get([[api.value.type]])])
-b4_percent_define_default([[api.value.type]], [[Object]])
-
-# %name-prefix
-m4_define_default([b4_prefix], [[YY]])
-
-b4_percent_define_default([[parser_class_name]], [b4_prefix[]Parser])
-m4_define([b4_parser_class_name], [b4_percent_define_get([[parser_class_name]])])
-
-b4_percent_define_default([[lex_throws]], [[java.io.IOException]])
-m4_define([b4_lex_throws], [b4_percent_define_get([[lex_throws]])])
-
-b4_percent_define_default([[throws]], [])
-m4_define([b4_throws], [b4_percent_define_get([[throws]])])
-
-b4_percent_define_default([[init_throws]], [])
-m4_define([b4_init_throws], [b4_percent_define_get([[init_throws]])])
-
-b4_percent_define_default([[api.location.type]], [Location])
-m4_define([b4_location_type], [b4_percent_define_get([[api.location.type]])])
-
-b4_percent_define_default([[api.position.type]], [Position])
-m4_define([b4_position_type], [b4_percent_define_get([[api.position.type]])])
-
-
-## ----------------- ##
-## Semantic Values. ##
-## ----------------- ##
-
-
-# b4_lhs_value([TYPE])
-# --------------------
-# Expansion of $<TYPE>$.
-m4_define([b4_lhs_value], [yyval])
-
-
-# b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
-# --------------------------------------
-# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
-# symbols on RHS.
-#
-# In this simple implementation, %token and %type have class names
-# between the angle brackets.
-m4_define([b4_rhs_value],
-[(m4_ifval($3, [($3)])[](yystack.valueAt ($1-($2))))])
-
-# b4_lhs_location()
-# -----------------
-# Expansion of @$.
-m4_define([b4_lhs_location],
-[(yyloc)])
-
-
-# b4_rhs_location(RULE-LENGTH, NUM)
-# ---------------------------------
-# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
-# on RHS.
-m4_define([b4_rhs_location],
-[yystack.locationAt ($1-($2))])
-
-
-# b4_lex_param
-# b4_parse_param
-# --------------
-# If defined, b4_lex_param arrives double quoted, but below we prefer
-# it to be single quoted. Same for b4_parse_param.
-
-# TODO: should be in bison.m4
-m4_define_default([b4_lex_param], [[]])
-m4_define([b4_lex_param], b4_lex_param)
-m4_define([b4_parse_param], b4_parse_param)
-
-# b4_lex_param_decl
-# -----------------
-# Extra formal arguments of the constructor.
-m4_define([b4_lex_param_decl],
-[m4_ifset([b4_lex_param],
- [b4_remove_comma([$1],
- b4_param_decls(b4_lex_param))],
- [$1])])
-
-m4_define([b4_param_decls],
- [m4_map([b4_param_decl], [$@])])
-m4_define([b4_param_decl], [, $1])
-
-m4_define([b4_remove_comma], [m4_ifval(m4_quote($1), [$1, ], [])m4_shift2($@)])
-
-
-
-# b4_parse_param_decl
-# -------------------
-# Extra formal arguments of the constructor.
-m4_define([b4_parse_param_decl],
-[m4_ifset([b4_parse_param],
- [b4_remove_comma([$1],
- b4_param_decls(b4_parse_param))],
- [$1])])
-
-
-
-# b4_lex_param_call
-# -----------------
-# Delegating the lexer parameters to the lexer constructor.
-m4_define([b4_lex_param_call],
- [m4_ifset([b4_lex_param],
- [b4_remove_comma([$1],
- b4_param_calls(b4_lex_param))],
- [$1])])
-m4_define([b4_param_calls],
- [m4_map([b4_param_call], [$@])])
-m4_define([b4_param_call], [, $2])
-
-
-
-# b4_parse_param_cons
-# -------------------
-# Extra initialisations of the constructor.
-m4_define([b4_parse_param_cons],
- [m4_ifset([b4_parse_param],
- [b4_constructor_calls(b4_parse_param)])])
-
-m4_define([b4_constructor_calls],
- [m4_map([b4_constructor_call], [$@])])
-m4_define([b4_constructor_call],
- [this.$2 = $2;
- ])
-
-
-
-# b4_parse_param_vars
-# -------------------
-# Extra instance variables.
-m4_define([b4_parse_param_vars],
- [m4_ifset([b4_parse_param],
- [
- /* User arguments. */
-b4_var_decls(b4_parse_param)])])
-
-m4_define([b4_var_decls],
- [m4_map_sep([b4_var_decl], [
-], [$@])])
-m4_define([b4_var_decl],
- [ protected final $1;])
-
-
-
-# b4_maybe_throws(THROWS)
-# -----------------------
-# Expand to either an empty string or "throws THROWS".
-m4_define([b4_maybe_throws],
- [m4_ifval($1, [throws $1])])
diff --git a/gnuwin32/bin/data/lalr1.cc b/gnuwin32/bin/data/lalr1.cc
deleted file mode 100644
index 3294f591..00000000
--- a/gnuwin32/bin/data/lalr1.cc
+++ /dev/null
@@ -1,1161 +0,0 @@
-# C++ skeleton for Bison
-
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-m4_include(b4_pkgdatadir/[c++.m4])
-
-# api.value.type=variant is valid.
-m4_define([b4_value_type_setup_variant])
-
-# b4_integral_parser_table_declare(TABLE-NAME, CONTENT, COMMENT)
-# --------------------------------------------------------------
-# Declare "parser::yy<TABLE-NAME>_" whose contents is CONTENT.
-m4_define([b4_integral_parser_table_declare],
-[m4_ifval([$3], [b4_comment([$3], [ ])
-])dnl
- static const b4_int_type_for([$2]) yy$1_[[]];dnl
-])
-
-# b4_integral_parser_table_define(TABLE-NAME, CONTENT, COMMENT)
-# -------------------------------------------------------------
-# Define "parser::yy<TABLE-NAME>_" whose contents is CONTENT.
-m4_define([b4_integral_parser_table_define],
-[ const b4_int_type_for([$2])
- b4_parser_class_name::yy$1_[[]] =
- {
- $2
- };dnl
-])
-
-# b4_symbol_value_template(VAL, [TYPE])
-# -------------------------------------
-# Same as b4_symbol_value, but used in a template method. It makes
-# a difference when using variants. Note that b4_value_type_setup_union
-# overrides b4_symbol_value, so we must override it again.
-m4_copy([b4_symbol_value], [b4_symbol_value_template])
-m4_append([b4_value_type_setup_union],
- [m4_copy_force([b4_symbol_value_union], [b4_symbol_value_template])])
-
-# b4_lhs_value([TYPE])
-# --------------------
-# Expansion of $<TYPE>$.
-m4_define([b4_lhs_value],
- [b4_symbol_value([yylhs.value], [$1])])
-
-
-# b4_lhs_location()
-# -----------------
-# Expansion of @$.
-m4_define([b4_lhs_location],
- [yylhs.location])
-
-
-# b4_rhs_data(RULE-LENGTH, NUM)
-# -----------------------------
-# Return the data corresponding to the symbol #NUM, where the current
-# rule has RULE-LENGTH symbols on RHS.
-m4_define([b4_rhs_data],
- [yystack_@{b4_subtract($@)@}])
-
-
-# b4_rhs_state(RULE-LENGTH, NUM)
-# ------------------------------
-# The state corresponding to the symbol #NUM, where the current
-# rule has RULE-LENGTH symbols on RHS.
-m4_define([b4_rhs_state],
- [b4_rhs_data([$1], [$2]).state])
-
-
-# b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
-# --------------------------------------
-# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
-# symbols on RHS.
-m4_define([b4_rhs_value],
- [b4_symbol_value([b4_rhs_data([$1], [$2]).value], [$3])])
-
-
-# b4_rhs_location(RULE-LENGTH, NUM)
-# ---------------------------------
-# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
-# on RHS.
-m4_define([b4_rhs_location],
- [b4_rhs_data([$1], [$2]).location])
-
-
-# b4_symbol_action(SYMBOL-NUM, KIND)
-# ----------------------------------
-# Run the action KIND (destructor or printer) for SYMBOL-NUM.
-# Same as in C, but using references instead of pointers.
-m4_define([b4_symbol_action],
-[b4_symbol_if([$1], [has_$2],
-[m4_pushdef([b4_symbol_value], m4_defn([b4_symbol_value_template]))[]dnl
-b4_dollar_pushdef([yysym.value],
- b4_symbol_if([$1], [has_type],
- [m4_dquote(b4_symbol([$1], [type]))]),
- [yysym.location])dnl
- b4_symbol_case_([$1])
-b4_syncline([b4_symbol([$1], [$2_line])], ["b4_symbol([$1], [$2_file])"])
- b4_symbol([$1], [$2])
-b4_syncline([@oline@], [@ofile@])
- break;
-
-m4_popdef([b4_symbol_value])[]dnl
-b4_dollar_popdef[]dnl
-])])
-
-
-# b4_lex
-# ------
-# Call yylex.
-m4_define([b4_lex],
-[b4_token_ctor_if(
-[b4_function_call([yylex],
- [symbol_type], m4_ifdef([b4_lex_param], b4_lex_param))],
-[b4_function_call([yylex], [int],
- [b4_api_PREFIX[STYPE*], [&yyla.value]][]dnl
-b4_locations_if([, [[location*], [&yyla.location]]])dnl
-m4_ifdef([b4_lex_param], [, ]b4_lex_param))])])
-
-
-m4_pushdef([b4_copyright_years],
- [2002-2013])
-
-m4_define([b4_parser_class_name],
- [b4_percent_define_get([[parser_class_name]])])
-
-b4_bison_locations_if([# Backward compatibility.
- m4_define([b4_location_constructors])
- m4_include(b4_pkgdatadir/[location.cc])])
-m4_include(b4_pkgdatadir/[stack.hh])
-b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])])
-
-# b4_shared_declarations
-# ----------------------
-# Declaration that might either go into the header (if --defines)
-# or open coded in the parser body.
-m4_define([b4_shared_declarations],
-[b4_percent_code_get([[requires]])[
-]b4_parse_assert_if([# include <cassert>])[
-# include <vector>
-# include <iostream>
-# include <stdexcept>
-# include <string>]b4_defines_if([[
-# include "stack.hh"
-]b4_bison_locations_if([[# include "location.hh"]])])[
-]b4_variant_if([b4_variant_includes])[
-
-]b4_YYDEBUG_define[
-
-]b4_namespace_open[
-
-]b4_defines_if([],
-[b4_stack_define
-b4_bison_locations_if([b4_position_define
-b4_location_define])])[
-
-]b4_variant_if([b4_variant_define])[
-
- /// A Bison parser.
- class ]b4_parser_class_name[
- {
- public:
-]b4_public_types_declare[
- /// Build a parser object.
- ]b4_parser_class_name[ (]b4_parse_param_decl[);
- virtual ~]b4_parser_class_name[ ();
-
- /// Parse.
- /// \returns 0 iff parsing succeeded.
- virtual int parse ();
-
-#if ]b4_api_PREFIX[DEBUG
- /// The current debugging stream.
- std::ostream& debug_stream () const;
- /// Set the current debugging stream.
- void set_debug_stream (std::ostream &);
-
- /// Type for debugging levels.
- typedef int debug_level_type;
- /// The current debugging level.
- debug_level_type debug_level () const;
- /// Set the current debugging level.
- void set_debug_level (debug_level_type l);
-#endif
-
- /// Report a syntax error.]b4_locations_if([[
- /// \param loc where the syntax error is found.]])[
- /// \param msg a description of the syntax error.
- virtual void error (]b4_locations_if([[const location_type& loc, ]])[const std::string& msg);
-
- /// Report a syntax error.
- void error (const syntax_error& err);
-
- private:
- /// This class is not copyable.
- ]b4_parser_class_name[ (const ]b4_parser_class_name[&);
- ]b4_parser_class_name[& operator= (const ]b4_parser_class_name[&);
-
- /// State numbers.
- typedef int state_type;
-
- /// Generate an error message.
- /// \param yystate the state where the error occurred.
- /// \param yytoken the lookahead token type, or yyempty_.
- virtual std::string yysyntax_error_ (state_type yystate,
- symbol_number_type yytoken) const;
-
- /// Compute post-reduction state.
- /// \param yystate the current state
- /// \param yylhs the nonterminal to push on the stack
- state_type yy_lr_goto_state_ (state_type yystate, int yylhs);
-
- /// Whether the given \c yypact_ value indicates a defaulted state.
- /// \param yyvalue the value to check
- static bool yy_pact_value_is_default_ (int yyvalue);
-
- /// Whether the given \c yytable_ value indicates a syntax error.
- /// \param yyvalue the value to check
- static bool yy_table_value_is_error_ (int yyvalue);
-
- static const ]b4_int_type(b4_pact_ninf, b4_pact_ninf)[ yypact_ninf_;
- static const ]b4_int_type(b4_table_ninf, b4_table_ninf)[ yytable_ninf_;
-
- /// Convert a scanner token number \a t to a symbol number.
- static token_number_type yytranslate_ (]b4_token_ctor_if([token_type], [int])[ t);
-
- // Tables.
-]b4_parser_tables_declare[]b4_error_verbose_if([
-
- /// Convert the symbol name \a n to a form suitable for a diagnostic.
- static std::string yytnamerr_ (const char *n);])[
-
-]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[
- /// For a symbol, its name in clear.
- static const char* const yytname_[];
-]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[
-]b4_integral_parser_table_declare([rline], [b4_rline],
- [[YYRLINE[YYN] -- Source line where rule number YYN was defined.]])[
- /// Report on the debug stream that the rule \a r is going to be reduced.
- virtual void yy_reduce_print_ (int r);
- /// Print the state stack on the debug stream.
- virtual void yystack_print_ ();
-
- // Debugging.
- int yydebug_;
- std::ostream* yycdebug_;
-
- /// \brief Display a symbol type, value and location.
- /// \param yyo The output stream.
- /// \param yysym The symbol.
- template <typename Base>
- void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
-#endif
-
- /// \brief Reclaim the memory associated to a symbol.
- /// \param yymsg Why this token is reclaimed.
- /// If null, print nothing.
- /// \param s The symbol.
- template <typename Base>
- void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
-
- private:
- /// Type access provider for state based symbols.
- struct by_state
- {
- /// Default constructor.
- by_state ();
-
- /// The symbol type as needed by the constructor.
- typedef state_type kind_type;
-
- /// Constructor.
- by_state (kind_type s);
-
- /// Copy constructor.
- by_state (const by_state& other);
-
- /// Steal the symbol type from \a that.
- void move (by_state& that);
-
- /// The (internal) type number (corresponding to \a state).
- /// "empty" when empty.
- symbol_number_type type_get () const;
-
- enum { empty = 0 };
-
- /// The state.
- state_type state;
- };
-
- /// "Internal" symbol: element of the stack.
- struct stack_symbol_type : basic_symbol<by_state>
- {
- /// Superclass.
- typedef basic_symbol<by_state> super_type;
- /// Construct an empty symbol.
- stack_symbol_type ();
- /// Steal the contents from \a sym to build this.
- stack_symbol_type (state_type s, symbol_type& sym);
- /// Assignment, needed by push_back.
- stack_symbol_type& operator= (const stack_symbol_type& that);
- };
-
- /// Stack type.
- typedef stack<stack_symbol_type> stack_type;
-
- /// The stack.
- stack_type yystack_;
-
- /// Push a new state on the stack.
- /// \param m a debug message to display
- /// if null, no trace is output.
- /// \param s the symbol
- /// \warning the contents of \a s.value is stolen.
- void yypush_ (const char* m, stack_symbol_type& s);
-
- /// Push a new look ahead token on the state on the stack.
- /// \param m a debug message to display
- /// if null, no trace is output.
- /// \param s the state
- /// \param sym the symbol (for its value and location).
- /// \warning the contents of \a s.value is stolen.
- void yypush_ (const char* m, state_type s, symbol_type& sym);
-
- /// Pop \a n symbols the three stacks.
- void yypop_ (unsigned int n = 1);
-
- // Constants.
- enum
- {
- yyeof_ = 0,
- yylast_ = ]b4_last[, //< Last index in yytable_.
- yynnts_ = ]b4_nterms_number[, //< Number of nonterminal symbols.
- yyempty_ = -2,
- yyfinal_ = ]b4_final_state_number[, //< Termination state number.
- yyterror_ = 1,
- yyerrcode_ = 256,
- yyntokens_ = ]b4_tokens_number[ //< Number of tokens.
- };
-
-]b4_parse_param_vars[
- };
-
-]b4_token_ctor_if([b4_yytranslate_define
-b4_public_types_define])[
-]b4_namespace_close[
-
-]b4_percent_define_flag_if([[global_tokens_and_yystype]],
-[b4_token_defines
-
-#ifndef ]b4_api_PREFIX[STYPE
- // Redirection for backward compatibility.
-# define ]b4_api_PREFIX[STYPE b4_namespace_ref::b4_parser_class_name::semantic_type
-#endif
-])[
-]b4_percent_code_get([[provides]])[
-]])
-
-b4_defines_if(
-[b4_output_begin([b4_spec_defines_file])
-b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++])
-[
-/**
- ** \file ]b4_spec_defines_file[
- ** Define the ]b4_namespace_ref[::parser class.
- */
-
-// C++ LALR(1) parser skeleton written by Akim Demaille.
-
-]b4_cpp_guard_open([b4_spec_defines_file])[
-]b4_shared_declarations[
-]b4_cpp_guard_close([b4_spec_defines_file])
-b4_output_end()
-])
-
-
-b4_output_begin([b4_parser_file_name])
-b4_copyright([Skeleton implementation for Bison LALR(1) parsers in C++])
-b4_percent_code_get([[top]])[]dnl
-m4_if(b4_prefix, [yy], [],
-[
-// Take the name prefix into account.
-#define yylex b4_prefix[]lex])[
-
-// First part of user declarations.
-]b4_user_pre_prologue[
-
-]b4_null_define[
-
-]b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]],
- [b4_shared_declarations])[
-
-// User implementation prologue.
-]b4_user_post_prologue[
-]b4_percent_code_get[
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-# if ENABLE_NLS
-# include <libintl.h> // FIXME: INFRINGES ON USER NAME SPACE.
-# define YY_(msgid) dgettext ("bison-runtime", msgid)
-# endif
-# endif
-# ifndef YY_
-# define YY_(msgid) msgid
-# endif
-#endif
-
-]b4_locations_if([dnl
-[#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
-]b4_yylloc_default_define])[
-
-// Suppress unused-variable warnings by "using" E.
-#define YYUSE(E) ((void) (E))
-
-// Enable debugging if requested.
-#if ]b4_api_PREFIX[DEBUG
-
-// A pseudo ostream that takes yydebug_ into account.
-# define YYCDEBUG if (yydebug_) (*yycdebug_)
-
-# define YY_SYMBOL_PRINT(Title, Symbol) \
- do { \
- if (yydebug_) \
- { \
- *yycdebug_ << Title << ' '; \
- yy_print_ (*yycdebug_, Symbol); \
- *yycdebug_ << std::endl; \
- } \
- } while (false)
-
-# define YY_REDUCE_PRINT(Rule) \
- do { \
- if (yydebug_) \
- yy_reduce_print_ (Rule); \
- } while (false)
-
-# define YY_STACK_PRINT() \
- do { \
- if (yydebug_) \
- yystack_print_ (); \
- } while (false)
-
-#else // !]b4_api_PREFIX[DEBUG
-
-# define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol)
-# define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
-# define YY_STACK_PRINT() static_cast<void>(0)
-
-#endif // !]b4_api_PREFIX[DEBUG
-
-#define yyerrok (yyerrstatus_ = 0)
-#define yyclearin (yyempty = true)
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
-#define YYRECOVERING() (!!yyerrstatus_)
-
-]b4_namespace_open[]b4_error_verbose_if([[
-
- /* Return YYSTR after stripping away unnecessary quotes and
- backslashes, so that it's suitable for yyerror. The heuristic is
- that double-quoting is unnecessary unless the string contains an
- apostrophe, a comma, or backslash (other than backslash-backslash).
- YYSTR is taken from yytname. */
- std::string
- ]b4_parser_class_name[::yytnamerr_ (const char *yystr)
- {
- if (*yystr == '"')
- {
- std::string yyr = "";
- char const *yyp = yystr;
-
- for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- // Fall through.
- default:
- yyr += *yyp;
- break;
-
- case '"':
- return yyr;
- }
- do_not_strip_quotes: ;
- }
-
- return yystr;
- }
-]])[
-
- /// Build a parser object.
- ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [
- :])[
-#if ]b4_api_PREFIX[DEBUG
- ]m4_ifset([b4_parse_param], [ ], [ :])[yydebug_ (false),
- yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[
-#endif]b4_parse_param_cons[
- {}
-
- ]b4_parser_class_name::~b4_parser_class_name[ ()
- {}
-
-
- /*---------------.
- | Symbol types. |
- `---------------*/
-
-]b4_token_ctor_if([], [b4_public_types_define])[
-
- // by_state.
- inline
- ]b4_parser_class_name[::by_state::by_state ()
- : state (empty)
- {}
-
- inline
- ]b4_parser_class_name[::by_state::by_state (const by_state& other)
- : state (other.state)
- {}
-
- inline
- void
- ]b4_parser_class_name[::by_state::move (by_state& that)
- {
- state = that.state;
- that.state = empty;
- }
-
- inline
- ]b4_parser_class_name[::by_state::by_state (state_type s)
- : state (s)
- {}
-
- inline
- ]b4_parser_class_name[::symbol_number_type
- ]b4_parser_class_name[::by_state::type_get () const
- {
- return state == empty ? 0 : yystos_[state];
- }
-
- inline
- ]b4_parser_class_name[::stack_symbol_type::stack_symbol_type ()
- {}
-
-
- inline
- ]b4_parser_class_name[::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
- : super_type (s]b4_locations_if([, that.location])[)
- {
- ]b4_variant_if([b4_symbol_variant([that.type_get ()],
- [value], [move], [that.value])],
- [[value = that.value;]])[
- // that is emptied.
- that.type = empty;
- }
-
- inline
- ]b4_parser_class_name[::stack_symbol_type&
- ]b4_parser_class_name[::stack_symbol_type::operator= (const stack_symbol_type& that)
- {
- state = that.state;
- ]b4_variant_if([b4_symbol_variant([that.type_get ()],
- [value], [copy], [that.value])],
- [[value = that.value;]])[]b4_locations_if([
- location = that.location;])[
- return *this;
- }
-
-
- template <typename Base>
- inline
- void
- ]b4_parser_class_name[::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
- {
- if (yymsg)
- YY_SYMBOL_PRINT (yymsg, yysym);]b4_variant_if([], [
-
- // User destructor.
- b4_symbol_actions([destructor], [yysym.type_get ()])])[
- }
-
-#if ]b4_api_PREFIX[DEBUG
- template <typename Base>
- void
- ]b4_parser_class_name[::yy_print_ (std::ostream& yyo,
- const basic_symbol<Base>& yysym) const
- {
- std::ostream& yyoutput = yyo;
- YYUSE (yyoutput);
- symbol_number_type yytype = yysym.type_get ();
- yyo << (yytype < yyntokens_ ? "token" : "nterm")
- << ' ' << yytname_[yytype] << " ("]b4_locations_if([
- << yysym.location << ": "])[;
- ]b4_symbol_actions([printer])[
- yyo << ')';
- }
-#endif
-
- inline
- void
- ]b4_parser_class_name[::yypush_ (const char* m, state_type s, symbol_type& sym)
- {
- stack_symbol_type t (s, sym);
- yypush_ (m, t);
- }
-
- inline
- void
- ]b4_parser_class_name[::yypush_ (const char* m, stack_symbol_type& s)
- {
- if (m)
- YY_SYMBOL_PRINT (m, s);
- yystack_.push (s);
- }
-
- inline
- void
- ]b4_parser_class_name[::yypop_ (unsigned int n)
- {
- yystack_.pop (n);
- }
-
-#if ]b4_api_PREFIX[DEBUG
- std::ostream&
- ]b4_parser_class_name[::debug_stream () const
- {
- return *yycdebug_;
- }
-
- void
- ]b4_parser_class_name[::set_debug_stream (std::ostream& o)
- {
- yycdebug_ = &o;
- }
-
-
- ]b4_parser_class_name[::debug_level_type
- ]b4_parser_class_name[::debug_level () const
- {
- return yydebug_;
- }
-
- void
- ]b4_parser_class_name[::set_debug_level (debug_level_type l)
- {
- yydebug_ = l;
- }
-#endif // ]b4_api_PREFIX[DEBUG
-
- inline ]b4_parser_class_name[::state_type
- ]b4_parser_class_name[::yy_lr_goto_state_ (state_type yystate, int yylhs)
- {
- int yyr = yypgoto_[yylhs - yyntokens_] + yystate;
- if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
- return yytable_[yyr];
- else
- return yydefgoto_[yylhs - yyntokens_];
- }
-
- inline bool
- ]b4_parser_class_name[::yy_pact_value_is_default_ (int yyvalue)
- {
- return yyvalue == yypact_ninf_;
- }
-
- inline bool
- ]b4_parser_class_name[::yy_table_value_is_error_ (int yyvalue)
- {
- return yyvalue == yytable_ninf_;
- }
-
- int
- ]b4_parser_class_name[::parse ()
- {
- /// Whether yyla contains a lookahead.
- bool yyempty = true;
-
- // State.
- int yyn;
- int yylen = 0;
-
- // Error handling.
- int yynerrs_ = 0;
- int yyerrstatus_ = 0;
-
- /// The lookahead symbol.
- symbol_type yyla;]b4_locations_if([[
-
- /// The locations where the error started and ended.
- stack_symbol_type yyerror_range[3];]])[
-
- /// $$ and @@$.
- stack_symbol_type yylhs;
-
- /// The return value of parse ().
- int yyresult;
-
- // FIXME: This shoud be completely indented. It is not yet to
- // avoid gratuitous conflicts when merging into the master branch.
- try
- {
- YYCDEBUG << "Starting parse" << std::endl;
-
-]m4_ifdef([b4_initial_action], [
-b4_dollar_pushdef([yyla.value], [], [yyla.location])dnl
- // User initialization code.
- b4_user_initial_action
-b4_dollar_popdef])[]dnl
-
- [ /* Initialize the stack. The initial state will be set in
- yynewstate, since the latter expects the semantical and the
- location values to have been already stored, initialize these
- stacks with a primary value. */
- yystack_.clear ();
- yypush_ (YY_NULL, 0, yyla);
-
- // A new symbol was pushed on the stack.
- yynewstate:
- YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
-
- // Accept?
- if (yystack_[0].state == yyfinal_)
- goto yyacceptlab;
-
- goto yybackup;
-
- // Backup.
- yybackup:
-
- // Try to take a decision without lookahead.
- yyn = yypact_[yystack_[0].state];
- if (yy_pact_value_is_default_ (yyn))
- goto yydefault;
-
- // Read a lookahead token.
- if (yyempty)
- {
- YYCDEBUG << "Reading a token: ";
- try
- {]b4_token_ctor_if([[
- symbol_type yylookahead (]b4_lex[);
- yyla.move (yylookahead);]], [[
- yyla.type = yytranslate_ (]b4_lex[);]])[
- }
- catch (const syntax_error& yyexc)
- {
- error (yyexc);
- goto yyerrlab1;
- }
- yyempty = false;
- }
- YY_SYMBOL_PRINT ("Next token is", yyla);
-
- /* If the proper action on seeing token YYLA.TYPE is to reduce or
- to detect an error, take that action. */
- yyn += yyla.type_get ();
- if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
- goto yydefault;
-
- // Reduce or error.
- yyn = yytable_[yyn];
- if (yyn <= 0)
- {
- if (yy_table_value_is_error_ (yyn))
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
-
- // Discard the token being shifted.
- yyempty = true;
-
- // Count tokens shifted since error; after three, turn off error status.
- if (yyerrstatus_)
- --yyerrstatus_;
-
- // Shift the lookahead token.
- yypush_ ("Shifting", yyn, yyla);
- goto yynewstate;
-
- /*-----------------------------------------------------------.
- | yydefault -- do the default action for the current state. |
- `-----------------------------------------------------------*/
- yydefault:
- yyn = yydefact_[yystack_[0].state];
- if (yyn == 0)
- goto yyerrlab;
- goto yyreduce;
-
- /*-----------------------------.
- | yyreduce -- Do a reduction. |
- `-----------------------------*/
- yyreduce:
- yylen = yyr2_[yyn];
- yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);]b4_variant_if([
- /* Variants are always initialized to an empty instance of the
- correct type. The default $$=$1 action is NOT applied when using
- variants. */
- b4_symbol_variant([[yyr1_@{yyn@}]], [yylhs.value], [build])],[
- /* If YYLEN is nonzero, implement the default value of the action:
- '$$ = $1'. Otherwise, use the top of the stack.
-
- Otherwise, the following line sets YYLHS.VALUE to garbage.
- This behavior is undocumented and Bison
- users should not rely upon it. */
- if (yylen)
- yylhs.value = yystack_@{yylen - 1@}.value;
- else
- yylhs.value = yystack_@{0@}.value;])[
-]b4_locations_if([dnl
-[
- // Compute the default @@$.
- {
- slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
- YYLLOC_DEFAULT (yylhs.location, slice, yylen);
- }]])[
-
- // Perform the reduction.
- YY_REDUCE_PRINT (yyn);
- try
- {
- switch (yyn)
- {
-]b4_user_actions[
- default:
- break;
- }
- }
- catch (const syntax_error& yyexc)
- {
- error (yyexc);
- YYERROR;
- }
- YY_SYMBOL_PRINT ("-> $$ =", yylhs);
- yypop_ (yylen);
- yylen = 0;
- YY_STACK_PRINT ();
-
- // Shift the result of the reduction.
- yypush_ (YY_NULL, yylhs);
- goto yynewstate;
-
- /*--------------------------------------.
- | yyerrlab -- here on detecting error. |
- `--------------------------------------*/
- yyerrlab:
- // If not already recovering from an error, report this error.
- if (!yyerrstatus_)
- {
- ++yynerrs_;
- error (]b4_join(b4_locations_if([yyla.location]),
- [[yysyntax_error_ (yystack_[0].state,
- yyempty ? yyempty_ : yyla.type_get ())]])[);
- }
-
-]b4_locations_if([[
- yyerror_range[1].location = yyla.location;]])[
- if (yyerrstatus_ == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- // Return failure if at end of input.
- if (yyla.type_get () == yyeof_)
- YYABORT;
- else if (!yyempty)
- {
- yy_destroy_ ("Error: discarding", yyla);
- yyempty = true;
- }
- }
-
- // Else will try to reuse lookahead token after shifting the error token.
- goto yyerrlab1;
-
-
- /*---------------------------------------------------.
- | yyerrorlab -- error raised explicitly by YYERROR. |
- `---------------------------------------------------*/
- yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
- if (false)
- goto yyerrorlab;]b4_locations_if([[
- yyerror_range[1].location = yystack_[yylen - 1].location;]])b4_variant_if([[
- /* $$ was initialized before running the user action. */
- YY_SYMBOL_PRINT ("Error: discarding", yylhs);
- yylhs.~stack_symbol_type();]])[
- /* Do not reclaim the symbols of the rule whose action triggered
- this YYERROR. */
- yypop_ (yylen);
- yylen = 0;
- goto yyerrlab1;
-
- /*-------------------------------------------------------------.
- | yyerrlab1 -- common code for both syntax error and YYERROR. |
- `-------------------------------------------------------------*/
- yyerrlab1:
- yyerrstatus_ = 3; // Each real token shifted decrements this.
- {
- stack_symbol_type error_token;
- for (;;)
- {
- yyn = yypact_[yystack_[0].state];
- if (!yy_pact_value_is_default_ (yyn))
- {
- yyn += yyterror_;
- if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
- {
- yyn = yytable_[yyn];
- if (0 < yyn)
- break;
- }
- }
-
- // Pop the current state because it cannot handle the error token.
- if (yystack_.size () == 1)
- YYABORT;
-]b4_locations_if([[
- yyerror_range[1].location = yystack_[0].location;]])[
- yy_destroy_ ("Error: popping", yystack_[0]);
- yypop_ ();
- YY_STACK_PRINT ();
- }
-]b4_locations_if([[
- yyerror_range[2].location = yyla.location;
- YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);]])[
-
- // Shift the error token.
- error_token.state = yyn;
- yypush_ ("Shifting", error_token);
- }
- goto yynewstate;
-
- // Accept.
- yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
- // Abort.
- yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
- yyreturn:
- if (!yyempty)
- yy_destroy_ ("Cleanup: discarding lookahead", yyla);
-
- /* Do not reclaim the symbols of the rule whose action triggered
- this YYABORT or YYACCEPT. */
- yypop_ (yylen);
- while (1 < yystack_.size ())
- {
- yy_destroy_ ("Cleanup: popping", yystack_[0]);
- yypop_ ();
- }
-
- return yyresult;
- }
- catch (...)
- {
- YYCDEBUG << "Exception caught: cleaning lookahead and stack"
- << std::endl;
- // Do not try to display the values of the reclaimed symbols,
- // as their printer might throw an exception.
- if (!yyempty)
- yy_destroy_ (YY_NULL, yyla);
-
- while (1 < yystack_.size ())
- {
- yy_destroy_ (YY_NULL, yystack_[0]);
- yypop_ ();
- }
- throw;
- }
- }
-
- void
- ]b4_parser_class_name[::error (const syntax_error& yyexc)
- {
- error (]b4_join(b4_locations_if([yyexc.location]),
- [[yyexc.what()]])[);
- }
-
- // Generate an error message.
- std::string
- ]b4_parser_class_name[::yysyntax_error_ (]dnl
-b4_error_verbose_if([state_type yystate, symbol_number_type yytoken],
- [state_type, symbol_number_type])[) const
- {]b4_error_verbose_if([[
- std::string yyres;
- // Number of reported tokens (one for the "unexpected", one per
- // "expected").
- size_t yycount = 0;
- // Its maximum.
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- // Arguments of yyformat.
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-
- /* There are many possibilities here to consider:
- - If this state is a consistent state with a default action, then
- the only way this function was invoked is if the default action
- is an error action. In that case, don't check for expected
- tokens because there are none.
- - The only way there can be no lookahead present (in yytoken) is
- if this state is a consistent state with a default action.
- Thus, detecting the absence of a lookahead is sufficient to
- determine that there is no unexpected or expected token to
- report. In that case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this state is
- a consistent state with a default action. There might have
- been a previous inconsistent state, consistent state with a
- non-default action, or user semantic action that manipulated
- yyla. (However, yyla is currently not documented for users.)
- - Of course, the expected token list depends on states to have
- correct lookahead information, and it depends on the parser not
- to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state
- merging (from LALR or IELR) and default reductions corrupt the
- expected token list. However, the list is correct for
- canonical LR with one exception: it will still contain any
- token that will not be accepted due to an error action in a
- later state.
- */
- if (yytoken != yyempty_)
- {
- yyarg[yycount++] = yytname_[yytoken];
- int yyn = yypact_[yystate];
- if (!yy_pact_value_is_default_ (yyn))
- {
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. In other words, skip the first -YYN actions for
- this state because they are default actions. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
- // Stay within bounds of both yycheck and yytname.
- int yychecklim = yylast_ - yyn + 1;
- int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
- for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
- && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- break;
- }
- else
- yyarg[yycount++] = yytname_[yyx];
- }
- }
- }
-
- char const* yyformat = YY_NULL;
- switch (yycount)
- {
-#define YYCASE_(N, S) \
- case N: \
- yyformat = S; \
- break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-#undef YYCASE_
- }
-
- // Argument number.
- size_t yyi = 0;
- for (char const* yyp = yyformat; *yyp; ++yyp)
- if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
- {
- yyres += yytnamerr_ (yyarg[yyi++]);
- ++yyp;
- }
- else
- yyres += *yyp;
- return yyres;]], [[
- return YY_("syntax error");]])[
- }
-
-
- const ]b4_int_type(b4_pact_ninf, b4_pact_ninf) b4_parser_class_name::yypact_ninf_ = b4_pact_ninf[;
-
- const ]b4_int_type(b4_table_ninf, b4_table_ninf) b4_parser_class_name::yytable_ninf_ = b4_table_ninf[;
-
-]b4_parser_tables_define[
-
-]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[
- // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- // First, the terminals, then, starting at \a yyntokens_, nonterminals.
- const char*
- const ]b4_parser_class_name[::yytname_[] =
- {
- ]b4_tname[
- };
-
-]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[
-]b4_integral_parser_table_define([rline], [b4_rline])[
-
- // Print the state stack on the debug stream.
- void
- ]b4_parser_class_name[::yystack_print_ ()
- {
- *yycdebug_ << "Stack now";
- for (stack_type::const_iterator
- i = yystack_.begin (),
- i_end = yystack_.end ();
- i != i_end; ++i)
- *yycdebug_ << ' ' << i->state;
- *yycdebug_ << std::endl;
- }
-
- // Report on the debug stream that the rule \a yyrule is going to be reduced.
- void
- ]b4_parser_class_name[::yy_reduce_print_ (int yyrule)
- {
- unsigned int yylno = yyrline_[yyrule];
- int yynrhs = yyr2_[yyrule];
- // Print the symbols being reduced, and their result.
- *yycdebug_ << "Reducing stack by rule " << yyrule - 1
- << " (line " << yylno << "):" << std::endl;
- // The symbols being reduced.
- for (int yyi = 0; yyi < yynrhs; yyi++)
- YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
- ]b4_rhs_data(yynrhs, yyi + 1)[);
- }
-#endif // ]b4_api_PREFIX[DEBUG
-
-]b4_token_ctor_if([], [b4_yytranslate_define])[
-]b4_namespace_close[
-]b4_epilogue[]dnl
-b4_output_end()
-
-
-m4_popdef([b4_copyright_years])dnl
diff --git a/gnuwin32/bin/data/lalr1.java b/gnuwin32/bin/data/lalr1.java
deleted file mode 100644
index d137ed81..00000000
--- a/gnuwin32/bin/data/lalr1.java
+++ /dev/null
@@ -1,1065 +0,0 @@
-# Java skeleton for Bison -*- autoconf -*-
-
-# Copyright (C) 2007-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-m4_include(b4_pkgdatadir/[java.m4])
-
-b4_defines_if([b4_fatal([%s: %%defines does not make sense in Java],
- [b4_skeleton])])
-
-# We do not depend on %debug in Java, but pacify warnings about
-# non-used flags.
-b4_parse_trace_if([0], [0])
-
-m4_define([b4_symbol_no_destructor_assert],
-[b4_symbol_if([$1], [has_destructor],
- [b4_fatal([%s: %s: %%destructor does not make sense in Java],
- [b4_skeleton],
- [b4_symbol_action_location([$1], [destructor])])])])
-b4_symbol_foreach([b4_symbol_no_destructor_assert])
-
-# Setup some macros for api.push-pull.
-b4_percent_define_default([[api.push-pull]], [[pull]])
-b4_percent_define_check_values([[[[api.push-pull]],
- [[pull]], [[push]], [[both]]]])
-
-# Define m4 conditional macros that encode the value
-# of the api.push-pull flag.
-b4_define_flag_if([pull]) m4_define([b4_pull_flag], [[1]])
-b4_define_flag_if([push]) m4_define([b4_push_flag], [[1]])
-m4_case(b4_percent_define_get([[api.push-pull]]),
- [pull], [m4_define([b4_push_flag], [[0]])],
- [push], [m4_define([b4_pull_flag], [[0]])])
-
-# Define a macro to be true when api.push-pull has the value "both".
-m4_define([b4_both_if],[b4_push_if([b4_pull_if([$1],[$2])],[$2])])
-
-# Handle BISON_USE_PUSH_FOR_PULL for the test suite. So that push parsing
-# tests function as written, do not let BISON_USE_PUSH_FOR_PULL modify the
-# behavior of Bison at all when push parsing is already requested.
-b4_define_flag_if([use_push_for_pull])
-b4_use_push_for_pull_if([
- b4_push_if([m4_define([b4_use_push_for_pull_flag], [[0]])],
- [m4_define([b4_push_flag], [[1]])])])
-
-# Define a macro to encapsulate the parse state variables.
-# This allows them to be defined either in parse() when doing
-# pull parsing, or as class instance variable when doing push parsing.
-m4_define([b4_define_state],[[
- /* Lookahead and lookahead in internal form. */
- int yychar = yyempty_;
- int yytoken = 0;
-
- /* State. */
- int yyn = 0;
- int yylen = 0;
- int yystate = 0;
- YYStack yystack = new YYStack ();
- int label = YYNEWSTATE;
-
- /* Error handling. */
- int yynerrs_ = 0;
- ]b4_locations_if([/* The location where the error started. */
- b4_location_type yyerrloc = null;
-
- /* Location. */
- b4_location_type yylloc = new b4_location_type (null, null);])[
-
- /* Semantic value of the lookahead. */
- ]b4_yystype[ yylval = null;
-]])
-
-b4_output_begin([b4_parser_file_name])
-b4_copyright([Skeleton implementation for Bison LALR(1) parsers in Java],
- [2007-2013])
-
-b4_percent_define_ifdef([package], [package b4_percent_define_get([package]);
-])[/* First part of user declarations. */
-]b4_user_pre_prologue
-b4_user_post_prologue
-b4_percent_code_get([[imports]])
-[/**
- * A Bison parser, automatically generated from <tt>]m4_bpatsubst(b4_file_name, [^"\(.*\)"$], [\1])[</tt>.
- *
- * @@author LALR (1) parser skeleton written by Paolo Bonzini.
- */
-]b4_percent_define_get3([annotations], [], [ ])dnl
-b4_public_if([public ])dnl
-b4_abstract_if([abstract ])dnl
-b4_final_if([final ])dnl
-b4_strictfp_if([strictfp ])dnl
-[class ]b4_parser_class_name[]dnl
-b4_percent_define_get3([extends], [ extends ])dnl
-b4_percent_define_get3([implements], [ implements ])[
-{
- ]b4_identification[
-]b4_error_verbose_if([[
- /**
- * True if verbose error messages are enabled.
- */
- private boolean yyErrorVerbose = true;
-
- /**
- * Return whether verbose error messages are enabled.
- */
- public final boolean getErrorVerbose() { return yyErrorVerbose; }
-
- /**
- * Set the verbosity of error messages.
- * @@param verbose True to request verbose error messages.
- */
- public final void setErrorVerbose(boolean verbose)
- { yyErrorVerbose = verbose; }
-]])
-
-b4_locations_if([[
- /**
- * A class defining a pair of positions. Positions, defined by the
- * <code>]b4_position_type[</code> class, denote a point in the input.
- * Locations represent a part of the input through the beginning
- * and ending positions.
- */
- public class ]b4_location_type[ {
- /**
- * The first, inclusive, position in the range.
- */
- public ]b4_position_type[ begin;
-
- /**
- * The first position beyond the range.
- */
- public ]b4_position_type[ end;
-
- /**
- * Create a <code>]b4_location_type[</code> denoting an empty range located at
- * a given point.
- * @@param loc The position at which the range is anchored.
- */
- public ]b4_location_type[ (]b4_position_type[ loc) {
- this.begin = this.end = loc;
- }
-
- /**
- * Create a <code>]b4_location_type[</code> from the endpoints of the range.
- * @@param begin The first position included in the range.
- * @@param end The first position beyond the range.
- */
- public ]b4_location_type[ (]b4_position_type[ begin, ]b4_position_type[ end) {
- this.begin = begin;
- this.end = end;
- }
-
- /**
- * Print a representation of the location. For this to be correct,
- * <code>]b4_position_type[</code> should override the <code>equals</code>
- * method.
- */
- public String toString () {
- if (begin.equals (end))
- return begin.toString ();
- else
- return begin.toString () + "-" + end.toString ();
- }
- }
-
-]])
-
- b4_locations_if([[
- private ]b4_location_type[ yylloc (YYStack rhs, int n)
- {
- if (n > 0)
- return new ]b4_location_type[ (rhs.locationAt (n-1).begin, rhs.locationAt (0).end);
- else
- return new ]b4_location_type[ (rhs.locationAt (0).end);
- }]])[
-
- /**
- * Communication interface between the scanner and the Bison-generated
- * parser <tt>]b4_parser_class_name[</tt>.
- */
- public interface Lexer {
- /** Token returned by the scanner to signal the end of its input. */
- public static final int EOF = 0;
-
-]b4_token_enums[
-
- ]b4_locations_if([[/**
- * Method to retrieve the beginning position of the last scanned token.
- * @@return the position at which the last scanned token starts.
- */
- ]b4_position_type[ getStartPos ();
-
- /**
- * Method to retrieve the ending position of the last scanned token.
- * @@return the first position beyond the last scanned token.
- */
- ]b4_position_type[ getEndPos ();]])[
-
- /**
- * Method to retrieve the semantic value of the last scanned token.
- * @@return the semantic value of the last scanned token.
- */
- ]b4_yystype[ getLVal ();
-
- /**
- * Entry point for the scanner. Returns the token identifier corresponding
- * to the next token and prepares to return the semantic value
- * ]b4_locations_if([and beginning/ending positions ])[of the token.
- * @@return the token identifier corresponding to the next token.
- */
- int yylex () ]b4_maybe_throws([b4_lex_throws])[;
-
- /**
- * Entry point for error reporting. Emits an error
- * ]b4_locations_if([referring to the given location ])[in a user-defined way.
- *
- * ]b4_locations_if([[@@param loc The location of the element to which the
- * error message is related]])[
- * @@param msg The string for the error message.
- */
- void yyerror (]b4_locations_if([b4_location_type[ loc, ]])[String msg);]
- }
-
- b4_lexer_if([[private class YYLexer implements Lexer {
-]b4_percent_code_get([[lexer]])[
- }
-
- ]])[/**
- * The object doing lexical analysis for us.
- */
- private Lexer yylexer;
- ]
- b4_parse_param_vars
-
-b4_lexer_if([[
- /**
- * Instantiates the Bison-generated parser.
- */
- public ]b4_parser_class_name (b4_parse_param_decl([b4_lex_param_decl])[) ]b4_maybe_throws([b4_init_throws])[
- {
- ]b4_percent_code_get([[init]])[
- this.yylexer = new YYLexer(]b4_lex_param_call[);
- ]b4_parse_param_cons[
- }
-]])
-
- /**
- * Instantiates the Bison-generated parser.
- * @@param yylexer The scanner that will supply tokens to the parser.
- */
- b4_lexer_if([[protected]], [[public]]) b4_parser_class_name[ (]b4_parse_param_decl([[Lexer yylexer]])[) ]b4_maybe_throws([b4_init_throws])[
- {
- ]b4_percent_code_get([[init]])[
- this.yylexer = yylexer;
- ]b4_parse_param_cons[
- }
-
- private java.io.PrintStream yyDebugStream = System.err;
-
- /**
- * Return the <tt>PrintStream</tt> on which the debugging output is
- * printed.
- */
- public final java.io.PrintStream getDebugStream () { return yyDebugStream; }
-
- /**
- * Set the <tt>PrintStream</tt> on which the debug output is printed.
- * @@param s The stream that is used for debugging output.
- */
- public final void setDebugStream(java.io.PrintStream s) { yyDebugStream = s; }
-
- private int yydebug = 0;
-
- /**
- * Answer the verbosity of the debugging output; 0 means that all kinds of
- * output from the parser are suppressed.
- */
- public final int getDebugLevel() { return yydebug; }
-
- /**
- * Set the verbosity of the debugging output; 0 means that all kinds of
- * output from the parser are suppressed.
- * @@param level The verbosity level for debugging output.
- */
- public final void setDebugLevel(int level) { yydebug = level; }
-
- /**
- * Print an error message via the lexer.
- *]b4_locations_if([[ Use a <code>null</code> location.]])[
- * @@param msg The error message.
- */
- public final void yyerror (String msg)
- {
- yylexer.yyerror (]b4_locations_if([[(]b4_location_type[)null, ]])[msg);
- }
-]b4_locations_if([[
- /**
- * Print an error message via the lexer.
- * @@param loc The location associated with the message.
- * @@param msg The error message.
- */
- public final void yyerror (]b4_location_type[ loc, String msg)
- {
- yylexer.yyerror (loc, msg);
- }
-
- /**
- * Print an error message via the lexer.
- * @@param pos The position associated with the message.
- * @@param msg The error message.
- */
- public final void yyerror (]b4_position_type[ pos, String msg)
- {
- yylexer.yyerror (new ]b4_location_type[ (pos), msg);
- }]])
-
- [protected final void yycdebug (String s) {
- if (yydebug > 0)
- yyDebugStream.println (s);
- }
-
- private final class YYStack {
- private int[] stateStack = new int[16];
- ]b4_locations_if([[private ]b4_location_type[[] locStack = new ]b4_location_type[[16];]])[
- private ]b4_yystype[[] valueStack = new ]b4_yystype[[16];
-
- public int size = 16;
- public int height = -1;
-
- public final void push (int state, ]b4_yystype[ value]dnl
- b4_locations_if([, ]b4_location_type[ loc])[) {
- height++;
- if (size == height)
- {
- int[] newStateStack = new int[size * 2];
- System.arraycopy (stateStack, 0, newStateStack, 0, height);
- stateStack = newStateStack;
- ]b4_locations_if([[
- ]b4_location_type[[] newLocStack = new ]b4_location_type[[size * 2];
- System.arraycopy (locStack, 0, newLocStack, 0, height);
- locStack = newLocStack;]])
-
- b4_yystype[[] newValueStack = new ]b4_yystype[[size * 2];
- System.arraycopy (valueStack, 0, newValueStack, 0, height);
- valueStack = newValueStack;
-
- size *= 2;
- }
-
- stateStack[height] = state;
- ]b4_locations_if([[locStack[height] = loc;]])[
- valueStack[height] = value;
- }
-
- public final void pop () {
- pop (1);
- }
-
- public final void pop (int num) {
- // Avoid memory leaks... garbage collection is a white lie!
- if (num > 0) {
- java.util.Arrays.fill (valueStack, height - num + 1, height + 1, null);
- ]b4_locations_if([[java.util.Arrays.fill (locStack, height - num + 1, height + 1, null);]])[
- }
- height -= num;
- }
-
- public final int stateAt (int i) {
- return stateStack[height - i];
- }
-
- ]b4_locations_if([[public final ]b4_location_type[ locationAt (int i) {
- return locStack[height - i];
- }
-
- ]])[public final ]b4_yystype[ valueAt (int i) {
- return valueStack[height - i];
- }
-
- // Print the state stack on the debug stream.
- public void print (java.io.PrintStream out)
- {
- out.print ("Stack now");
-
- for (int i = 0; i <= height; i++)
- {
- out.print (' ');
- out.print (stateStack[i]);
- }
- out.println ();
- }
- }
-
- /**
- * Returned by a Bison action in order to stop the parsing process and
- * return success (<tt>true</tt>).
- */
- public static final int YYACCEPT = 0;
-
- /**
- * Returned by a Bison action in order to stop the parsing process and
- * return failure (<tt>false</tt>).
- */
- public static final int YYABORT = 1;
-
-]b4_push_if([
- /**
- * Returned by a Bison action in order to request a new token.
- */
- public static final int YYPUSH_MORE = 4;])[
-
- /**
- * Returned by a Bison action in order to start error recovery without
- * printing an error message.
- */
- public static final int YYERROR = 2;
-
- /**
- * Internal return codes that are not supported for user semantic
- * actions.
- */
- private static final int YYERRLAB = 3;
- private static final int YYNEWSTATE = 4;
- private static final int YYDEFAULT = 5;
- private static final int YYREDUCE = 6;
- private static final int YYERRLAB1 = 7;
- private static final int YYRETURN = 8;
-]b4_push_if([[ private static final int YYGETTOKEN = 9; /* Signify that a new token is expected when doing push-parsing. */]])[
-
- private int yyerrstatus_ = 0;
-
-]b4_push_if([dnl
-b4_define_state])[
- /**
- * Return whether error recovery is being done. In this state, the parser
- * reads token until it reaches a known state, and then restarts normal
- * operation.
- */
- public final boolean recovering ()
- {
- return yyerrstatus_ == 0;
- }
-
- private int yyaction (int yyn, YYStack yystack, int yylen) ]b4_maybe_throws([b4_throws])[
- {
- ]b4_yystype[ yyval;
- ]b4_locations_if([b4_location_type[ yyloc = yylloc (yystack, yylen);]])[
-
- /* If YYLEN is nonzero, implement the default value of the action:
- '$$ = $1'. Otherwise, use the top of the stack.
-
- Otherwise, the following line sets YYVAL to garbage.
- This behavior is undocumented and Bison
- users should not rely upon it. */
- if (yylen > 0)
- yyval = yystack.valueAt (yylen - 1);
- else
- yyval = yystack.valueAt (0);
-
- yy_reduce_print (yyn, yystack);
-
- switch (yyn)
- {
- ]b4_user_actions[
- default: break;
- }
-
- yy_symbol_print ("-> $$ =", yyr1_[yyn], yyval]b4_locations_if([, yyloc])[);
-
- yystack.pop (yylen);
- yylen = 0;
-
- /* Shift the result of the reduction. */
- yyn = yyr1_[yyn];
- int yystate = yypgoto_[yyn - yyntokens_] + yystack.stateAt (0);
- if (0 <= yystate && yystate <= yylast_
- && yycheck_[yystate] == yystack.stateAt (0))
- yystate = yytable_[yystate];
- else
- yystate = yydefgoto_[yyn - yyntokens_];
-
- yystack.push (yystate, yyval]b4_locations_if([, yyloc])[);
- return YYNEWSTATE;
- }
-
-]b4_error_verbose_if([[
- /* Return YYSTR after stripping away unnecessary quotes and
- backslashes, so that it's suitable for yyerror. The heuristic is
- that double-quoting is unnecessary unless the string contains an
- apostrophe, a comma, or backslash (other than backslash-backslash).
- YYSTR is taken from yytname. */
- private final String yytnamerr_ (String yystr)
- {
- if (yystr.charAt (0) == '"')
- {
- StringBuffer yyr = new StringBuffer ();
- strip_quotes: for (int i = 1; i < yystr.length (); i++)
- switch (yystr.charAt (i))
- {
- case '\'':
- case ',':
- break strip_quotes;
-
- case '\\':
- if (yystr.charAt(++i) != '\\')
- break strip_quotes;
- /* Fall through. */
- default:
- yyr.append (yystr.charAt (i));
- break;
-
- case '"':
- return yyr.toString ();
- }
- }
- else if (yystr.equals ("$end"))
- return "end of input";
-
- return yystr;
- }
-]])[
-
- /*--------------------------------.
- | Print this symbol on YYOUTPUT. |
- `--------------------------------*/
-
- private void yy_symbol_print (String s, int yytype,
- ]b4_yystype[ yyvaluep]dnl
- b4_locations_if([, Object yylocationp])[)
- {
- if (yydebug > 0)
- yycdebug (s + (yytype < yyntokens_ ? " token " : " nterm ")
- + yytname_[yytype] + " ("]b4_locations_if([
- + yylocationp + ": "])[
- + (yyvaluep == null ? "(null)" : yyvaluep.toString ()) + ")");
- }
-
-]b4_push_if([],[[
- /**
- * Parse input from the scanner that was specified at object construction
- * time. Return whether the end of the input was reached successfully.
- *
- * @@return <tt>true</tt> if the parsing succeeds. Note that this does not
- * imply that there were no syntax errors.
- */
- public boolean parse () ]b4_maybe_throws([b4_list2([b4_lex_throws], [b4_throws])])[]])[
-]b4_push_if([
- /**
- * Push Parse input from external lexer
- *
- * @@param yylextoken current token
- * @@param yylexval current lval
-]b4_locations_if([ * @@param yylexloc current position])[
- *
- * @@return <tt>YYACCEPT, YYABORT, YYPUSH_MORE</tt>
- */
- public int push_parse (int yylextoken, b4_yystype yylexval[]b4_locations_if([, b4_location_type yylexloc]))
- b4_maybe_throws([b4_list2([b4_lex_throws], [b4_throws])])])[
- {
- ]b4_locations_if([/* @@$. */
- b4_location_type yyloc;])[
-]b4_push_if([],[[
-]b4_define_state[
- yycdebug ("Starting parse\n");
- yyerrstatus_ = 0;
-
- /* Initialize the stack. */
- yystack.push (yystate, yylval ]b4_locations_if([, yylloc])[);
-]m4_ifdef([b4_initial_action], [
-b4_dollar_pushdef([yylval], [], [yylloc])dnl
- /* User initialization code. */
- b4_user_initial_action
-b4_dollar_popdef[]dnl
-])[
-]])[
-]b4_push_if([[
- if (!this.push_parse_initialized)
- {
- push_parse_initialize ();
-]m4_ifdef([b4_initial_action], [
-b4_dollar_pushdef([yylval], [], [yylloc])dnl
- /* User initialization code. */
- b4_user_initial_action
-b4_dollar_popdef[]dnl
-])[
- yycdebug ("Starting parse\n");
- yyerrstatus_ = 0;
- } else
- label = YYGETTOKEN;
-
- boolean push_token_consumed = true;
-]])[
- for (;;)
- switch (label)
- {
- /* New state. Unlike in the C/C++ skeletons, the state is already
- pushed when we come here. */
- case YYNEWSTATE:
- yycdebug ("Entering state " + yystate + "\n");
- if (yydebug > 0)
- yystack.print (yyDebugStream);
-
- /* Accept? */
- if (yystate == yyfinal_)
- ]b4_push_if([{label = YYACCEPT; break;}],
- [return true;])[
-
- /* Take a decision. First try without lookahead. */
- yyn = yypact_[yystate];
- if (yy_pact_value_is_default_ (yyn))
- {
- label = YYDEFAULT;
- break;
- }
-]b4_push_if([ /* Fall Through */
-
- case YYGETTOKEN:])[
- /* Read a lookahead token. */
- if (yychar == yyempty_)
- {
-]b4_push_if([[
- if (!push_token_consumed)
- return YYPUSH_MORE;
- yycdebug ("Reading a token: ");
- yychar = yylextoken;
- yylval = yylexval;]b4_locations_if([
- yylloc = yylexloc;])[
- push_token_consumed = false;]])[
-]b4_push_if([],[[
- yycdebug ("Reading a token: ");
- yychar = yylexer.yylex ();
- yylval = yylexer.getLVal ();]b4_locations_if([
- yylloc = new b4_location_type (yylexer.getStartPos (),
- yylexer.getEndPos ());])[
-]])[
- }
-
- /* Convert token to internal form. */
- if (yychar <= Lexer.EOF)
- {
- yychar = yytoken = Lexer.EOF;
- yycdebug ("Now at end of input.\n");
- }
- else
- {
- yytoken = yytranslate_ (yychar);
- yy_symbol_print ("Next token is", yytoken,
- yylval]b4_locations_if([, yylloc])[);
- }
-
- /* If the proper action on seeing token YYTOKEN is to reduce or to
- detect an error, take that action. */
- yyn += yytoken;
- if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken)
- label = YYDEFAULT;
-
- /* <= 0 means reduce or error. */
- else if ((yyn = yytable_[yyn]) <= 0)
- {
- if (yy_table_value_is_error_ (yyn))
- label = YYERRLAB;
- else
- {
- yyn = -yyn;
- label = YYREDUCE;
- }
- }
-
- else
- {
- /* Shift the lookahead token. */
- yy_symbol_print ("Shifting", yytoken,
- yylval]b4_locations_if([, yylloc])[);
-
- /* Discard the token being shifted. */
- yychar = yyempty_;
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus_ > 0)
- --yyerrstatus_;
-
- yystate = yyn;
- yystack.push (yystate, yylval]b4_locations_if([, yylloc])[);
- label = YYNEWSTATE;
- }
- break;
-
- /*-----------------------------------------------------------.
- | yydefault -- do the default action for the current state. |
- `-----------------------------------------------------------*/
- case YYDEFAULT:
- yyn = yydefact_[yystate];
- if (yyn == 0)
- label = YYERRLAB;
- else
- label = YYREDUCE;
- break;
-
- /*-----------------------------.
- | yyreduce -- Do a reduction. |
- `-----------------------------*/
- case YYREDUCE:
- yylen = yyr2_[yyn];
- label = yyaction (yyn, yystack, yylen);
- yystate = yystack.stateAt (0);
- break;
-
- /*------------------------------------.
- | yyerrlab -- here on detecting error |
- `------------------------------------*/
- case YYERRLAB:
- /* If not already recovering from an error, report this error. */
- if (yyerrstatus_ == 0)
- {
- ++yynerrs_;
- if (yychar == yyempty_)
- yytoken = yyempty_;
- yyerror (]b4_locations_if([yylloc, ])[yysyntax_error (yystate, yytoken));
- }
-
- ]b4_locations_if([yyerrloc = yylloc;])[
- if (yyerrstatus_ == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- if (yychar <= Lexer.EOF)
- {
- /* Return failure if at end of input. */
- if (yychar == Lexer.EOF)
- ]b4_push_if([{label = YYABORT; break;}],[return false;])[
- }
- else
- yychar = yyempty_;
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
- label = YYERRLAB1;
- break;
-
- /*-------------------------------------------------.
- | errorlab -- error raised explicitly by YYERROR. |
- `-------------------------------------------------*/
- case YYERROR:
-
- ]b4_locations_if([yyerrloc = yystack.locationAt (yylen - 1);])[
- /* Do not reclaim the symbols of the rule which action triggered
- this YYERROR. */
- yystack.pop (yylen);
- yylen = 0;
- yystate = yystack.stateAt (0);
- label = YYERRLAB1;
- break;
-
- /*-------------------------------------------------------------.
- | yyerrlab1 -- common code for both syntax error and YYERROR. |
- `-------------------------------------------------------------*/
- case YYERRLAB1:
- yyerrstatus_ = 3; /* Each real token shifted decrements this. */
-
- for (;;)
- {
- yyn = yypact_[yystate];
- if (!yy_pact_value_is_default_ (yyn))
- {
- yyn += yyterror_;
- if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
- {
- yyn = yytable_[yyn];
- if (0 < yyn)
- break;
- }
- }
-
- /* Pop the current state because it cannot handle the
- * error token. */
- if (yystack.height == 0)
- ]b4_push_if([{label = YYABORT; break;}],[return false;])[
-
- ]b4_locations_if([yyerrloc = yystack.locationAt (0);])[
- yystack.pop ();
- yystate = yystack.stateAt (0);
- if (yydebug > 0)
- yystack.print (yyDebugStream);
- }
-
- if (label == YYABORT)
- /* Leave the switch. */
- break;
-
-]b4_locations_if([
- /* Muck with the stack to setup for yylloc. */
- yystack.push (0, null, yylloc);
- yystack.push (0, null, yyerrloc);
- yyloc = yylloc (yystack, 2);
- yystack.pop (2);])[
-
- /* Shift the error token. */
- yy_symbol_print ("Shifting", yystos_[yyn],
- yylval]b4_locations_if([, yyloc])[);
-
- yystate = yyn;
- yystack.push (yyn, yylval]b4_locations_if([, yyloc])[);
- label = YYNEWSTATE;
- break;
-
- /* Accept. */
- case YYACCEPT:
- ]b4_push_if([this.push_parse_initialized = false; return YYACCEPT;],
- [return true;])[
-
- /* Abort. */
- case YYABORT:
- ]b4_push_if([this.push_parse_initialized = false; return YYABORT;],
- [return false;])[
- }
-}
-]b4_push_if([[
- boolean push_parse_initialized = false;
-
- /**
- * (Re-)Initialize the state of the push parser.
- */
- public void push_parse_initialize()
- {
- /* Lookahead and lookahead in internal form. */
- this.yychar = yyempty_;
- this.yytoken = 0;
-
- /* State. */
- this.yyn = 0;
- this.yylen = 0;
- this.yystate = 0;
- this.yystack = new YYStack ();
- this.label = YYNEWSTATE;
-
- /* Error handling. */
- this.yynerrs_ = 0;
- ]b4_locations_if([/* The location where the error started. */
- this.yyerrloc = null;
- this.yylloc = new b4_location_type (null, null);])[
-
- /* Semantic value of the lookahead. */
- this.yylval = null;
-
- yystack.push (this.yystate, this.yylval]b4_locations_if([, this.yylloc])[);
-
- this.push_parse_initialized = true;
-
- }
-]b4_locations_if([
- /**
- * Push parse given input from an external lexer.
- *
- * @@param yylextoken current token
- * @@param yylexval current lval
- * @@param yyylexpos current position
- *
- * @@return <tt>YYACCEPT, YYABORT, YYPUSH_MORE</tt>
- */
- public int push_parse (int yylextoken, b4_yystype yylexval, b4_position_type yylexpos)
- b4_maybe_throws([b4_list2([b4_lex_throws], [b4_throws])])
- {
- return push_parse (yylextoken, yylexval, new b4_location_type (yylexpos));
- }
-])[]])
-
-b4_both_if([[
- /**
- * Parse input from the scanner that was specified at object construction
- * time. Return whether the end of the input was reached successfully.
- * This version of parse () is defined only when api.push-push=both.
- *
- * @@return <tt>true</tt> if the parsing succeeds. Note that this does not
- * imply that there were no syntax errors.
- */
- public boolean parse () ]b4_maybe_throws([b4_list2([b4_lex_throws], [b4_throws])])[
- {
- if (yylexer == null)
- throw new NullPointerException("Null Lexer");
- int status;
- do {
- int token = yylexer.yylex();
- ]b4_yystype[ lval = yylexer.getLVal();
-]b4_locations_if([dnl
- b4_location_type yyloc = new b4_location_type (yylexer.getStartPos (),
- yylexer.getEndPos ());])[
- ]b4_locations_if([status = push_parse(token,lval,yyloc);],[
- status = push_parse(token,lval);])[
- } while (status == YYPUSH_MORE);
- return (status == YYACCEPT);
- }
-]])[
-
- // Generate an error message.
- private String yysyntax_error (int yystate, int tok)
- {]b4_error_verbose_if([[
- if (yyErrorVerbose)
- {
- /* There are many possibilities here to consider:
- - If this state is a consistent state with a default action,
- then the only way this function was invoked is if the
- default action is an error action. In that case, don't
- check for expected tokens because there are none.
- - The only way there can be no lookahead present (in tok) is
- if this state is a consistent state with a default action.
- Thus, detecting the absence of a lookahead is sufficient to
- determine that there is no unexpected or expected token to
- report. In that case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this
- state is a consistent state with a default action. There
- might have been a previous inconsistent state, consistent
- state with a non-default action, or user semantic action
- that manipulated yychar. (However, yychar is currently out
- of scope during semantic actions.)
- - Of course, the expected token list depends on states to
- have correct lookahead information, and it depends on the
- parser not to perform extra reductions after fetching a
- lookahead from the scanner and before detecting a syntax
- error. Thus, state merging (from LALR or IELR) and default
- reductions corrupt the expected token list. However, the
- list is correct for canonical LR with one exception: it
- will still contain any token that will not be accepted due
- to an error action in a later state.
- */
- if (tok != yyempty_)
- {
- /* FIXME: This method of building the message is not compatible
- with internationalization. */
- StringBuffer res =
- new StringBuffer ("syntax error, unexpected ");
- res.append (yytnamerr_ (yytname_[tok]));
- int yyn = yypact_[yystate];
- if (!yy_pact_value_is_default_ (yyn))
- {
- /* Start YYX at -YYN if negative to avoid negative
- indexes in YYCHECK. In other words, skip the first
- -YYN actions for this state because they are default
- actions. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = yylast_ - yyn + 1;
- int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
- int count = 0;
- for (int x = yyxbegin; x < yyxend; ++x)
- if (yycheck_[x + yyn] == x && x != yyterror_
- && !yy_table_value_is_error_ (yytable_[x + yyn]))
- ++count;
- if (count < 5)
- {
- count = 0;
- for (int x = yyxbegin; x < yyxend; ++x)
- if (yycheck_[x + yyn] == x && x != yyterror_
- && !yy_table_value_is_error_ (yytable_[x + yyn]))
- {
- res.append (count++ == 0 ? ", expecting " : " or ");
- res.append (yytnamerr_ (yytname_[x]));
- }
- }
- }
- return res.toString ();
- }
- }
-]])[
- return "syntax error";
- }
-
- /**
- * Whether the given <code>yypact_</code> value indicates a defaulted state.
- * @@param yyvalue the value to check
- */
- private static boolean yy_pact_value_is_default_ (int yyvalue)
- {
- return yyvalue == yypact_ninf_;
- }
-
- /**
- * Whether the given <code>yytable_</code>
- * value indicates a syntax error.
- * @@param yyvalue the value to check
- */
- private static boolean yy_table_value_is_error_ (int yyvalue)
- {
- return yyvalue == yytable_ninf_;
- }
-
- private static final ]b4_int_type_for([b4_pact])[ yypact_ninf_ = ]b4_pact_ninf[;
- private static final ]b4_int_type_for([b4_table])[ yytable_ninf_ = ]b4_table_ninf[;
-
- ]b4_parser_tables_define[
- ]b4_integral_parser_table_define([token_number], [b4_toknum],
- [[YYTOKEN_NUMBER[YYLEX-NUM] -- Internal symbol number corresponding
- to YYLEX-NUM.]])[
-
- /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at \a yyntokens_, nonterminals. */
- ]b4_typed_parser_table_define([String], [tname], [b4_tname])[
-
- ]b4_integral_parser_table_define([rline], [b4_rline],
- [[YYRLINE[YYN] -- Source line where rule number YYN was defined.]])[
-
-
- // Report on the debug stream that the rule yyrule is going to be reduced.
- private void yy_reduce_print (int yyrule, YYStack yystack)
- {
- if (yydebug == 0)
- return;
-
- int yylno = yyrline_[yyrule];
- int yynrhs = yyr2_[yyrule];
- /* Print the symbols being reduced, and their result. */
- yycdebug ("Reducing stack by rule " + (yyrule - 1)
- + " (line " + yylno + "), ");
-
- /* The symbols being reduced. */
- for (int yyi = 0; yyi < yynrhs; yyi++)
- yy_symbol_print (" $" + (yyi + 1) + " =",
- yystos_[yystack.stateAt(yynrhs - (yyi + 1))],
- ]b4_rhs_value(yynrhs, yyi + 1)b4_locations_if([,
- b4_rhs_location(yynrhs, yyi + 1)])[);
- }
-
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
- ]b4_integral_parser_table_define([translate_table], [b4_translate])[
-
- private static final ]b4_int_type_for([b4_translate])[ yytranslate_ (int t)
- {
- if (t >= 0 && t <= yyuser_token_number_max_)
- return yytranslate_table_[t];
- else
- return yyundef_token_;
- }
-
- private static final int yylast_ = ]b4_last[;
- private static final int yynnts_ = ]b4_nterms_number[;
- private static final int yyempty_ = -2;
- private static final int yyfinal_ = ]b4_final_state_number[;
- private static final int yyterror_ = 1;
- private static final int yyerrcode_ = 256;
- private static final int yyntokens_ = ]b4_tokens_number[;
-
- private static final int yyuser_token_number_max_ = ]b4_user_token_number_max[;
- private static final int yyundef_token_ = ]b4_undef_token_number[;
-
-]/* User implementation code. */
-b4_percent_code_get[]dnl
-
-}
-
-b4_epilogue[]dnl
-b4_output_end()
diff --git a/gnuwin32/bin/data/local.mk b/gnuwin32/bin/data/local.mk
deleted file mode 100644
index b8290522..00000000
--- a/gnuwin32/bin/data/local.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-## Copyright (C) 2002, 2005-2013 Free Software Foundation, Inc.
-
-## This program is free software: you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation, either version 3 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-dist_pkgdata_DATA = \
- data/README \
- data/bison.m4 \
- data/c++-skel.m4 \
- data/c++.m4 \
- data/c-like.m4 \
- data/c-skel.m4 \
- data/c.m4 \
- data/glr.c \
- data/glr.cc \
- data/java-skel.m4 \
- data/java.m4 \
- data/lalr1.cc \
- data/lalr1.java \
- data/location.cc \
- data/stack.hh \
- data/variant.hh \
- data/yacc.c
-
-m4sugardir = $(pkgdatadir)/m4sugar
-dist_m4sugar_DATA = \
- data/m4sugar/foreach.m4 \
- data/m4sugar/m4sugar.m4
-
-xsltdir = $(pkgdatadir)/xslt
-dist_xslt_DATA = \
- data/xslt/bison.xsl \
- data/xslt/xml2dot.xsl \
- data/xslt/xml2text.xsl \
- data/xslt/xml2xhtml.xsl
diff --git a/gnuwin32/bin/data/location.cc b/gnuwin32/bin/data/location.cc
deleted file mode 100644
index 9a60f250..00000000
--- a/gnuwin32/bin/data/location.cc
+++ /dev/null
@@ -1,335 +0,0 @@
-# C++ skeleton for Bison
-
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-m4_pushdef([b4_copyright_years],
- [2002-2013])
-
-# b4_position_define
-# ------------------
-# Define class position.
-m4_define([b4_position_define],
-[[ /// Abstract a position.
- class position
- {
- public:]m4_ifdef([b4_location_constructors], [[
- /// Construct a position.
- explicit position (]b4_percent_define_get([[filename_type]])[* f = YY_NULL,
- unsigned int l = ]b4_location_initial_line[u,
- unsigned int c = ]b4_location_initial_column[u)
- : filename (f)
- , line (l)
- , column (c)
- {
- }
-
-]])[
- /// Initialization.
- void initialize (]b4_percent_define_get([[filename_type]])[* fn = YY_NULL,
- unsigned int l = ]b4_location_initial_line[u,
- unsigned int c = ]b4_location_initial_column[u)
- {
- filename = fn;
- line = l;
- column = c;
- }
-
- /** \name Line and Column related manipulators
- ** \{ */
- /// (line related) Advance to the COUNT next lines.
- void lines (int count = 1)
- {
- if (count)
- {
- column = ]b4_location_initial_column[u;
- line = add_ (line, count, ]b4_location_initial_line[);
- }
- }
-
- /// (column related) Advance to the COUNT next columns.
- void columns (int count = 1)
- {
- column = add_ (column, count, ]b4_location_initial_column[);
- }
- /** \} */
-
- /// File name to which this position refers.
- ]b4_percent_define_get([[filename_type]])[* filename;
- /// Current line number.
- unsigned int line;
- /// Current column number.
- unsigned int column;
-
- private:
- /// Compute max(min, lhs+rhs) (provided min <= lhs).
- static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min)
- {
- return (0 < rhs || -static_cast<unsigned int>(rhs) < lhs
- ? rhs + lhs
- : min);
- }
- };
-
- /// Add and assign a position.
- inline position&
- operator+= (position& res, int width)
- {
- res.columns (width);
- return res;
- }
-
- /// Add two position objects.
- inline position
- operator+ (position res, int width)
- {
- return res += width;
- }
-
- /// Add and assign a position.
- inline position&
- operator-= (position& res, int width)
- {
- return res += -width;
- }
-
- /// Add two position objects.
- inline position
- operator- (position res, int width)
- {
- return res -= width;
- }
-]b4_percent_define_flag_if([[define_location_comparison]], [[
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-]])[
- /** \brief Intercept output stream redirection.
- ** \param ostr the destination output stream
- ** \param pos a reference to the position to redirect
- */
- template <typename YYChar>
- inline std::basic_ostream<YYChar>&
- operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
- {
- if (pos.filename)
- ostr << *pos.filename << ':';
- return ostr << pos.line << '.' << pos.column;
- }
-]])
-
-
-# b4_location_define
-# ------------------
-m4_define([b4_location_define],
-[[ /// Abstract a location.
- class location
- {
- public:
-]m4_ifdef([b4_location_constructors], [
- /// Construct a location from \a b to \a e.
- location (const position& b, const position& e)
- : begin (b)
- , end (e)
- {
- }
-
- /// Construct a 0-width location in \a p.
- explicit location (const position& p = position ())
- : begin (p)
- , end (p)
- {
- }
-
- /// Construct a 0-width location in \a f, \a l, \a c.
- explicit location (]b4_percent_define_get([[filename_type]])[* f,
- unsigned int l = ]b4_location_initial_line[u,
- unsigned int c = ]b4_location_initial_column[u)
- : begin (f, l, c)
- , end (f, l, c)
- {
- }
-
-])[
- /// Initialization.
- void initialize (]b4_percent_define_get([[filename_type]])[* f = YY_NULL,
- unsigned int l = ]b4_location_initial_line[u,
- unsigned int c = ]b4_location_initial_column[u)
- {
- begin.initialize (f, l, c);
- end = begin;
- }
-
- /** \name Line and Column related manipulators
- ** \{ */
- public:
- /// Reset initial location to final location.
- void step ()
- {
- begin = end;
- }
-
- /// Extend the current location to the COUNT next columns.
- void columns (int count = 1)
- {
- end += count;
- }
-
- /// Extend the current location to the COUNT next lines.
- void lines (int count = 1)
- {
- end.lines (count);
- }
- /** \} */
-
-
- public:
- /// Beginning of the located region.
- position begin;
- /// End of the located region.
- position end;
- };
-
- /// Join two location objects to create a location.
- inline location operator+ (location res, const location& end)
- {
- res.end = end.end;
- return res;
- }
-
- /// Change end position in place.
- inline location& operator+= (location& res, int width)
- {
- res.columns (width);
- return res;
- }
-
- /// Change end position.
- inline location operator+ (location res, int width)
- {
- return res += width;
- }
-
- /// Change end position in place.
- inline location& operator-= (location& res, int width)
- {
- return res += -width;
- }
-
- /// Change end position.
- inline location operator- (const location& begin, int width)
- {
- return begin + -width;
- }
-]b4_percent_define_flag_if([[define_location_comparison]], [[
- /// Compare two location objects.
- inline bool
- operator== (const location& loc1, const location& loc2)
- {
- return loc1.begin == loc2.begin && loc1.end == loc2.end;
- }
-
- /// Compare two location objects.
- inline bool
- operator!= (const location& loc1, const location& loc2)
- {
- return !(loc1 == loc2);
- }
-]])[
- /** \brief Intercept output stream redirection.
- ** \param ostr the destination output stream
- ** \param loc a reference to the location to redirect
- **
- ** Avoid duplicate information.
- */
- template <typename YYChar>
- inline std::basic_ostream<YYChar>&
- operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
- {
- unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
- ostr << loc.begin// << "(" << loc.end << ") "
-;
- if (loc.end.filename
- && (!loc.begin.filename
- || *loc.begin.filename != *loc.end.filename))
- ostr << '-' << loc.end.filename << ':' << loc.end.line << '.' << end_col;
- else if (loc.begin.line < loc.end.line)
- ostr << '-' << loc.end.line << '.' << end_col;
- else if (loc.begin.column < end_col)
- ostr << '-' << end_col;
- return ostr;
- }
-]])
-
-
-b4_defines_if([
-b4_output_begin([b4_dir_prefix[]position.hh])
-b4_copyright([Positions for Bison parsers in C++])[
-
-/**
- ** \file ]b4_dir_prefix[position.hh
- ** Define the ]b4_namespace_ref[::position class.
- */
-
-]b4_cpp_guard_open([b4_dir_prefix[]position.hh])[
-
-# include <algorithm> // std::max
-# include <iostream>
-# include <string>
-
-]b4_null_define[
-
-]b4_namespace_open[
-]b4_position_define[
-]b4_namespace_close[
-]b4_cpp_guard_close([b4_dir_prefix[]position.hh])
-b4_output_end()
-
-
-b4_output_begin([b4_dir_prefix[]location.hh])
-b4_copyright([Locations for Bison parsers in C++])[
-
-/**
- ** \file ]b4_dir_prefix[location.hh
- ** Define the ]b4_namespace_ref[::location class.
- */
-
-]b4_cpp_guard_open([b4_dir_prefix[]location.hh])[
-
-# include "position.hh"
-
-]b4_namespace_open[
-]b4_location_define[
-]b4_namespace_close[
-]b4_cpp_guard_close([b4_dir_prefix[]location.hh])
-b4_output_end()
-])
-
-
-m4_popdef([b4_copyright_years])
diff --git a/gnuwin32/bin/data/m4sugar/foreach.m4 b/gnuwin32/bin/data/m4sugar/foreach.m4
deleted file mode 100644
index f6a63944..00000000
--- a/gnuwin32/bin/data/m4sugar/foreach.m4
+++ /dev/null
@@ -1,362 +0,0 @@
-# -*- Autoconf -*-
-# This file is part of Autoconf.
-# foreach-based replacements for recursive functions.
-# Speeds up GNU M4 1.4.x by avoiding quadratic $@ recursion, but penalizes
-# GNU M4 1.6 by requiring more memory and macro expansions.
-#
-# Copyright (C) 2008-2013 Free Software Foundation, Inc.
-
-# This file is part of Autoconf. This program is free
-# software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the
-# Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# Under Section 7 of GPL version 3, you are granted additional
-# permissions described in the Autoconf Configure Script Exception,
-# version 3.0, as published by the Free Software Foundation.
-#
-# You should have received a copy of the GNU General Public License
-# and a copy of the Autoconf Configure Script Exception along with
-# this program; see the files COPYINGv3 and COPYING.EXCEPTION
-# respectively. If not, see <http://www.gnu.org/licenses/>.
-
-# Written by Eric Blake.
-
-# In M4 1.4.x, every byte of $@ is rescanned. This means that an
-# algorithm on n arguments that recurses with one less argument each
-# iteration will scan n * (n + 1) / 2 arguments, for O(n^2) time. In
-# M4 1.6, this was fixed so that $@ is only scanned once, then
-# back-references are made to information stored about the scan.
-# Thus, n iterations need only scan n arguments, for O(n) time.
-# Additionally, in M4 1.4.x, recursive algorithms did not clean up
-# memory very well, requiring O(n^2) memory rather than O(n) for n
-# iterations.
-#
-# This file is designed to overcome the quadratic nature of $@
-# recursion by writing a variant of m4_foreach that uses m4_for rather
-# than $@ recursion to operate on the list. This involves more macro
-# expansions, but avoids the need to rescan a quadratic number of
-# arguments, making these replacements very attractive for M4 1.4.x.
-# On the other hand, in any version of M4, expanding additional macros
-# costs additional time; therefore, in M4 1.6, where $@ recursion uses
-# fewer macros, these replacements actually pessimize performance.
-# Additionally, the use of $10 to mean the tenth argument violates
-# POSIX; although all versions of m4 1.4.x support this meaning, a
-# future m4 version may switch to take it as the first argument
-# concatenated with a literal 0, so the implementations in this file
-# are not future-proof. Thus, this file is conditionally included as
-# part of m4_init(), only when it is detected that M4 probably has
-# quadratic behavior (ie. it lacks the macro __m4_version__).
-#
-# Please keep this file in sync with m4sugar.m4.
-
-# _m4_foreach(PRE, POST, IGNORED, ARG...)
-# ---------------------------------------
-# Form the common basis of the m4_foreach and m4_map macros. For each
-# ARG, expand PRE[ARG]POST[]. The IGNORED argument makes recursion
-# easier, and must be supplied rather than implicit.
-#
-# This version minimizes the number of times that $@ is evaluated by
-# using m4_for to generate a boilerplate into _m4_f then passing $@ to
-# that temporary macro. Thus, the recursion is done in m4_for without
-# reparsing any user input, and is not quadratic. For an idea of how
-# this works, note that m4_foreach(i,[1,2],[i]) calls
-# _m4_foreach([m4_define([i],],[)i],[],[1],[2])
-# which defines _m4_f:
-# $1[$4]$2[]$1[$5]$2[]_m4_popdef([_m4_f])
-# then calls _m4_f([m4_define([i],],[)i],[],[1],[2]) for a net result:
-# m4_define([i],[1])i[]m4_define([i],[2])i[]_m4_popdef([_m4_f]).
-m4_define([_m4_foreach],
-[m4_if([$#], [3], [],
- [m4_pushdef([_m4_f], _m4_for([4], [$#], [1],
- [$0_([1], [2],], [)])[_m4_popdef([_m4_f])])_m4_f($@)])])
-
-m4_define([_m4_foreach_],
-[[$$1[$$3]$$2[]]])
-
-# m4_case(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT)
-# -----------------------------------------------------------
-# Find the first VAL that SWITCH matches, and expand the corresponding
-# IF-VAL. If there are no matches, expand DEFAULT.
-#
-# Use m4_for to create a temporary macro in terms of a boilerplate
-# m4_if with final cleanup. If $# is even, we have DEFAULT; if it is
-# odd, then rounding the last $# up in the temporary macro is
-# harmless. For example, both m4_case(1,2,3,4,5) and
-# m4_case(1,2,3,4,5,6) result in the intermediate _m4_case being
-# m4_if([$1],[$2],[$3],[$1],[$4],[$5],_m4_popdef([_m4_case])[$6])
-m4_define([m4_case],
-[m4_if(m4_eval([$# <= 2]), [1], [$2],
-[m4_pushdef([_$0], [m4_if(]_m4_for([2], m4_eval([($# - 1) / 2 * 2]), [2],
- [_$0_(], [)])[_m4_popdef(
- [_$0])]m4_dquote($m4_eval([($# + 1) & ~1]))[)])_$0($@)])])
-
-m4_define([_m4_case_],
-[$0_([1], [$1], m4_incr([$1]))])
-
-m4_define([_m4_case__],
-[[[$$1],[$$2],[$$3],]])
-
-# m4_bmatch(SWITCH, RE1, VAL1, RE2, VAL2, ..., DEFAULT)
-# -----------------------------------------------------
-# m4 equivalent of
-#
-# if (SWITCH =~ RE1)
-# VAL1;
-# elif (SWITCH =~ RE2)
-# VAL2;
-# elif ...
-# ...
-# else
-# DEFAULT
-#
-# We build the temporary macro _m4_b:
-# m4_define([_m4_b], _m4_defn([_m4_bmatch]))_m4_b([$1], [$2], [$3])...
-# _m4_b([$1], [$m-1], [$m])_m4_b([], [], [$m+1]_m4_popdef([_m4_b]))
-# then invoke m4_unquote(_m4_b($@)), for concatenation with later text.
-m4_define([m4_bmatch],
-[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])],
- [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])],
- [$#], 2, [$2],
- [m4_pushdef([_m4_b], [m4_define([_m4_b],
- _m4_defn([_$0]))]_m4_for([3], m4_eval([($# + 1) / 2 * 2 - 1]),
- [2], [_$0_(], [)])[_m4_b([], [],]m4_dquote([$]m4_eval(
- [($# + 1) / 2 * 2]))[_m4_popdef([_m4_b]))])m4_unquote(_m4_b($@))])])
-
-m4_define([_m4_bmatch],
-[m4_if(m4_bregexp([$1], [$2]), [-1], [], [[$3]m4_define([$0])])])
-
-m4_define([_m4_bmatch_],
-[$0_([1], m4_decr([$1]), [$1])])
-
-m4_define([_m4_bmatch__],
-[[_m4_b([$$1], [$$2], [$$3])]])
-
-
-# m4_cond(TEST1, VAL1, IF-VAL1, TEST2, VAL2, IF-VAL2, ..., [DEFAULT])
-# -------------------------------------------------------------------
-# Similar to m4_if, except that each TEST is expanded when encountered.
-# If the expansion of TESTn matches the string VALn, the result is IF-VALn.
-# The result is DEFAULT if no tests passed. This macro allows
-# short-circuiting of expensive tests, where it pays to arrange quick
-# filter tests to run first.
-#
-# m4_cond already guarantees either 3*n or 3*n + 1 arguments, 1 <= n.
-# We only have to speed up _m4_cond, by building the temporary _m4_c:
-# m4_define([_m4_c], _m4_defn([m4_unquote]))_m4_c([m4_if(($1), [($2)],
-# [[$3]m4_define([_m4_c])])])_m4_c([m4_if(($4), [($5)],
-# [[$6]m4_define([_m4_c])])])..._m4_c([m4_if(($m-2), [($m-1)],
-# [[$m]m4_define([_m4_c])])])_m4_c([[$m+1]]_m4_popdef([_m4_c]))
-# We invoke m4_unquote(_m4_c($@)), for concatenation with later text.
-m4_define([_m4_cond],
-[m4_pushdef([_m4_c], [m4_define([_m4_c],
- _m4_defn([m4_unquote]))]_m4_for([2], m4_eval([$# / 3 * 3 - 1]), [3],
- [$0_(], [)])[_m4_c(]m4_dquote(m4_dquote(
- [$]m4_eval([$# / 3 * 3 + 1])))[_m4_popdef([_m4_c]))])m4_unquote(_m4_c($@))])
-
-m4_define([_m4_cond_],
-[$0_(m4_decr([$1]), [$1], m4_incr([$1]))])
-
-m4_define([_m4_cond__],
-[[_m4_c([m4_if(($$1), [($$2)], [[$$3]m4_define([_m4_c])])])]])
-
-# m4_bpatsubsts(STRING, RE1, SUBST1, RE2, SUBST2, ...)
-# ----------------------------------------------------
-# m4 equivalent of
-#
-# $_ = STRING;
-# s/RE1/SUBST1/g;
-# s/RE2/SUBST2/g;
-# ...
-#
-# m4_bpatsubsts already validated an odd number of arguments; we only
-# need to speed up _m4_bpatsubsts. To avoid nesting, we build the
-# temporary _m4_p:
-# m4_define([_m4_p], [$1])m4_define([_m4_p],
-# m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$2], [$3]))m4_define([_m4_p],
-# m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$4], [$5]))m4_define([_m4_p],...
-# m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$m-1], [$m]))m4_unquote(
-# _m4_defn([_m4_p])_m4_popdef([_m4_p]))
-m4_define([_m4_bpatsubsts],
-[m4_pushdef([_m4_p], [m4_define([_m4_p],
- ]m4_dquote([$]1)[)]_m4_for([3], [$#], [2], [$0_(],
- [)])[m4_unquote(_m4_defn([_m4_p])_m4_popdef([_m4_p]))])_m4_p($@)])
-
-m4_define([_m4_bpatsubsts_],
-[$0_(m4_decr([$1]), [$1])])
-
-m4_define([_m4_bpatsubsts__],
-[[m4_define([_m4_p],
-m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$$1], [$$2]))]])
-
-# m4_shiftn(N, ...)
-# -----------------
-# Returns ... shifted N times. Useful for recursive "varargs" constructs.
-#
-# m4_shiftn already validated arguments; we only need to speed up
-# _m4_shiftn. If N is 3, then we build the temporary _m4_s, defined as
-# ,[$5],[$6],...,[$m]_m4_popdef([_m4_s])
-# before calling m4_shift(_m4_s($@)).
-m4_define([_m4_shiftn],
-[m4_if(m4_incr([$1]), [$#], [], [m4_pushdef([_m4_s],
- _m4_for(m4_eval([$1 + 2]), [$#], [1],
- [[,]m4_dquote($], [)])[_m4_popdef([_m4_s])])m4_shift(_m4_s($@))])])
-
-# m4_do(STRING, ...)
-# ------------------
-# This macro invokes all its arguments (in sequence, of course). It is
-# useful for making your macros more structured and readable by dropping
-# unnecessary dnl's and have the macros indented properly.
-#
-# Here, we use the temporary macro _m4_do, defined as
-# $1[]$2[]...[]$n[]_m4_popdef([_m4_do])
-m4_define([m4_do],
-[m4_if([$#], [0], [],
- [m4_pushdef([_$0], _m4_for([1], [$#], [1],
- [$], [[[]]])[_m4_popdef([_$0])])_$0($@)])])
-
-# m4_dquote_elt(ARGS)
-# -------------------
-# Return ARGS as an unquoted list of double-quoted arguments.
-#
-# _m4_foreach to the rescue.
-m4_define([m4_dquote_elt],
-[m4_if([$#], [0], [], [[[$1]]_m4_foreach([,m4_dquote(], [)], $@)])])
-
-# m4_reverse(ARGS)
-# ----------------
-# Output ARGS in reverse order.
-#
-# Invoke _m4_r($@) with the temporary _m4_r built as
-# [$m], [$m-1], ..., [$2], [$1]_m4_popdef([_m4_r])
-m4_define([m4_reverse],
-[m4_if([$#], [0], [], [$#], [1], [[$1]],
-[m4_pushdef([_m4_r], [[$$#]]_m4_for(m4_decr([$#]), [1], [-1],
- [[, ]m4_dquote($], [)])[_m4_popdef([_m4_r])])_m4_r($@)])])
-
-
-# m4_map_args_pair(EXPRESSION, [END-EXPR = EXPRESSION], ARG...)
-# -------------------------------------------------------------
-# Perform a pairwise grouping of consecutive ARGs, by expanding
-# EXPRESSION([ARG1], [ARG2]). If there are an odd number of ARGs, the
-# final argument is expanded with END-EXPR([ARGn]).
-#
-# Build the temporary macro _m4_map_args_pair, with the $2([$m+1])
-# only output if $# is odd:
-# $1([$3], [$4])[]$1([$5], [$6])[]...$1([$m-1],
-# [$m])[]m4_default([$2], [$1])([$m+1])[]_m4_popdef([_m4_map_args_pair])
-m4_define([m4_map_args_pair],
-[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])],
- [$#], [1], [m4_fatal([$0: too few arguments: $#: $1])],
- [$#], [2], [],
- [$#], [3], [m4_default([$2], [$1])([$3])[]],
- [m4_pushdef([_$0], _m4_for([3],
- m4_eval([$# / 2 * 2 - 1]), [2], [_$0_(], [)])_$0_end(
- [1], [2], [$#])[_m4_popdef([_$0])])_$0($@)])])
-
-m4_define([_m4_map_args_pair_],
-[$0_([1], [$1], m4_incr([$1]))])
-
-m4_define([_m4_map_args_pair__],
-[[$$1([$$2], [$$3])[]]])
-
-m4_define([_m4_map_args_pair_end],
-[m4_if(m4_eval([$3 & 1]), [1], [[m4_default([$$2], [$$1])([$$3])[]]])])
-
-# m4_join(SEP, ARG1, ARG2...)
-# ---------------------------
-# Produce ARG1SEPARG2...SEPARGn. Avoid back-to-back SEP when a given ARG
-# is the empty string. No expansion is performed on SEP or ARGs.
-#
-# Use a self-modifying separator, since we don't know how many
-# arguments might be skipped before a separator is first printed, but
-# be careful if the separator contains $. _m4_foreach to the rescue.
-m4_define([m4_join],
-[m4_pushdef([_m4_sep], [m4_define([_m4_sep], _m4_defn([m4_echo]))])]dnl
-[_m4_foreach([_$0([$1],], [)], $@)_m4_popdef([_m4_sep])])
-
-m4_define([_m4_join],
-[m4_if([$2], [], [], [_m4_sep([$1])[$2]])])
-
-# m4_joinall(SEP, ARG1, ARG2...)
-# ------------------------------
-# Produce ARG1SEPARG2...SEPARGn. An empty ARG results in back-to-back SEP.
-# No expansion is performed on SEP or ARGs.
-#
-# A bit easier than m4_join. _m4_foreach to the rescue.
-m4_define([m4_joinall],
-[[$2]m4_if(m4_eval([$# <= 2]), [1], [],
- [_m4_foreach([$1], [], m4_shift($@))])])
-
-# m4_list_cmp(A, B)
-# -----------------
-# Compare the two lists of integer expressions A and B.
-#
-# m4_list_cmp takes care of any side effects; we only override
-# _m4_list_cmp_raw, where we can safely expand lists multiple times.
-# First, insert padding so that both lists are the same length; the
-# trailing +0 is necessary to handle a missing list. Next, create a
-# temporary macro to perform pairwise comparisons until an inequality
-# is found. For example, m4_list_cmp([1], [1,2]) creates _m4_cmp as
-# m4_if(m4_eval([($1) != ($3)]), [1], [m4_cmp([$1], [$3])],
-# m4_eval([($2) != ($4)]), [1], [m4_cmp([$2], [$4])],
-# [0]_m4_popdef([_m4_cmp]))
-# then calls _m4_cmp([1+0], [0*2], [1], [2+0])
-m4_define([_m4_list_cmp_raw],
-[m4_if([$1], [$2], 0,
- [_m4_list_cmp($1+0_m4_list_pad(m4_count($1), m4_count($2)),
- $2+0_m4_list_pad(m4_count($2), m4_count($1)))])])
-
-m4_define([_m4_list_pad],
-[m4_if(m4_eval($1 < $2), [1],
- [_m4_for(m4_incr([$1]), [$2], [1], [,0*])])])
-
-m4_define([_m4_list_cmp],
-[m4_pushdef([_m4_cmp], [m4_if(]_m4_for(
- [1], m4_eval([$# >> 1]), [1], [$0_(], [,]m4_eval([$# >> 1])[)])[
- [0]_m4_popdef([_m4_cmp]))])_m4_cmp($@)])
-
-m4_define([_m4_list_cmp_],
-[$0_([$1], m4_eval([$1 + $2]))])
-
-m4_define([_m4_list_cmp__],
-[[m4_eval([($$1) != ($$2)]), [1], [m4_cmp([$$1], [$$2])],
-]])
-
-# m4_max(EXPR, ...)
-# m4_min(EXPR, ...)
-# -----------------
-# Return the decimal value of the maximum (or minimum) in a series of
-# integer expressions.
-#
-# _m4_foreach to the rescue; we only need to replace _m4_minmax. Here,
-# we need a temporary macro to track the best answer so far, so that
-# the foreach expression is tractable.
-m4_define([_m4_minmax],
-[m4_pushdef([_m4_best], m4_eval([$2]))_m4_foreach(
- [m4_define([_m4_best], $1(_m4_best,], [))], m4_shift($@))]dnl
-[_m4_best[]_m4_popdef([_m4_best])])
-
-# m4_set_add_all(SET, VALUE...)
-# -----------------------------
-# Add each VALUE into SET. This is O(n) in the number of VALUEs, and
-# can be faster than calling m4_set_add for each VALUE.
-#
-# _m4_foreach to the rescue. If no deletions have occurred, then
-# avoid the speed penalty of m4_set_add.
-m4_define([m4_set_add_all],
-[m4_if([$#], [0], [], [$#], [1], [],
- [m4_define([_m4_set_size($1)], m4_eval(m4_set_size([$1])
- + m4_len(_m4_foreach(m4_ifdef([_m4_set_cleanup($1)],
- [[m4_set_add]], [[_$0]])[([$1],], [)], $@))))])])
-
-m4_define([_m4_set_add_all],
-[m4_ifdef([_m4_set([$1],$2)], [],
- [m4_define([_m4_set([$1],$2)],
- [1])m4_pushdef([_m4_set([$1])], [$2])-])])
diff --git a/gnuwin32/bin/data/m4sugar/m4sugar.m4 b/gnuwin32/bin/data/m4sugar/m4sugar.m4
deleted file mode 100644
index b732abc7..00000000
--- a/gnuwin32/bin/data/m4sugar/m4sugar.m4
+++ /dev/null
@@ -1,3307 +0,0 @@
-divert(-1)# -*- Autoconf -*-
-# This file is part of Autoconf.
-# Base M4 layer.
-# Requires GNU M4.
-#
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-
-# This file is part of Autoconf. This program is free
-# software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the
-# Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# Under Section 7 of GPL version 3, you are granted additional
-# permissions described in the Autoconf Configure Script Exception,
-# version 3.0, as published by the Free Software Foundation.
-#
-# You should have received a copy of the GNU General Public License
-# and a copy of the Autoconf Configure Script Exception along with
-# this program; see the files COPYINGv3 and COPYING.EXCEPTION
-# respectively. If not, see <http://www.gnu.org/licenses/>.
-
-# Written by Akim Demaille.
-
-# Set the quotes, whatever the current quoting system.
-changequote()
-changequote([, ])
-
-# Some old m4's don't support m4exit. But they provide
-# equivalent functionality by core dumping because of the
-# long macros we define.
-ifdef([__gnu__], ,
-[errprint(M4sugar requires GNU M4. Install it before installing M4sugar or
-set the M4 environment variable to its absolute file name.)
-m4exit(2)])
-
-
-## ------------------------------- ##
-## 1. Simulate --prefix-builtins. ##
-## ------------------------------- ##
-
-# m4_define
-# m4_defn
-# m4_undefine
-define([m4_define], defn([define]))
-define([m4_defn], defn([defn]))
-define([m4_undefine], defn([undefine]))
-
-m4_undefine([define])
-m4_undefine([defn])
-m4_undefine([undefine])
-
-
-# m4_copy(SRC, DST)
-# -----------------
-# Define DST as the definition of SRC.
-# What's the difference between:
-# 1. m4_copy([from], [to])
-# 2. m4_define([to], [from($@)])
-# Well, obviously 1 is more expensive in space. Maybe 2 is more expensive
-# in time, but because of the space cost of 1, it's not that obvious.
-# Nevertheless, one huge difference is the handling of `$0'. If `from'
-# uses `$0', then with 1, `to''s `$0' is `to', while it is `from' in 2.
-# The user would certainly prefer to see `to'.
-#
-# This definition is in effect during m4sugar initialization, when
-# there are no pushdef stacks; later on, we redefine it to something
-# more powerful for all other clients to use.
-m4_define([m4_copy],
-[m4_define([$2], m4_defn([$1]))])
-
-
-# m4_rename(SRC, DST)
-# -------------------
-# Rename the macro SRC to DST.
-m4_define([m4_rename],
-[m4_copy([$1], [$2])m4_undefine([$1])])
-
-
-# m4_rename_m4(MACRO-NAME)
-# ------------------------
-# Rename MACRO-NAME to m4_MACRO-NAME.
-m4_define([m4_rename_m4],
-[m4_rename([$1], [m4_$1])])
-
-
-# m4_copy_unm4(m4_MACRO-NAME)
-# ---------------------------
-# Copy m4_MACRO-NAME to MACRO-NAME.
-m4_define([m4_copy_unm4],
-[m4_copy([$1], m4_bpatsubst([$1], [^m4_\(.*\)], [[\1]]))])
-
-
-# Some m4 internals have names colliding with tokens we might use.
-# Rename them a` la `m4 --prefix-builtins'. Conditionals first, since
-# some subsequent renames are conditional.
-m4_rename_m4([ifdef])
-m4_rename([ifelse], [m4_if])
-
-m4_rename_m4([builtin])
-m4_rename_m4([changecom])
-m4_rename_m4([changequote])
-m4_ifdef([changeword],dnl conditionally available in 1.4.x
-[m4_undefine([changeword])])
-m4_rename_m4([debugfile])
-m4_rename_m4([debugmode])
-m4_rename_m4([decr])
-m4_rename_m4([divnum])
-m4_rename_m4([dumpdef])
-m4_rename_m4([errprint])
-m4_rename_m4([esyscmd])
-m4_rename_m4([eval])
-m4_rename_m4([format])
-m4_undefine([include])
-m4_rename_m4([incr])
-m4_rename_m4([index])
-m4_rename_m4([indir])
-m4_rename_m4([len])
-m4_rename([m4exit], [m4_exit])
-m4_undefine([m4wrap])
-m4_ifdef([mkstemp],dnl added in M4 1.4.8
-[m4_rename_m4([mkstemp])
-m4_copy([m4_mkstemp], [m4_maketemp])
-m4_undefine([maketemp])],
-[m4_rename_m4([maketemp])
-m4_copy([m4_maketemp], [m4_mkstemp])])
-m4_rename([patsubst], [m4_bpatsubst])
-m4_rename_m4([popdef])
-m4_rename_m4([pushdef])
-m4_rename([regexp], [m4_bregexp])
-m4_rename_m4([shift])
-m4_undefine([sinclude])
-m4_rename_m4([substr])
-m4_ifdef([symbols],dnl present only in alpha-quality 1.4o
-[m4_rename_m4([symbols])])
-m4_rename_m4([syscmd])
-m4_rename_m4([sysval])
-m4_rename_m4([traceoff])
-m4_rename_m4([traceon])
-m4_rename_m4([translit])
-
-# _m4_defn(ARG)
-# -------------
-# _m4_defn is for internal use only - it bypasses the wrapper, so it
-# must only be used on one argument at a time, and only on macros
-# known to be defined. Make sure this still works if the user renames
-# m4_defn but not _m4_defn.
-m4_copy([m4_defn], [_m4_defn])
-
-# _m4_divert_raw(NUM)
-# -------------------
-# _m4_divert_raw is for internal use only. Use this instead of
-# m4_builtin([divert], NUM), so that tracing diversion flow is easier.
-m4_rename([divert], [_m4_divert_raw])
-
-# _m4_popdef(ARG...)
-# ------------------
-# _m4_popdef is for internal use only - it bypasses the wrapper, so it
-# must only be used on macros known to be defined. Make sure this
-# still works if the user renames m4_popdef but not _m4_popdef.
-m4_copy([m4_popdef], [_m4_popdef])
-
-# _m4_undefine(ARG...)
-# --------------------
-# _m4_undefine is for internal use only - it bypasses the wrapper, so
-# it must only be used on macros known to be defined. Make sure this
-# still works if the user renames m4_undefine but not _m4_undefine.
-m4_copy([m4_undefine], [_m4_undefine])
-
-# _m4_undivert(NUM...)
-# --------------------
-# _m4_undivert is for internal use only, and should always be given
-# arguments. Use this instead of m4_builtin([undivert], NUM...), so
-# that tracing diversion flow is easier.
-m4_rename([undivert], [_m4_undivert])
-
-
-## ------------------- ##
-## 2. Error messages. ##
-## ------------------- ##
-
-
-# m4_location
-# -----------
-# Output the current file, colon, and the current line number.
-m4_define([m4_location],
-[__file__:__line__])
-
-
-# m4_errprintn(MSG)
-# -----------------
-# Same as `errprint', but with the missing end of line.
-m4_define([m4_errprintn],
-[m4_errprint([$1
-])])
-
-
-# m4_warning(MSG)
-# ---------------
-# Warn the user.
-m4_define([m4_warning],
-[m4_errprintn(m4_location[: warning: $1])])
-
-
-# m4_fatal(MSG, [EXIT-STATUS])
-# ----------------------------
-# Fatal the user. :)
-m4_define([m4_fatal],
-[m4_errprintn(m4_location[: error: $1]
-m4_expansion_stack)m4_exit(m4_if([$2],, 1, [$2]))])
-
-
-# m4_assert(EXPRESSION, [EXIT-STATUS = 1])
-# ----------------------------------------
-# This macro ensures that EXPRESSION evaluates to true, and exits if
-# EXPRESSION evaluates to false.
-m4_define([m4_assert],
-[m4_if(m4_eval([$1]), 0,
- [m4_fatal([assert failed: $1], [$2])])])
-
-
-
-## ------------- ##
-## 3. Warnings. ##
-## ------------- ##
-
-
-# _m4_warn(CATEGORY, MESSAGE, [STACK-TRACE])
-# ------------------------------------------
-# Report a MESSAGE to the user if the CATEGORY of warnings is enabled.
-# This is for traces only.
-# If present, STACK-TRACE is a \n-separated list of "LOCATION: MESSAGE",
-# where the last line (and no other) ends with "the top level".
-#
-# Within m4, the macro is a no-op. This macro really matters
-# when autom4te post-processes the trace output.
-m4_define([_m4_warn], [])
-
-
-# m4_warn(CATEGORY, MESSAGE)
-# --------------------------
-# Report a MESSAGE to the user if the CATEGORY of warnings is enabled.
-m4_define([m4_warn],
-[_m4_warn([$1], [$2],
-m4_ifdef([_m4_expansion_stack], [m4_expansion_stack]))])
-
-
-
-## ------------------- ##
-## 4. File inclusion. ##
-## ------------------- ##
-
-
-# We also want to neutralize include (and sinclude for symmetry),
-# but we want to extend them slightly: warn when a file is included
-# several times. This is, in general, a dangerous operation, because
-# too many people forget to quote the first argument of m4_define.
-#
-# For instance in the following case:
-# m4_define(foo, [bar])
-# then a second reading will turn into
-# m4_define(bar, [bar])
-# which is certainly not what was meant.
-
-# m4_include_unique(FILE)
-# -----------------------
-# Declare that the FILE was loading; and warn if it has already
-# been included.
-m4_define([m4_include_unique],
-[m4_ifdef([m4_include($1)],
- [m4_warn([syntax], [file `$1' included several times])])dnl
-m4_define([m4_include($1)])])
-
-
-# m4_include(FILE)
-# ----------------
-# Like the builtin include, but warns against multiple inclusions.
-m4_define([m4_include],
-[m4_include_unique([$1])dnl
-m4_builtin([include], [$1])])
-
-
-# m4_sinclude(FILE)
-# -----------------
-# Like the builtin sinclude, but warns against multiple inclusions.
-m4_define([m4_sinclude],
-[m4_include_unique([$1])dnl
-m4_builtin([sinclude], [$1])])
-
-
-
-## ------------------------------------ ##
-## 5. Additional branching constructs. ##
-## ------------------------------------ ##
-
-# Both `m4_ifval' and `m4_ifset' tests against the empty string. The
-# difference is that `m4_ifset' is specialized on macros.
-#
-# In case of arguments of macros, eg. $1, it makes little difference.
-# In the case of a macro `FOO', you don't want to check `m4_ifval(FOO,
-# TRUE)', because if `FOO' expands with commas, there is a shifting of
-# the arguments. So you want to run `m4_ifval([FOO])', but then you just
-# compare the *string* `FOO' against `', which, of course fails.
-#
-# So you want the variation `m4_ifset' that expects a macro name as $1.
-# If this macro is both defined and defined to a non empty value, then
-# it runs TRUE, etc.
-
-
-# m4_ifblank(COND, [IF-BLANK], [IF-TEXT])
-# m4_ifnblank(COND, [IF-TEXT], [IF-BLANK])
-# ----------------------------------------
-# If COND is empty, or consists only of blanks (space, tab, newline),
-# then expand IF-BLANK, otherwise expand IF-TEXT. This differs from
-# m4_ifval only if COND has just whitespace, but it helps optimize in
-# spite of users who mistakenly leave trailing space after what they
-# thought was an empty argument:
-# macro(
-# []
-# )
-#
-# Writing one macro in terms of the other causes extra overhead, so
-# we inline both definitions.
-m4_define([m4_ifblank],
-[m4_if(m4_translit([[$1]], [ ][ ][
-]), [], [$2], [$3])])
-
-m4_define([m4_ifnblank],
-[m4_if(m4_translit([[$1]], [ ][ ][
-]), [], [$3], [$2])])
-
-
-# m4_ifval(COND, [IF-TRUE], [IF-FALSE])
-# -------------------------------------
-# If COND is not the empty string, expand IF-TRUE, otherwise IF-FALSE.
-# Comparable to m4_ifdef.
-m4_define([m4_ifval],
-[m4_if([$1], [], [$3], [$2])])
-
-
-# m4_n(TEXT)
-# ----------
-# If TEXT is not empty, return TEXT and a new line, otherwise nothing.
-m4_define([m4_n],
-[m4_if([$1],
- [], [],
- [$1
-])])
-
-
-# m4_ifvaln(COND, [IF-TRUE], [IF-FALSE])
-# --------------------------------------
-# Same as `m4_ifval', but add an extra newline to IF-TRUE or IF-FALSE
-# unless that argument is empty.
-m4_define([m4_ifvaln],
-[m4_if([$1],
- [], [m4_n([$3])],
- [m4_n([$2])])])
-
-
-# m4_ifset(MACRO, [IF-TRUE], [IF-FALSE])
-# --------------------------------------
-# If MACRO has no definition, or of its definition is the empty string,
-# expand IF-FALSE, otherwise IF-TRUE.
-m4_define([m4_ifset],
-[m4_ifdef([$1],
- [m4_ifval(_m4_defn([$1]), [$2], [$3])],
- [$3])])
-
-
-# m4_ifndef(NAME, [IF-NOT-DEFINED], [IF-DEFINED])
-# -----------------------------------------------
-m4_define([m4_ifndef],
-[m4_ifdef([$1], [$3], [$2])])
-
-
-# m4_case(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT)
-# -----------------------------------------------------------
-# m4 equivalent of
-# switch (SWITCH)
-# {
-# case VAL1:
-# IF-VAL1;
-# break;
-# case VAL2:
-# IF-VAL2;
-# break;
-# ...
-# default:
-# DEFAULT;
-# break;
-# }.
-# All the values are optional, and the macro is robust to active
-# symbols properly quoted.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_case],
-[m4_if([$#], 0, [],
- [$#], 1, [],
- [$#], 2, [$2],
- [$1], [$2], [$3],
- [$0([$1], m4_shift3($@))])])
-
-
-# m4_bmatch(SWITCH, RE1, VAL1, RE2, VAL2, ..., DEFAULT)
-# -----------------------------------------------------
-# m4 equivalent of
-#
-# if (SWITCH =~ RE1)
-# VAL1;
-# elif (SWITCH =~ RE2)
-# VAL2;
-# elif ...
-# ...
-# else
-# DEFAULT
-#
-# All the values are optional, and the macro is robust to active symbols
-# properly quoted.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_bmatch],
-[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])],
- [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])],
- [$#], 2, [$2],
- [m4_if(m4_bregexp([$1], [$2]), -1, [$0([$1], m4_shift3($@))],
- [$3])])])
-
-# m4_argn(N, ARGS...)
-# -------------------
-# Extract argument N (greater than 0) from ARGS. Example:
-# m4_define([b], [B])
-# m4_argn([2], [a], [b], [c]) => b
-#
-# Rather than using m4_car(m4_shiftn([$1], $@)), we exploit the fact that
-# GNU m4 can directly reference any argument, through an indirect macro.
-m4_define([m4_argn],
-[m4_assert([0 < $1])]dnl
-[m4_pushdef([_$0], [_m4_popdef([_$0])]m4_dquote([$]m4_incr([$1])))_$0($@)])
-
-
-# m4_car(ARGS...)
-# m4_cdr(ARGS...)
-# ---------------
-# Manipulate m4 lists. m4_car returns the first argument. m4_cdr
-# bundles all but the first argument into a quoted list. These two
-# macros are generally used with list arguments, with quoting removed
-# to break the list into multiple m4 ARGS.
-m4_define([m4_car], [[$1]])
-m4_define([m4_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
- [$#], 1, [],
- [m4_dquote(m4_shift($@))])])
-
-# _m4_cdr(ARGS...)
-# ----------------
-# Like m4_cdr, except include a leading comma unless only one argument
-# remains. Why? Because comparing a large list against [] is more
-# expensive in expansion time than comparing the number of arguments; so
-# _m4_cdr can be used to reduce the number of arguments when it is time
-# to end recursion.
-m4_define([_m4_cdr],
-[m4_if([$#], 1, [],
- [, m4_dquote(m4_shift($@))])])
-
-
-
-# m4_cond(TEST1, VAL1, IF-VAL1, TEST2, VAL2, IF-VAL2, ..., [DEFAULT])
-# -------------------------------------------------------------------
-# Similar to m4_if, except that each TEST is expanded when encountered.
-# If the expansion of TESTn matches the string VALn, the result is IF-VALn.
-# The result is DEFAULT if no tests passed. This macro allows
-# short-circuiting of expensive tests, where it pays to arrange quick
-# filter tests to run first.
-#
-# For an example, consider a previous implementation of _AS_QUOTE_IFELSE:
-#
-# m4_if(m4_index([$1], [\]), [-1], [$2],
-# m4_eval(m4_index([$1], [\\]) >= 0), [1], [$2],
-# m4_eval(m4_index([$1], [\$]) >= 0), [1], [$2],
-# m4_eval(m4_index([$1], [\`]) >= 0), [1], [$3],
-# m4_eval(m4_index([$1], [\"]) >= 0), [1], [$3],
-# [$2])
-#
-# Here, m4_index is computed 5 times, and m4_eval 4, even if $1 contains
-# no backslash. It is more efficient to do:
-#
-# m4_cond([m4_index([$1], [\])], [-1], [$2],
-# [m4_eval(m4_index([$1], [\\]) >= 0)], [1], [$2],
-# [m4_eval(m4_index([$1], [\$]) >= 0)], [1], [$2],
-# [m4_eval(m4_index([$1], [\`]) >= 0)], [1], [$3],
-# [m4_eval(m4_index([$1], [\"]) >= 0)], [1], [$3],
-# [$2])
-#
-# In the common case of $1 with no backslash, only one m4_index expansion
-# occurs, and m4_eval is avoided altogether.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_cond],
-[m4_if([$#], [0], [m4_fatal([$0: cannot be called without arguments])],
- [$#], [1], [$1],
- m4_eval([$# % 3]), [2], [m4_fatal([$0: missing an argument])],
- [_$0($@)])])
-
-m4_define([_m4_cond],
-[m4_if(($1), [($2)], [$3],
- [$#], [3], [],
- [$#], [4], [$4],
- [$0(m4_shift3($@))])])
-
-
-## ---------------------------------------- ##
-## 6. Enhanced version of some primitives. ##
-## ---------------------------------------- ##
-
-# m4_bpatsubsts(STRING, RE1, SUBST1, RE2, SUBST2, ...)
-# ----------------------------------------------------
-# m4 equivalent of
-#
-# $_ = STRING;
-# s/RE1/SUBST1/g;
-# s/RE2/SUBST2/g;
-# ...
-#
-# All the values are optional, and the macro is robust to active symbols
-# properly quoted.
-#
-# I would have liked to name this macro `m4_bpatsubst', unfortunately,
-# due to quotation problems, I need to double quote $1 below, therefore
-# the anchors are broken :( I can't let users be trapped by that.
-#
-# Recall that m4_shift3 always results in an argument. Hence, we need
-# to distinguish between a final deletion vs. ending recursion.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_bpatsubsts],
-[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])],
- [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])],
- [$#], 2, [m4_unquote(m4_builtin([patsubst], [[$1]], [$2]))],
- [$#], 3, [m4_unquote(m4_builtin([patsubst], [[$1]], [$2], [$3]))],
- [_$0($@m4_if(m4_eval($# & 1), 0, [,]))])])
-m4_define([_m4_bpatsubsts],
-[m4_if([$#], 2, [$1],
- [$0(m4_builtin([patsubst], [[$1]], [$2], [$3]),
- m4_shift3($@))])])
-
-
-# m4_copy(SRC, DST)
-# -----------------
-# Define the pushdef stack DST as a copy of the pushdef stack SRC;
-# give an error if DST is already defined. This is particularly nice
-# for copying self-modifying pushdef stacks, where the top definition
-# includes one-shot initialization that is later popped to the normal
-# definition. This version intentionally does nothing if SRC is
-# undefined.
-#
-# Some macros simply can't be renamed with this method: namely, anything
-# involved in the implementation of m4_stack_foreach_sep.
-m4_define([m4_copy],
-[m4_ifdef([$2], [m4_fatal([$0: won't overwrite defined macro: $2])],
- [m4_stack_foreach_sep([$1], [m4_pushdef([$2],], [)])])]dnl
-[m4_ifdef([m4_location($1)], [m4_define([m4_location($2)], m4_location)])])
-
-
-# m4_copy_force(SRC, DST)
-# m4_rename_force(SRC, DST)
-# -------------------------
-# Like m4_copy/m4_rename, except blindly overwrite any existing DST.
-# Note that m4_copy_force tolerates undefined SRC, while m4_rename_force
-# does not.
-m4_define([m4_copy_force],
-[m4_ifdef([$2], [_m4_undefine([$2])])m4_copy($@)])
-
-m4_define([m4_rename_force],
-[m4_ifdef([$2], [_m4_undefine([$2])])m4_rename($@)])
-
-
-# m4_define_default(MACRO, VALUE)
-# -------------------------------
-# If MACRO is undefined, set it to VALUE.
-m4_define([m4_define_default],
-[m4_ifndef([$1], [m4_define($@)])])
-
-
-# m4_default(EXP1, EXP2)
-# m4_default_nblank(EXP1, EXP2)
-# -----------------------------
-# Returns EXP1 if not empty/blank, otherwise EXP2. Expand the result.
-#
-# m4_default is called on hot paths, so inline the contents of m4_ifval,
-# for one less round of expansion.
-m4_define([m4_default],
-[m4_if([$1], [], [$2], [$1])])
-
-m4_define([m4_default_nblank],
-[m4_ifblank([$1], [$2], [$1])])
-
-
-# m4_default_quoted(EXP1, EXP2)
-# m4_default_nblank_quoted(EXP1, EXP2)
-# ------------------------------------
-# Returns EXP1 if non empty/blank, otherwise EXP2. Leave the result quoted.
-#
-# For comparison:
-# m4_define([active], [ACTIVE])
-# m4_default([active], [default]) => ACTIVE
-# m4_default([], [active]) => ACTIVE
-# -m4_default([ ], [active])- => - -
-# -m4_default_nblank([ ], [active])- => -ACTIVE-
-# m4_default_quoted([active], [default]) => active
-# m4_default_quoted([], [active]) => active
-# -m4_default_quoted([ ], [active])- => - -
-# -m4_default_nblank_quoted([ ], [active])- => -active-
-#
-# m4_default macro is called on hot paths, so inline the contents of m4_ifval,
-# for one less round of expansion.
-m4_define([m4_default_quoted],
-[m4_if([$1], [], [[$2]], [[$1]])])
-
-m4_define([m4_default_nblank_quoted],
-[m4_ifblank([$1], [[$2]], [[$1]])])
-
-
-# m4_defn(NAME)
-# -------------
-# Like the original, except guarantee a warning when using something which is
-# undefined (unlike M4 1.4.x). This replacement is not a full-featured
-# replacement: if any of the defined macros contain unbalanced quoting, but
-# when pasted together result in a well-quoted string, then only native m4
-# support is able to get it correct. But that's where quadrigraphs come in
-# handy, if you really need unbalanced quotes inside your macros.
-#
-# This macro is called frequently, so minimize the amount of additional
-# expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists,
-# (added in M4 1.6), then let m4 do the job for us (see m4_init).
-m4_define([m4_defn],
-[m4_if([$#], [0], [[$0]],
- [$#], [1], [m4_ifdef([$1], [_m4_defn([$1])],
- [m4_fatal([$0: undefined macro: $1])])],
- [m4_map_args([$0], $@)])])
-
-
-# m4_dumpdef(NAME...)
-# -------------------
-# In m4 1.4.x, dumpdef writes to the current debugfile, rather than
-# stderr. This in turn royally confuses autom4te; so we follow the
-# lead of newer m4 and always dump to stderr. Unlike the original,
-# this version requires an argument, since there is no convenient way
-# in m4 1.4.x to grab the names of all defined macros. Newer m4
-# always dumps to stderr, regardless of the current debugfile; it also
-# provides m4symbols as a way to grab all current macro names. But
-# dumpdefs is not frequently called, so we don't need to worry about
-# conditionally using these newer features. Also, this version
-# doesn't sort multiple arguments.
-#
-# If we detect m4 1.6 or newer, then provide an alternate definition,
-# installed during m4_init, that allows builtins through.
-# Unfortunately, there is no nice way in m4 1.4.x to dump builtins.
-m4_define([m4_dumpdef],
-[m4_if([$#], [0], [m4_fatal([$0: missing argument])],
- [$#], [1], [m4_ifdef([$1], [m4_errprintn(
- [$1: ]m4_dquote(_m4_defn([$1])))], [m4_fatal([$0: undefined macro: $1])])],
- [m4_map_args([$0], $@)])])
-
-m4_define([_m4_dumpdef],
-[m4_if([$#], [0], [m4_fatal([$0: missing argument])],
- [$#], [1], [m4_builtin([dumpdef], [$1])],
- [m4_map_args_sep([m4_builtin([dumpdef],], [)], [], $@)])])
-
-
-# m4_dumpdefs(NAME...)
-# --------------------
-# Similar to `m4_dumpdef(NAME)', but if NAME was m4_pushdef'ed, display its
-# value stack (most recent displayed first). Also, this version silently
-# ignores undefined macros, rather than erroring out.
-#
-# This macro cheats, because it relies on the current definition of NAME
-# while the second argument of m4_stack_foreach_lifo is evaluated (which
-# would be undefined according to the API).
-m4_define([m4_dumpdefs],
-[m4_if([$#], [0], [m4_fatal([$0: missing argument])],
- [$#], [1], [m4_stack_foreach_lifo([$1], [m4_dumpdef([$1])m4_ignore])],
- [m4_map_args([$0], $@)])])
-
-# m4_esyscmd_s(COMMAND)
-# ---------------------
-# Like m4_esyscmd, except strip any trailing newlines, thus behaving
-# more like shell command substitution.
-m4_define([m4_esyscmd_s],
-[m4_chomp_all(m4_esyscmd([$1]))])
-
-
-# m4_popdef(NAME)
-# ---------------
-# Like the original, except guarantee a warning when using something which is
-# undefined (unlike M4 1.4.x).
-#
-# This macro is called frequently, so minimize the amount of additional
-# expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists,
-# (added in M4 1.6), then let m4 do the job for us (see m4_init).
-m4_define([m4_popdef],
-[m4_if([$#], [0], [[$0]],
- [$#], [1], [m4_ifdef([$1], [_m4_popdef([$1])],
- [m4_fatal([$0: undefined macro: $1])])],
- [m4_map_args([$0], $@)])])
-
-
-# m4_shiftn(N, ...)
-# -----------------
-# Returns ... shifted N times. Useful for recursive "varargs" constructs.
-#
-# Autoconf does not use this macro, because it is inherently slower than
-# calling the common cases of m4_shift2 or m4_shift3 directly. But it
-# might as well be fast for other clients, such as Libtool. One way to
-# do this is to expand $@ only once in _m4_shiftn (otherwise, for long
-# lists, the expansion of m4_if takes twice as much memory as what the
-# list itself occupies, only to throw away the unused branch). The end
-# result is strictly equivalent to
-# m4_if([$1], 1, [m4_shift(,m4_shift(m4_shift($@)))],
-# [_m4_shiftn(m4_decr([$1]), m4_shift(m4_shift($@)))])
-# but with the final `m4_shift(m4_shift($@)))' shared between the two
-# paths. The first leg uses a no-op m4_shift(,$@) to balance out the ().
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_shiftn],
-[m4_assert(0 < $1 && $1 < $#)_$0($@)])
-
-m4_define([_m4_shiftn],
-[m4_if([$1], 1, [m4_shift(],
- [$0(m4_decr([$1])]), m4_shift(m4_shift($@)))])
-
-# m4_shift2(...)
-# m4_shift3(...)
-# --------------
-# Returns ... shifted twice, and three times. Faster than m4_shiftn.
-m4_define([m4_shift2], [m4_shift(m4_shift($@))])
-m4_define([m4_shift3], [m4_shift(m4_shift(m4_shift($@)))])
-
-# _m4_shift2(...)
-# _m4_shift3(...)
-# ---------------
-# Like m4_shift2 or m4_shift3, except include a leading comma unless shifting
-# consumes all arguments. Why? Because in recursion, it is nice to
-# distinguish between 1 element left and 0 elements left, based on how many
-# arguments this shift expands to.
-m4_define([_m4_shift2],
-[m4_if([$#], [2], [],
- [, m4_shift(m4_shift($@))])])
-m4_define([_m4_shift3],
-[m4_if([$#], [3], [],
- [, m4_shift(m4_shift(m4_shift($@)))])])
-
-
-# m4_undefine(NAME)
-# -----------------
-# Like the original, except guarantee a warning when using something which is
-# undefined (unlike M4 1.4.x).
-#
-# This macro is called frequently, so minimize the amount of additional
-# expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists,
-# (added in M4 1.6), then let m4 do the job for us (see m4_init).
-m4_define([m4_undefine],
-[m4_if([$#], [0], [[$0]],
- [$#], [1], [m4_ifdef([$1], [_m4_undefine([$1])],
- [m4_fatal([$0: undefined macro: $1])])],
- [m4_map_args([$0], $@)])])
-
-# _m4_wrap(PRE, POST)
-# -------------------
-# Helper macro for m4_wrap and m4_wrap_lifo. Allows nested calls to
-# m4_wrap within wrapped text. Use _m4_defn and _m4_popdef for speed.
-m4_define([_m4_wrap],
-[m4_ifdef([$0_text],
- [m4_define([$0_text], [$1]_m4_defn([$0_text])[$2])],
- [m4_builtin([m4wrap], [m4_unquote(
- _m4_defn([$0_text])_m4_popdef([$0_text]))])m4_define([$0_text], [$1$2])])])
-
-# m4_wrap(TEXT)
-# -------------
-# Append TEXT to the list of hooks to be executed at the end of input.
-# Whereas the order of the original may be LIFO in the underlying m4,
-# this version is always FIFO.
-m4_define([m4_wrap],
-[_m4_wrap([], [$1[]])])
-
-# m4_wrap_lifo(TEXT)
-# ------------------
-# Prepend TEXT to the list of hooks to be executed at the end of input.
-# Whereas the order of m4_wrap may be FIFO in the underlying m4, this
-# version is always LIFO.
-m4_define([m4_wrap_lifo],
-[_m4_wrap([$1[]])])
-
-## ------------------------- ##
-## 7. Quoting manipulation. ##
-## ------------------------- ##
-
-
-# m4_apply(MACRO, LIST)
-# ---------------------
-# Invoke MACRO, with arguments provided from the quoted list of
-# comma-separated quoted arguments. If LIST is empty, invoke MACRO
-# without arguments. The expansion will not be concatenated with
-# subsequent text.
-m4_define([m4_apply],
-[m4_if([$2], [], [$1], [$1($2)])[]])
-
-# _m4_apply(MACRO, LIST)
-# ----------------------
-# Like m4_apply, except do nothing if LIST is empty.
-m4_define([_m4_apply],
-[m4_if([$2], [], [], [$1($2)[]])])
-
-
-# m4_count(ARGS)
-# --------------
-# Return a count of how many ARGS are present.
-m4_define([m4_count], [$#])
-
-
-# m4_curry(MACRO, ARG...)
-# -----------------------
-# Perform argument currying. The expansion of this macro is another
-# macro that takes exactly one argument, appends it to the end of the
-# original ARG list, then invokes MACRO. For example:
-# m4_curry([m4_curry], [m4_reverse], [1])([2])([3]) => 3, 2, 1
-# Not quite as practical as m4_incr, but you could also do:
-# m4_define([add], [m4_eval(([$1]) + ([$2]))])
-# m4_define([add_one], [m4_curry([add], [1])])
-# add_one()([2]) => 3
-m4_define([m4_curry], [$1(m4_shift($@,)_$0])
-m4_define([_m4_curry], [[$1])])
-
-
-# m4_do(STRING, ...)
-# ------------------
-# This macro invokes all its arguments (in sequence, of course). It is
-# useful for making your macros more structured and readable by dropping
-# unnecessary dnl's and have the macros indented properly. No concatenation
-# occurs after a STRING; use m4_unquote(m4_join(,STRING)) for that.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_do],
-[m4_if([$#], 0, [],
- [$#], 1, [$1[]],
- [$1[]$0(m4_shift($@))])])
-
-
-# m4_dquote(ARGS)
-# ---------------
-# Return ARGS as a quoted list of quoted arguments.
-m4_define([m4_dquote], [[$@]])
-
-
-# m4_dquote_elt(ARGS)
-# -------------------
-# Return ARGS as an unquoted list of double-quoted arguments.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_dquote_elt],
-[m4_if([$#], [0], [],
- [$#], [1], [[[$1]]],
- [[[$1]],$0(m4_shift($@))])])
-
-
-# m4_echo(ARGS)
-# -------------
-# Return the ARGS, with the same level of quoting. Whitespace after
-# unquoted commas are consumed.
-m4_define([m4_echo], [$@])
-
-
-# m4_expand(ARG)
-# _m4_expand(ARG)
-# ---------------
-# Return the expansion of ARG as a single string. Unlike
-# m4_quote($1), this preserves whitespace following single-quoted
-# commas that appear within ARG. It also deals with shell case
-# statements.
-#
-# m4_define([active], [ACT, IVE])
-# m4_define([active2], [[ACT, IVE]])
-# m4_quote(active, active2)
-# => ACT,IVE,ACT, IVE
-# m4_expand([active, active2])
-# => ACT, IVE, ACT, IVE
-#
-# Unfortunately, due to limitations in m4, ARG must expand to
-# something with balanced quotes (use quadrigraphs to get around
-# this), and should not contain the unlikely delimiters -=<{( or
-# )}>=-. It is possible to have unbalanced quoted `(' or `)', as well
-# as unbalanced unquoted `)'. m4_expand can handle unterminated
-# comments or dnl on the final line, at the expense of speed; it also
-# aids in detecting attempts to incorrectly change the current
-# diversion inside ARG. Meanwhile, _m4_expand is faster but must be
-# given a terminated expansion, and has no safety checks for
-# mis-diverted text.
-#
-# Exploit that extra unquoted () will group unquoted commas and the
-# following whitespace. m4_bpatsubst can't handle newlines inside $1,
-# and m4_substr strips quoting. So we (ab)use m4_changequote, using
-# temporary quotes to remove the delimiters that conveniently included
-# the unquoted () that were added prior to the changequote.
-#
-# Thanks to shell case statements, too many people are prone to pass
-# underquoted `)', so we try to detect that by passing a marker as a
-# fourth argument; if the marker is not present, then we assume that
-# we encountered an early `)', and re-expand the first argument, but
-# this time with one more `(' in the second argument and in the
-# open-quote delimiter. We must also ignore the slop from the
-# previous try. The final macro is thus half line-noise, half art.
-m4_define([m4_expand],
-[m4_pushdef([m4_divert], _m4_defn([_m4_divert_unsafe]))]dnl
-[m4_pushdef([m4_divert_push], _m4_defn([_m4_divert_unsafe]))]dnl
-[m4_chomp(_$0([$1
-]))_m4_popdef([m4_divert], [m4_divert_push])])
-
-m4_define([_m4_expand], [$0_([$1], [(], -=<{($1)}>=-, [}>=-])])
-
-m4_define([_m4_expand_],
-[m4_if([$4], [}>=-],
- [m4_changequote([-=<{$2], [)}>=-])$3m4_changequote([, ])],
- [$0([$1], [($2], -=<{($2$1)}>=-, [}>=-])m4_ignore$2])])
-
-
-# m4_ignore(ARGS)
-# ---------------
-# Expands to nothing. Useful for conditionally ignoring an arbitrary
-# number of arguments (see _m4_list_cmp for an example).
-m4_define([m4_ignore])
-
-
-# m4_make_list(ARGS)
-# ------------------
-# Similar to m4_dquote, this creates a quoted list of quoted ARGS. This
-# version is less efficient than m4_dquote, but separates each argument
-# with a comma and newline, rather than just comma, for readability.
-# When developing an m4sugar algorithm, you could temporarily use
-# m4_pushdef([m4_dquote],m4_defn([m4_make_list]))
-# around your code to make debugging easier.
-m4_define([m4_make_list], [m4_join([,
-], m4_dquote_elt($@))])
-
-
-# m4_noquote(STRING)
-# ------------------
-# Return the result of ignoring all quotes in STRING and invoking the
-# macros it contains. Among other things, this is useful for enabling
-# macro invocations inside strings with [] blocks (for instance regexps
-# and help-strings). On the other hand, since all quotes are disabled,
-# any macro expanded during this time that relies on nested [] quoting
-# will likely crash and burn. This macro is seldom useful; consider
-# m4_unquote or m4_expand instead.
-m4_define([m4_noquote],
-[m4_changequote([-=<{(],[)}>=-])$1-=<{()}>=-m4_changequote([,])])
-
-
-# m4_quote(ARGS)
-# --------------
-# Return ARGS as a single argument. Any whitespace after unquoted commas
-# is stripped. There is always output, even when there were no arguments.
-#
-# It is important to realize the difference between `m4_quote(exp)' and
-# `[exp]': in the first case you obtain the quoted *result* of the
-# expansion of EXP, while in the latter you just obtain the string
-# `exp'.
-m4_define([m4_quote], [[$*]])
-
-
-# _m4_quote(ARGS)
-# ---------------
-# Like m4_quote, except that when there are no arguments, there is no
-# output. For conditional scenarios (such as passing _m4_quote as the
-# macro name in m4_mapall), this feature can be used to distinguish between
-# one argument of the empty string vs. no arguments. However, in the
-# normal case with arguments present, this is less efficient than m4_quote.
-m4_define([_m4_quote],
-[m4_if([$#], [0], [], [[$*]])])
-
-
-# m4_reverse(ARGS)
-# ----------------
-# Output ARGS in reverse order.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_reverse],
-[m4_if([$#], [0], [], [$#], [1], [[$1]],
- [$0(m4_shift($@)), [$1]])])
-
-
-# m4_unquote(ARGS)
-# ----------------
-# Remove one layer of quotes from each ARG, performing one level of
-# expansion. For one argument, m4_unquote([arg]) is more efficient than
-# m4_do([arg]), but for multiple arguments, the difference is that
-# m4_unquote separates arguments with commas while m4_do concatenates.
-# Follow this macro with [] if concatenation with subsequent text is
-# undesired.
-m4_define([m4_unquote], [$*])
-
-
-## -------------------------- ##
-## 8. Implementing m4 loops. ##
-## -------------------------- ##
-
-
-# m4_for(VARIABLE, FIRST, LAST, [STEP = +/-1], EXPRESSION)
-# --------------------------------------------------------
-# Expand EXPRESSION defining VARIABLE to FROM, FROM + 1, ..., TO with
-# increments of STEP. Both limits are included, and bounds are
-# checked for consistency. The algorithm is robust to indirect
-# VARIABLE names. Changing VARIABLE inside EXPRESSION will not impact
-# the number of iterations.
-#
-# Uses _m4_defn for speed, and avoid dnl in the macro body. Factor
-# the _m4_for call so that EXPRESSION is only parsed once.
-m4_define([m4_for],
-[m4_pushdef([$1], m4_eval([$2]))]dnl
-[m4_cond([m4_eval(([$3]) > ([$2]))], 1,
- [m4_pushdef([_m4_step], m4_eval(m4_default_quoted([$4],
- 1)))m4_assert(_m4_step > 0)_$0(_m4_defn([$1]),
- m4_eval((([$3]) - ([$2])) / _m4_step * _m4_step + ([$2])), _m4_step,],
- [m4_eval(([$3]) < ([$2]))], 1,
- [m4_pushdef([_m4_step], m4_eval(m4_default_quoted([$4],
- -1)))m4_assert(_m4_step < 0)_$0(_m4_defn([$1]),
- m4_eval((([$2]) - ([$3])) / -(_m4_step) * _m4_step + ([$2])), _m4_step,],
- [m4_pushdef([_m4_step])_$0(_m4_defn([$1]), _m4_defn([$1]), 0,])]dnl
-[[m4_define([$1],], [)$5])m4_popdef([_m4_step], [$1])])
-
-# _m4_for(COUNT, LAST, STEP, PRE, POST)
-# -------------------------------------
-# Core of the loop, no consistency checks, all arguments are plain
-# numbers. Expand PRE[COUNT]POST, then alter COUNT by STEP and
-# iterate if COUNT is not LAST.
-m4_define([_m4_for],
-[$4[$1]$5[]m4_if([$1], [$2], [],
- [$0(m4_eval([$1 + $3]), [$2], [$3], [$4], [$5])])])
-
-
-# Implementing `foreach' loops in m4 is much more tricky than it may
-# seem. For example, the old M4 1.4.4 manual had an incorrect example,
-# which looked like this (when translated to m4sugar):
-#
-# | # foreach(VAR, (LIST), STMT)
-# | m4_define([foreach],
-# | [m4_pushdef([$1])_foreach([$1], [$2], [$3])m4_popdef([$1])])
-# | m4_define([_arg1], [$1])
-# | m4_define([_foreach],
-# | [m4_if([$2], [()], ,
-# | [m4_define([$1], _arg1$2)$3[]_foreach([$1], (m4_shift$2), [$3])])])
-#
-# But then if you run
-#
-# | m4_define(a, 1)
-# | m4_define(b, 2)
-# | m4_define(c, 3)
-# | foreach([f], [([a], [(b], [c)])], [echo f
-# | ])
-#
-# it gives
-#
-# => echo 1
-# => echo (2,3)
-#
-# which is not what is expected.
-#
-# Of course the problem is that many quotes are missing. So you add
-# plenty of quotes at random places, until you reach the expected
-# result. Alternatively, if you are a quoting wizard, you directly
-# reach the following implementation (but if you really did, then
-# apply to the maintenance of m4sugar!).
-#
-# | # foreach(VAR, (LIST), STMT)
-# | m4_define([foreach], [m4_pushdef([$1])_foreach($@)m4_popdef([$1])])
-# | m4_define([_arg1], [[$1]])
-# | m4_define([_foreach],
-# | [m4_if($2, [()], ,
-# | [m4_define([$1], [_arg1$2])$3[]_foreach([$1], [(m4_shift$2)], [$3])])])
-#
-# which this time answers
-#
-# => echo a
-# => echo (b
-# => echo c)
-#
-# Bingo!
-#
-# Well, not quite.
-#
-# With a better look, you realize that the parens are more a pain than
-# a help: since anyway you need to quote properly the list, you end up
-# with always using an outermost pair of parens and an outermost pair
-# of quotes. Rejecting the parens both eases the implementation, and
-# simplifies the use:
-#
-# | # foreach(VAR, (LIST), STMT)
-# | m4_define([foreach], [m4_pushdef([$1])_foreach($@)m4_popdef([$1])])
-# | m4_define([_arg1], [$1])
-# | m4_define([_foreach],
-# | [m4_if($2, [], ,
-# | [m4_define([$1], [_arg1($2)])$3[]_foreach([$1], [m4_shift($2)], [$3])])])
-#
-#
-# Now, just replace the `$2' with `m4_quote($2)' in the outer `m4_if'
-# to improve robustness, and you come up with a nice implementation
-# that doesn't require extra parentheses in the user's LIST.
-#
-# But wait - now the algorithm is quadratic, because every recursion of
-# the algorithm keeps the entire LIST and merely adds another m4_shift to
-# the quoted text. If the user has a lot of elements in LIST, you can
-# bring the system to its knees with the memory m4 then requires, or trip
-# the m4 --nesting-limit recursion factor. The only way to avoid
-# quadratic growth is ensure m4_shift is expanded prior to the recursion.
-# Hence the design below.
-#
-# The M4 manual now includes a chapter devoted to this issue, with
-# the lessons learned from m4sugar. And still, this design is only
-# optimal for M4 1.6; see foreach.m4 for yet more comments on why
-# M4 1.4.x uses yet another implementation.
-
-
-# m4_foreach(VARIABLE, LIST, EXPRESSION)
-# --------------------------------------
-#
-# Expand EXPRESSION assigning each value of the LIST to VARIABLE.
-# LIST should have the form `item_1, item_2, ..., item_n', i.e. the
-# whole list must *quoted*. Quote members too if you don't want them
-# to be expanded.
-#
-# This macro is robust to active symbols:
-# | m4_define(active, [ACT, IVE])
-# | m4_foreach(Var, [active, active], [-Var-])
-# => -ACT--IVE--ACT--IVE-
-#
-# | m4_foreach(Var, [[active], [active]], [-Var-])
-# => -ACT, IVE--ACT, IVE-
-#
-# | m4_foreach(Var, [[[active]], [[active]]], [-Var-])
-# => -active--active-
-#
-# This macro is called frequently, so avoid extra expansions such as
-# m4_ifval and dnl. Also, since $2 might be quite large, try to use it
-# as little as possible in _m4_foreach; each extra use requires that much
-# more memory for expansion. So, rather than directly compare $2 against
-# [] and use m4_car/m4_cdr for recursion, we instead unbox the list (which
-# requires swapping the argument order in the helper), insert an ignored
-# third argument, and use m4_shift3 to detect when recursion is complete,
-# at which point this looks very much like m4_map_args.
-m4_define([m4_foreach],
-[m4_if([$2], [], [],
- [m4_pushdef([$1])_$0([m4_define([$1],], [)$3], [],
- $2)m4_popdef([$1])])])
-
-# _m4_foreach(PRE, POST, IGNORED, ARG...)
-# ---------------------------------------
-# Form the common basis of the m4_foreach and m4_map macros. For each
-# ARG, expand PRE[ARG]POST[]. The IGNORED argument makes recursion
-# easier, and must be supplied rather than implicit.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([_m4_foreach],
-[m4_if([$#], [3], [],
- [$1[$4]$2[]$0([$1], [$2], m4_shift3($@))])])
-
-
-# m4_foreach_w(VARIABLE, LIST, EXPRESSION)
-# ----------------------------------------
-# Like m4_foreach, but the list is whitespace separated. Depending on
-# EXPRESSION, it may be more efficient to use m4_map_args_w.
-#
-# This macro is robust to active symbols:
-# m4_foreach_w([Var], [ active
-# b act\
-# ive ], [-Var-])end
-# => -active--b--active-end
-#
-# This used to use a slower implementation based on m4_foreach:
-# m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])
-m4_define([m4_foreach_w],
-[m4_pushdef([$1])m4_map_args_w([$2],
- [m4_define([$1],], [)$3])m4_popdef([$1])])
-
-
-# m4_map(MACRO, LIST)
-# m4_mapall(MACRO, LIST)
-# ----------------------
-# Invoke MACRO($1), MACRO($2) etc. where $1, $2... are the elements of
-# LIST. $1, $2... must in turn be lists, appropriate for m4_apply.
-# If LIST contains an empty sublist, m4_map skips the expansion of
-# MACRO, while m4_mapall expands MACRO with no arguments.
-#
-# Since LIST may be quite large, we want to minimize how often it
-# appears in the expansion. Rather than use m4_car/m4_cdr iteration,
-# we unbox the list, and use _m4_foreach for iteration. For m4_map,
-# an empty list behaves like an empty sublist and gets ignored; for
-# m4_mapall, we must special-case the empty list.
-m4_define([m4_map],
-[_m4_foreach([_m4_apply([$1],], [)], [], $2)])
-
-m4_define([m4_mapall],
-[m4_if([$2], [], [],
- [_m4_foreach([m4_apply([$1],], [)], [], $2)])])
-
-
-# m4_map_sep(MACRO, [SEPARATOR], LIST)
-# m4_mapall_sep(MACRO, [SEPARATOR], LIST)
-# ---------------------------------------
-# Invoke MACRO($1), SEPARATOR, MACRO($2), ..., MACRO($N) where $1,
-# $2... $N are the elements of LIST, and are in turn lists appropriate
-# for m4_apply. SEPARATOR is expanded, in order to allow the creation
-# of a list of arguments by using a single-quoted comma as the
-# separator. For each empty sublist, m4_map_sep skips the expansion
-# of MACRO and SEPARATOR, while m4_mapall_sep expands MACRO with no
-# arguments.
-#
-# For m4_mapall_sep, merely expand the first iteration without the
-# separator, then include separator as part of subsequent recursion;
-# but avoid extra expansion of LIST's side-effects via a helper macro.
-# For m4_map_sep, things are trickier - we don't know if the first
-# list element is an empty sublist, so we must define a self-modifying
-# helper macro and use that as the separator instead.
-m4_define([m4_map_sep],
-[m4_pushdef([m4_Sep], [m4_define([m4_Sep], _m4_defn([m4_unquote]))])]dnl
-[_m4_foreach([_m4_apply([m4_Sep([$2])[]$1],], [)], [], $3)m4_popdef([m4_Sep])])
-
-m4_define([m4_mapall_sep],
-[m4_if([$3], [], [], [_$0([$1], [$2], $3)])])
-
-m4_define([_m4_mapall_sep],
-[m4_apply([$1], [$3])_m4_foreach([m4_apply([$2[]$1],], [)], m4_shift2($@))])
-
-# m4_map_args(EXPRESSION, ARG...)
-# -------------------------------
-# Expand EXPRESSION([ARG]) for each argument. More efficient than
-# m4_foreach([var], [ARG...], [EXPRESSION(m4_defn([var]))])
-# Shorthand for m4_map_args_sep([EXPRESSION(], [)], [], ARG...).
-m4_define([m4_map_args],
-[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])],
- [$#], [1], [],
- [$#], [2], [$1([$2])[]],
- [_m4_foreach([$1(], [)], $@)])])
-
-
-# m4_map_args_pair(EXPRESSION, [END-EXPR = EXPRESSION], ARG...)
-# -------------------------------------------------------------
-# Perform a pairwise grouping of consecutive ARGs, by expanding
-# EXPRESSION([ARG1], [ARG2]). If there are an odd number of ARGs, the
-# final argument is expanded with END-EXPR([ARGn]).
-#
-# For example:
-# m4_define([show], [($*)m4_newline])dnl
-# m4_map_args_pair([show], [], [a], [b], [c], [d], [e])dnl
-# => (a,b)
-# => (c,d)
-# => (e)
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_map_args_pair],
-[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])],
- [$#], [1], [m4_fatal([$0: too few arguments: $#: $1])],
- [$#], [2], [],
- [$#], [3], [m4_default([$2], [$1])([$3])[]],
- [$#], [4], [$1([$3], [$4])[]],
- [$1([$3], [$4])[]$0([$1], [$2], m4_shift(m4_shift3($@)))])])
-
-
-# m4_map_args_sep([PRE], [POST], [SEP], ARG...)
-# ---------------------------------------------
-# Expand PRE[ARG]POST for each argument, with SEP between arguments.
-m4_define([m4_map_args_sep],
-[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])],
- [$#], [1], [],
- [$#], [2], [],
- [$#], [3], [],
- [$#], [4], [$1[$4]$2[]],
- [$1[$4]$2[]_m4_foreach([$3[]$1], [$2], m4_shift3($@))])])
-
-
-# m4_map_args_w(STRING, [PRE], [POST], [SEP])
-# -------------------------------------------
-# Perform the expansion of PRE[word]POST[] for each word in STRING
-# separated by whitespace. More efficient than:
-# m4_foreach_w([var], [STRING], [PRE[]m4_defn([var])POST])
-# Additionally, expand SEP between words.
-#
-# As long as we have to use m4_bpatsubst to split the string, we might
-# as well make it also apply PRE and POST; this avoids iteration
-# altogether. But we must be careful of any \ in PRE or POST.
-# _m4_strip returns a quoted string, but that's okay, since it also
-# supplies an empty leading and trailing argument due to our
-# intentional whitespace around STRING. We use m4_substr to strip the
-# empty elements and remove the extra layer of quoting.
-m4_define([m4_map_args_w],
-[_$0(_m4_split([ ]m4_flatten([$1])[ ], [[ ]+],
- m4_if(m4_index([$2$3$4], [\]), [-1], [[$3[]$4[]$2]],
- [m4_bpatsubst([[$3[]$4[]$2]], [\\], [\\\\])])),
- m4_len([[]$3[]$4]), m4_len([$4[]$2[]]))])
-
-m4_define([_m4_map_args_w],
-[m4_substr([$1], [$2], m4_eval(m4_len([$1]) - [$2] - [$3]))])
-
-
-# m4_stack_foreach(MACRO, FUNC)
-# m4_stack_foreach_lifo(MACRO, FUNC)
-# ----------------------------------
-# Pass each stacked definition of MACRO to the one-argument macro FUNC.
-# m4_stack_foreach proceeds in FIFO order, while m4_stack_foreach_lifo
-# processes the topmost definitions first. In addition, FUNC should
-# not push or pop definitions of MACRO, and should not expect anything about
-# the active definition of MACRO (it will not be the topmost, and may not
-# be the one passed to FUNC either).
-#
-# Some macros simply can't be examined with this method: namely,
-# anything involved in the implementation of _m4_stack_reverse.
-m4_define([m4_stack_foreach],
-[_m4_stack_reverse([$1], [m4_tmp-$1])]dnl
-[_m4_stack_reverse([m4_tmp-$1], [$1], [$2(_m4_defn([m4_tmp-$1]))])])
-
-m4_define([m4_stack_foreach_lifo],
-[_m4_stack_reverse([$1], [m4_tmp-$1], [$2(_m4_defn([m4_tmp-$1]))])]dnl
-[_m4_stack_reverse([m4_tmp-$1], [$1])])
-
-# m4_stack_foreach_sep(MACRO, [PRE], [POST], [SEP])
-# m4_stack_foreach_sep_lifo(MACRO, [PRE], [POST], [SEP])
-# ------------------------------------------------------
-# Similar to m4_stack_foreach and m4_stack_foreach_lifo, in that every
-# definition of a pushdef stack will be visited. But rather than
-# passing the definition as a single argument to a macro, this variant
-# expands the concatenation of PRE[]definition[]POST, and expands SEP
-# between consecutive expansions. Note that m4_stack_foreach([a], [b])
-# is equivalent to m4_stack_foreach_sep([a], [b(], [)]).
-m4_define([m4_stack_foreach_sep],
-[_m4_stack_reverse([$1], [m4_tmp-$1])]dnl
-[_m4_stack_reverse([m4_tmp-$1], [$1], [$2[]_m4_defn([m4_tmp-$1])$3], [$4[]])])
-
-m4_define([m4_stack_foreach_sep_lifo],
-[_m4_stack_reverse([$1], [m4_tmp-$1], [$2[]_m4_defn([m4_tmp-$1])$3], [$4[]])]dnl
-[_m4_stack_reverse([m4_tmp-$1], [$1])])
-
-
-# _m4_stack_reverse(OLD, NEW, [ACTION], [SEP])
-# --------------------------------------------
-# A recursive worker for pushdef stack manipulation. Destructively
-# copy the OLD stack into the NEW, and expanding ACTION for each
-# iteration. After the first iteration, SEP is promoted to the front
-# of ACTION (note that SEP should include a trailing [] if it is to
-# avoid interfering with ACTION). The current definition is examined
-# after the NEW has been pushed but before OLD has been popped; this
-# order is important, as ACTION is permitted to operate on either
-# _m4_defn([OLD]) or _m4_defn([NEW]). Since the operation is
-# destructive, this macro is generally used twice, with a temporary
-# macro name holding the swapped copy.
-m4_define([_m4_stack_reverse],
-[m4_ifdef([$1], [m4_pushdef([$2],
- _m4_defn([$1]))$3[]_m4_popdef([$1])$0([$1], [$2], [$4$3])])])
-
-
-
-## --------------------------- ##
-## 9. More diversion support. ##
-## --------------------------- ##
-
-
-# m4_cleardivert(DIVERSION-NAME...)
-# ---------------------------------
-# Discard any text in DIVERSION-NAME.
-#
-# This works even inside m4_expand.
-m4_define([m4_cleardivert],
-[m4_if([$#], [0], [m4_fatal([$0: missing argument])],
- [_m4_divert_raw([-1])m4_undivert($@)_m4_divert_raw(
- _m4_divert(_m4_defn([_m4_divert_diversion]), [-]))])])
-
-
-# _m4_divert(DIVERSION-NAME or NUMBER, [NOWARN])
-# ----------------------------------------------
-# If DIVERSION-NAME is the name of a diversion, return its number,
-# otherwise if it is a NUMBER return it. Issue a warning about
-# the use of a number instead of a name, unless NOWARN is provided.
-m4_define([_m4_divert],
-[m4_ifdef([_m4_divert($1)],
- [m4_indir([_m4_divert($1)])],
- [m4_if([$2], [], [m4_warn([syntax],
- [prefer named diversions])])$1])])
-
-# KILL is only used to suppress output.
-m4_define([_m4_divert(KILL)], -1)
-
-# The empty diversion name is a synonym for 0.
-m4_define([_m4_divert()], 0)
-
-
-# m4_divert_stack
-# ---------------
-# Print the diversion stack, if it's nonempty. The caller is
-# responsible for any leading or trailing newline.
-m4_define([m4_divert_stack],
-[m4_stack_foreach_sep_lifo([_m4_divert_stack], [], [], [
-])])
-
-
-# m4_divert_stack_push(MACRO-NAME, DIVERSION-NAME)
-# ------------------------------------------------
-# Form an entry of the diversion stack from caller MACRO-NAME and
-# entering DIVERSION-NAME and push it.
-m4_define([m4_divert_stack_push],
-[m4_pushdef([_m4_divert_stack], m4_location[: $1: $2])])
-
-
-# m4_divert(DIVERSION-NAME)
-# -------------------------
-# Change the diversion stream to DIVERSION-NAME.
-m4_define([m4_divert],
-[m4_popdef([_m4_divert_stack])]dnl
-[m4_define([_m4_divert_diversion], [$1])]dnl
-[m4_divert_stack_push([$0], [$1])]dnl
-[_m4_divert_raw(_m4_divert([$1]))])
-
-
-# m4_divert_push(DIVERSION-NAME, [NOWARN])
-# ----------------------------------------
-# Change the diversion stream to DIVERSION-NAME, while stacking old values.
-# For internal use only: if NOWARN is not empty, DIVERSION-NAME can be a
-# number instead of a name.
-m4_define([m4_divert_push],
-[m4_divert_stack_push([$0], [$1])]dnl
-[m4_pushdef([_m4_divert_diversion], [$1])]dnl
-[_m4_divert_raw(_m4_divert([$1], [$2]))])
-
-
-# m4_divert_pop([DIVERSION-NAME])
-# -------------------------------
-# Change the diversion stream to its previous value, unstacking it.
-# If specified, verify we left DIVERSION-NAME.
-# When we pop the last value from the stack, we divert to -1.
-m4_define([m4_divert_pop],
-[m4_if([$1], [], [],
- [$1], _m4_defn([_m4_divert_diversion]), [],
- [m4_fatal([$0($1): diversion mismatch:
-]m4_divert_stack)])]dnl
-[_m4_popdef([_m4_divert_stack], [_m4_divert_diversion])]dnl
-[m4_ifdef([_m4_divert_diversion], [],
- [m4_fatal([too many m4_divert_pop])])]dnl
-[_m4_divert_raw(_m4_divert(_m4_defn([_m4_divert_diversion]), [-]))])
-
-
-# m4_divert_text(DIVERSION-NAME, CONTENT)
-# ---------------------------------------
-# Output CONTENT into DIVERSION-NAME (which may be a number actually).
-# An end of line is appended for free to CONTENT.
-m4_define([m4_divert_text],
-[m4_divert_push([$1])$2
-m4_divert_pop([$1])])
-
-
-# m4_divert_once(DIVERSION-NAME, CONTENT)
-# ---------------------------------------
-# Output CONTENT into DIVERSION-NAME once, if not already there.
-# An end of line is appended for free to CONTENT.
-m4_define([m4_divert_once],
-[m4_expand_once([m4_divert_text([$1], [$2])])])
-
-
-# _m4_divert_unsafe(DIVERSION-NAME)
-# ---------------------------------
-# Issue a warning that the attempt to change the current diversion to
-# DIVERSION-NAME is unsafe, because this macro is being expanded
-# during argument collection of m4_expand.
-m4_define([_m4_divert_unsafe],
-[m4_fatal([$0: cannot change diversion to `$1' inside m4_expand])])
-
-
-# m4_undivert(DIVERSION-NAME...)
-# ------------------------------
-# Undivert DIVERSION-NAME. Unlike the M4 version, this requires at
-# least one DIVERSION-NAME; also, due to support for named diversions,
-# this should not be used to undivert files.
-m4_define([m4_undivert],
-[m4_if([$#], [0], [m4_fatal([$0: missing argument])],
- [$#], [1], [_m4_undivert(_m4_divert([$1]))],
- [m4_map_args([$0], $@)])])
-
-
-## --------------------------------------------- ##
-## 10. Defining macros with bells and whistles. ##
-## --------------------------------------------- ##
-
-# `m4_defun' is basically `m4_define' but it equips the macro with the
-# needed machinery for `m4_require'. A macro must be m4_defun'd if
-# either it is m4_require'd, or it m4_require's.
-#
-# Two things deserve attention and are detailed below:
-# 1. Implementation of m4_require
-# 2. Keeping track of the expansion stack
-#
-# 1. Implementation of m4_require
-# ===============================
-#
-# Of course m4_defun calls m4_provide, so that a macro which has
-# been expanded is not expanded again when m4_require'd, but the
-# difficult part is the proper expansion of macros when they are
-# m4_require'd.
-#
-# The implementation is based on three ideas, (i) using diversions to
-# prepare the expansion of the macro and its dependencies (by Franc,ois
-# Pinard), (ii) expand the most recently m4_require'd macros _after_
-# the previous macros (by Axel Thimm), and (iii) track instances of
-# provide before require (by Eric Blake).
-#
-#
-# The first idea: why use diversions?
-# -----------------------------------
-#
-# When a macro requires another, the other macro is expanded in new
-# diversion, GROW. When the outer macro is fully expanded, we first
-# undivert the most nested diversions (GROW - 1...), and finally
-# undivert GROW. To understand why we need several diversions,
-# consider the following example:
-#
-# | m4_defun([TEST1], [Test...m4_require([TEST2])1])
-# | m4_defun([TEST2], [Test...m4_require([TEST3])2])
-# | m4_defun([TEST3], [Test...3])
-#
-# Because m4_require is not required to be first in the outer macros, we
-# must keep the expansions of the various levels of m4_require separated.
-# Right before executing the epilogue of TEST1, we have:
-#
-# GROW - 2: Test...3
-# GROW - 1: Test...2
-# GROW: Test...1
-# BODY:
-#
-# Finally the epilogue of TEST1 undiverts GROW - 2, GROW - 1, and
-# GROW into the regular flow, BODY.
-#
-# GROW - 2:
-# GROW - 1:
-# GROW:
-# BODY: Test...3; Test...2; Test...1
-#
-# (The semicolons are here for clarification, but of course are not
-# emitted.) This is what Autoconf 2.0 (I think) to 2.13 (I'm sure)
-# implement.
-#
-#
-# The second idea: first required first out
-# -----------------------------------------
-#
-# The natural implementation of the idea above is buggy and produces
-# very surprising results in some situations. Let's consider the
-# following example to explain the bug:
-#
-# | m4_defun([TEST1], [m4_require([TEST2a])m4_require([TEST2b])])
-# | m4_defun([TEST2a], [])
-# | m4_defun([TEST2b], [m4_require([TEST3])])
-# | m4_defun([TEST3], [m4_require([TEST2a])])
-# |
-# | AC_INIT
-# | TEST1
-#
-# The dependencies between the macros are:
-#
-# 3 --- 2b
-# / \ is m4_require'd by
-# / \ left -------------------- right
-# 2a ------------ 1
-#
-# If you strictly apply the rules given in the previous section you get:
-#
-# GROW - 2: TEST3
-# GROW - 1: TEST2a; TEST2b
-# GROW: TEST1
-# BODY:
-#
-# (TEST2a, although required by TEST3 is not expanded in GROW - 3
-# because is has already been expanded before in GROW - 1, so it has
-# been AC_PROVIDE'd, so it is not expanded again) so when you undivert
-# the stack of diversions, you get:
-#
-# GROW - 2:
-# GROW - 1:
-# GROW:
-# BODY: TEST3; TEST2a; TEST2b; TEST1
-#
-# i.e., TEST2a is expanded after TEST3 although the latter required the
-# former.
-#
-# Starting from 2.50, we use an implementation provided by Axel Thimm.
-# The idea is simple: the order in which macros are emitted must be the
-# same as the one in which macros are expanded. (The bug above can
-# indeed be described as: a macro has been m4_provide'd before its
-# dependent, but it is emitted after: the lack of correlation between
-# emission and expansion order is guilty).
-#
-# How to do that? You keep the stack of diversions to elaborate the
-# macros, but each time a macro is fully expanded, emit it immediately.
-#
-# In the example above, when TEST2a is expanded, but it's epilogue is
-# not run yet, you have:
-#
-# GROW - 2:
-# GROW - 1: TEST2a
-# GROW: Elaboration of TEST1
-# BODY:
-#
-# The epilogue of TEST2a emits it immediately:
-#
-# GROW - 2:
-# GROW - 1:
-# GROW: Elaboration of TEST1
-# BODY: TEST2a
-#
-# TEST2b then requires TEST3, so right before the epilogue of TEST3, you
-# have:
-#
-# GROW - 2: TEST3
-# GROW - 1: Elaboration of TEST2b
-# GROW: Elaboration of TEST1
-# BODY: TEST2a
-#
-# The epilogue of TEST3 emits it:
-#
-# GROW - 2:
-# GROW - 1: Elaboration of TEST2b
-# GROW: Elaboration of TEST1
-# BODY: TEST2a; TEST3
-#
-# TEST2b is now completely expanded, and emitted:
-#
-# GROW - 2:
-# GROW - 1:
-# GROW: Elaboration of TEST1
-# BODY: TEST2a; TEST3; TEST2b
-#
-# and finally, TEST1 is finished and emitted:
-#
-# GROW - 2:
-# GROW - 1:
-# GROW:
-# BODY: TEST2a; TEST3; TEST2b: TEST1
-#
-# The idea is simple, but the implementation is a bit involved. If
-# you are like me, you will want to see the actual functioning of this
-# implementation to be convinced. The next section gives the full
-# details.
-#
-#
-# The Axel Thimm implementation at work
-# -------------------------------------
-#
-# We consider the macros above, and this configure.ac:
-#
-# AC_INIT
-# TEST1
-#
-# You should keep the definitions of _m4_defun_pro, _m4_defun_epi, and
-# m4_require at hand to follow the steps.
-#
-# This implementation tries not to assume that the current diversion is
-# BODY, so as soon as a macro (m4_defun'd) is expanded, we first
-# record the current diversion under the name _m4_divert_dump (denoted
-# DUMP below for short). This introduces an important difference with
-# the previous versions of Autoconf: you cannot use m4_require if you
-# are not inside an m4_defun'd macro, and especially, you cannot
-# m4_require directly from the top level.
-#
-# We have not tried to simulate the old behavior (better yet, we
-# diagnose it), because it is too dangerous: a macro m4_require'd from
-# the top level is expanded before the body of `configure', i.e., before
-# any other test was run. I let you imagine the result of requiring
-# AC_STDC_HEADERS for instance, before AC_PROG_CC was actually run....
-#
-# After AC_INIT was run, the current diversion is BODY.
-# * AC_INIT was run
-# DUMP: undefined
-# diversion stack: BODY |-
-#
-# * TEST1 is expanded
-# The prologue of TEST1 sets _m4_divert_dump, which is the diversion
-# where the current elaboration will be dumped, to the current
-# diversion. It also m4_divert_push to GROW, where the full
-# expansion of TEST1 and its dependencies will be elaborated.
-# DUMP: BODY
-# BODY: empty
-# diversions: GROW, BODY |-
-#
-# * TEST1 requires TEST2a
-# _m4_require_call m4_divert_pushes another temporary diversion,
-# GROW - 1, and expands TEST2a in there.
-# DUMP: BODY
-# BODY: empty
-# GROW - 1: TEST2a
-# diversions: GROW - 1, GROW, BODY |-
-# Then the content of the temporary diversion is moved to DUMP and the
-# temporary diversion is popped.
-# DUMP: BODY
-# BODY: TEST2a
-# diversions: GROW, BODY |-
-#
-# * TEST1 requires TEST2b
-# Again, _m4_require_call pushes GROW - 1 and heads to expand TEST2b.
-# DUMP: BODY
-# BODY: TEST2a
-# diversions: GROW - 1, GROW, BODY |-
-#
-# * TEST2b requires TEST3
-# _m4_require_call pushes GROW - 2 and expands TEST3 here.
-# (TEST3 requires TEST2a, but TEST2a has already been m4_provide'd, so
-# nothing happens.)
-# DUMP: BODY
-# BODY: TEST2a
-# GROW - 2: TEST3
-# diversions: GROW - 2, GROW - 1, GROW, BODY |-
-# Then the diversion is appended to DUMP, and popped.
-# DUMP: BODY
-# BODY: TEST2a; TEST3
-# diversions: GROW - 1, GROW, BODY |-
-#
-# * TEST1 requires TEST2b (contd.)
-# The content of TEST2b is expanded...
-# DUMP: BODY
-# BODY: TEST2a; TEST3
-# GROW - 1: TEST2b,
-# diversions: GROW - 1, GROW, BODY |-
-# ... and moved to DUMP.
-# DUMP: BODY
-# BODY: TEST2a; TEST3; TEST2b
-# diversions: GROW, BODY |-
-#
-# * TEST1 is expanded: epilogue
-# TEST1's own content is in GROW...
-# DUMP: BODY
-# BODY: TEST2a; TEST3; TEST2b
-# GROW: TEST1
-# diversions: BODY |-
-# ... and it's epilogue moves it to DUMP and then undefines DUMP.
-# DUMP: undefined
-# BODY: TEST2a; TEST3; TEST2b; TEST1
-# diversions: BODY |-
-#
-#
-# The third idea: track macros provided before they were required
-# ---------------------------------------------------------------
-#
-# Using just the first two ideas, Autoconf 2.50 through 2.63 still had
-# a subtle bug for more than seven years. Let's consider the
-# following example to explain the bug:
-#
-# | m4_defun([TEST1], [1])
-# | m4_defun([TEST2], [2[]m4_require([TEST1])])
-# | m4_defun([TEST3], [3 TEST1 m4_require([TEST2])])
-# | TEST3
-#
-# After the prologue of TEST3, we are collecting text in GROW with the
-# intent of dumping it in BODY during the epilogue. Next, we
-# encounter the direct invocation of TEST1, which provides the macro
-# in place in GROW. From there, we encounter a requirement for TEST2,
-# which must be collected in a new diversion. While expanding TEST2,
-# we encounter a requirement for TEST1, but since it has already been
-# expanded, the Axel Thimm algorithm states that we can treat it as a
-# no-op. But that would lead to an end result of `2 3 1', meaning
-# that we have once again output a macro (TEST2) prior to its
-# requirements (TEST1).
-#
-# The problem can only occur if a single defun'd macro first provides,
-# then later indirectly requires, the same macro. Note that directly
-# expanding then requiring a macro is okay: because the dependency was
-# met, the require phase can be a no-op. For that matter, the outer
-# macro can even require two helpers, where the first helper expands
-# the macro, and the second helper indirectly requires the macro.
-# Out-of-order expansion is only present if the inner macro is
-# required by something that will be hoisted in front of where the
-# direct expansion occurred. In other words, we must be careful not
-# to warn on:
-#
-# | m4_defun([TEST4], [4])
-# | m4_defun([TEST5], [5 TEST4 m4_require([TEST4])])
-# | TEST5 => 5 4
-#
-# or even the more complex:
-#
-# | m4_defun([TEST6], [6])
-# | m4_defun([TEST7], [7 TEST6])
-# | m4_defun([TEST8], [8 m4_require([TEST6])])
-# | m4_defun([TEST9], [9 m4_require([TEST8])])
-# | m4_defun([TEST10], [10 m4_require([TEST7]) m4_require([TEST9])])
-# | TEST10 => 7 6 8 9 10
-#
-# So, to detect whether a require was direct or indirect, m4_defun and
-# m4_require track the name of the macro that caused a diversion to be
-# created (using the stack _m4_diverting, coupled with an O(1) lookup
-# _m4_diverting([NAME])), and m4_provide stores the name associated
-# with the diversion at which a macro was provided. A require call is
-# direct if it occurs within the same diversion where the macro was
-# provided, or if the diversion associated with the providing context
-# has been collected.
-#
-# The implementation of the warning involves tracking the set of
-# macros which have been provided since the start of the outermost
-# defun'd macro (the set is named _m4_provide). When starting an
-# outermost macro, the set is emptied; when a macro is provided, it is
-# added to the set; when require expands the body of a macro, it is
-# removed from the set; and when a macro is indirectly required, the
-# set is checked. If a macro is in the set, then it has been provided
-# before it was required, and we satisfy dependencies by expanding the
-# macro as if it had never been provided; in the example given above,
-# this means we now output `1 2 3 1'. Meanwhile, a warning is issued
-# to inform the user that her macros trigger the bug in older autoconf
-# versions, and that her output file now contains redundant contents
-# (and possibly new problems, if the repeated macro was not
-# idempotent). Meanwhile, macros defined by m4_defun_once instead of
-# m4_defun are idempotent, avoiding any warning or duplicate output.
-#
-#
-# 2. Keeping track of the expansion stack
-# =======================================
-#
-# When M4 expansion goes wrong it is often extremely hard to find the
-# path amongst macros that drove to the failure. What is needed is
-# the stack of macro `calls'. One could imagine that GNU M4 would
-# maintain a stack of macro expansions, unfortunately it doesn't, so
-# we do it by hand. This is of course extremely costly, but the help
-# this stack provides is worth it. Nevertheless to limit the
-# performance penalty this is implemented only for m4_defun'd macros,
-# not for define'd macros.
-#
-# Each time we enter an m4_defun'd macros, we add a definition in
-# _m4_expansion_stack, and when we exit the macro, we remove it (thanks
-# to pushdef/popdef). m4_stack_foreach is used to print the expansion
-# stack in the rare cases when it's needed.
-#
-# In addition, we want to detect circular m4_require dependencies.
-# Each time we expand a macro FOO we define _m4_expanding(FOO); and
-# m4_require(BAR) simply checks whether _m4_expanding(BAR) is defined.
-
-
-# m4_expansion_stack
-# ------------------
-# Expands to the entire contents of the expansion stack. The caller
-# must supply a trailing newline. This macro always prints a
-# location; check whether _m4_expansion_stack is defined to filter out
-# the case when no defun'd macro is in force.
-m4_define([m4_expansion_stack],
-[m4_stack_foreach_sep_lifo([_$0], [_$0_entry(], [)
-])m4_location[: the top level]])
-
-# _m4_expansion_stack_entry(MACRO)
-# --------------------------------
-# Format an entry for MACRO found on the expansion stack.
-m4_define([_m4_expansion_stack_entry],
-[_m4_defn([m4_location($1)])[: $1 is expanded from...]])
-
-# m4_expansion_stack_push(MACRO)
-# ------------------------------
-# Form an entry of the expansion stack on entry to MACRO and push it.
-m4_define([m4_expansion_stack_push],
-[m4_pushdef([_m4_expansion_stack], [$1])])
-
-
-# _m4_divert(GROW)
-# ----------------
-# This diversion is used by the m4_defun/m4_require machinery. It is
-# important to keep room before GROW because for each nested
-# AC_REQUIRE we use an additional diversion (i.e., two m4_require's
-# will use GROW - 2. More than 3 levels has never seemed to be
-# needed.)
-#
-# ...
-# - GROW - 2
-# m4_require'd code, 2 level deep
-# - GROW - 1
-# m4_require'd code, 1 level deep
-# - GROW
-# m4_defun'd macros are elaborated here.
-
-m4_define([_m4_divert(GROW)], 10000)
-
-
-# _m4_defun_pro(MACRO-NAME)
-# -------------------------
-# The prologue for Autoconf macros.
-#
-# This is called frequently, so minimize the number of macro invocations
-# by avoiding dnl and m4_defn overhead.
-m4_define([_m4_defun_pro],
-[m4_ifdef([_m4_expansion_stack], [], [_m4_defun_pro_outer([$1])])]dnl
-[m4_expansion_stack_push([$1])m4_pushdef([_m4_expanding($1)])])
-
-m4_define([_m4_defun_pro_outer],
-[m4_set_delete([_m4_provide])]dnl
-[m4_pushdef([_m4_diverting([$1])])m4_pushdef([_m4_diverting], [$1])]dnl
-[m4_pushdef([_m4_divert_dump], m4_divnum)m4_divert_push([GROW])])
-
-# _m4_defun_epi(MACRO-NAME)
-# -------------------------
-# The Epilogue for Autoconf macros. MACRO-NAME only helps tracing
-# the PRO/EPI pairs.
-#
-# This is called frequently, so minimize the number of macro invocations
-# by avoiding dnl and m4_popdef overhead.
-m4_define([_m4_defun_epi],
-[_m4_popdef([_m4_expanding($1)], [_m4_expansion_stack])]dnl
-[m4_ifdef([_m4_expansion_stack], [], [_m4_defun_epi_outer([$1])])]dnl
-[m4_provide([$1])])
-
-m4_define([_m4_defun_epi_outer],
-[_m4_popdef([_m4_divert_dump], [_m4_diverting([$1])], [_m4_diverting])]dnl
-[m4_divert_pop([GROW])m4_undivert([GROW])])
-
-
-# _m4_divert_dump
-# ---------------
-# If blank, we are outside of any defun'd macro. Otherwise, expands
-# to the diversion number (not name) where require'd macros should be
-# moved once completed.
-m4_define([_m4_divert_dump])
-
-
-# m4_divert_require(DIVERSION, NAME-TO-CHECK, [BODY-TO-EXPAND])
-# -------------------------------------------------------------
-# Same as m4_require, but BODY-TO-EXPAND goes into the named DIVERSION;
-# requirements still go in the current diversion though.
-#
-m4_define([m4_divert_require],
-[m4_ifdef([_m4_expanding($2)],
- [m4_fatal([$0: circular dependency of $2])])]dnl
-[m4_if(_m4_divert_dump, [],
- [m4_fatal([$0($2): cannot be used outside of an m4_defun'd macro])])]dnl
-[m4_provide_if([$2], [],
- [_m4_require_call([$2], [$3], _m4_divert([$1], [-]))])])
-
-
-# m4_defun(NAME, EXPANSION, [MACRO = m4_define])
-# ----------------------------------------------
-# Define a macro NAME which automatically provides itself. Add
-# machinery so the macro automatically switches expansion to the
-# diversion stack if it is not already using it, prior to EXPANSION.
-# In this case, once finished, it will bring back all the code
-# accumulated in the diversion stack. This, combined with m4_require,
-# achieves the topological ordering of macros. We don't use this
-# macro to define some frequently called macros that are not involved
-# in ordering constraints, to save m4 processing.
-#
-# MACRO is an undocumented argument; when set to m4_pushdef, and NAME
-# is already defined, the new definition is added to the pushdef
-# stack, rather than overwriting the current definition. It can thus
-# be used to write self-modifying macros, which pop themselves to a
-# previously m4_define'd definition so that subsequent use of the
-# macro is faster.
-m4_define([m4_defun],
-[m4_define([m4_location($1)], m4_location)]dnl
-[m4_default([$3], [m4_define])([$1],
- [_m4_defun_pro(]m4_dquote($[0])[)$2[]_m4_defun_epi(]m4_dquote($[0])[)])])
-
-
-# m4_defun_init(NAME, INIT, COMMON)
-# ---------------------------------
-# Like m4_defun, but split EXPANSION into two portions: INIT which is
-# done only the first time NAME is invoked, and COMMON which is
-# expanded every time.
-#
-# For now, the COMMON definition is always m4_define'd, giving an even
-# lighter-weight definition. m4_defun allows self-providing, but once
-# a macro is provided, m4_require no longer cares if it is m4_define'd
-# or m4_defun'd. m4_defun also provides location tracking to identify
-# dependency bugs, but once the INIT has been expanded, we know there
-# are no dependency bugs. However, if a future use needs COMMON to be
-# m4_defun'd, we can add a parameter, similar to the third parameter
-# to m4_defun.
-m4_define([m4_defun_init],
-[m4_define([$1], [$3[]])m4_defun([$1],
- [$2[]_m4_popdef(]m4_dquote($[0])[)m4_indir(]m4_dquote($[0])dnl
-[m4_if(]m4_dquote($[#])[, [0], [], ]m4_dquote([,$]@)[))], [m4_pushdef])])
-
-
-# m4_defun_once(NAME, EXPANSION)
-# ------------------------------
-# Like m4_defun, but guarantee that EXPANSION only happens once
-# (thereafter, using NAME is a no-op).
-#
-# If _m4_divert_dump is empty, we are called at the top level;
-# otherwise, we must ensure that we are required in front of the
-# current defun'd macro. Use a helper macro so that EXPANSION need
-# only occur once in the definition of NAME, since it might be large.
-m4_define([m4_defun_once],
-[m4_define([m4_location($1)], m4_location)]dnl
-[m4_define([$1], [_m4_defun_once([$1], [$2], m4_if(_m4_divert_dump, [],
- [[_m4_defun_pro([$1])m4_unquote(], [)_m4_defun_epi([$1])]],
-m4_ifdef([_m4_diverting([$1])], [-]), [-], [[m4_unquote(], [)]],
- [[_m4_require_call([$1],], [, _m4_divert_dump)]]))])])
-
-m4_define([_m4_defun_once],
-[m4_pushdef([$1])$3[$2[]m4_provide([$1])]$4])
-
-
-# m4_pattern_forbid(ERE, [WHY])
-# -----------------------------
-# Declare that no token matching the forbidden extended regular
-# expression ERE should be seen in the output unless...
-m4_define([m4_pattern_forbid], [])
-
-
-# m4_pattern_allow(ERE)
-# ---------------------
-# ... that token also matches the allowed extended regular expression ERE.
-# Both used via traces.
-m4_define([m4_pattern_allow], [])
-
-
-## --------------------------------- ##
-## 11. Dependencies between macros. ##
-## --------------------------------- ##
-
-
-# m4_before(THIS-MACRO-NAME, CALLED-MACRO-NAME)
-# ---------------------------------------------
-# Issue a warning if CALLED-MACRO-NAME was called before THIS-MACRO-NAME.
-m4_define([m4_before],
-[m4_provide_if([$2],
- [m4_warn([syntax], [$2 was called before $1])])])
-
-
-# m4_require(NAME-TO-CHECK, [BODY-TO-EXPAND = NAME-TO-CHECK])
-# -----------------------------------------------------------
-# If NAME-TO-CHECK has never been expanded (actually, if it is not
-# m4_provide'd), expand BODY-TO-EXPAND *before* the current macro
-# expansion; follow the expansion with a newline. Once expanded, emit
-# it in _m4_divert_dump. Keep track of the m4_require chain in
-# _m4_expansion_stack.
-#
-# The normal cases are:
-#
-# - NAME-TO-CHECK == BODY-TO-EXPAND
-# Which you can use for regular macros with or without arguments, e.g.,
-# m4_require([AC_PROG_CC], [AC_PROG_CC])
-# m4_require([AC_CHECK_HEADERS(threads.h)], [AC_CHECK_HEADERS(threads.h)])
-# which is just the same as
-# m4_require([AC_PROG_CC])
-# m4_require([AC_CHECK_HEADERS(threads.h)])
-#
-# - BODY-TO-EXPAND == m4_indir([NAME-TO-CHECK])
-# In the case of macros with irregular names. For instance:
-# m4_require([AC_LANG_COMPILER(C)], [indir([AC_LANG_COMPILER(C)])])
-# which means `if the macro named `AC_LANG_COMPILER(C)' (the parens are
-# part of the name, it is not an argument) has not been run, then
-# call it.'
-# Had you used
-# m4_require([AC_LANG_COMPILER(C)], [AC_LANG_COMPILER(C)])
-# then m4_require would have tried to expand `AC_LANG_COMPILER(C)', i.e.,
-# call the macro `AC_LANG_COMPILER' with `C' as argument.
-#
-# You could argue that `AC_LANG_COMPILER', when it receives an argument
-# such as `C' should dispatch the call to `AC_LANG_COMPILER(C)'. But this
-# `extension' prevents `AC_LANG_COMPILER' from having actual arguments that
-# it passes to `AC_LANG_COMPILER(C)'.
-#
-# This is called frequently, so minimize the number of macro invocations
-# by avoiding dnl and other overhead on the common path.
-m4_define([m4_require],
-[m4_ifdef([_m4_expanding($1)],
- [m4_fatal([$0: circular dependency of $1])])]dnl
-[m4_if(_m4_divert_dump, [],
- [m4_fatal([$0($1): cannot be used outside of an ]dnl
-m4_if([$0], [m4_require], [[m4_defun]], [[AC_DEFUN]])['d macro])])]dnl
-[m4_provide_if([$1], [m4_set_contains([_m4_provide], [$1],
- [_m4_require_check([$1], _m4_defn([m4_provide($1)]), [$0])], [m4_ignore])],
- [_m4_require_call])([$1], [$2], _m4_divert_dump)])
-
-
-# _m4_require_call(NAME-TO-CHECK, [BODY-TO-EXPAND = NAME-TO-CHECK],
-# DIVERSION-NUMBER)
-# -----------------------------------------------------------------
-# If m4_require decides to expand the body, it calls this macro. The
-# expansion is placed in DIVERSION-NUMBER.
-#
-# This is called frequently, so minimize the number of macro invocations
-# by avoiding dnl and other overhead on the common path.
-# The use of a witness macro protecting the warning allows aclocal
-# to silence any warnings when probing for what macros are required
-# and must therefore be located, when using the Autoconf-without-aclocal-m4
-# autom4te language. For more background, see:
-# https://lists.gnu.org/archive/html/automake-patches/2012-11/msg00035.html
-m4_define([_m4_require_call],
-[m4_pushdef([_m4_divert_grow], m4_decr(_m4_divert_grow))]dnl
-[m4_pushdef([_m4_diverting([$1])])m4_pushdef([_m4_diverting], [$1])]dnl
-[m4_divert_push(_m4_divert_grow, [-])]dnl
-[m4_if([$2], [], [$1], [$2])
-m4_provide_if([$1], [m4_set_remove([_m4_provide], [$1])],
- [m4_ifndef([m4_require_silent_probe],
- [m4_warn([syntax], [$1 is m4_require'd but not m4_defun'd])])])]dnl
-[_m4_divert_raw($3)_m4_undivert(_m4_divert_grow)]dnl
-[m4_divert_pop(_m4_divert_grow)_m4_popdef([_m4_divert_grow],
-[_m4_diverting([$1])], [_m4_diverting])])
-
-
-# _m4_require_check(NAME-TO-CHECK, OWNER, CALLER)
-# -----------------------------------------------
-# NAME-TO-CHECK has been identified as previously expanded in the
-# diversion owned by OWNER. If this is a problem, warn on behalf of
-# CALLER and return _m4_require_call; otherwise return m4_ignore.
-m4_define([_m4_require_check],
-[m4_if(_m4_defn([_m4_diverting]), [$2], [m4_ignore],
- m4_ifdef([_m4_diverting([$2])], [-]), [-], [m4_warn([syntax],
- [$3: `$1' was expanded before it was required
-http://www.gnu.org/software/autoconf/manual/autoconf.html#Expanded-Before-Required])_m4_require_call],
- [m4_ignore])])
-
-
-# _m4_divert_grow
-# ---------------
-# The counter for _m4_require_call.
-m4_define([_m4_divert_grow], _m4_divert([GROW]))
-
-
-# m4_expand_once(TEXT, [WITNESS = TEXT])
-# --------------------------------------
-# If TEXT has never been expanded, expand it *here*. Use WITNESS as
-# as a memory that TEXT has already been expanded.
-m4_define([m4_expand_once],
-[m4_provide_if(m4_default_quoted([$2], [$1]),
- [],
- [m4_provide(m4_default_quoted([$2], [$1]))[]$1])])
-
-
-# m4_provide(MACRO-NAME)
-# ----------------------
-m4_define([m4_provide],
-[m4_ifdef([m4_provide($1)], [],
-[m4_set_add([_m4_provide], [$1], [m4_define([m4_provide($1)],
- m4_ifdef([_m4_diverting], [_m4_defn([_m4_diverting])]))])])])
-
-
-# m4_provide_if(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
-# -------------------------------------------------------
-# If MACRO-NAME is provided do IF-PROVIDED, else IF-NOT-PROVIDED.
-# The purpose of this macro is to provide the user with a means to
-# check macros which are provided without letting her know how the
-# information is coded.
-m4_define([m4_provide_if],
-[m4_ifdef([m4_provide($1)],
- [$2], [$3])])
-
-
-## --------------------- ##
-## 12. Text processing. ##
-## --------------------- ##
-
-
-# m4_cr_letters
-# m4_cr_LETTERS
-# m4_cr_Letters
-# -------------
-m4_define([m4_cr_letters], [abcdefghijklmnopqrstuvwxyz])
-m4_define([m4_cr_LETTERS], [ABCDEFGHIJKLMNOPQRSTUVWXYZ])
-m4_define([m4_cr_Letters],
-m4_defn([m4_cr_letters])dnl
-m4_defn([m4_cr_LETTERS])dnl
-)
-
-
-# m4_cr_digits
-# ------------
-m4_define([m4_cr_digits], [0123456789])
-
-
-# m4_cr_alnum
-# -----------
-m4_define([m4_cr_alnum],
-m4_defn([m4_cr_Letters])dnl
-m4_defn([m4_cr_digits])dnl
-)
-
-
-# m4_cr_symbols1
-# m4_cr_symbols2
-# --------------
-m4_define([m4_cr_symbols1],
-m4_defn([m4_cr_Letters])dnl
-_)
-
-m4_define([m4_cr_symbols2],
-m4_defn([m4_cr_symbols1])dnl
-m4_defn([m4_cr_digits])dnl
-)
-
-# m4_cr_all
-# ---------
-# The character range representing everything, with `-' as the last
-# character, since it is special to m4_translit. Use with care, because
-# it contains characters special to M4 (fortunately, both ASCII and EBCDIC
-# have [] in order, so m4_defn([m4_cr_all]) remains a valid string). It
-# also contains characters special to terminals, so it should never be
-# displayed in an error message. Also, attempts to map [ and ] to other
-# characters via m4_translit must deal with the fact that m4_translit does
-# not add quotes to the output.
-#
-# In EBCDIC, $ is immediately followed by *, which leads to problems
-# if m4_cr_all is inlined into a macro definition; so swap them.
-#
-# It is mainly useful in generating inverted character range maps, for use
-# in places where m4_translit is faster than an equivalent m4_bpatsubst;
-# the regex `[^a-z]' is equivalent to:
-# m4_translit(m4_dquote(m4_defn([m4_cr_all])), [a-z])
-m4_define([m4_cr_all],
-m4_translit(m4_dquote(m4_format(m4_dquote(m4_for(
- ,1,255,,[[%c]]))m4_for([i],1,255,,[,i]))), [$*-], [*$])-)
-
-
-# _m4_define_cr_not(CATEGORY)
-# ---------------------------
-# Define m4_cr_not_CATEGORY as the inverse of m4_cr_CATEGORY.
-m4_define([_m4_define_cr_not],
-[m4_define([m4_cr_not_$1],
- m4_translit(m4_dquote(m4_defn([m4_cr_all])),
- m4_defn([m4_cr_$1])))])
-
-
-# m4_cr_not_letters
-# m4_cr_not_LETTERS
-# m4_cr_not_Letters
-# m4_cr_not_digits
-# m4_cr_not_alnum
-# m4_cr_not_symbols1
-# m4_cr_not_symbols2
-# ------------------
-# Inverse character sets
-_m4_define_cr_not([letters])
-_m4_define_cr_not([LETTERS])
-_m4_define_cr_not([Letters])
-_m4_define_cr_not([digits])
-_m4_define_cr_not([alnum])
-_m4_define_cr_not([symbols1])
-_m4_define_cr_not([symbols2])
-
-
-# m4_newline([STRING])
-# --------------------
-# Expands to a newline, possibly followed by STRING. Exists mostly for
-# formatting reasons.
-m4_define([m4_newline], [
-$1])
-
-
-# m4_re_escape(STRING)
-# --------------------
-# Escape RE active characters in STRING.
-m4_define([m4_re_escape],
-[m4_bpatsubst([$1],
- [[][*+.?\^$]], [\\\&])])
-
-
-# m4_re_string
-# ------------
-# Regexp for `[a-zA-Z_0-9]*'
-# m4_dquote provides literal [] for the character class.
-m4_define([m4_re_string],
-m4_dquote(m4_defn([m4_cr_symbols2]))dnl
-[*]dnl
-)
-
-
-# m4_re_word
-# ----------
-# Regexp for `[a-zA-Z_][a-zA-Z_0-9]*'
-m4_define([m4_re_word],
-m4_dquote(m4_defn([m4_cr_symbols1]))dnl
-m4_defn([m4_re_string])dnl
-)
-
-
-# m4_tolower(STRING)
-# m4_toupper(STRING)
-# ------------------
-# These macros convert STRING to lowercase or uppercase.
-#
-# Rather than expand the m4_defn each time, we inline them up front.
-m4_define([m4_tolower],
-[m4_translit([[$1]], ]m4_dquote(m4_defn([m4_cr_LETTERS]))[,
- ]m4_dquote(m4_defn([m4_cr_letters]))[)])
-m4_define([m4_toupper],
-[m4_translit([[$1]], ]m4_dquote(m4_defn([m4_cr_letters]))[,
- ]m4_dquote(m4_defn([m4_cr_LETTERS]))[)])
-
-
-# m4_split(STRING, [REGEXP])
-# --------------------------
-# Split STRING into an m4 list of quoted elements. The elements are
-# quoted with [ and ]. Beginning spaces and end spaces *are kept*.
-# Use m4_strip to remove them.
-#
-# REGEXP specifies where to split. Default is [\t ]+.
-#
-# If STRING is empty, the result is an empty list.
-#
-# Pay attention to the m4_changequotes. When m4 reads the definition of
-# m4_split, it still has quotes set to [ and ]. Luckily, these are matched
-# in the macro body, so the definition is stored correctly. Use the same
-# alternate quotes as m4_noquote; it must be unlikely to appear in $1.
-#
-# Also, notice that $1 is quoted twice, since we want the result to
-# be quoted. Then you should understand that the argument of
-# patsubst is -=<{(STRING)}>=- (i.e., with additional -=<{( and )}>=-).
-#
-# This macro is safe on active symbols, i.e.:
-# m4_define(active, ACTIVE)
-# m4_split([active active ])end
-# => [active], [active], []end
-#
-# Optimize on regex of ` ' (space), since m4_foreach_w already guarantees
-# that the list contains single space separators, and a common case is
-# splitting a single-element list. This macro is called frequently,
-# so avoid unnecessary dnl inside the definition.
-m4_define([m4_split],
-[m4_if([$1], [], [],
- [$2], [ ], [m4_if(m4_index([$1], [ ]), [-1], [[[$1]]],
- [_$0([$1], [$2], [, ])])],
- [$2], [], [_$0([$1], [[ ]+], [, ])],
- [_$0([$1], [$2], [, ])])])
-
-m4_define([_m4_split],
-[m4_changequote([-=<{(],[)}>=-])]dnl
-[[m4_bpatsubst(-=<{(-=<{($1)}>=-)}>=-, -=<{($2)}>=-,
- -=<{(]$3[)}>=-)]m4_changequote([, ])])
-
-
-# m4_chomp(STRING)
-# m4_chomp_all(STRING)
-# --------------------
-# Return STRING quoted, but without a trailing newline. m4_chomp
-# removes at most one newline, while m4_chomp_all removes all
-# consecutive trailing newlines. Embedded newlines are not touched,
-# and a trailing backslash-newline leaves just a trailing backslash.
-#
-# m4_bregexp is slower than m4_index, and we don't always want to
-# remove all newlines; hence the two variants. We massage characters
-# to give a nicer pattern to match, particularly since m4_bregexp is
-# line-oriented. Both versions must guarantee a match, to avoid bugs
-# with precision -1 in m4_format in older m4.
-m4_define([m4_chomp],
-[m4_format([[%.*s]], m4_index(m4_translit([[$1]], [
-/.], [/ ])[./.], [/.]), [$1])])
-
-m4_define([m4_chomp_all],
-[m4_format([[%.*s]], m4_bregexp(m4_translit([[$1]], [
-/], [/ ]), [/*$]), [$1])])
-
-
-# m4_flatten(STRING)
-# ------------------
-# If STRING contains end of lines, replace them with spaces. If there
-# are backslashed end of lines, remove them. This macro is safe with
-# active symbols.
-# m4_define(active, ACTIVE)
-# m4_flatten([active
-# act\
-# ive])end
-# => active activeend
-#
-# In m4, m4_bpatsubst is expensive, so first check for a newline.
-m4_define([m4_flatten],
-[m4_if(m4_index([$1], [
-]), [-1], [[$1]],
- [m4_translit(m4_bpatsubst([[[$1]]], [\\
-]), [
-], [ ])])])
-
-
-# m4_strip(STRING)
-# ----------------
-# Expands into STRING with tabs and spaces singled out into a single
-# space, and removing leading and trailing spaces.
-#
-# This macro is robust to active symbols.
-# m4_define(active, ACTIVE)
-# m4_strip([ active <tab> <tab>active ])end
-# => active activeend
-#
-# First, notice that we guarantee trailing space. Why? Because regular
-# expressions are greedy, and `.* ?' would always group the space into the
-# .* portion. The algorithm is simpler by avoiding `?' at the end. The
-# algorithm correctly strips everything if STRING is just ` '.
-#
-# Then notice the second pattern: it is in charge of removing the
-# leading/trailing spaces. Why not just `[^ ]'? Because they are
-# applied to over-quoted strings, i.e. more or less [STRING], due
-# to the limitations of m4_bpatsubsts. So the leading space in STRING
-# is the *second* character; equally for the trailing space.
-m4_define([m4_strip],
-[m4_bpatsubsts([$1 ],
- [[ ]+], [ ],
- [^. ?\(.*\) .$], [[[\1]]])])
-
-
-# m4_normalize(STRING)
-# --------------------
-# Apply m4_flatten and m4_strip to STRING.
-#
-# The argument is quoted, so that the macro is robust to active symbols:
-#
-# m4_define(active, ACTIVE)
-# m4_normalize([ act\
-# ive
-# active ])end
-# => active activeend
-
-m4_define([m4_normalize],
-[m4_strip(m4_flatten([$1]))])
-
-
-
-# m4_join(SEP, ARG1, ARG2...)
-# ---------------------------
-# Produce ARG1SEPARG2...SEPARGn. Avoid back-to-back SEP when a given ARG
-# is the empty string. No expansion is performed on SEP or ARGs.
-#
-# Since the number of arguments to join can be arbitrarily long, we
-# want to avoid having more than one $@ in the macro definition;
-# otherwise, the expansion would require twice the memory of the already
-# long list. Hence, m4_join merely looks for the first non-empty element,
-# and outputs just that element; while _m4_join looks for all non-empty
-# elements, and outputs them following a separator. The final trick to
-# note is that we decide between recursing with $0 or _$0 based on the
-# nested m4_if ending with `_'.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_join],
-[m4_if([$#], [1], [],
- [$#], [2], [[$2]],
- [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift2($@))])])
-m4_define([_m4_join],
-[m4_if([$#$2], [2], [],
- [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift2($@))])])
-
-# m4_joinall(SEP, ARG1, ARG2...)
-# ------------------------------
-# Produce ARG1SEPARG2...SEPARGn. An empty ARG results in back-to-back SEP.
-# No expansion is performed on SEP or ARGs.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_joinall], [[$2]_$0([$1], m4_shift($@))])
-m4_define([_m4_joinall],
-[m4_if([$#], [2], [], [[$1$3]$0([$1], m4_shift2($@))])])
-
-# m4_combine([SEPARATOR], PREFIX-LIST, [INFIX], SUFFIX...)
-# --------------------------------------------------------
-# Produce the pairwise combination of every element in the quoted,
-# comma-separated PREFIX-LIST with every element from the SUFFIX arguments.
-# Each pair is joined with INFIX, and pairs are separated by SEPARATOR.
-# No expansion occurs on SEPARATOR, INFIX, or elements of either list.
-#
-# For example:
-# m4_combine([, ], [[a], [b], [c]], [-], [1], [2], [3])
-# => a-1, a-2, a-3, b-1, b-2, b-3, c-1, c-2, c-3
-#
-# This definition is a bit hairy; the thing to realize is that we want
-# to construct m4_map_args_sep([[prefix$3]], [], [[$1]], m4_shift3($@))
-# as the inner loop, using each prefix generated by the outer loop,
-# and without recalculating m4_shift3 every outer iteration.
-m4_define([m4_combine],
-[m4_if([$2], [], [], m4_eval([$# > 3]), [1],
-[m4_map_args_sep([m4_map_args_sep(m4_dquote(], [)[[$3]], [], [[$1]],]]]dnl
-[m4_dquote(m4_dquote(m4_shift3($@)))[[)], [[$1]], $2)])])
-
-
-# m4_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR`'STRING'
-# at the end. It is valid to use this macro with MACRO-NAME undefined,
-# in which case no SEPARATOR is added. Be aware that the criterion is
-# `not being defined', and not `not being empty'.
-#
-# Note that neither STRING nor SEPARATOR are expanded here; rather, when
-# you expand MACRO-NAME, they will be expanded at that point in time.
-#
-# This macro is robust to active symbols. It can be used to grow
-# strings.
-#
-# | m4_define(active, ACTIVE)dnl
-# | m4_append([sentence], [This is an])dnl
-# | m4_append([sentence], [ active ])dnl
-# | m4_append([sentence], [symbol.])dnl
-# | sentence
-# | m4_undefine([active])dnl
-# | sentence
-# => This is an ACTIVE symbol.
-# => This is an active symbol.
-#
-# It can be used to define hooks.
-#
-# | m4_define(active, ACTIVE)dnl
-# | m4_append([hooks], [m4_define([act1], [act2])])dnl
-# | m4_append([hooks], [m4_define([act2], [active])])dnl
-# | m4_undefine([active])dnl
-# | act1
-# | hooks
-# | act1
-# => act1
-# =>
-# => active
-#
-# It can also be used to create lists, although this particular usage was
-# broken prior to autoconf 2.62.
-# | m4_append([list], [one], [, ])dnl
-# | m4_append([list], [two], [, ])dnl
-# | m4_append([list], [three], [, ])dnl
-# | list
-# | m4_dquote(list)
-# => one, two, three
-# => [one],[two],[three]
-#
-# Note that m4_append can benefit from amortized O(n) m4 behavior, if
-# the underlying m4 implementation is smart enough to avoid copying existing
-# contents when enlarging a macro's definition into any pre-allocated storage
-# (m4 1.4.x unfortunately does not implement this optimization). We do
-# not implement m4_prepend, since it is inherently O(n^2) (pre-allocated
-# storage only occurs at the end of a macro, so the existing contents must
-# always be moved).
-#
-# Use _m4_defn for speed.
-m4_define([m4_append],
-[m4_define([$1], m4_ifdef([$1], [_m4_defn([$1])[$3]])[$2])])
-
-
-# m4_append_uniq(MACRO-NAME, STRING, [SEPARATOR], [IF-UNIQ], [IF-DUP])
-# --------------------------------------------------------------------
-# Like `m4_append', but append only if not yet present. Additionally,
-# expand IF-UNIQ if STRING was appended, or IF-DUP if STRING was already
-# present. Also, warn if SEPARATOR is not empty and occurs within STRING,
-# as the algorithm no longer guarantees uniqueness.
-#
-# Note that while m4_append can be O(n) (depending on the quality of the
-# underlying M4 implementation), m4_append_uniq is inherently O(n^2)
-# because each append operation searches the entire string.
-m4_define([m4_append_uniq],
-[m4_ifval([$3], [m4_if(m4_index([$2], [$3]), [-1], [],
- [m4_warn([syntax],
- [$0: `$2' contains `$3'])])])_$0($@)])
-m4_define([_m4_append_uniq],
-[m4_ifdef([$1],
- [m4_if(m4_index([$3]_m4_defn([$1])[$3], [$3$2$3]), [-1],
- [m4_append([$1], [$2], [$3])$4], [$5])],
- [m4_define([$1], [$2])$4])])
-
-# m4_append_uniq_w(MACRO-NAME, STRINGS)
-# -------------------------------------
-# For each of the words in the whitespace separated list STRINGS, append
-# only the unique strings to the definition of MACRO-NAME.
-#
-# Use _m4_defn for speed.
-m4_define([m4_append_uniq_w],
-[m4_map_args_w([$2], [_m4_append_uniq([$1],], [, [ ])])])
-
-
-# m4_escape(STRING)
-# -----------------
-# Output quoted STRING, but with embedded #, $, [ and ] turned into
-# quadrigraphs.
-#
-# It is faster to check if STRING is already good using m4_translit
-# than to blindly perform four m4_bpatsubst.
-#
-# Because the translit is stripping quotes, it must also neutralize
-# anything that might be in a macro name, as well as comments, commas,
-# and parentheses. All the problem characters are unified so that a
-# single m4_index can scan the result.
-#
-# Rather than expand m4_defn every time m4_escape is expanded, we
-# inline its expansion up front.
-m4_define([m4_escape],
-[m4_if(m4_index(m4_translit([$1],
- [[]#,()]]m4_dquote(m4_defn([m4_cr_symbols2]))[, [$$$]), [$]),
- [-1], [m4_echo], [_$0])([$1])])
-
-m4_define([_m4_escape],
-[m4_changequote([-=<{(],[)}>=-])]dnl
-[m4_bpatsubst(m4_bpatsubst(m4_bpatsubst(m4_bpatsubst(
- -=<{(-=<{(-=<{(-=<{(-=<{($1)}>=-)}>=-)}>=-)}>=-)}>=-,
- -=<{(#)}>=-, -=<{(@%:@)}>=-),
- -=<{(\[)}>=-, -=<{(@<:@)}>=-),
- -=<{(\])}>=-, -=<{(@:>@)}>=-),
- -=<{(\$)}>=-, -=<{(@S|@)}>=-)m4_changequote([,])])
-
-
-# m4_text_wrap(STRING, [PREFIX], [FIRST-PREFIX], [WIDTH])
-# -------------------------------------------------------
-# Expands into STRING wrapped to hold in WIDTH columns (default = 79).
-# If PREFIX is given, each line is prefixed with it. If FIRST-PREFIX is
-# specified, then the first line is prefixed with it. As a special case,
-# if the length of FIRST-PREFIX is greater than that of PREFIX, then
-# FIRST-PREFIX will be left alone on the first line.
-#
-# No expansion occurs on the contents STRING, PREFIX, or FIRST-PREFIX,
-# although quadrigraphs are correctly recognized. More precisely,
-# you may redefine m4_qlen to recognize whatever escape sequences that
-# you will post-process.
-#
-# Typical outputs are:
-#
-# m4_text_wrap([Short string */], [ ], [/* ], 20)
-# => /* Short string */
-#
-# m4_text_wrap([Much longer string */], [ ], [/* ], 20)
-# => /* Much longer
-# => string */
-#
-# m4_text_wrap([Short doc.], [ ], [ --short ], 30)
-# => --short Short doc.
-#
-# m4_text_wrap([Short doc.], [ ], [ --too-wide ], 30)
-# => --too-wide
-# => Short doc.
-#
-# m4_text_wrap([Super long documentation.], [ ], [ --too-wide ], 30)
-# => --too-wide
-# => Super long
-# => documentation.
-#
-# FIXME: there is no checking of a longer PREFIX than WIDTH, but do
-# we really want to bother with people trying each single corner
-# of a software?
-#
-# This macro does not leave a trailing space behind the last word of a line,
-# which complicates it a bit. The algorithm is otherwise stupid and simple:
-# all the words are preceded by m4_Separator which is defined to empty for
-# the first word, and then ` ' (single space) for all the others.
-#
-# The algorithm uses a helper that uses $2 through $4 directly, rather than
-# using local variables, to avoid m4_defn overhead, or expansion swallowing
-# any $. It also bypasses m4_popdef overhead with _m4_popdef since no user
-# macro expansion occurs in the meantime. Also, the definition is written
-# with m4_do, to avoid time wasted on dnl during expansion (since this is
-# already a time-consuming macro).
-m4_define([m4_text_wrap],
-[_$0(m4_escape([$1]), [$2], m4_default_quoted([$3], [$2]),
- m4_default_quoted([$4], [79]))])
-
-m4_define([_m4_text_wrap],
-m4_do(dnl set up local variables, to avoid repeated calculations
-[[m4_pushdef([m4_Indent], m4_qlen([$2]))]],
-[[m4_pushdef([m4_Cursor], m4_qlen([$3]))]],
-[[m4_pushdef([m4_Separator], [m4_define([m4_Separator], [ ])])]],
-dnl expand the first prefix, then check its length vs. regular prefix
-dnl same length: nothing special
-dnl prefix1 longer: output on line by itself, and reset cursor
-dnl prefix1 shorter: pad to length of prefix, and reset cursor
-[[[$3]m4_cond([m4_Cursor], m4_Indent, [],
- [m4_eval(m4_Cursor > m4_Indent)], [1], [
-[$2]m4_define([m4_Cursor], m4_Indent)],
- [m4_format([%*s], m4_max([0],
- m4_eval(m4_Indent - m4_Cursor)), [])m4_define([m4_Cursor], m4_Indent)])]],
-dnl now, for each word, compute the cursor after the word is output, then
-dnl check if the cursor would exceed the wrap column
-dnl if so, reset cursor, and insert newline and prefix
-dnl if not, insert the separator (usually a space)
-dnl either way, insert the word
-[[m4_map_args_w([$1], [$0_word(], [, [$2], [$4])])]],
-dnl finally, clean up the local variables
-[[_m4_popdef([m4_Separator], [m4_Cursor], [m4_Indent])]]))
-
-m4_define([_m4_text_wrap_word],
-[m4_define([m4_Cursor], m4_eval(m4_Cursor + m4_qlen([$1]) + 1))]dnl
-[m4_if(m4_eval(m4_Cursor > ([$3])),
- [1], [m4_define([m4_Cursor], m4_eval(m4_Indent + m4_qlen([$1]) + 1))
-[$2]],
- [m4_Separator[]])[$1]])
-
-# m4_text_box(MESSAGE, [FRAME-CHARACTER = `-'])
-# ---------------------------------------------
-# Turn MESSAGE into:
-# ## ------- ##
-# ## MESSAGE ##
-# ## ------- ##
-# using FRAME-CHARACTER in the border.
-#
-# Quadrigraphs are correctly recognized. More precisely, you may
-# redefine m4_qlen to recognize whatever escape sequences that you
-# will post-process.
-m4_define([m4_text_box],
-[m4_pushdef([m4_Border],
- m4_translit(m4_format([[[%*s]]], m4_decr(m4_qlen(_m4_expand([$1
-]))), []), [ ], m4_default_quoted([$2], [-])))]dnl
-[[##] _m4_defn([m4_Border]) [##]
-[##] $1 [##]
-[##] _m4_defn([m4_Border]) [##]_m4_popdef([m4_Border])])
-
-
-# m4_qlen(STRING)
-# ---------------
-# Expands to the length of STRING after autom4te converts all quadrigraphs.
-#
-# If you use some other means of post-processing m4 output rather than
-# autom4te, then you may redefine this macro to recognize whatever
-# escape sequences your post-processor will handle. For that matter,
-# m4_define([m4_qlen], m4_defn([m4_len])) is sufficient if you don't
-# do any post-processing.
-#
-# Avoid bpatsubsts for the common case of no quadrigraphs. Cache
-# results, as configure scripts tend to ask about lengths of common
-# strings like `/*' and `*/' rather frequently. Minimize the number
-# of times that $1 occurs in m4_qlen, so there is less text to parse
-# on a cache hit.
-m4_define([m4_qlen],
-[m4_ifdef([$0-$1], [_m4_defn([$0-]], [_$0(])[$1])])
-m4_define([_m4_qlen],
-[m4_define([m4_qlen-$1],
-m4_if(m4_index([$1], [@]), [-1], [m4_len([$1])],
- [m4_len(m4_bpatsubst([[$1]],
- [@\(\(<:\|:>\|S|\|%:\|\{:\|:\}\)\(@\)\|&t@\)],
- [\3]))]))_m4_defn([m4_qlen-$1])])
-
-# m4_copyright_condense(TEXT)
-# ---------------------------
-# Condense the copyright notice in TEXT to only display the final
-# year, wrapping the results to fit in 80 columns.
-m4_define([m4_copyright_condense],
-[m4_text_wrap(m4_bpatsubst(m4_flatten([[$1]]),
-[(C)[- ,0-9]*\([1-9][0-9][0-9][0-9]\)], [(C) \1]))])
-
-## ----------------------- ##
-## 13. Number processing. ##
-## ----------------------- ##
-
-# m4_cmp(A, B)
-# ------------
-# Compare two integer expressions.
-# A < B -> -1
-# A = B -> 0
-# A > B -> 1
-m4_define([m4_cmp],
-[m4_eval((([$1]) > ([$2])) - (([$1]) < ([$2])))])
-
-
-# m4_list_cmp(A, B)
-# -----------------
-#
-# Compare the two lists of integer expressions A and B. For instance:
-# m4_list_cmp([1, 0], [1]) -> 0
-# m4_list_cmp([1, 0], [1, 0]) -> 0
-# m4_list_cmp([1, 2], [1, 0]) -> 1
-# m4_list_cmp([1, 2, 3], [1, 2]) -> 1
-# m4_list_cmp([1, 2, -3], [1, 2]) -> -1
-# m4_list_cmp([1, 0], [1, 2]) -> -1
-# m4_list_cmp([1], [1, 2]) -> -1
-# m4_define([xa], [oops])dnl
-# m4_list_cmp([[0xa]], [5+5]) -> 0
-#
-# Rather than face the overhead of m4_case, we use a helper function whose
-# expansion includes the name of the macro to invoke on the tail, either
-# m4_ignore or m4_unquote. This is particularly useful when comparing
-# long lists, since less text is being expanded for deciding when to end
-# recursion. The recursion is between a pair of macros that alternate
-# which list is trimmed by one element; this is more efficient than
-# calling m4_cdr on both lists from a single macro. Guarantee exactly
-# one expansion of both lists' side effects.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_list_cmp],
-[_$0_raw(m4_dquote($1), m4_dquote($2))])
-
-m4_define([_m4_list_cmp_raw],
-[m4_if([$1], [$2], [0], [_m4_list_cmp_1([$1], $2)])])
-
-m4_define([_m4_list_cmp],
-[m4_if([$1], [], [0m4_ignore], [$2], [0], [m4_unquote], [$2m4_ignore])])
-
-m4_define([_m4_list_cmp_1],
-[_m4_list_cmp_2([$2], [m4_shift2($@)], $1)])
-
-m4_define([_m4_list_cmp_2],
-[_m4_list_cmp([$1$3], m4_cmp([$3+0], [$1+0]))(
- [_m4_list_cmp_1(m4_dquote(m4_shift3($@)), $2)])])
-
-# m4_max(EXPR, ...)
-# m4_min(EXPR, ...)
-# -----------------
-# Return the decimal value of the maximum (or minimum) in a series of
-# integer expressions.
-#
-# M4 1.4.x doesn't provide ?:. Hence this huge m4_eval. Avoid m4_eval
-# if both arguments are identical, but be aware of m4_max(0xa, 10) (hence
-# the use of <=, not just <, in the second multiply).
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_max],
-[m4_if([$#], [0], [m4_fatal([too few arguments to $0])],
- [$#], [1], [m4_eval([$1])],
- [$#$1], [2$2], [m4_eval([$1])],
- [$#], [2], [_$0($@)],
- [_m4_minmax([_$0], $@)])])
-
-m4_define([_m4_max],
-[m4_eval((([$1]) > ([$2])) * ([$1]) + (([$1]) <= ([$2])) * ([$2]))])
-
-m4_define([m4_min],
-[m4_if([$#], [0], [m4_fatal([too few arguments to $0])],
- [$#], [1], [m4_eval([$1])],
- [$#$1], [2$2], [m4_eval([$1])],
- [$#], [2], [_$0($@)],
- [_m4_minmax([_$0], $@)])])
-
-m4_define([_m4_min],
-[m4_eval((([$1]) < ([$2])) * ([$1]) + (([$1]) >= ([$2])) * ([$2]))])
-
-# _m4_minmax(METHOD, ARG1, ARG2...)
-# ---------------------------------
-# Common recursion code for m4_max and m4_min. METHOD must be _m4_max
-# or _m4_min, and there must be at least two arguments to combine.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([_m4_minmax],
-[m4_if([$#], [3], [$1([$2], [$3])],
- [$0([$1], $1([$2], [$3]), m4_shift3($@))])])
-
-
-# m4_sign(A)
-# ----------
-# The sign of the integer expression A.
-m4_define([m4_sign],
-[m4_eval((([$1]) > 0) - (([$1]) < 0))])
-
-
-
-## ------------------------ ##
-## 14. Version processing. ##
-## ------------------------ ##
-
-
-# m4_version_unletter(VERSION)
-# ----------------------------
-# Normalize beta version numbers with letters to numeric expressions, which
-# can then be handed to m4_eval for the purpose of comparison.
-#
-# Nl -> (N+1).-1.(l#)
-#
-# for example:
-# [2.14a] -> [0,2,14+1,-1,[0r36:a]] -> 2.15.-1.10
-# [2.14b] -> [0,2,15+1,-1,[0r36:b]] -> 2.15.-1.11
-# [2.61aa.b] -> [0,2.61,1,-1,[0r36:aa],+1,-1,[0r36:b]] -> 2.62.-1.370.1.-1.11
-# [08] -> [0,[0r10:0]8] -> 8
-#
-# This macro expects reasonable version numbers, but can handle double
-# letters and does not expand any macros. Original version strings can
-# use both `.' and `-' separators.
-#
-# Inline constant expansions, to avoid m4_defn overhead.
-# _m4_version_unletter is the real workhorse used by m4_version_compare,
-# but since [0r36:a] and commas are less readable than 10 and dots, we
-# provide a wrapper for human use.
-m4_define([m4_version_unletter],
-[m4_substr(m4_map_args([.m4_eval], m4_unquote(_$0([$1]))), [3])])
-m4_define([_m4_version_unletter],
-[m4_bpatsubst(m4_bpatsubst(m4_translit([[[[0,$1]]]], [.-], [,,]),]dnl
-m4_dquote(m4_dquote(m4_defn([m4_cr_Letters])))[[+],
- [+1,-1,[0r36:\&]]), [,0], [,[0r10:0]])])
-
-
-# m4_version_compare(VERSION-1, VERSION-2)
-# ----------------------------------------
-# Compare the two version numbers and expand into
-# -1 if VERSION-1 < VERSION-2
-# 0 if =
-# 1 if >
-#
-# Since _m4_version_unletter does not output side effects, we can
-# safely bypass the overhead of m4_version_cmp.
-m4_define([m4_version_compare],
-[_m4_list_cmp_raw(_m4_version_unletter([$1]), _m4_version_unletter([$2]))])
-
-
-# m4_PACKAGE_NAME
-# m4_PACKAGE_TARNAME
-# m4_PACKAGE_VERSION
-# m4_PACKAGE_STRING
-# m4_PACKAGE_BUGREPORT
-# --------------------
-# If m4sugar/version.m4 is present, then define version strings. This
-# file is optional, provided by Autoconf but absent in Bison.
-m4_sinclude([m4sugar/version.m4])
-
-
-# m4_version_prereq(VERSION, [IF-OK], [IF-NOT = FAIL])
-# ----------------------------------------------------
-# Check this Autoconf version against VERSION.
-m4_define([m4_version_prereq],
-m4_ifdef([m4_PACKAGE_VERSION],
-[[m4_if(m4_version_compare(]m4_dquote(m4_defn([m4_PACKAGE_VERSION]))[, [$1]),
- [-1],
- [m4_default([$3],
- [m4_fatal([Autoconf version $1 or higher is required],
- [63])])],
- [$2])]],
-[[m4_fatal([m4sugar/version.m4 not found])]]))
-
-
-## ------------------ ##
-## 15. Set handling. ##
-## ------------------ ##
-
-# Autoconf likes to create arbitrarily large sets; for example, as of
-# this writing, the configure.ac for coreutils tracks a set of more
-# than 400 AC_SUBST. How do we track all of these set members,
-# without introducing duplicates? We could use m4_append_uniq, with
-# the set NAME residing in the contents of the macro NAME.
-# Unfortunately, m4_append_uniq is quadratic for set creation, because
-# it costs O(n) to search the string for each of O(n) insertions; not
-# to mention that with m4 1.4.x, even using m4_append is slow, costing
-# O(n) rather than O(1) per insertion. Other set operations, not used
-# by Autoconf but still possible by manipulation of the definition
-# tracked in macro NAME, include O(n) deletion of one element and O(n)
-# computation of set size. Because the set is exposed to the user via
-# the definition of a single macro, we cannot cache any data about the
-# set without risking the cache being invalidated by the user
-# redefining NAME.
-#
-# Can we do better? Yes, because m4 gives us an O(1) search function
-# for free: ifdef. Additionally, even m4 1.4.x gives us an O(1)
-# insert operation for free: pushdef. But to use these, we must
-# represent the set via a group of macros; to keep the set consistent,
-# we must hide the set so that the user can only manipulate it through
-# accessor macros. The contents of the set are maintained through two
-# access points; _m4_set([name]) is a pushdef stack of values in the
-# set, useful for O(n) traversal of the set contents; while the
-# existence of _m4_set([name],value) with no particular value is
-# useful for O(1) querying of set membership. And since the user
-# cannot externally manipulate the set, we are free to add additional
-# caching macros for other performance improvements. Deletion can be
-# O(1) per element rather than O(n), by reworking the definition of
-# _m4_set([name],value) to be 0 or 1 based on current membership, and
-# adding _m4_set_cleanup(name) to defer the O(n) cleanup of
-# _m4_set([name]) until we have another reason to do an O(n)
-# traversal. The existence of _m4_set_cleanup(name) can then be used
-# elsewhere to determine if we must dereference _m4_set([name],value),
-# or assume that definition implies set membership. Finally, size can
-# be tracked in an O(1) fashion with _m4_set_size(name).
-#
-# The quoting in _m4_set([name],value) is chosen so that there is no
-# ambiguity with a set whose name contains a comma, and so that we can
-# supply the value via _m4_defn([_m4_set([name])]) without needing any
-# quote manipulation.
-
-# m4_set_add(SET, VALUE, [IF-UNIQ], [IF-DUP])
-# -------------------------------------------
-# Add VALUE as an element of SET. Expand IF-UNIQ on the first
-# addition, and IF-DUP if it is already in the set. Addition of one
-# element is O(1), such that overall set creation is O(n).
-#
-# We do not want to add a duplicate for a previously deleted but
-# unpruned element, but it is just as easy to check existence directly
-# as it is to query _m4_set_cleanup($1).
-m4_define([m4_set_add],
-[m4_ifdef([_m4_set([$1],$2)],
- [m4_if(m4_indir([_m4_set([$1],$2)]), [0],
- [m4_define([_m4_set([$1],$2)],
- [1])_m4_set_size([$1], [m4_incr])$3], [$4])],
- [m4_define([_m4_set([$1],$2)],
- [1])m4_pushdef([_m4_set([$1])],
- [$2])_m4_set_size([$1], [m4_incr])$3])])
-
-# m4_set_add_all(SET, VALUE...)
-# -----------------------------
-# Add each VALUE into SET. This is O(n) in the number of VALUEs, and
-# can be faster than calling m4_set_add for each VALUE.
-#
-# Implement two recursion helpers; the check variant is slower but
-# handles the case where an element has previously been removed but
-# not pruned. The recursion helpers ignore their second argument, so
-# that we can use the faster m4_shift2 and 2 arguments, rather than
-# _m4_shift2 and one argument, as the signal to end recursion.
-#
-# Please keep foreach.m4 in sync with any adjustments made here.
-m4_define([m4_set_add_all],
-[m4_define([_m4_set_size($1)], m4_eval(m4_set_size([$1])
- + m4_len(m4_ifdef([_m4_set_cleanup($1)], [_$0_check], [_$0])([$1], $@))))])
-
-m4_define([_m4_set_add_all],
-[m4_if([$#], [2], [],
- [m4_ifdef([_m4_set([$1],$3)], [],
- [m4_define([_m4_set([$1],$3)], [1])m4_pushdef([_m4_set([$1])],
- [$3])-])$0([$1], m4_shift2($@))])])
-
-m4_define([_m4_set_add_all_check],
-[m4_if([$#], [2], [],
- [m4_set_add([$1], [$3])$0([$1], m4_shift2($@))])])
-
-# m4_set_contains(SET, VALUE, [IF-PRESENT], [IF-ABSENT])
-# ------------------------------------------------------
-# Expand IF-PRESENT if SET contains VALUE, otherwise expand IF-ABSENT.
-# This is always O(1).
-m4_define([m4_set_contains],
-[m4_ifdef([_m4_set_cleanup($1)],
- [m4_if(m4_ifdef([_m4_set([$1],$2)],
- [m4_indir([_m4_set([$1],$2)])], [0]), [1], [$3], [$4])],
- [m4_ifdef([_m4_set([$1],$2)], [$3], [$4])])])
-
-# m4_set_contents(SET, [SEP])
-# ---------------------------
-# Expand to a single string containing all the elements in SET,
-# separated by SEP, without modifying SET. No provision is made for
-# disambiguating set elements that contain non-empty SEP as a
-# sub-string, or for recognizing a set that contains only the empty
-# string. Order of the output is not guaranteed. If any elements
-# have been previously removed from the set, this action will prune
-# the unused memory. This is O(n) in the size of the set before
-# pruning.
-#
-# Use _m4_popdef for speed. The existence of _m4_set_cleanup($1)
-# determines which version of _1 helper we use.
-m4_define([m4_set_contents],
-[m4_set_map_sep([$1], [], [], [[$2]])])
-
-# _m4_set_contents_1(SET)
-# _m4_set_contents_1c(SET)
-# _m4_set_contents_2(SET, [PRE], [POST], [SEP])
-# ---------------------------------------------
-# Expand to a list of quoted elements currently in the set, each
-# surrounded by PRE and POST, and moving SEP in front of PRE on
-# recursion. To avoid nesting limit restrictions, the algorithm must
-# be broken into two parts; _1 destructively copies the stack in
-# reverse into _m4_set_($1), producing no output; then _2
-# destructively copies _m4_set_($1) back into the stack in reverse.
-# If no elements were deleted, then this visits the set in the order
-# that elements were inserted. Behavior is undefined if PRE/POST/SEP
-# tries to recursively list or modify SET in any way other than
-# calling m4_set_remove on the current element. Use _1 if all entries
-# in the stack are guaranteed to be in the set, and _1c to prune
-# removed entries. Uses _m4_defn and _m4_popdef for speed.
-m4_define([_m4_set_contents_1],
-[_m4_stack_reverse([_m4_set([$1])], [_m4_set_($1)])])
-
-m4_define([_m4_set_contents_1c],
-[m4_ifdef([_m4_set([$1])],
- [m4_set_contains([$1], _m4_defn([_m4_set([$1])]),
- [m4_pushdef([_m4_set_($1)], _m4_defn([_m4_set([$1])]))],
- [_m4_popdef([_m4_set([$1],]_m4_defn(
- [_m4_set([$1])])[)])])_m4_popdef([_m4_set([$1])])$0([$1])],
- [_m4_popdef([_m4_set_cleanup($1)])])])
-
-m4_define([_m4_set_contents_2],
-[_m4_stack_reverse([_m4_set_($1)], [_m4_set([$1])],
- [$2[]_m4_defn([_m4_set_($1)])$3], [$4[]])])
-
-# m4_set_delete(SET)
-# ------------------
-# Delete all elements in SET, and reclaim any memory occupied by the
-# set. This is O(n) in the set size.
-#
-# Use _m4_defn and _m4_popdef for speed.
-m4_define([m4_set_delete],
-[m4_ifdef([_m4_set([$1])],
- [_m4_popdef([_m4_set([$1],]_m4_defn([_m4_set([$1])])[)],
- [_m4_set([$1])])$0([$1])],
- [m4_ifdef([_m4_set_cleanup($1)],
- [_m4_popdef([_m4_set_cleanup($1)])])m4_ifdef(
- [_m4_set_size($1)],
- [_m4_popdef([_m4_set_size($1)])])])])
-
-# m4_set_difference(SET1, SET2)
-# -----------------------------
-# Produce a LIST of quoted elements that occur in SET1 but not SET2.
-# Output a comma prior to any elements, to distinguish the empty
-# string from no elements. This can be directly used as a series of
-# arguments, such as for m4_join, or wrapped inside quotes for use in
-# m4_foreach. Order of the output is not guaranteed.
-#
-# Short-circuit the idempotence relation.
-m4_define([m4_set_difference],
-[m4_if([$1], [$2], [], [m4_set_map_sep([$1], [_$0([$2],], [)])])])
-
-m4_define([_m4_set_difference],
-[m4_set_contains([$1], [$2], [], [,[$2]])])
-
-# m4_set_dump(SET, [SEP])
-# -----------------------
-# Expand to a single string containing all the elements in SET,
-# separated by SEP, then delete SET. In general, if you only need to
-# list the contents once, this is faster than m4_set_contents. No
-# provision is made for disambiguating set elements that contain
-# non-empty SEP as a sub-string. Order of the output is not
-# guaranteed. This is O(n) in the size of the set before pruning.
-#
-# Use _m4_popdef for speed. Use existence of _m4_set_cleanup($1) to
-# decide if more expensive recursion is needed.
-m4_define([m4_set_dump],
-[m4_ifdef([_m4_set_size($1)],
- [_m4_popdef([_m4_set_size($1)])])m4_ifdef([_m4_set_cleanup($1)],
- [_$0_check], [_$0])([$1], [], [$2])])
-
-# _m4_set_dump(SET, [SEP], [PREP])
-# _m4_set_dump_check(SET, [SEP], [PREP])
-# --------------------------------------
-# Print SEP and the current element, then delete the element and
-# recurse with empty SEP changed to PREP. The check variant checks
-# whether the element has been previously removed. Use _m4_defn and
-# _m4_popdef for speed.
-m4_define([_m4_set_dump],
-[m4_ifdef([_m4_set([$1])],
- [[$2]_m4_defn([_m4_set([$1])])_m4_popdef([_m4_set([$1],]_m4_defn(
- [_m4_set([$1])])[)], [_m4_set([$1])])$0([$1], [$2$3])])])
-
-m4_define([_m4_set_dump_check],
-[m4_ifdef([_m4_set([$1])],
- [m4_set_contains([$1], _m4_defn([_m4_set([$1])]),
- [[$2]_m4_defn([_m4_set([$1])])])_m4_popdef(
- [_m4_set([$1],]_m4_defn([_m4_set([$1])])[)],
- [_m4_set([$1])])$0([$1], [$2$3])],
- [_m4_popdef([_m4_set_cleanup($1)])])])
-
-# m4_set_empty(SET, [IF-EMPTY], [IF-ELEMENTS])
-# --------------------------------------------
-# Expand IF-EMPTY if SET has no elements, otherwise IF-ELEMENTS.
-m4_define([m4_set_empty],
-[m4_ifdef([_m4_set_size($1)],
- [m4_if(m4_indir([_m4_set_size($1)]), [0], [$2], [$3])], [$2])])
-
-# m4_set_foreach(SET, VAR, ACTION)
-# --------------------------------
-# For each element of SET, define VAR to the element and expand
-# ACTION. ACTION should not recursively list SET's contents, add
-# elements to SET, nor delete any element from SET except the one
-# currently in VAR. The order that the elements are visited in is not
-# guaranteed. This is faster than the corresponding m4_foreach([VAR],
-# m4_indir([m4_dquote]m4_set_listc([SET])), [ACTION])
-m4_define([m4_set_foreach],
-[m4_pushdef([$2])m4_set_map_sep([$1], [m4_define([$2],], [)$3])])
-
-# m4_set_intersection(SET1, SET2)
-# -------------------------------
-# Produce a LIST of quoted elements that occur in both SET1 or SET2.
-# Output a comma prior to any elements, to distinguish the empty
-# string from no elements. This can be directly used as a series of
-# arguments, such as for m4_join, or wrapped inside quotes for use in
-# m4_foreach. Order of the output is not guaranteed.
-#
-# Iterate over the smaller set, and short-circuit the idempotence
-# relation.
-m4_define([m4_set_intersection],
-[m4_if([$1], [$2], [m4_set_listc([$1])],
- m4_eval(m4_set_size([$2]) < m4_set_size([$1])), [1], [$0([$2], [$1])],
- [m4_set_map_sep([$1], [_$0([$2],], [)])])])
-
-m4_define([_m4_set_intersection],
-[m4_set_contains([$1], [$2], [,[$2]])])
-
-# m4_set_list(SET)
-# m4_set_listc(SET)
-# -----------------
-# Produce a LIST of quoted elements of SET. This can be directly used
-# as a series of arguments, such as for m4_join or m4_set_add_all, or
-# wrapped inside quotes for use in m4_foreach or m4_map. With
-# m4_set_list, there is no way to distinguish an empty set from a set
-# containing only the empty string; with m4_set_listc, a leading comma
-# is output if there are any elements.
-m4_define([m4_set_list],
-[m4_set_map_sep([$1], [], [], [,])])
-
-m4_define([m4_set_listc],
-[m4_set_map_sep([$1], [,])])
-
-# m4_set_map(SET, ACTION)
-# -----------------------
-# For each element of SET, expand ACTION with a single argument of the
-# current element. ACTION should not recursively list SET's contents,
-# add elements to SET, nor delete any element from SET except the one
-# passed as an argument. The order that the elements are visited in
-# is not guaranteed. This is faster than either of the corresponding
-# m4_map_args([ACTION]m4_set_listc([SET]))
-# m4_set_foreach([SET], [VAR], [ACTION(m4_defn([VAR]))])
-m4_define([m4_set_map],
-[m4_set_map_sep([$1], [$2(], [)])])
-
-# m4_set_map_sep(SET, [PRE], [POST], [SEP])
-# -----------------------------------------
-# For each element of SET, expand PRE[value]POST[], and expand SEP
-# between elements.
-m4_define([m4_set_map_sep],
-[m4_ifdef([_m4_set_cleanup($1)], [_m4_set_contents_1c],
- [_m4_set_contents_1])([$1])_m4_set_contents_2($@)])
-
-# m4_set_remove(SET, VALUE, [IF-PRESENT], [IF-ABSENT])
-# ----------------------------------------------------
-# If VALUE is an element of SET, delete it and expand IF-PRESENT.
-# Otherwise expand IF-ABSENT. Deleting a single value is O(1),
-# although it leaves memory occupied until the next O(n) traversal of
-# the set which will compact the set.
-#
-# Optimize if the element being removed is the most recently added,
-# since defining _m4_set_cleanup($1) slows down so many other macros.
-# In particular, this plays well with m4_set_foreach and m4_set_map.
-m4_define([m4_set_remove],
-[m4_set_contains([$1], [$2], [_m4_set_size([$1],
- [m4_decr])m4_if(_m4_defn([_m4_set([$1])]), [$2],
- [_m4_popdef([_m4_set([$1],$2)], [_m4_set([$1])])],
- [m4_define([_m4_set_cleanup($1)])m4_define(
- [_m4_set([$1],$2)], [0])])$3], [$4])])
-
-# m4_set_size(SET)
-# ----------------
-# Expand to the number of elements currently in SET. This operation
-# is O(1), and thus more efficient than m4_count(m4_set_list([SET])).
-m4_define([m4_set_size],
-[m4_ifdef([_m4_set_size($1)], [m4_indir([_m4_set_size($1)])], [0])])
-
-# _m4_set_size(SET, ACTION)
-# -------------------------
-# ACTION must be either m4_incr or m4_decr, and the size of SET is
-# changed accordingly. If the set is empty, ACTION must not be
-# m4_decr.
-m4_define([_m4_set_size],
-[m4_define([_m4_set_size($1)],
- m4_ifdef([_m4_set_size($1)], [$2(m4_indir([_m4_set_size($1)]))],
- [1]))])
-
-# m4_set_union(SET1, SET2)
-# ------------------------
-# Produce a LIST of double quoted elements that occur in either SET1
-# or SET2, without duplicates. Output a comma prior to any elements,
-# to distinguish the empty string from no elements. This can be
-# directly used as a series of arguments, such as for m4_join, or
-# wrapped inside quotes for use in m4_foreach. Order of the output is
-# not guaranteed.
-#
-# We can rely on the fact that m4_set_listc prunes SET1, so we don't
-# need to check _m4_set([$1],element) for 0. Short-circuit the
-# idempotence relation.
-m4_define([m4_set_union],
-[m4_set_listc([$1])m4_if([$1], [$2], [],
- [m4_set_map_sep([$2], [_$0([$1],], [)])])])
-
-m4_define([_m4_set_union],
-[m4_ifdef([_m4_set([$1],$2)], [], [,[$2]])])
-
-
-## ------------------- ##
-## 16. File handling. ##
-## ------------------- ##
-
-
-# It is a real pity that M4 comes with no macros to bind a diversion
-# to a file. So we have to deal without, which makes us a lot more
-# fragile than we should.
-
-
-# m4_file_append(FILE-NAME, CONTENT)
-# ----------------------------------
-m4_define([m4_file_append],
-[m4_syscmd([cat >>$1 <<_m4eof
-$2
-_m4eof
-])
-m4_if(m4_sysval, [0], [],
- [m4_fatal([$0: cannot write: $1])])])
-
-
-
-## ------------------------ ##
-## 17. Setting M4sugar up. ##
-## ------------------------ ##
-
-# _m4_divert_diversion should be defined.
-m4_divert_push([KILL])
-
-# m4_init
-# -------
-# Initialize the m4sugar language.
-m4_define([m4_init],
-[# All the M4sugar macros start with `m4_', except `dnl' kept as is
-# for sake of simplicity.
-m4_pattern_forbid([^_?m4_])
-m4_pattern_forbid([^dnl$])
-
-# If __m4_version__ is defined, we assume that we are being run by M4
-# 1.6 or newer, thus $@ recursion is linear, and debugmode(+do)
-# is available for faster checks of dereferencing undefined macros
-# and forcing dumpdef to print to stderr regardless of debugfile.
-# But if it is missing, we assume we are being run by M4 1.4.x, that
-# $@ recursion is quadratic, and that we need foreach-based
-# replacement macros. Also, m4 prior to 1.4.8 loses track of location
-# during m4wrap text; __line__ should never be 0.
-#
-# Use the raw builtin to avoid tripping up include tracing.
-# Meanwhile, avoid m4_copy, since it temporarily undefines m4_defn.
-m4_ifdef([__m4_version__],
-[m4_debugmode([+do])
-m4_define([m4_defn], _m4_defn([_m4_defn]))
-m4_define([m4_dumpdef], _m4_defn([_m4_dumpdef]))
-m4_define([m4_popdef], _m4_defn([_m4_popdef]))
-m4_define([m4_undefine], _m4_defn([_m4_undefine]))],
-[m4_builtin([include], [m4sugar/foreach.m4])
-m4_wrap_lifo([m4_if(__line__, [0], [m4_pushdef([m4_location],
-]]m4_dquote(m4_dquote(m4_dquote(__file__:__line__)))[[)])])])
-
-# Rewrite the first entry of the diversion stack.
-m4_divert([KILL])
-
-# Check the divert push/pop perfect balance.
-# Some users are prone to also use m4_wrap to register last-minute
-# m4_divert_text; so after our diversion cleanups, we restore
-# KILL as the bottom of the diversion stack.
-m4_wrap([m4_popdef([_m4_divert_diversion])m4_ifdef(
- [_m4_divert_diversion], [m4_fatal([$0: unbalanced m4_divert_push:
-]m4_divert_stack)])_m4_popdef([_m4_divert_stack])m4_divert_push([KILL])])
-])
diff --git a/gnuwin32/bin/data/stack.hh b/gnuwin32/bin/data/stack.hh
deleted file mode 100644
index aa64d63d..00000000
--- a/gnuwin32/bin/data/stack.hh
+++ /dev/null
@@ -1,154 +0,0 @@
-# C++ skeleton for Bison
-
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-m4_pushdef([b4_copyright_years],
- [2002-2013])
-
-# b4_stack_define
-# ---------------
-m4_define([b4_stack_define],
-[[ template <class T, class S = std::vector<T> >
- class stack
- {
- public:
- // Hide our reversed order.
- typedef typename S::reverse_iterator iterator;
- typedef typename S::const_reverse_iterator const_iterator;
-
- stack ()
- : seq_ ()
- {
- }
-
- stack (unsigned int n)
- : seq_ (n)
- {
- }
-
- inline
- T&
- operator[] (unsigned int i)
- {
- return seq_[seq_.size () - 1 - i];
- }
-
- inline
- const T&
- operator[] (unsigned int i) const
- {
- return seq_[seq_.size () - 1 - i];
- }
-
- /// Steal the contents of \a t.
- ///
- /// Close to move-semantics.
- inline
- void
- push (T& t)
- {
- seq_.push_back (T());
- operator[](0).move (t);
- }
-
- inline
- void
- pop (unsigned int n = 1)
- {
- for (; n; --n)
- seq_.pop_back ();
- }
-
- void
- clear ()
- {
- seq_.clear ();
- }
-
- inline
- typename S::size_type
- size () const
- {
- return seq_.size ();
- }
-
- inline
- const_iterator
- begin () const
- {
- return seq_.rbegin ();
- }
-
- inline
- const_iterator
- end () const
- {
- return seq_.rend ();
- }
-
- private:
- stack (const stack&);
- stack& operator= (const stack&);
- /// The wrapped container.
- S seq_;
- };
-
- /// Present a slice of the top of a stack.
- template <class T, class S = stack<T> >
- class slice
- {
- public:
- slice (const S& stack, unsigned int range)
- : stack_ (stack)
- , range_ (range)
- {
- }
-
- inline
- const T&
- operator [] (unsigned int i) const
- {
- return stack_[range_ - i];
- }
-
- private:
- const S& stack_;
- unsigned int range_;
- };
-]])
-
-b4_defines_if(
-[b4_output_begin([b4_dir_prefix[]stack.hh])
-b4_copyright([Stack handling for Bison parsers in C++])[
-
-/**
- ** \file ]b4_dir_prefix[stack.hh
- ** Define the ]b4_namespace_ref[::stack class.
- */
-
-]b4_cpp_guard_open([b4_dir_prefix[]stack.hh])[
-
-# include <vector>
-
-]b4_namespace_open[
-]b4_stack_define[
-]b4_namespace_close[
-
-]b4_cpp_guard_close([b4_dir_prefix[]stack.hh])
-b4_output_end()
-])
-
-m4_popdef([b4_copyright_years])
diff --git a/gnuwin32/bin/data/variant.hh b/gnuwin32/bin/data/variant.hh
deleted file mode 100644
index ac4f7a78..00000000
--- a/gnuwin32/bin/data/variant.hh
+++ /dev/null
@@ -1,362 +0,0 @@
-# C++ skeleton for Bison
-
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-## --------- ##
-## variant. ##
-## --------- ##
-
-# b4_symbol_variant(YYTYPE, YYVAL, ACTION, [ARGS])
-# ------------------------------------------------
-# Run some ACTION ("build", or "destroy") on YYVAL of symbol type
-# YYTYPE.
-m4_define([b4_symbol_variant],
-[m4_pushdef([b4_dollar_dollar],
- [$2.$3< $][3 > (m4_shift3($@))])dnl
- switch ($1)
- {
-b4_type_foreach([b4_type_action_])[]dnl
- default:
- break;
- }
-m4_popdef([b4_dollar_dollar])dnl
-])
-
-
-# _b4_char_sizeof_counter
-# -----------------------
-# A counter used by _b4_char_sizeof_dummy to create fresh symbols.
-m4_define([_b4_char_sizeof_counter],
-[0])
-
-# _b4_char_sizeof_dummy
-# ---------------------
-# At each call return a new C++ identifier.
-m4_define([_b4_char_sizeof_dummy],
-[m4_define([_b4_char_sizeof_counter], m4_incr(_b4_char_sizeof_counter))dnl
-dummy[]_b4_char_sizeof_counter])
-
-
-# b4_char_sizeof(SYMBOL-NUMS)
-# ---------------------------
-# To be mapped on the list of type names to produce:
-#
-# char dummy1[sizeof(type_name_1)];
-# char dummy2[sizeof(type_name_2)];
-#
-# for defined type names.
-m4_define([b4_char_sizeof],
-[b4_symbol_if([$1], [has_type],
-[
-m4_map([ b4_symbol_tag_comment], [$@])dnl
- char _b4_char_sizeof_dummy@{sizeof(b4_symbol([$1], [type]))@};
-])])
-
-
-# b4_variant_includes
-# -------------------
-# The needed includes for variants support.
-m4_define([b4_variant_includes],
-[b4_parse_assert_if([[#include <typeinfo>]])[
-#ifndef YYASSERT
-# include <cassert>
-# define YYASSERT assert
-#endif
-]])
-
-# b4_variant_define
-# -----------------
-# Define "variant".
-m4_define([b4_variant_define],
-[[ /// A char[S] buffer to store and retrieve objects.
- ///
- /// Sort of a variant, but does not keep track of the nature
- /// of the stored data, since that knowledge is available
- /// via the current state.
- template <size_t S>
- struct variant
- {
- /// Type of *this.
- typedef variant<S> self_type;
-
- /// Empty construction.
- variant ()]b4_parse_assert_if([
- : yytname_ (YY_NULL)])[
- {}
-
- /// Construct and fill.
- template <typename T>
- variant (const T& t)]b4_parse_assert_if([
- : yytname_ (typeid (T).name ())])[
- {
- YYASSERT (sizeof (T) <= S);
- new (yyas_<T> ()) T (t);
- }
-
- /// Destruction, allowed only if empty.
- ~variant ()
- {]b4_parse_assert_if([
- YYASSERT (!yytname_);
- ])[}
-
- /// Instantiate an empty \a T in here.
- template <typename T>
- T&
- build ()
- {]b4_parse_assert_if([
- YYASSERT (!yytname_);
- YYASSERT (sizeof (T) <= S);
- yytname_ = typeid (T).name ();])[
- return *new (yyas_<T> ()) T;
- }
-
- /// Instantiate a \a T in here from \a t.
- template <typename T>
- T&
- build (const T& t)
- {]b4_parse_assert_if([
- YYASSERT (!yytname_);
- YYASSERT (sizeof (T) <= S);
- yytname_ = typeid (T).name ();])[
- return *new (yyas_<T> ()) T (t);
- }
-
- /// Accessor to a built \a T.
- template <typename T>
- T&
- as ()
- {]b4_parse_assert_if([
- YYASSERT (yytname_ == typeid (T).name ());
- YYASSERT (sizeof (T) <= S);])[
- return *yyas_<T> ();
- }
-
- /// Const accessor to a built \a T (for %printer).
- template <typename T>
- const T&
- as () const
- {]b4_parse_assert_if([
- YYASSERT (yytname_ == typeid (T).name ());
- YYASSERT (sizeof (T) <= S);])[
- return *yyas_<T> ();
- }
-
- /// Swap the content with \a other, of same type.
- ///
- /// Both variants must be built beforehand, because swapping the actual
- /// data requires reading it (with as()), and this is not possible on
- /// unconstructed variants: it would require some dynamic testing, which
- /// should not be the variant's responsability.
- /// Swapping between built and (possibly) non-built is done with
- /// variant::move ().
- template <typename T>
- void
- swap (self_type& other)
- {]b4_parse_assert_if([
- YYASSERT (yytname_);
- YYASSERT (yytname_ == other.yytname_);])[
- std::swap (as<T> (), other.as<T> ());
- }
-
- /// Move the content of \a other to this.
- ///
- /// Destroys \a other.
- template <typename T>
- void
- move (self_type& other)
- {]b4_parse_assert_if([
- YYASSERT (!yytname_);])[
- build<T> ();
- swap<T> (other);
- other.destroy<T> ();
- }
-
- /// Copy the content of \a other to this.
- template <typename T>
- void
- copy (const self_type& other)
- {
- build<T> (other.as<T> ());
- }
-
- /// Destroy the stored \a T.
- template <typename T>
- void
- destroy ()
- {
- as<T> ().~T ();]b4_parse_assert_if([
- yytname_ = YY_NULL;])[
- }
-
- private:
- /// Prohibit blind copies.
- self_type& operator=(const self_type&);
- variant (const self_type&);
-
- /// Accessor to raw memory as \a T.
- template <typename T>
- T*
- yyas_ ()
- {
- void *yyp = yybuffer_.yyraw;
- return static_cast<T*> (yyp);
- }
-
- /// Const accessor to raw memory as \a T.
- template <typename T>
- const T*
- yyas_ () const
- {
- const void *yyp = yybuffer_.yyraw;
- return static_cast<const T*> (yyp);
- }
-
- union
- {
- /// Strongest alignment constraints.
- long double yyalign_me;
- /// A buffer large enough to store any of the semantic values.
- char yyraw[S];
- } yybuffer_;]b4_parse_assert_if([
-
- /// Whether the content is built: if defined, the name of the stored type.
- const char *yytname_;])[
- };
-]])
-
-
-## -------------------------- ##
-## Adjustments for variants. ##
-## -------------------------- ##
-
-
-# b4_value_type_declare
-# ---------------------
-# Declare semantic_type.
-m4_define([b4_value_type_declare],
-[[ /// An auxiliary type to compute the largest semantic type.
- union union_type
- {]b4_type_foreach([b4_char_sizeof])[};
-
- /// Symbol semantic values.
- typedef variant<sizeof(union_type)> semantic_type;][]dnl
-])
-
-
-# How the semantic value is extracted when using variants.
-
-# b4_symbol_value(VAL, [TYPE])
-# ----------------------------
-m4_define([b4_symbol_value],
-[m4_ifval([$2],
- [$1.as< $2 > ()],
- [$1])])
-
-# b4_symbol_value_template(VAL, [TYPE])
-# -------------------------------------
-# Same as b4_symbol_value, but used in a template method.
-m4_define([b4_symbol_value_template],
-[m4_ifval([$2],
- [$1.template as< $2 > ()],
- [$1])])
-
-
-
-## ------------- ##
-## make_SYMBOL. ##
-## ------------- ##
-
-
-# b4_symbol_constructor_declare_(SYMBOL-NUMBER)
-# ---------------------------------------------
-# Declare the overloaded version of make_symbol for the (common) type of
-# these SYMBOL-NUMBERS. Use at class-level.
-m4_define([b4_symbol_constructor_declare_],
-[b4_symbol_if([$1], [is_token], [b4_symbol_if([$1], [has_id],
-[ static inline
- symbol_type
- make_[]b4_symbol_([$1], [id]) (dnl
-b4_join(b4_symbol_if([$1], [has_type],
- [const b4_symbol([$1], [type])& v]),
- b4_locations_if([const location_type& l])));
-
-])])])
-
-
-# b4_symbol_constructor_declare
-# -----------------------------
-# Declare symbol constructors for all the value types.
-# Use at class-level.
-m4_define([b4_symbol_constructor_declare],
-[ // Symbol constructors declarations.
-b4_symbol_foreach([b4_symbol_constructor_declare_])])
-
-
-
-# b4_symbol_constructor_define_(SYMBOL-NUMBER)
-# --------------------------------------------
-# Define symbol constructor for this SYMBOL-NUMBER.
-m4_define([b4_symbol_constructor_define_],
-[b4_symbol_if([$1], [is_token], [b4_symbol_if([$1], [has_id],
-[ b4_parser_class_name::symbol_type
- b4_parser_class_name::make_[]b4_symbol_([$1], [id]) (dnl
-b4_join(b4_symbol_if([$1], [has_type],
- [const b4_symbol([$1], [type])& v]),
- b4_locations_if([const location_type& l])))
- {
- return symbol_type (b4_join([token::b4_symbol([$1], [id])],
- b4_symbol_if([$1], [has_type], [v]),
- b4_locations_if([l])));
-
- }
-
-])])])
-
-
-# b4_basic_symbol_constructor_declare
-# -----------------------------------
-# Generate a constructor declaration for basic_symbol from given type.
-m4_define([b4_basic_symbol_constructor_declare],
-[[
- basic_symbol (]b4_join(
- [typename Base::kind_type t],
- b4_symbol_if([$1], [has_type], const b4_symbol([$1], [type])[ v]),
- b4_locations_if([const location_type& l]))[);
-]])
-
-# b4_basic_symbol_constructor_define
-# ----------------------------------
-# Generate a constructor implementation for basic_symbol from given type.
-m4_define([b4_basic_symbol_constructor_define],
-[[
- template <typename Base>
- ]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (]b4_join(
- [typename Base::kind_type t],
- b4_symbol_if([$1], [has_type], const b4_symbol([$1], [type])[ v]),
- b4_locations_if([const location_type& l]))[)
- : Base (t)
- , value (]b4_symbol_if([$1], [has_type], [v])[)]b4_locations_if([
- , location (l)])[
- {}
-]])
-
-# b4_symbol_constructor_define
-# ----------------------------
-# Define the overloaded versions of make_symbol for all the value types.
-m4_define([b4_symbol_constructor_define],
-[ // Implementation of make_symbol for each symbol type.
-b4_symbol_foreach([b4_symbol_constructor_define_])])
diff --git a/gnuwin32/bin/data/xslt/bison.xsl b/gnuwin32/bin/data/xslt/bison.xsl
deleted file mode 100644
index 10e3305b..00000000
--- a/gnuwin32/bin/data/xslt/bison.xsl
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- bison.xsl - common templates for Bison XSLT.
-
- Copyright (C) 2007-2013 Free Software Foundation, Inc.
-
- This file is part of Bison, the GNU Compiler Compiler.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- -->
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:bison="http://www.gnu.org/software/bison/">
-
-<xsl:key
- name="bison:symbolByName"
- match="/bison-xml-report/grammar/nonterminals/nonterminal"
- use="@name"
-/>
-<xsl:key
- name="bison:symbolByName"
- match="/bison-xml-report/grammar/terminals/terminal"
- use="@name"
-/>
-<xsl:key
- name="bison:ruleByNumber"
- match="/bison-xml-report/grammar/rules/rule"
- use="@number"
-/>
-<xsl:key
- name="bison:ruleByLhs"
- match="/bison-xml-report/grammar/rules/rule[
- @usefulness != 'useless-in-grammar']"
- use="lhs"
-/>
-<xsl:key
- name="bison:ruleByRhs"
- match="/bison-xml-report/grammar/rules/rule[
- @usefulness != 'useless-in-grammar']"
- use="rhs/symbol"
-/>
-
-<!-- For the specified state, output: #sr-conflicts,#rr-conflicts -->
-<xsl:template match="state" mode="bison:count-conflicts">
- <xsl:variable name="transitions" select="actions/transitions"/>
- <xsl:variable name="reductions" select="actions/reductions"/>
- <xsl:variable
- name="terminals"
- select="
- $transitions/transition[@type='shift']/@symbol
- | $reductions/reduction/@symbol
- "
- />
- <xsl:variable name="conflict-data">
- <xsl:for-each select="$terminals">
- <xsl:variable name="name" select="."/>
- <xsl:if test="generate-id($terminals[. = $name][1]) = generate-id(.)">
- <xsl:variable
- name="shift-count"
- select="count($transitions/transition[@symbol=$name])"
- />
- <xsl:variable
- name="reduce-count"
- select="count($reductions/reduction[@symbol=$name])"
- />
- <xsl:if test="$shift-count > 0 and $reduce-count > 0">
- <xsl:text>s</xsl:text>
- </xsl:if>
- <xsl:if test="$reduce-count > 1">
- <xsl:text>r</xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <xsl:value-of select="string-length(translate($conflict-data, 'r', ''))"/>
- <xsl:text>,</xsl:text>
- <xsl:value-of select="string-length(translate($conflict-data, 's', ''))"/>
-</xsl:template>
-
-<xsl:template name="space">
- <xsl:param name="repeat">0</xsl:param>
- <xsl:param name="fill" select="' '"/>
- <xsl:if test="number($repeat) &gt;= 1">
- <xsl:call-template name="space">
- <xsl:with-param name="repeat" select="$repeat - 1"/>
- <xsl:with-param name="fill" select="$fill"/>
- </xsl:call-template>
- <xsl:value-of select="$fill"/>
- </xsl:if>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/gnuwin32/bin/data/xslt/xml2dot.xsl b/gnuwin32/bin/data/xslt/xml2dot.xsl
deleted file mode 100644
index 93bec599..00000000
--- a/gnuwin32/bin/data/xslt/xml2dot.xsl
+++ /dev/null
@@ -1,397 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- xml2dot.xsl - transform Bison XML Report into DOT.
-
- Copyright (C) 2007-2013 Free Software Foundation, Inc.
-
- This file is part of Bison, the GNU Compiler Compiler.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
- Written by Wojciech Polak <polak@gnu.org>.
- -->
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:bison="http://www.gnu.org/software/bison/">
-
-<xsl:import href="bison.xsl"/>
-<xsl:output method="text" encoding="UTF-8" indent="no"/>
-
-<xsl:template match="/">
- <xsl:apply-templates select="bison-xml-report"/>
-</xsl:template>
-
-<xsl:template match="bison-xml-report">
- <xsl:text>// Generated by GNU Bison </xsl:text>
- <xsl:value-of select="@version"/>
- <xsl:text>.&#10;</xsl:text>
- <xsl:text>// Report bugs to &lt;</xsl:text>
- <xsl:value-of select="@bug-report"/>
- <xsl:text>&gt;.&#10;</xsl:text>
- <xsl:text>// Home page: &lt;</xsl:text>
- <xsl:value-of select="@url"/>
- <xsl:text>&gt;.&#10;&#10;</xsl:text>
- <xsl:apply-templates select="automaton">
- <xsl:with-param name="filename" select="filename"/>
- </xsl:apply-templates>
-</xsl:template>
-
-<xsl:template match="automaton">
- <xsl:param name="filename"/>
- <xsl:text>digraph "</xsl:text>
- <xsl:call-template name="escape">
- <xsl:with-param name="subject" select="$filename"/>
- </xsl:call-template>
- <xsl:text>"&#10;{
- node [fontname = courier, shape = box, colorscheme = paired6]
- edge [fontname = courier]
-
-</xsl:text>
- <xsl:apply-templates select="state"/>
- <xsl:text>}&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="automaton/state">
- <xsl:call-template name="output-node">
- <xsl:with-param name="number" select="@number"/>
- <xsl:with-param name="label">
- <xsl:apply-templates select="itemset/item"/>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:apply-templates select="actions/transitions"/>
- <xsl:apply-templates select="actions/reductions">
- <xsl:with-param name="staten">
- <xsl:value-of select="@number"/>
- </xsl:with-param>
- </xsl:apply-templates>
-</xsl:template>
-
-<xsl:template match="actions/reductions">
- <xsl:param name="staten"/>
- <xsl:for-each select='reduction'>
- <!-- These variables are needed because the current context can't be
- refered to directly in XPath expressions. -->
- <xsl:variable name="rul">
- <xsl:value-of select="@rule"/>
- </xsl:variable>
- <xsl:variable name="ena">
- <xsl:value-of select="@enabled"/>
- </xsl:variable>
- <!-- The foreach's body is protected by this, so that we are actually
- going to iterate once per reduction rule, and not per lookahead. -->
- <xsl:if test='not(preceding-sibling::*[@rule=$rul and @enabled=$ena])'>
- <xsl:variable name="rule">
- <xsl:choose>
- <!-- The acceptation state is refered to as 'accept' in the XML, but
- just as '0' in the DOT. -->
- <xsl:when test="@rule='accept'">
- <xsl:text>0</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@rule"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- The edge's beginning -->
- <xsl:call-template name="reduction-edge-start">
- <xsl:with-param name="state" select="$staten"/>
- <xsl:with-param name="rule" select="$rule"/>
- <xsl:with-param name="enabled" select="@enabled"/>
- </xsl:call-template>
-
- <!-- The edge's tokens -->
- <!-- Don't show labels for the default action. In other cases, there will
- always be at least one token, so 'label="[]"' will not occur. -->
- <xsl:if test='$rule!=0 and not(../reduction[@enabled=$ena and @rule=$rule and @symbol="$default"])'>
- <xsl:text>label="[</xsl:text>
- <xsl:for-each select='../reduction[@enabled=$ena and @rule=$rule]'>
- <xsl:call-template name="escape">
- <xsl:with-param name="subject" select="@symbol"/>
- </xsl:call-template>
- <xsl:if test="position() != last ()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>]", </xsl:text>
- </xsl:if>
-
- <!-- The edge's end -->
- <xsl:text>style=solid]&#10;</xsl:text>
-
- <!-- The diamond representing the reduction -->
- <xsl:call-template name="reduction-node">
- <xsl:with-param name="state" select="$staten"/>
- <xsl:with-param name="rule" select="$rule"/>
- <xsl:with-param name="color">
- <xsl:choose>
- <xsl:when test='@enabled="true"'>
- <xsl:text>3</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>5</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:for-each>
-</xsl:template>
-
-<xsl:template match="actions/transitions">
- <xsl:apply-templates select="transition"/>
-</xsl:template>
-
-<xsl:template match="item">
- <xsl:param name="prev-rule-number"
- select="preceding-sibling::item[1]/@rule-number"/>
- <xsl:apply-templates select="key('bison:ruleByNumber', @rule-number)">
- <xsl:with-param name="point" select="@point"/>
- <xsl:with-param name="num" select="@rule-number"/>
- <xsl:with-param name="prev-lhs"
- select="key('bison:ruleByNumber', $prev-rule-number)/lhs[text()]"
- />
- </xsl:apply-templates>
- <xsl:apply-templates select="lookaheads"/>
-</xsl:template>
-
-<xsl:template match="rule">
- <xsl:param name="point"/>
- <xsl:param name="num"/>
- <xsl:param name="prev-lhs"/>
- <xsl:text>&#10;</xsl:text>
- <xsl:choose>
- <xsl:when test="$num &lt; 10">
- <xsl:text> </xsl:text>
- </xsl:when>
- <xsl:when test="$num &lt; 100">
- <xsl:text> </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text></xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="$num"/>
- <xsl:text> </xsl:text>
- <xsl:choose>
- <xsl:when test="$prev-lhs = lhs[text()]">
- <xsl:call-template name="lpad">
- <xsl:with-param name="str" select="'|'"/>
- <xsl:with-param name="pad" select="number(string-length(lhs[text()])) + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="lhs"/>
- <xsl:text>:</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="$point = 0">
- <xsl:text> .</xsl:text>
- </xsl:if>
- <xsl:for-each select="rhs/symbol|rhs/empty">
- <xsl:apply-templates select="."/>
- <xsl:if test="$point = position()">
- <xsl:text> .</xsl:text>
- </xsl:if>
- </xsl:for-each>
-</xsl:template>
-
-<xsl:template match="symbol">
- <xsl:text> </xsl:text>
- <xsl:value-of select="."/>
-</xsl:template>
-
-<xsl:template match="empty"/>
-
-<xsl:template match="lookaheads">
- <xsl:text> [</xsl:text>
- <xsl:apply-templates select="symbol"/>
- <xsl:text>]</xsl:text>
-</xsl:template>
-
-<xsl:template match="lookaheads/symbol">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
-</xsl:template>
-
-<xsl:template name="reduction-edge-start">
- <xsl:param name="state"/>
- <xsl:param name="rule"/>
- <xsl:param name="enabled"/>
-
- <xsl:text> </xsl:text>
- <xsl:value-of select="$state"/>
- <xsl:text> -> "</xsl:text>
- <xsl:value-of select="$state"/>
- <xsl:text>R</xsl:text>
- <xsl:value-of select="$rule"/>
- <xsl:if test='$enabled = "false"'>
- <xsl:text>d</xsl:text>
- </xsl:if>
- <xsl:text>" [</xsl:text>
-</xsl:template>
-
-<xsl:template name="reduction-node">
- <xsl:param name="state"/>
- <xsl:param name="rule"/>
- <xsl:param name="color"/>
-
- <xsl:text> "</xsl:text>
- <xsl:value-of select="$state"/>
- <xsl:text>R</xsl:text>
- <xsl:value-of select="$rule"/>
- <xsl:if test="$color = 5">
- <xsl:text>d</xsl:text>
- </xsl:if>
- <xsl:text>" [label="</xsl:text>
- <xsl:choose>
- <xsl:when test="$rule = 0">
- <xsl:text>Acc", fillcolor=1</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>R</xsl:text>
- <xsl:value-of select="$rule"/>
- <xsl:text>", fillcolor=</xsl:text>
- <xsl:value-of select="$color"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>, shape=diamond, style=filled]&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="transition">
- <xsl:call-template name="output-edge">
- <xsl:with-param name="src" select="../../../@number"/>
- <xsl:with-param name="dst" select="@state"/>
- <xsl:with-param name="style">
- <xsl:choose>
- <xsl:when test="@symbol = 'error'">
- <xsl:text>dotted</xsl:text>
- </xsl:when>
- <xsl:when test="@type = 'shift'">
- <xsl:text>solid</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>dashed</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="label">
- <xsl:if test="not(@symbol = 'error')">
- <xsl:value-of select="@symbol"/>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="output-node">
- <xsl:param name="number"/>
- <xsl:param name="label"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="$number"/>
- <xsl:text> [label="</xsl:text>
- <xsl:text>State </xsl:text>
- <xsl:value-of select="$number"/>
- <xsl:text>\n</xsl:text>
- <xsl:call-template name="escape">
- <xsl:with-param name="subject" select="$label"/>
- </xsl:call-template>
- <xsl:text>\l"]&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template name="output-edge">
- <xsl:param name="src"/>
- <xsl:param name="dst"/>
- <xsl:param name="style"/>
- <xsl:param name="label"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="$src"/>
- <xsl:text> -> </xsl:text>
- <xsl:value-of select="$dst"/>
- <xsl:text> [style=</xsl:text>
- <xsl:value-of select="$style"/>
- <xsl:if test="$label and $label != ''">
- <xsl:text> label="</xsl:text>
- <xsl:call-template name="escape">
- <xsl:with-param name="subject" select="$label"/>
- </xsl:call-template>
- <xsl:text>"</xsl:text>
- </xsl:if>
- <xsl:text>]&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template name="escape">
- <xsl:param name="subject"/> <!-- required -->
- <xsl:call-template name="string-replace">
- <xsl:with-param name="subject">
- <xsl:call-template name="string-replace">
- <xsl:with-param name="subject">
- <xsl:call-template name="string-replace">
- <xsl:with-param name="subject" select="$subject"/>
- <xsl:with-param name="search" select="'\'"/>
- <xsl:with-param name="replace" select="'\\'"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="search" select="'&quot;'"/>
- <xsl:with-param name="replace" select="'\&quot;'"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="search" select="'&#10;'"/>
- <xsl:with-param name="replace" select="'\l'"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="string-replace">
- <xsl:param name="subject"/>
- <xsl:param name="search"/>
- <xsl:param name="replace"/>
- <xsl:choose>
- <xsl:when test="contains($subject, $search)">
- <xsl:variable name="before" select="substring-before($subject, $search)"/>
- <xsl:variable name="after" select="substring-after($subject, $search)"/>
- <xsl:value-of select="$before"/>
- <xsl:value-of select="$replace"/>
- <xsl:call-template name="string-replace">
- <xsl:with-param name="subject" select="$after"/>
- <xsl:with-param name="search" select="$search"/>
- <xsl:with-param name="replace" select="$replace"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$subject"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="lpad">
- <xsl:param name="str" select="''"/>
- <xsl:param name="pad" select="0"/>
- <xsl:variable name="diff" select="$pad - string-length($str)" />
- <xsl:choose>
- <xsl:when test="$diff &lt; 0">
- <xsl:value-of select="$str"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="space">
- <xsl:with-param name="repeat" select="$diff"/>
- </xsl:call-template>
- <xsl:value-of select="$str"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/gnuwin32/bin/data/xslt/xml2text.xsl b/gnuwin32/bin/data/xslt/xml2text.xsl
deleted file mode 100644
index 2626f566..00000000
--- a/gnuwin32/bin/data/xslt/xml2text.xsl
+++ /dev/null
@@ -1,569 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- xml2text.xsl - transform Bison XML Report into plain text.
-
- Copyright (C) 2007-2013 Free Software Foundation, Inc.
-
- This file is part of Bison, the GNU Compiler Compiler.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
- Written by Wojciech Polak <polak@gnu.org>.
- -->
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:bison="http://www.gnu.org/software/bison/">
-
-<xsl:import href="bison.xsl"/>
-<xsl:output method="text" encoding="UTF-8" indent="no"/>
-
-<xsl:template match="/">
- <xsl:apply-templates select="bison-xml-report"/>
-</xsl:template>
-
-<xsl:template match="bison-xml-report">
- <xsl:apply-templates select="grammar" mode="reductions"/>
- <xsl:apply-templates select="grammar" mode="useless-in-parser"/>
- <xsl:apply-templates select="automaton" mode="conflicts"/>
- <xsl:apply-templates select="grammar"/>
- <xsl:apply-templates select="automaton"/>
-</xsl:template>
-
-<xsl:template match="grammar" mode="reductions">
- <xsl:apply-templates select="nonterminals" mode="useless-in-grammar"/>
- <xsl:apply-templates select="terminals" mode="unused-in-grammar"/>
- <xsl:apply-templates select="rules" mode="useless-in-grammar"/>
-</xsl:template>
-
-<xsl:template match="nonterminals" mode="useless-in-grammar">
- <xsl:if test="nonterminal[@usefulness='useless-in-grammar']">
- <xsl:text>Nonterminals useless in grammar&#10;&#10;</xsl:text>
- <xsl:for-each select="nonterminal[@usefulness='useless-in-grammar']">
- <xsl:text> </xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:text>&#10;</xsl:text>
- </xsl:for-each>
- <xsl:text>&#10;&#10;</xsl:text>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="terminals" mode="unused-in-grammar">
- <xsl:if test="terminal[@usefulness='unused-in-grammar']">
- <xsl:text>Terminals unused in grammar&#10;&#10;</xsl:text>
- <xsl:for-each select="terminal[@usefulness='unused-in-grammar']">
- <xsl:sort select="@symbol-number" data-type="number"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:text>&#10;</xsl:text>
- </xsl:for-each>
- <xsl:text>&#10;&#10;</xsl:text>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="rules" mode="useless-in-grammar">
- <xsl:variable name="set" select="rule[@usefulness='useless-in-grammar']"/>
- <xsl:if test="$set">
- <xsl:text>Rules useless in grammar&#10;</xsl:text>
- <xsl:call-template name="style-rule-set">
- <xsl:with-param name="rule-set" select="$set"/>
- </xsl:call-template>
- <xsl:text>&#10;&#10;</xsl:text>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="grammar" mode="useless-in-parser">
- <xsl:variable
- name="set" select="rules/rule[@usefulness='useless-in-parser']"
- />
- <xsl:if test="$set">
- <xsl:text>Rules useless in parser due to conflicts&#10;</xsl:text>
- <xsl:call-template name="style-rule-set">
- <xsl:with-param name="rule-set" select="$set"/>
- </xsl:call-template>
- <xsl:text>&#10;&#10;</xsl:text>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="grammar">
- <xsl:text>Grammar&#10;</xsl:text>
- <xsl:call-template name="style-rule-set">
- <xsl:with-param
- name="rule-set" select="rules/rule[@usefulness!='useless-in-grammar']"
- />
- </xsl:call-template>
- <xsl:text>&#10;&#10;</xsl:text>
- <xsl:apply-templates select="terminals"/>
- <xsl:apply-templates select="nonterminals"/>
-</xsl:template>
-
-<xsl:template name="style-rule-set">
- <xsl:param name="rule-set"/>
- <xsl:for-each select="$rule-set">
- <xsl:apply-templates select=".">
- <xsl:with-param name="pad" select="'3'"/>
- <xsl:with-param name="prev-lhs">
- <xsl:if test="position()>1">
- <xsl:variable name="position" select="position()"/>
- <xsl:value-of select="$rule-set[$position - 1]/lhs"/>
- </xsl:if>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:for-each>
-</xsl:template>
-
-<xsl:template match="grammar/terminals">
- <xsl:text>Terminals, with rules where they appear&#10;&#10;</xsl:text>
- <xsl:apply-templates select="terminal"/>
- <xsl:text>&#10;&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="grammar/nonterminals">
- <xsl:text>Nonterminals, with rules where they appear&#10;&#10;</xsl:text>
- <xsl:apply-templates select="nonterminal[@usefulness!='useless-in-grammar']"/>
-</xsl:template>
-
-<xsl:template match="terminal">
- <xsl:value-of select="@name"/>
- <xsl:call-template name="line-wrap">
- <xsl:with-param name="first-line-length">
- <xsl:choose>
- <xsl:when test="string-length(@name) &gt; 66">0</xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="66 - string-length(@name)" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="line-length" select="66" />
- <xsl:with-param name="text">
- <xsl:value-of select="concat(' (', @token-number, ')')"/>
- <xsl:for-each select="key('bison:ruleByRhs', @name)">
- <xsl:value-of select="concat(' ', @number)"/>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="nonterminal">
- <xsl:value-of select="@name"/>
- <xsl:value-of select="concat(' (', @symbol-number, ')')"/>
- <xsl:text>&#10;</xsl:text>
- <xsl:variable name="output">
- <xsl:call-template name="line-wrap">
- <xsl:with-param name="line-length" select="66" />
- <xsl:with-param name="text">
- <xsl:text> </xsl:text>
- <xsl:if test="key('bison:ruleByLhs', @name)">
- <xsl:text>on@left:</xsl:text>
- <xsl:for-each select="key('bison:ruleByLhs', @name)">
- <xsl:value-of select="concat(' ', @number)"/>
- </xsl:for-each>
- </xsl:if>
- <xsl:if test="key('bison:ruleByRhs', @name)">
- <xsl:if test="key('bison:ruleByLhs', @name)">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:text>on@right:</xsl:text>
- <xsl:for-each select="key('bison:ruleByRhs', @name)">
- <xsl:value-of select="concat(' ', @number)"/>
- </xsl:for-each>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select="translate($output, '@', ' ')" />
-</xsl:template>
-
-<xsl:template match="automaton" mode="conflicts">
- <xsl:variable name="conflict-report">
- <xsl:apply-templates select="state" mode="conflicts"/>
- </xsl:variable>
- <xsl:if test="string-length($conflict-report) != 0">
- <xsl:value-of select="$conflict-report"/>
- <xsl:text>&#10;&#10;</xsl:text>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="state" mode="conflicts">
- <xsl:variable name="conflict-counts">
- <xsl:apply-templates select="." mode="bison:count-conflicts" />
- </xsl:variable>
- <xsl:variable
- name="sr-count" select="substring-before($conflict-counts, ',')"
- />
- <xsl:variable
- name="rr-count" select="substring-after($conflict-counts, ',')"
- />
- <xsl:if test="$sr-count > 0 or $rr-count > 0">
- <xsl:value-of select="concat('State ', @number, ' conflicts:')"/>
- <xsl:if test="$sr-count > 0">
- <xsl:value-of select="concat(' ', $sr-count, ' shift/reduce')"/>
- <xsl:if test="$rr-count > 0">
- <xsl:value-of select="(',')"/>
- </xsl:if>
- </xsl:if>
- <xsl:if test="$rr-count > 0">
- <xsl:value-of select="concat(' ', $rr-count, ' reduce/reduce')"/>
- </xsl:if>
- <xsl:value-of select="'&#10;'"/>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="automaton">
- <xsl:apply-templates select="state">
- <xsl:with-param name="pad" select="'3'"/>
- </xsl:apply-templates>
-</xsl:template>
-
-<xsl:template match="automaton/state">
- <xsl:param name="pad"/>
- <xsl:text>&#10;&#10;</xsl:text>
- <xsl:text>State </xsl:text>
- <xsl:value-of select="@number"/>
- <xsl:text>&#10;&#10;</xsl:text>
- <xsl:apply-templates select="itemset/item">
- <xsl:with-param name="pad" select="$pad"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="actions/transitions">
- <xsl:with-param name="type" select="'shift'"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="actions/errors"/>
- <xsl:apply-templates select="actions/reductions"/>
- <xsl:apply-templates select="actions/transitions">
- <xsl:with-param name="type" select="'goto'"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="solved-conflicts"/>
-</xsl:template>
-
-<xsl:template match="actions/transitions">
- <xsl:param name="type"/>
- <xsl:if test="transition[@type = $type]">
- <xsl:text>&#10;</xsl:text>
- <xsl:apply-templates select="transition[@type = $type]">
- <xsl:with-param name="pad">
- <xsl:call-template name="max-width-symbol">
- <xsl:with-param name="node" select="transition[@type = $type]"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="actions/errors">
- <xsl:if test="error">
- <xsl:text>&#10;</xsl:text>
- <xsl:apply-templates select="error">
- <xsl:with-param name="pad">
- <xsl:call-template name="max-width-symbol">
- <xsl:with-param name="node" select="error"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="actions/reductions">
- <xsl:if test="reduction">
- <xsl:text>&#10;</xsl:text>
- <xsl:apply-templates select="reduction">
- <xsl:with-param name="pad">
- <xsl:call-template name="max-width-symbol">
- <xsl:with-param name="node" select="reduction"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="item">
- <xsl:param name="pad"/>
- <xsl:param name="prev-rule-number"
- select="preceding-sibling::item[1]/@rule-number"/>
- <xsl:apply-templates
- select="key('bison:ruleByNumber', current()/@rule-number)"
- >
- <xsl:with-param name="itemset" select="'true'"/>
- <xsl:with-param name="pad" select="$pad"/>
- <xsl:with-param
- name="prev-lhs"
- select="key('bison:ruleByNumber', $prev-rule-number)/lhs[text()]"
- />
- <xsl:with-param name="point" select="@point"/>
- <xsl:with-param name="lookaheads">
- <xsl:apply-templates select="lookaheads"/>
- </xsl:with-param>
- </xsl:apply-templates>
-</xsl:template>
-
-<xsl:template match="rule">
- <xsl:param name="itemset"/>
- <xsl:param name="pad"/>
- <xsl:param name="prev-lhs"/>
- <xsl:param name="point"/>
- <xsl:param name="lookaheads"/>
-
- <xsl:if test="$itemset != 'true' and not($prev-lhs = lhs[text()])">
- <xsl:text>&#10;</xsl:text>
- </xsl:if>
-
- <xsl:text> </xsl:text>
- <xsl:call-template name="lpad">
- <xsl:with-param name="str" select="string(@number)"/>
- <xsl:with-param name="pad" select="number($pad)"/>
- </xsl:call-template>
- <xsl:text> </xsl:text>
-
- <!-- LHS -->
- <xsl:choose>
- <xsl:when test="$itemset != 'true' and $prev-lhs = lhs[text()]">
- <xsl:call-template name="lpad">
- <xsl:with-param name="str" select="'|'"/>
- <xsl:with-param name="pad" select="number(string-length(lhs[text()])) + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$itemset = 'true' and $prev-lhs = lhs[text()]">
- <xsl:call-template name="lpad">
- <xsl:with-param name="str" select="'|'"/>
- <xsl:with-param name="pad" select="number(string-length(lhs[text()])) + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="lhs"/>
- <xsl:text>:</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- RHS -->
- <xsl:for-each select="rhs/*">
- <xsl:if test="position() = $point + 1">
- <xsl:text> .</xsl:text>
- </xsl:if>
- <xsl:if test="$itemset = 'true' and name(.) != 'empty'">
- <xsl:apply-templates select="."/>
- </xsl:if>
- <xsl:if test="$itemset != 'true'">
- <xsl:apply-templates select="."/>
- </xsl:if>
- <xsl:if test="position() = last() and position() = $point">
- <xsl:text> .</xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:if test="$lookaheads">
- <xsl:value-of select="$lookaheads"/>
- </xsl:if>
-
- <xsl:text>&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="symbol">
- <xsl:text> </xsl:text>
- <xsl:value-of select="."/>
-</xsl:template>
-
-<xsl:template match="empty">
- <xsl:text> %empty</xsl:text>
-</xsl:template>
-
-<xsl:template match="lookaheads">
- <xsl:text> [</xsl:text>
- <xsl:apply-templates select="symbol"/>
- <xsl:text>]</xsl:text>
-</xsl:template>
-
-<xsl:template match="lookaheads/symbol">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="transition">
- <xsl:param name="pad"/>
- <xsl:text> </xsl:text>
- <xsl:call-template name="rpad">
- <xsl:with-param name="str" select="string(@symbol)"/>
- <xsl:with-param name="pad" select="number($pad) + 2"/>
- </xsl:call-template>
- <xsl:choose>
- <xsl:when test="@type = 'shift'">
- <xsl:text>shift, and go to state </xsl:text>
- <xsl:value-of select="@state"/>
- </xsl:when>
- <xsl:when test="@type = 'goto'">
- <xsl:text>go to state </xsl:text>
- <xsl:value-of select="@state"/>
- </xsl:when>
- </xsl:choose>
- <xsl:text>&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="error">
- <xsl:param name="pad"/>
- <xsl:text> </xsl:text>
- <xsl:call-template name="rpad">
- <xsl:with-param name="str" select="string(@symbol)"/>
- <xsl:with-param name="pad" select="number($pad) + 2"/>
- </xsl:call-template>
- <xsl:text>error</xsl:text>
- <xsl:text> (</xsl:text>
- <xsl:value-of select="text()"/>
- <xsl:text>)</xsl:text>
- <xsl:text>&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="reduction">
- <xsl:param name="pad"/>
- <xsl:text> </xsl:text>
- <xsl:call-template name="rpad">
- <xsl:with-param name="str" select="string(@symbol)"/>
- <xsl:with-param name="pad" select="number($pad) + 2"/>
- </xsl:call-template>
- <xsl:if test="@enabled = 'false'">
- <xsl:text>[</xsl:text>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="@rule = 'accept'">
- <xsl:text>accept</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>reduce using rule </xsl:text>
- <xsl:value-of select="@rule"/>
- <xsl:text> (</xsl:text>
- <xsl:value-of
- select="key('bison:ruleByNumber', current()/@rule)/lhs[text()]"/>
- <xsl:text>)</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="@enabled = 'false'">
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="solved-conflicts">
- <xsl:if test="resolution">
- <xsl:text>&#10;</xsl:text>
- <xsl:apply-templates select="resolution"/>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="resolution">
- <xsl:text> Conflict between rule </xsl:text>
- <xsl:value-of select="@rule"/>
- <xsl:text> and token </xsl:text>
- <xsl:value-of select="@symbol"/>
- <xsl:text> resolved as </xsl:text>
- <xsl:if test="@type = 'error'">
- <xsl:text>an </xsl:text>
- </xsl:if>
- <xsl:value-of select="@type"/>
- <xsl:text> (</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>).&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template name="max-width-symbol">
- <xsl:param name="node"/>
- <xsl:variable name="longest">
- <xsl:for-each select="$node">
- <xsl:sort data-type="number" select="string-length(@symbol)"
- order="descending"/>
- <xsl:if test="position() = 1">
- <xsl:value-of select="string-length(@symbol)"/>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <xsl:value-of select="$longest"/>
-</xsl:template>
-
-<xsl:template name="lpad">
- <xsl:param name="str" select="''"/>
- <xsl:param name="pad" select="0"/>
- <xsl:variable name="diff" select="$pad - string-length($str)" />
- <xsl:choose>
- <xsl:when test="$diff &lt; 0">
- <xsl:value-of select="$str"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="space">
- <xsl:with-param name="repeat" select="$diff"/>
- </xsl:call-template>
- <xsl:value-of select="$str"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="rpad">
- <xsl:param name="str" select="''"/>
- <xsl:param name="pad" select="0"/>
- <xsl:variable name="diff" select="$pad - string-length($str)"/>
- <xsl:choose>
- <xsl:when test="$diff &lt; 0">
- <xsl:value-of select="$str"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$str"/>
- <xsl:call-template name="space">
- <xsl:with-param name="repeat" select="$diff"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="line-wrap">
- <xsl:param name="line-length"/> <!-- required -->
- <xsl:param name="first-line-length" select="$line-length"/>
- <xsl:param name="text"/> <!-- required -->
- <xsl:choose>
- <xsl:when test="normalize-space($text) = ''" />
- <xsl:when test="string-length($text) &lt;= $first-line-length">
- <xsl:value-of select="concat($text, '&#10;')" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="break-pos">
- <xsl:call-template name="ws-search">
- <xsl:with-param name="text" select="$text" />
- <xsl:with-param name="start" select="$first-line-length+1" />
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select="substring($text, 1, $break-pos - 1)" />
- <xsl:text>&#10;</xsl:text>
- <xsl:call-template name="line-wrap">
- <xsl:with-param name="line-length" select="$line-length" />
- <xsl:with-param
- name="text" select="concat(' ', substring($text, $break-pos+1))"
- />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="ws-search">
- <xsl:param name="text"/> <!-- required -->
- <xsl:param name="start"/> <!-- required -->
- <xsl:variable name="search-text" select="substring($text, $start)" />
- <xsl:choose>
- <xsl:when test="not(contains($search-text, ' '))">
- <xsl:value-of select="string-length($text)+1" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of
- select="$start + string-length(substring-before($search-text, ' '))"
- />
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/gnuwin32/bin/data/xslt/xml2xhtml.xsl b/gnuwin32/bin/data/xslt/xml2xhtml.xsl
deleted file mode 100644
index d2cfed4c..00000000
--- a/gnuwin32/bin/data/xslt/xml2xhtml.xsl
+++ /dev/null
@@ -1,745 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- xml2html.xsl - transform Bison XML Report into XHTML.
-
- Copyright (C) 2007-2013 Free Software Foundation, Inc.
-
- This file is part of Bison, the GNU Compiler Compiler.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
- Written by Wojciech Polak <polak@gnu.org>.
- -->
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns="http://www.w3.org/1999/xhtml"
- xmlns:bison="http://www.gnu.org/software/bison/">
-
-<xsl:import href="bison.xsl"/>
-
-<xsl:output method="xml" encoding="UTF-8"
- doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
- doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
- indent="yes"/>
-
-<xsl:template match="/">
- <html>
- <head>
- <title>
- <xsl:value-of select="bison-xml-report/filename"/>
- <xsl:text> - GNU Bison XML Automaton Report</xsl:text>
- </title>
- <style type="text/css"><![CDATA[
- body {
- font-family: "Nimbus Sans L", Arial, sans-serif;
- font-size: 9pt;
- }
- a:link {
- color: #1f00ff;
- text-decoration: none;
- }
- a:visited {
- color: #1f00ff;
- text-decoration: none;
- }
- a:hover {
- color: red;
- }
- #menu a {
- text-decoration: underline;
- }
- .i {
- font-style: italic;
- }
- .pre {
- font-family: monospace;
- white-space: pre;
- }
- ol.decimal {
- list-style-type: decimal;
- }
- ol.lower-alpha {
- list-style-type: lower-alpha;
- }
- .point {
- color: #cc0000;
- }
- #footer {
- margin-top: 3.5em;
- font-size: 7pt;
- }
- ]]></style>
- </head>
- <body>
- <xsl:apply-templates select="bison-xml-report"/>
- <xsl:text>&#10;&#10;</xsl:text>
- <div id="footer"><hr />This document was generated using
- <a href="http://www.gnu.org/software/bison/" title="GNU Bison">
- GNU Bison <xsl:value-of select="/bison-xml-report/@version"/></a>
- XML Automaton Report.<br />
- <!-- default copying notice -->
- Verbatim copying and distribution of this entire page is
- permitted in any medium, provided this notice is preserved.</div>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="bison-xml-report">
- <h1>GNU Bison XML Automaton Report</h1>
- <p>
- input grammar: <span class="i"><xsl:value-of select="filename"/></span>
- </p>
-
- <xsl:text>&#10;&#10;</xsl:text>
- <h3>Table of Contents</h3>
- <ul id="menu">
- <li>
- <a href="#reductions">Reductions</a>
- <ul class="lower-alpha">
- <li><a href="#nonterminals_useless_in_grammar">Nonterminals useless in grammar</a></li>
- <li><a href="#terminals_unused_in_grammar">Terminals unused in grammar</a></li>
- <li><a href="#rules_useless_in_grammar">Rules useless in grammar</a></li>
- <xsl:if test="grammar/rules/rule[@usefulness='useless-in-parser']">
- <li><a href="#rules_useless_in_parser">Rules useless in parser due to conflicts</a></li>
- </xsl:if>
- </ul>
- </li>
- <li><a href="#conflicts">Conflicts</a></li>
- <li>
- <a href="#grammar">Grammar</a>
- <ul class="lower-alpha">
- <li><a href="#grammar">Itemset</a></li>
- <li><a href="#terminals">Terminal symbols</a></li>
- <li><a href="#nonterminals">Nonterminal symbols</a></li>
- </ul>
- </li>
- <li><a href="#automaton">Automaton</a></li>
- </ul>
- <xsl:apply-templates select="grammar" mode="reductions"/>
- <xsl:apply-templates select="grammar" mode="useless-in-parser"/>
- <xsl:apply-templates select="automaton" mode="conflicts"/>
- <xsl:apply-templates select="grammar"/>
- <xsl:apply-templates select="automaton"/>
-</xsl:template>
-
-<xsl:template match="grammar" mode="reductions">
- <h2>
- <a name="reductions"/>
- <xsl:text> Reductions</xsl:text>
- </h2>
- <xsl:apply-templates select="nonterminals" mode="useless-in-grammar"/>
- <xsl:apply-templates select="terminals" mode="unused-in-grammar"/>
- <xsl:apply-templates select="rules" mode="useless-in-grammar"/>
-</xsl:template>
-
-<xsl:template match="nonterminals" mode="useless-in-grammar">
- <h3>
- <a name="nonterminals_useless_in_grammar"/>
- <xsl:text> Nonterminals useless in grammar</xsl:text>
- </h3>
- <xsl:text>&#10;&#10;</xsl:text>
- <xsl:if test="nonterminal[@usefulness='useless-in-grammar']">
- <p class="pre">
- <xsl:for-each select="nonterminal[@usefulness='useless-in-grammar']">
- <xsl:text> </xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:text>&#10;</xsl:text>
- </xsl:for-each>
- <xsl:text>&#10;&#10;</xsl:text>
- </p>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="terminals" mode="unused-in-grammar">
- <h3>
- <a name="terminals_unused_in_grammar"/>
- <xsl:text> Terminals unused in grammar</xsl:text>
- </h3>
- <xsl:text>&#10;&#10;</xsl:text>
- <xsl:if test="terminal[@usefulness='unused-in-grammar']">
- <p class="pre">
- <xsl:for-each select="terminal[@usefulness='unused-in-grammar']">
- <xsl:sort select="@symbol-number" data-type="number"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:text>&#10;</xsl:text>
- </xsl:for-each>
- <xsl:text>&#10;&#10;</xsl:text>
- </p>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="rules" mode="useless-in-grammar">
- <h3>
- <a name="rules_useless_in_grammar"/>
- <xsl:text> Rules useless in grammar</xsl:text>
- </h3>
- <xsl:text>&#10;</xsl:text>
- <xsl:variable name="set" select="rule[@usefulness='useless-in-grammar']"/>
- <xsl:if test="$set">
- <p class="pre">
- <xsl:call-template name="style-rule-set">
- <xsl:with-param name="rule-set" select="$set"/>
- </xsl:call-template>
- <xsl:text>&#10;&#10;</xsl:text>
- </p>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="grammar" mode="useless-in-parser">
- <xsl:variable
- name="set" select="rules/rule[@usefulness='useless-in-parser']"
- />
- <xsl:if test="$set">
- <h2>
- <a name="rules_useless_in_parser"/>
- <xsl:text> Rules useless in parser due to conflicts</xsl:text>
- </h2>
- <xsl:text>&#10;</xsl:text>
- <p class="pre">
- <xsl:call-template name="style-rule-set">
- <xsl:with-param name="rule-set" select="$set"/>
- </xsl:call-template>
- </p>
- <xsl:text>&#10;&#10;</xsl:text>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="grammar">
- <h2>
- <a name="grammar"/>
- <xsl:text> Grammar</xsl:text>
- </h2>
- <xsl:text>&#10;</xsl:text>
- <p class="pre">
- <xsl:call-template name="style-rule-set">
- <xsl:with-param
- name="rule-set" select="rules/rule[@usefulness!='useless-in-grammar']"
- />
- </xsl:call-template>
- </p>
- <xsl:text>&#10;&#10;</xsl:text>
- <xsl:apply-templates select="terminals"/>
- <xsl:apply-templates select="nonterminals"/>
-</xsl:template>
-
-<xsl:template name="style-rule-set">
- <xsl:param name="rule-set"/>
- <xsl:for-each select="$rule-set">
- <xsl:apply-templates select=".">
- <xsl:with-param name="pad" select="'3'"/>
- <xsl:with-param name="prev-lhs">
- <xsl:if test="position()>1">
- <xsl:variable name="position" select="position()"/>
- <xsl:value-of select="$rule-set[$position - 1]/lhs"/>
- </xsl:if>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:for-each>
-</xsl:template>
-
-<xsl:template match="automaton" mode="conflicts">
- <h2>
- <a name="conflicts"/>
- <xsl:text> Conflicts</xsl:text>
- </h2>
- <xsl:text>&#10;&#10;</xsl:text>
- <xsl:variable name="conflict-report">
- <xsl:apply-templates select="state" mode="conflicts"/>
- </xsl:variable>
- <xsl:if test="string-length($conflict-report) != 0">
- <p class="pre">
- <xsl:copy-of select="$conflict-report"/>
- <xsl:text>&#10;&#10;</xsl:text>
- </p>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="state" mode="conflicts">
- <xsl:variable name="conflict-counts">
- <xsl:apply-templates select="." mode="bison:count-conflicts" />
- </xsl:variable>
- <xsl:variable
- name="sr-count" select="substring-before($conflict-counts, ',')"
- />
- <xsl:variable
- name="rr-count" select="substring-after($conflict-counts, ',')"
- />
- <xsl:if test="$sr-count > 0 or $rr-count > 0">
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#state_', @number)"/>
- </xsl:attribute>
- <xsl:value-of select="concat('State ', @number)"/>
- </a>
- <xsl:text> conflicts:</xsl:text>
- <xsl:if test="$sr-count > 0">
- <xsl:value-of select="concat(' ', $sr-count, ' shift/reduce')"/>
- <xsl:if test="$rr-count > 0">
- <xsl:value-of select="(',')"/>
- </xsl:if>
- </xsl:if>
- <xsl:if test="$rr-count > 0">
- <xsl:value-of select="concat(' ', $rr-count, ' reduce/reduce')"/>
- </xsl:if>
- <xsl:value-of select="'&#10;'"/>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="grammar/terminals">
- <h3>
- <a name="terminals"/>
- <xsl:text> Terminals, with rules where they appear</xsl:text>
- </h3>
- <xsl:text>&#10;&#10;</xsl:text>
- <p class="pre">
- <xsl:apply-templates select="terminal"/>
- </p>
- <xsl:text>&#10;&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="grammar/nonterminals">
- <h3>
- <a name="nonterminals"/>
- <xsl:text> Nonterminals, with rules where they appear</xsl:text>
- </h3>
- <xsl:text>&#10;&#10;</xsl:text>
- <p class="pre">
- <xsl:apply-templates
- select="nonterminal[@usefulness!='useless-in-grammar']"
- />
- </p>
-</xsl:template>
-
-<xsl:template match="terminal">
- <b><xsl:value-of select="@name"/></b>
- <xsl:value-of select="concat(' (', @token-number, ')')"/>
- <xsl:for-each select="key('bison:ruleByRhs', @name)">
- <xsl:apply-templates select="." mode="number-link"/>
- </xsl:for-each>
- <xsl:text>&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="nonterminal">
- <b><xsl:value-of select="@name"/></b>
- <xsl:value-of select="concat(' (', @symbol-number, ')')"/>
- <xsl:text>&#10; </xsl:text>
- <xsl:if test="key('bison:ruleByLhs', @name)">
- <xsl:text>on left:</xsl:text>
- <xsl:for-each select="key('bison:ruleByLhs', @name)">
- <xsl:apply-templates select="." mode="number-link"/>
- </xsl:for-each>
- </xsl:if>
- <xsl:if test="key('bison:ruleByRhs', @name)">
- <xsl:if test="key('bison:ruleByLhs', @name)">
- <xsl:text>&#10; </xsl:text>
- </xsl:if>
- <xsl:text>on right:</xsl:text>
- <xsl:for-each select="key('bison:ruleByRhs', @name)">
- <xsl:apply-templates select="." mode="number-link"/>
- </xsl:for-each>
- </xsl:if>
- <xsl:text>&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="rule" mode="number-link">
- <xsl:text> </xsl:text>
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#rule_', @number)"/>
- </xsl:attribute>
- <xsl:value-of select="@number"/>
- </a>
-</xsl:template>
-
-<xsl:template match="automaton">
- <h2>
- <a name="automaton"/>
- <xsl:text> Automaton</xsl:text>
- </h2>
- <xsl:apply-templates select="state">
- <xsl:with-param name="pad" select="'3'"/>
- </xsl:apply-templates>
-</xsl:template>
-
-<xsl:template match="automaton/state">
- <xsl:param name="pad"/>
- <xsl:text>&#10;&#10;</xsl:text>
- <h3>
- <a>
- <xsl:attribute name="name">
- <xsl:value-of select="concat('state_', @number)"/>
- </xsl:attribute>
- </a>
- <xsl:text>state </xsl:text>
- <xsl:value-of select="@number"/>
- </h3>
- <xsl:text>&#10;&#10;</xsl:text>
- <p class="pre">
- <xsl:apply-templates select="itemset/item">
- <xsl:with-param name="pad" select="$pad"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="actions/transitions">
- <xsl:with-param name="type" select="'shift'"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="actions/errors"/>
- <xsl:apply-templates select="actions/reductions"/>
- <xsl:apply-templates select="actions/transitions">
- <xsl:with-param name="type" select="'goto'"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="solved-conflicts"/>
- </p>
-</xsl:template>
-
-<xsl:template match="actions/transitions">
- <xsl:param name="type"/>
- <xsl:if test="transition[@type = $type]">
- <xsl:text>&#10;</xsl:text>
- <xsl:apply-templates select="transition[@type = $type]">
- <xsl:with-param name="pad">
- <xsl:call-template name="max-width-symbol">
- <xsl:with-param name="node" select="transition[@type = $type]"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="actions/errors">
- <xsl:if test="error">
- <xsl:text>&#10;</xsl:text>
- <xsl:apply-templates select="error">
- <xsl:with-param name="pad">
- <xsl:call-template name="max-width-symbol">
- <xsl:with-param name="node" select="error"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="actions/reductions">
- <xsl:if test="reduction">
- <xsl:text>&#10;</xsl:text>
- <xsl:apply-templates select="reduction">
- <xsl:with-param name="pad">
- <xsl:call-template name="max-width-symbol">
- <xsl:with-param name="node" select="reduction"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="item">
- <xsl:param name="pad"/>
- <xsl:param name="prev-rule-number"
- select="preceding-sibling::item[1]/@rule-number"/>
- <xsl:apply-templates
- select="key('bison:ruleByNumber', current()/@rule-number)"
- >
- <xsl:with-param name="itemset" select="'true'"/>
- <xsl:with-param name="pad" select="$pad"/>
- <xsl:with-param name="prev-lhs"
- select="key('bison:ruleByNumber', $prev-rule-number)/lhs[text()]"
- />
- <xsl:with-param name="point" select="@point"/>
- <xsl:with-param name="lookaheads">
- <xsl:apply-templates select="lookaheads"/>
- </xsl:with-param>
- </xsl:apply-templates>
-</xsl:template>
-
-<xsl:template match="rule">
- <xsl:param name="itemset"/>
- <xsl:param name="pad"/>
- <xsl:param name="prev-lhs"/>
- <xsl:param name="point"/>
- <xsl:param name="lookaheads"/>
-
- <xsl:if test="$itemset != 'true' and not($prev-lhs = lhs[text()])">
- <xsl:text>&#10;</xsl:text>
- </xsl:if>
-
- <xsl:if test="$itemset != 'true'">
- <a>
- <xsl:attribute name="name">
- <xsl:value-of select="concat('rule_', @number)"/>
- </xsl:attribute>
- </a>
- </xsl:if>
- <xsl:text> </xsl:text>
-
- <xsl:choose>
- <xsl:when test="$itemset = 'true'">
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#rule_', @number)"/>
- </xsl:attribute>
- <xsl:call-template name="lpad">
- <xsl:with-param name="str" select="string(@number)"/>
- <xsl:with-param name="pad" select="number($pad)"/>
- </xsl:call-template>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="lpad">
- <xsl:with-param name="str" select="string(@number)"/>
- <xsl:with-param name="pad" select="number($pad)"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> </xsl:text>
-
- <!-- LHS -->
- <xsl:choose>
- <xsl:when test="$itemset != 'true' and $prev-lhs = lhs[text()]">
- <xsl:call-template name="lpad">
- <xsl:with-param name="str" select="'|'"/>
- <xsl:with-param name="pad" select="number(string-length(lhs[text()])) + 2"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$itemset = 'true' and $prev-lhs = lhs[text()]">
- <xsl:call-template name="lpad">
- <xsl:with-param name="str" select="'|'"/>
- <xsl:with-param name="pad" select="number(string-length(lhs[text()])) + 2"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <span class="i">
- <xsl:value-of select="lhs"/>
- </span>
- <xsl:text> &#8594;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- RHS -->
- <xsl:for-each select="rhs/*">
- <xsl:if test="position() = $point + 1">
- <xsl:text> </xsl:text>
- <span class="point">.</span>
- </xsl:if>
- <xsl:if test="$itemset = 'true' and name(.) != 'empty'">
- <xsl:apply-templates select="."/>
- </xsl:if>
- <xsl:if test="$itemset != 'true'">
- <xsl:apply-templates select="."/>
- </xsl:if>
- <xsl:if test="position() = last() and position() = $point">
- <xsl:text> </xsl:text>
- <span class="point">.</span>
- </xsl:if>
- </xsl:for-each>
- <xsl:if test="$lookaheads">
- <xsl:value-of select="$lookaheads"/>
- </xsl:if>
-
- <xsl:text>&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="symbol">
- <xsl:text> </xsl:text>
- <xsl:choose>
- <xsl:when test="name(key('bison:symbolByName', .)) = 'nonterminal'">
- <span class="i"><xsl:value-of select="."/></span>
- </xsl:when>
- <xsl:otherwise>
- <b><xsl:value-of select="."/></b>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template match="empty">
- <xsl:text> &#949;</xsl:text>
-</xsl:template>
-
-<xsl:template match="lookaheads">
- <xsl:text> [</xsl:text>
- <xsl:apply-templates select="symbol"/>
- <xsl:text>]</xsl:text>
-</xsl:template>
-
-<xsl:template match="lookaheads/symbol">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="transition">
- <xsl:param name="pad"/>
- <xsl:text> </xsl:text>
- <xsl:call-template name="rpad">
- <xsl:with-param name="str" select="string(@symbol)"/>
- <xsl:with-param name="pad" select="number($pad) + 2"/>
- </xsl:call-template>
- <xsl:choose>
- <xsl:when test="@type = 'shift'">
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#state_', @state)"/>
- </xsl:attribute>
- <xsl:value-of select="concat('shift, and go to state ', @state)"/>
- </a>
- </xsl:when>
- <xsl:when test="@type = 'goto'">
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#state_', @state)"/>
- </xsl:attribute>
- <xsl:value-of select="concat('go to state ', @state)"/>
- </a>
- </xsl:when>
- </xsl:choose>
- <xsl:text>&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="error">
- <xsl:param name="pad"/>
- <xsl:text> </xsl:text>
- <xsl:call-template name="rpad">
- <xsl:with-param name="str" select="string(@symbol)"/>
- <xsl:with-param name="pad" select="number($pad) + 2"/>
- </xsl:call-template>
- <xsl:text>error</xsl:text>
- <xsl:text> (</xsl:text>
- <xsl:value-of select="text()"/>
- <xsl:text>)</xsl:text>
- <xsl:text>&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="reduction">
- <xsl:param name="pad"/>
- <xsl:text> </xsl:text>
- <xsl:call-template name="rpad">
- <xsl:with-param name="str" select="string(@symbol)"/>
- <xsl:with-param name="pad" select="number($pad) + 2"/>
- </xsl:call-template>
- <xsl:if test="@enabled = 'false'">
- <xsl:text>[</xsl:text>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="@rule = 'accept'">
- <xsl:text>accept</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#rule_', @rule)"/>
- </xsl:attribute>
- <xsl:value-of select="concat('reduce using rule ', @rule)"/>
- </a>
- <xsl:text> (</xsl:text>
- <xsl:value-of
- select="key('bison:ruleByNumber', current()/@rule)/lhs[text()]"
- />
- <xsl:text>)</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="@enabled = 'false'">
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="solved-conflicts">
- <xsl:if test="resolution">
- <xsl:text>&#10;</xsl:text>
- <xsl:apply-templates select="resolution"/>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="resolution">
- <xsl:text> Conflict between </xsl:text>
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#rule_', @rule)"/>
- </xsl:attribute>
- <xsl:value-of select="concat('rule ',@rule)"/>
- </a>
- <xsl:text> and token </xsl:text>
- <xsl:value-of select="@symbol"/>
- <xsl:text> resolved as </xsl:text>
- <xsl:if test="@type = 'error'">
- <xsl:text>an </xsl:text>
- </xsl:if>
- <xsl:value-of select="@type"/>
- <xsl:text> (</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>).&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template name="max-width-symbol">
- <xsl:param name="node"/>
- <xsl:variable name="longest">
- <xsl:for-each select="$node">
- <xsl:sort data-type="number" select="string-length(@symbol)"
- order="descending"/>
- <xsl:if test="position() = 1">
- <xsl:value-of select="string-length(@symbol)"/>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <xsl:value-of select="$longest"/>
-</xsl:template>
-
-<xsl:template name="lpad">
- <xsl:param name="str" select="''"/>
- <xsl:param name="pad" select="0"/>
- <xsl:variable name="diff" select="$pad - string-length($str)" />
- <xsl:choose>
- <xsl:when test="$diff &lt; 0">
- <xsl:value-of select="$str"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="space">
- <xsl:with-param name="repeat" select="$diff"/>
- </xsl:call-template>
- <xsl:value-of select="$str"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="rpad">
- <xsl:param name="str" select="''"/>
- <xsl:param name="pad" select="0"/>
- <xsl:variable name="diff" select="$pad - string-length($str)"/>
- <xsl:choose>
- <xsl:when test="$diff &lt; 0">
- <xsl:value-of select="$str"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$str"/>
- <xsl:call-template name="space">
- <xsl:with-param name="repeat" select="$diff"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="space">
- <xsl:param name="repeat">0</xsl:param>
- <xsl:param name="fill" select="' '"/>
- <xsl:if test="number($repeat) &gt;= 1">
- <xsl:call-template name="space">
- <xsl:with-param name="repeat" select="$repeat - 1"/>
- <xsl:with-param name="fill" select="$fill"/>
- </xsl:call-template>
- <xsl:value-of select="$fill"/>
- </xsl:if>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/gnuwin32/bin/data/yacc.c b/gnuwin32/bin/data/yacc.c
deleted file mode 100644
index 822656b8..00000000
--- a/gnuwin32/bin/data/yacc.c
+++ /dev/null
@@ -1,1915 +0,0 @@
- -*- C -*-
-# Yacc compatible skeleton for Bison
-
-# Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation,
-# Inc.
-
-m4_pushdef([b4_copyright_years],
- [1984, 1989-1990, 2000-2013])
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# Check the value of %define api.push-pull.
-b4_percent_define_default([[api.push-pull]], [[pull]])
-b4_percent_define_check_values([[[[api.push-pull]],
- [[pull]], [[push]], [[both]]]])
-b4_define_flag_if([pull]) m4_define([b4_pull_flag], [[1]])
-b4_define_flag_if([push]) m4_define([b4_push_flag], [[1]])
-m4_case(b4_percent_define_get([[api.push-pull]]),
- [pull], [m4_define([b4_push_flag], [[0]])],
- [push], [m4_define([b4_pull_flag], [[0]])])
-
-# Handle BISON_USE_PUSH_FOR_PULL for the test suite. So that push parsing
-# tests function as written, do not let BISON_USE_PUSH_FOR_PULL modify the
-# behavior of Bison at all when push parsing is already requested.
-b4_define_flag_if([use_push_for_pull])
-b4_use_push_for_pull_if([
- b4_push_if([m4_define([b4_use_push_for_pull_flag], [[0]])],
- [m4_define([b4_push_flag], [[1]])])])
-
-# Check the value of %define parse.lac and friends, where LAC stands for
-# lookahead correction.
-b4_percent_define_default([[parse.lac]], [[none]])
-b4_percent_define_default([[parse.lac.es-capacity-initial]], [[20]])
-b4_percent_define_default([[parse.lac.memory-trace]], [[failures]])
-b4_percent_define_check_values([[[[parse.lac]], [[full]], [[none]]]],
- [[[[parse.lac.memory-trace]],
- [[failures]], [[full]]]])
-b4_define_flag_if([lac])
-m4_define([b4_lac_flag],
- [m4_if(b4_percent_define_get([[parse.lac]]),
- [none], [[0]], [[1]])])
-
-m4_include(b4_pkgdatadir/[c.m4])
-
-## ---------------- ##
-## Default values. ##
-## ---------------- ##
-
-# Stack parameters.
-m4_define_default([b4_stack_depth_max], [10000])
-m4_define_default([b4_stack_depth_init], [200])
-
-
-## ------------------------ ##
-## Pure/impure interfaces. ##
-## ------------------------ ##
-
-b4_percent_define_default([[api.pure]], [[false]])
-b4_percent_define_check_values([[[[api.pure]],
- [[false]], [[true]], [[]], [[full]]]])
-
-m4_define([b4_pure_flag], [[0]])
-m4_case(b4_percent_define_get([[api.pure]]),
- [false], [m4_define([b4_pure_flag], [[0]])],
- [true], [m4_define([b4_pure_flag], [[1]])],
- [], [m4_define([b4_pure_flag], [[1]])],
- [full], [m4_define([b4_pure_flag], [[2]])])
-
-m4_define([b4_pure_if],
-[m4_case(b4_pure_flag,
- [0], [$2],
- [1], [$1],
- [2], [$1])])
- [m4_fatal([invalid api.pure value: ]$1)])])
-
-# b4_yyerror_arg_loc_if(ARG)
-# --------------------------
-# Expand ARG iff yyerror is to be given a location as argument.
-m4_define([b4_yyerror_arg_loc_if],
-[b4_locations_if([m4_case(b4_pure_flag,
- [1], [m4_ifset([b4_parse_param], [$1])],
- [2], [$1])])])
-
-# b4_yyerror_args
-# ---------------
-# Arguments passed to yyerror: user args plus yylloc.
-m4_define([b4_yyerror_args],
-[b4_yyerror_arg_loc_if([&yylloc, ])dnl
-m4_ifset([b4_parse_param], [b4_args(b4_parse_param), ])])
-
-
-
-## ------------ ##
-## Data Types. ##
-## ------------ ##
-
-# b4_int_type(MIN, MAX)
-# ---------------------
-# Return the smallest int type able to handle numbers ranging from
-# MIN to MAX (included). Overwrite the version from c.m4, which
-# uses only C89 types, so that the user can override the shorter
-# types, and so that pre-C89 compilers are handled correctly.
-m4_define([b4_int_type],
-[m4_if(b4_ints_in($@, [0], [255]), [1], [yytype_uint8],
- b4_ints_in($@, [-128], [127]), [1], [yytype_int8],
-
- b4_ints_in($@, [0], [65535]), [1], [yytype_uint16],
- b4_ints_in($@, [-32768], [32767]), [1], [yytype_int16],
-
- m4_eval([0 <= $1]), [1], [unsigned int],
-
- [int])])
-
-
-## ----------------- ##
-## Semantic Values. ##
-## ----------------- ##
-
-
-# b4_lhs_value([TYPE])
-# --------------------
-# Expansion of $<TYPE>$.
-m4_define([b4_lhs_value],
-[b4_symbol_value(yyval, [$1])])
-
-
-# b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
-# --------------------------------------
-# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
-# symbols on RHS.
-m4_define([b4_rhs_value],
- [b4_symbol_value([yyvsp@{b4_subtract([$2], [$1])@}], [$3])])
-
-
-## ----------- ##
-## Locations. ##
-## ----------- ##
-
-# b4_lhs_location()
-# -----------------
-# Expansion of @$.
-m4_define([b4_lhs_location],
-[(yyloc)])
-
-
-# b4_rhs_location(RULE-LENGTH, NUM)
-# ---------------------------------
-# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
-# on RHS.
-m4_define([b4_rhs_location],
- [(yylsp@{b4_subtract([$2], [$1])@})])
-
-
-## -------------- ##
-## Declarations. ##
-## -------------- ##
-
-# b4_declare_scanner_communication_variables
-# ------------------------------------------
-# Declare the variables that are global, or local to YYPARSE if
-# pure-parser.
-m4_define([b4_declare_scanner_communication_variables], [[
-/* The lookahead symbol. */
-int yychar;
-
-]b4_pure_if([[
-/* The semantic value of the lookahead symbol. */
-/* Default value used for initialization, for pacifying older GCCs
- or non-GCC compilers. */
-YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
-YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);]b4_locations_if([[
-
-/* Location data for the lookahead symbol. */
-static YYLTYPE yyloc_default]b4_yyloc_default[;
-YYLTYPE yylloc = yyloc_default;]])],
-[[/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval;]b4_locations_if([[
-/* Location data for the lookahead symbol. */
-YYLTYPE yylloc]b4_yyloc_default[;]])[
-/* Number of syntax errors so far. */
-int yynerrs;]])])
-
-
-# b4_declare_parser_state_variables
-# ---------------------------------
-# Declare all the variables that are needed to maintain the parser state
-# between calls to yypush_parse.
-m4_define([b4_declare_parser_state_variables], [b4_pure_if([[
- /* Number of syntax errors so far. */
- int yynerrs;
-]])[
- int yystate;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
-
- /* The stacks and their tools:
- 'yyss': related to states.
- 'yyvs': related to semantic values.]b4_locations_if([[
- 'yyls': related to locations.]])[
-
- Refer to the stacks through separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss;
- yytype_int16 *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs;
- YYSTYPE *yyvsp;]b4_locations_if([[
-
- /* The location stack. */
- YYLTYPE yylsa[YYINITDEPTH];
- YYLTYPE *yyls;
- YYLTYPE *yylsp;
-
- /* The locations where the error started and ended. */
- YYLTYPE yyerror_range[3];]])[
-
- YYSIZE_T yystacksize;]b4_lac_if([[
-
- yytype_int16 yyesa@{]b4_percent_define_get([[parse.lac.es-capacity-initial]])[@};
- yytype_int16 *yyes;
- YYSIZE_T yyes_capacity;]])])
-
-
-# b4_declare_yyparse_push_
-# ------------------------
-# Declaration of yyparse (and dependencies) when using the push parser
-# (including in pull mode).
-m4_define([b4_declare_yyparse_push_],
-[[#ifndef YYPUSH_MORE_DEFINED
-# define YYPUSH_MORE_DEFINED
-enum { YYPUSH_MORE = 4 };
-#endif
-
-typedef struct ]b4_prefix[pstate ]b4_prefix[pstate;
-
-]b4_pull_if([b4_function_declare([b4_prefix[parse]], [[int]], b4_parse_param)
-])b4_function_declare([b4_prefix[push_parse]], [[int]],
- [[b4_prefix[pstate *ps]], [[ps]]]b4_pure_if([,
- [[[int pushed_char]], [[pushed_char]]],
- [[b4_api_PREFIX[STYPE const *pushed_val]], [[pushed_val]]]b4_locations_if([,
- [[b4_api_PREFIX[LTYPE *pushed_loc]], [[pushed_loc]]]])])m4_ifset([b4_parse_param], [,
- b4_parse_param]))
-b4_pull_if([b4_function_declare([b4_prefix[pull_parse]], [[int]],
- [[b4_prefix[pstate *ps]], [[ps]]]m4_ifset([b4_parse_param], [,
- b4_parse_param]))])
-b4_function_declare([b4_prefix[pstate_new]], [b4_prefix[pstate *]],
- [[[void]], []])
-b4_function_declare([b4_prefix[pstate_delete]], [[void]],
- [[b4_prefix[pstate *ps]], [[ps]]])dnl
-])
-
-# b4_declare_yyparse_
-# -------------------
-# When not the push parser.
-m4_define([b4_declare_yyparse_],
-[b4_function_declare(b4_prefix[parse], [int], b4_parse_param)])
-
-
-# b4_declare_yyparse
-# ------------------
-m4_define([b4_declare_yyparse],
-[b4_push_if([b4_declare_yyparse_push_],
- [b4_declare_yyparse_])[]dnl
-])
-
-
-# b4_shared_declarations
-# ----------------------
-# Declaration that might either go into the header (if --defines)
-# or open coded in the parser body.
-m4_define([b4_shared_declarations],
-[b4_cpp_guard_open([b4_spec_defines_file])[
-]b4_declare_yydebug[
-]b4_percent_code_get([[requires]])[
-]b4_token_enums_defines[
-]b4_declare_yylstype[
-]b4_declare_yyparse[
-]b4_percent_code_get([[provides]])[
-]b4_cpp_guard_close([b4_spec_defines_file])[]dnl
-])
-
-## -------------- ##
-## Output files. ##
-## -------------- ##
-
-b4_output_begin([b4_parser_file_name])
-b4_copyright([Bison implementation for Yacc-like parsers in C])[
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
- simplifying the original so-called "semantic" parser. */
-
-/* All symbols defined below should begin with yy or YY, to avoid
- infringing on user name space. This should be done even for local
- variables, as they might otherwise be expanded by user macros.
- There are some unavoidable exceptions within include files to
- define necessary library symbols; they are noted "INFRINGES ON
- USER NAME SPACE" below. */
-
-]b4_identification
-b4_percent_code_get([[top]])[]dnl
-m4_if(b4_api_prefix, [yy], [],
-[[/* Substitute the type names. */
-#define YYSTYPE ]b4_api_PREFIX[STYPE]b4_locations_if([[
-#define YYLTYPE ]b4_api_PREFIX[LTYPE]])])[
-]m4_if(b4_prefix, [yy], [],
-[[/* Substitute the variable and function names. */]b4_pull_if([[
-#define yyparse ]b4_prefix[parse]])b4_push_if([[
-#define yypush_parse ]b4_prefix[push_parse]b4_pull_if([[
-#define yypull_parse ]b4_prefix[pull_parse]])[
-#define yypstate_new ]b4_prefix[pstate_new
-#define yypstate_delete ]b4_prefix[pstate_delete
-#define yypstate ]b4_prefix[pstate]])[
-#define yylex ]b4_prefix[lex
-#define yyerror ]b4_prefix[error
-#define yydebug ]b4_prefix[debug
-#define yynerrs ]b4_prefix[nerrs
-]]b4_pure_if([], [[
-#define yylval ]b4_prefix[lval
-#define yychar ]b4_prefix[char]b4_locations_if([[
-#define yylloc ]b4_prefix[lloc]])]))[
-
-/* Copy the first part of user declarations. */
-]b4_user_pre_prologue[
-
-]b4_null_define[
-
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE ]b4_error_verbose_if([1], [0])[
-#endif
-
-]m4_ifval(m4_quote(b4_spec_defines_file),
-[[/* In a future release of Bison, this section will be replaced
- by #include "@basename(]b4_spec_defines_file[@)". */
-]])dnl
-b4_shared_declarations[
-
-/* Copy the second part of user declarations. */
-]b4_user_post_prologue
-b4_percent_code_get[]dnl
-
-[#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#else
-typedef signed char yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-# define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# else
-# define YYSIZE_T unsigned int
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-# if ENABLE_NLS
-# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
-# endif
-# endif
-# ifndef YY_
-# define YY_(Msgid) Msgid
-# endif
-#endif
-
-]b4_attribute_define[
-
-#if ]b4_lac_if([[1]], [[! defined yyoverflow || YYERROR_VERBOSE]])[
-
-/* The parser invokes alloca or malloc; define the necessary symbols. */]dnl
-b4_push_if([], [b4_lac_if([], [[
-
-# ifdef YYSTACK_USE_ALLOCA
-# if YYSTACK_USE_ALLOCA
-# ifdef __GNUC__
-# define YYSTACK_ALLOC __builtin_alloca
-# elif defined __BUILTIN_VA_ARG_INCR
-# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-# elif defined _AIX
-# define YYSTACK_ALLOC __alloca
-# elif defined _MSC_VER
-# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-# define alloca _alloca
-# else
-# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
- /* Use EXIT_SUCCESS as a witness for stdlib.h. */
-# ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
-# endif
-# endif
-# endif
-# endif
-# endif]])])[
-
-# ifdef YYSTACK_ALLOC
- /* Pacify GCC's 'empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-# ifndef YYSTACK_ALLOC_MAXIMUM
- /* The OS might guarantee only one guard page at the bottom of the stack,
- and a page size can be as small as 4096 bytes. So we cannot safely
- invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
- to allow for a few compiler-allocated temporary stack slots. */
-# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-# endif
-# else
-# define YYSTACK_ALLOC YYMALLOC
-# define YYSTACK_FREE YYFREE
-# ifndef YYSTACK_ALLOC_MAXIMUM
-# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-# endif
-# if (defined __cplusplus && ! defined EXIT_SUCCESS \
- && ! ((defined YYMALLOC || defined malloc) \
- && (defined YYFREE || defined free)))
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
-# endif
-# endif
-# ifndef YYMALLOC
-# define YYMALLOC malloc
-# if ! defined malloc && ! defined EXIT_SUCCESS
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-# endif
-# endif
-# ifndef YYFREE
-# define YYFREE free
-# if ! defined free && ! defined EXIT_SUCCESS
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-# endif
-# endif
-# endif]b4_lac_if([[
-# define YYCOPY_NEEDED 1]])[
-#endif]b4_lac_if([], [[ /* ! defined yyoverflow || YYERROR_VERBOSE */]])[
-
-
-#if (! defined yyoverflow \
- && (! defined __cplusplus \
- || (]b4_locations_if([[defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL \
- && ]])[defined ]b4_api_PREFIX[STYPE_IS_TRIVIAL && ]b4_api_PREFIX[STYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member. */
-union yyalloc
-{
- yytype_int16 yyss_alloc;
- YYSTYPE yyvs_alloc;]b4_locations_if([
- YYLTYPE yyls_alloc;])[
-};
-
-/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
- N elements. */
-]b4_locations_if(
-[# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
- + 2 * YYSTACK_GAP_MAXIMUM)],
-[# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAXIMUM)])[
-
-# define YYCOPY_NEEDED 1
-
-/* Relocate STACK from its old location to the new one. The
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
- elements in the stack, and YYPTR gives the new location of the
- stack. Advance YYPTR to a properly aligned location for the next
- stack. */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
- Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (0)
-
-#endif
-
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(Dst, Src, Count) \
- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
-# else
-# define YYCOPY(Dst, Src, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (Dst)[yyi] = (Src)[yyi]; \
- } \
- while (0)
-# endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
-/* YYFINAL -- State number of the termination state. */
-#define YYFINAL ]b4_final_state_number[
-/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST ]b4_last[
-
-/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS ]b4_tokens_number[
-/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS ]b4_nterms_number[
-/* YYNRULES -- Number of rules. */
-#define YYNRULES ]b4_rules_number[
-/* YYNSTATES -- Number of states. */
-#define YYNSTATES ]b4_states_number[
-
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
- by yylex, with out-of-bounds checking. */
-#define YYUNDEFTOK ]b4_undef_token_number[
-#define YYMAXUTOK ]b4_user_token_number_max[
-
-#define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
- as returned by yylex, without out-of-bounds checking. */
-static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
-{
- ]b4_translate[
-};
-
-#if ]b4_api_PREFIX[DEBUG
-]b4_integral_parser_table_define([rline], [b4_rline],
- [[YYRLINE[YYN] -- Source line where rule number YYN was defined.]])[
-#endif
-
-#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-static const char *const yytname[] =
-{
- ]b4_tname[
-};
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
- (internal) symbol number NUM (which must be that of a token). */
-static const ]b4_int_type_for([b4_toknum])[ yytoknum[] =
-{
- ]b4_toknum[
-};
-# endif
-
-#define YYPACT_NINF ]b4_pact_ninf[
-
-#define yypact_value_is_default(Yystate) \
- ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[
-
-#define YYTABLE_NINF ]b4_table_ninf[
-
-#define yytable_value_is_error(Yytable_value) \
- ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[
-
-]b4_parser_tables_define[
-
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
-
-
-#define YYRECOVERING() (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- YYPOPSTACK (yylen); \
- yystate = *yyssp; \]b4_lac_if([[
- YY_LAC_DISCARD ("YYBACKUP"); \]])[
- goto yybackup; \
- } \
- else \
- { \
- yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-while (0)
-
-/* Error token number */
-#define YYTERROR 1
-#define YYERRCODE 256
-
-]b4_locations_if([[
-]b4_yylloc_default_define[
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-]])[
-
-/* Enable debugging if requested. */
-#if ]b4_api_PREFIX[DEBUG
-
-# ifndef YYFPRINTF
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-# define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (0)
-
-]b4_yy_location_print_define[
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, \
- Type, Value]b4_locations_if([, Location])[]b4_user_args[); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (0)
-
-]b4_yy_symbol_print_define[
-
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included). |
-`------------------------------------------------------------------*/
-
-]b4_function_define([yy_stack_print], [static void],
- [[yytype_int16 *yybottom], [yybottom]],
- [[yytype_int16 *yytop], [yytop]])[
-{
- YYFPRINTF (stderr, "Stack now");
- for (; yybottom <= yytop; yybottom++)
- {
- int yybot = *yybottom;
- YYFPRINTF (stderr, " %d", yybot);
- }
- YYFPRINTF (stderr, "\n");
-}
-
-# define YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (yydebug) \
- yy_stack_print ((Bottom), (Top)); \
-} while (0)
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced. |
-`------------------------------------------------*/
-
-]b4_function_define([yy_reduce_print], [static void],
- [[yytype_int16 *yyssp], [yyssp]],
- [[YYSTYPE *yyvsp], [yyvsp]],
- b4_locations_if([[[YYLTYPE *yylsp], [yylsp]],
- ])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [,
- b4_parse_param]))[
-{
- unsigned long int yylno = yyrline[yyrule];
- int yynrhs = yyr2[yyrule];
- int yyi;
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
- yyrule - 1, yylno);
- /* The symbols being reduced. */
- for (yyi = 0; yyi < yynrhs; yyi++)
- {
- YYFPRINTF (stderr, " $%d = ", yyi + 1);
- yy_symbol_print (stderr,
- yystos[yyssp[yyi + 1 - yynrhs]],
- &]b4_rhs_value(yynrhs, yyi + 1)[
- ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl
- b4_user_args[);
- YYFPRINTF (stderr, "\n");
- }
-}
-
-# define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
- yy_reduce_print (yyssp, yyvsp, ]b4_locations_if([yylsp, ])[Rule]b4_user_args[); \
-} while (0)
-
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int yydebug;
-#else /* !]b4_api_PREFIX[DEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !]b4_api_PREFIX[DEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH ]b4_stack_depth_init[
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
- if the built-in stack extension method is used).
-
- Do not make this value too large; the results are undefined if
- YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
- evaluated with infinite-precision integer arithmetic. */
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH ]b4_stack_depth_max[
-#endif]b4_lac_if([[
-
-/* Given a state stack such that *YYBOTTOM is its bottom, such that
- *YYTOP is either its top or is YYTOP_EMPTY to indicate an empty
- stack, and such that *YYCAPACITY is the maximum number of elements it
- can hold without a reallocation, make sure there is enough room to
- store YYADD more elements. If not, allocate a new stack using
- YYSTACK_ALLOC, copy the existing elements, and adjust *YYBOTTOM,
- *YYTOP, and *YYCAPACITY to reflect the new capacity and memory
- location. If *YYBOTTOM != YYBOTTOM_NO_FREE, then free the old stack
- using YYSTACK_FREE. Return 0 if successful or if no reallocation is
- required. Return 1 if memory is exhausted. */
-static int
-yy_lac_stack_realloc (YYSIZE_T *yycapacity, YYSIZE_T yyadd,
-#if ]b4_api_PREFIX[DEBUG
- char const *yydebug_prefix,
- char const *yydebug_suffix,
-#endif
- yytype_int16 **yybottom,
- yytype_int16 *yybottom_no_free,
- yytype_int16 **yytop, yytype_int16 *yytop_empty)
-{
- YYSIZE_T yysize_old =
- *yytop == yytop_empty ? 0 : *yytop - *yybottom + 1;
- YYSIZE_T yysize_new = yysize_old + yyadd;
- if (*yycapacity < yysize_new)
- {
- YYSIZE_T yyalloc = 2 * yysize_new;
- yytype_int16 *yybottom_new;
- /* Use YYMAXDEPTH for maximum stack size given that the stack
- should never need to grow larger than the main state stack
- needs to grow without LAC. */
- if (YYMAXDEPTH < yysize_new)
- {
- YYDPRINTF ((stderr, "%smax size exceeded%s", yydebug_prefix,
- yydebug_suffix));
- return 1;
- }
- if (YYMAXDEPTH < yyalloc)
- yyalloc = YYMAXDEPTH;
- yybottom_new =
- (yytype_int16*) YYSTACK_ALLOC (yyalloc * sizeof *yybottom_new);
- if (!yybottom_new)
- {
- YYDPRINTF ((stderr, "%srealloc failed%s", yydebug_prefix,
- yydebug_suffix));
- return 1;
- }
- if (*yytop != yytop_empty)
- {
- YYCOPY (yybottom_new, *yybottom, yysize_old);
- *yytop = yybottom_new + (yysize_old - 1);
- }
- if (*yybottom != yybottom_no_free)
- YYSTACK_FREE (*yybottom);
- *yybottom = yybottom_new;
- *yycapacity = yyalloc;]m4_if(b4_percent_define_get([[parse.lac.memory-trace]]),
- [full], [[
- YYDPRINTF ((stderr, "%srealloc to %lu%s", yydebug_prefix,
- (unsigned long int) yyalloc, yydebug_suffix));]])[
- }
- return 0;
-}
-
-/* Establish the initial context for the current lookahead if no initial
- context is currently established.
-
- We define a context as a snapshot of the parser stacks. We define
- the initial context for a lookahead as the context in which the
- parser initially examines that lookahead in order to select a
- syntactic action. Thus, if the lookahead eventually proves
- syntactically unacceptable (possibly in a later context reached via a
- series of reductions), the initial context can be used to determine
- the exact set of tokens that would be syntactically acceptable in the
- lookahead's place. Moreover, it is the context after which any
- further semantic actions would be erroneous because they would be
- determined by a syntactically unacceptable token.
-
- YY_LAC_ESTABLISH should be invoked when a reduction is about to be
- performed in an inconsistent state (which, for the purposes of LAC,
- includes consistent states that don't know they're consistent because
- their default reductions have been disabled). Iff there is a
- lookahead token, it should also be invoked before reporting a syntax
- error. This latter case is for the sake of the debugging output.
-
- For parse.lac=full, the implementation of YY_LAC_ESTABLISH is as
- follows. If no initial context is currently established for the
- current lookahead, then check if that lookahead can eventually be
- shifted if syntactic actions continue from the current context.
- Report a syntax error if it cannot. */
-#define YY_LAC_ESTABLISH \
-do { \
- if (!yy_lac_established) \
- { \
- YYDPRINTF ((stderr, \
- "LAC: initial context established for %s\n", \
- yytname[yytoken])); \
- yy_lac_established = 1; \
- { \
- int yy_lac_status = \
- yy_lac (yyesa, &yyes, &yyes_capacity, yyssp, yytoken); \
- if (yy_lac_status == 2) \
- goto yyexhaustedlab; \
- if (yy_lac_status == 1) \
- goto yyerrlab; \
- } \
- } \
-} while (0)
-
-/* Discard any previous initial lookahead context because of Event,
- which may be a lookahead change or an invalidation of the currently
- established initial context for the current lookahead.
-
- The most common example of a lookahead change is a shift. An example
- of both cases is syntax error recovery. That is, a syntax error
- occurs when the lookahead is syntactically erroneous for the
- currently established initial context, so error recovery manipulates
- the parser stacks to try to find a new initial context in which the
- current lookahead is syntactically acceptable. If it fails to find
- such a context, it discards the lookahead. */
-#if ]b4_api_PREFIX[DEBUG
-# define YY_LAC_DISCARD(Event) \
-do { \
- if (yy_lac_established) \
- { \
- if (yydebug) \
- YYFPRINTF (stderr, "LAC: initial context discarded due to " \
- Event "\n"); \
- yy_lac_established = 0; \
- } \
-} while (0)
-#else
-# define YY_LAC_DISCARD(Event) yy_lac_established = 0
-#endif
-
-/* Given the stack whose top is *YYSSP, return 0 iff YYTOKEN can
- eventually (after perhaps some reductions) be shifted, return 1 if
- not, or return 2 if memory is exhausted. As preconditions and
- postconditions: *YYES_CAPACITY is the allocated size of the array to
- which *YYES points, and either *YYES = YYESA or *YYES points to an
- array allocated with YYSTACK_ALLOC. yy_lac may overwrite the
- contents of either array, alter *YYES and *YYES_CAPACITY, and free
- any old *YYES other than YYESA. */
-static int
-yy_lac (yytype_int16 *yyesa, yytype_int16 **yyes,
- YYSIZE_T *yyes_capacity, yytype_int16 *yyssp, int yytoken)
-{
- yytype_int16 *yyes_prev = yyssp;
- yytype_int16 *yyesp = yyes_prev;
- YYDPRINTF ((stderr, "LAC: checking lookahead %s:", yytname[yytoken]));
- if (yytoken == YYUNDEFTOK)
- {
- YYDPRINTF ((stderr, " Always Err\n"));
- return 1;
- }
- while (1)
- {
- int yyrule = yypact[*yyesp];
- if (yypact_value_is_default (yyrule)
- || (yyrule += yytoken) < 0 || YYLAST < yyrule
- || yycheck[yyrule] != yytoken)
- {
- yyrule = yydefact[*yyesp];
- if (yyrule == 0)
- {
- YYDPRINTF ((stderr, " Err\n"));
- return 1;
- }
- }
- else
- {
- yyrule = yytable[yyrule];
- if (yytable_value_is_error (yyrule))
- {
- YYDPRINTF ((stderr, " Err\n"));
- return 1;
- }
- if (0 < yyrule)
- {
- YYDPRINTF ((stderr, " S%d\n", yyrule));
- return 0;
- }
- yyrule = -yyrule;
- }
- {
- YYSIZE_T yylen = yyr2[yyrule];
- YYDPRINTF ((stderr, " R%d", yyrule - 1));
- if (yyesp != yyes_prev)
- {
- YYSIZE_T yysize = yyesp - *yyes + 1;
- if (yylen < yysize)
- {
- yyesp -= yylen;
- yylen = 0;
- }
- else
- {
- yylen -= yysize;
- yyesp = yyes_prev;
- }
- }
- if (yylen)
- yyesp = yyes_prev -= yylen;
- }
- {
- int yystate;
- {
- int yylhs = yyr1[yyrule] - YYNTOKENS;
- yystate = yypgoto[yylhs] + *yyesp;
- if (yystate < 0 || YYLAST < yystate
- || yycheck[yystate] != *yyesp)
- yystate = yydefgoto[yylhs];
- else
- yystate = yytable[yystate];
- }
- if (yyesp == yyes_prev)
- {
- yyesp = *yyes;
- *yyesp = yystate;
- }
- else
- {
- if (yy_lac_stack_realloc (yyes_capacity, 1,
-#if ]b4_api_PREFIX[DEBUG
- " (", ")",
-#endif
- yyes, yyesa, &yyesp, yyes_prev))
- {
- YYDPRINTF ((stderr, "\n"));
- return 2;
- }
- *++yyesp = yystate;
- }
- YYDPRINTF ((stderr, " G%d", yystate));
- }
- }
-}]])[
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined __GLIBC__ && defined _STRING_H
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-]b4_function_define([yystrlen], [static YYSIZE_T],
- [[const char *yystr], [yystr]])[
-{
- YYSIZE_T yylen;
- for (yylen = 0; yystr[yylen]; yylen++)
- continue;
- return yylen;
-}
-# endif
-# endif
-
-# ifndef yystpcpy
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-]b4_function_define([yystpcpy], [static char *],
- [[char *yydest], [yydest]], [[const char *yysrc], [yysrc]])[
-{
- char *yyd = yydest;
- const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
- quotes and backslashes, so that it's suitable for yyerror. The
- heuristic is that double-quoting is unnecessary unless the string
- contains an apostrophe, a comma, or backslash (other than
- backslash-backslash). YYSTR is taken from yytname. If YYRES is
- null, do not copy; instead, return the length of what the result
- would have been. */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
- if (*yystr == '"')
- {
- YYSIZE_T yyn = 0;
- char const *yyp = yystr;
-
- for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
- do_not_strip_quotes: ;
- }
-
- if (! yyres)
- return yystrlen (yystr);
-
- return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
- about the unexpected token YYTOKEN for the state stack whose top is
- YYSSP.]b4_lac_if([[ In order to see if a particular token T is a
- valid looakhead, invoke yy_lac (YYESA, YYES, YYES_CAPACITY, YYSSP, T).]])[
-
- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
- not large enough to hold the message. In that case, also set
- *YYMSG_ALLOC to the required number of bytes. Return 2 if the
- required number of bytes is too large to store]b4_lac_if([[ or if
- yy_lac returned 2]])[. */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- ]b4_lac_if([[yytype_int16 *yyesa, yytype_int16 **yyes,
- YYSIZE_T *yyes_capacity, ]])[yytype_int16 *yyssp, int yytoken)
-{
- YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
- YYSIZE_T yysize = yysize0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- /* Internationalized format string. */
- const char *yyformat = YY_NULL;
- /* Arguments of yyformat. */
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- /* Number of reported tokens (one for the "unexpected", one per
- "expected"). */
- int yycount = 0;
-
- /* There are many possibilities here to consider:
- - If this state is a consistent state with a default action, then
- the only way this function was invoked is if the default action
- is an error action. In that case, don't check for expected
- tokens because there are none.
- - The only way there can be no lookahead present (in yychar) is if
- this state is a consistent state with a default action. Thus,
- detecting the absence of a lookahead is sufficient to determine
- that there is no unexpected or expected token to report. In that
- case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this state is a
- consistent state with a default action. There might have been a
- previous inconsistent state, consistent state with a non-default
- action, or user semantic action that manipulated yychar.]b4_lac_if([[
- In the first two cases, it might appear that the current syntax
- error should have been detected in the previous state when yy_lac
- was invoked. However, at that time, there might have been a
- different syntax error that discarded a different initial context
- during error recovery, leaving behind the current lookahead.]], [[
- - Of course, the expected token list depends on states to have
- correct lookahead information, and it depends on the parser not
- to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state merging
- (from LALR or IELR) and default reductions corrupt the expected
- token list. However, the list is correct for canonical LR with
- one exception: it will still contain any token that will not be
- accepted due to an error action in a later state.]])[
- */
- if (yytoken != YYEMPTY)
- {
- int yyn = yypact[*yyssp];]b4_lac_if([[
- YYDPRINTF ((stderr, "Constructing syntax error message\n"));]])[
- yyarg[yycount++] = yytname[yytoken];
- if (!yypact_value_is_default (yyn))
- {]b4_lac_if([], [[
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. In other words, skip the first -YYN actions for
- this state because they are default actions. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;]])[
- int yyx;]b4_lac_if([[
-
- for (yyx = 0; yyx < YYNTOKENS; ++yyx)
- if (yyx != YYTERROR && yyx != YYUNDEFTOK)
- {
- {
- int yy_lac_status = yy_lac (yyesa, yyes, yyes_capacity,
- yyssp, yyx);
- if (yy_lac_status == 2)
- return 2;
- if (yy_lac_status == 1)
- continue;
- }]], [[
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
- && !yytable_value_is_error (yytable[yyx + yyn]))
- {]])[
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- {
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
- }
- }]b4_lac_if([[
-# if ]b4_api_PREFIX[DEBUG
- else if (yydebug)
- YYFPRINTF (stderr, "No expected tokens.\n");
-# endif]])[
- }
-
- switch (yycount)
- {
-# define YYCASE_(N, S) \
- case N: \
- yyformat = S; \
- break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
- }
-
- {
- YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
-
- if (*yymsg_alloc < yysize)
- {
- *yymsg_alloc = 2 * yysize;
- if (! (yysize <= *yymsg_alloc
- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
- return 1;
- }
-
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- {
- char *yyp = *yymsg;
- int yyi = 0;
- while ((*yyp = *yyformat) != '\0')
- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyformat += 2;
- }
- else
- {
- yyp++;
- yyformat++;
- }
- }
- return 0;
-}
-#endif /* YYERROR_VERBOSE */
-
-]b4_yydestruct_define[
-
-]b4_pure_if([], [
-
-b4_declare_scanner_communication_variables])[]b4_push_if([[
-
-struct yypstate
- {]b4_declare_parser_state_variables[
- /* Used to determine if this is the first time this instance has
- been used. */
- int yynew;
- };]b4_pure_if([], [[
-
-static char yypstate_allocated = 0;]])b4_pull_if([
-
-b4_function_define([[yyparse]], [[int]], b4_parse_param)[
-{
- return yypull_parse (YY_NULL]m4_ifset([b4_parse_param],
- [[, ]b4_args(b4_parse_param)])[);
-}
-
-]b4_function_define([[yypull_parse]], [[int]],
- [[[yypstate *yyps]], [[yyps]]]m4_ifset([b4_parse_param], [,
- b4_parse_param]))[
-{
- int yystatus;
- yypstate *yyps_local;]b4_pure_if([[
- int yychar;
- YYSTYPE yylval;]b4_locations_if([[
- static YYLTYPE yyloc_default][]b4_yyloc_default[;
- YYLTYPE yylloc = yyloc_default;]])])[
- if (yyps)
- yyps_local = yyps;
- else
- {
- yyps_local = yypstate_new ();
- if (!yyps_local)
- {]b4_pure_if([[
- yyerror (]b4_yyerror_args[YY_("memory exhausted"));]], [[
- if (!yypstate_allocated)
- yyerror (]b4_yyerror_args[YY_("memory exhausted"));]])[
- return 2;
- }
- }
- do {
- yychar = ]b4_lex[;
- yystatus =
- yypush_parse (yyps_local]b4_pure_if([[, yychar, &yylval]b4_locations_if([[, &yylloc]])])m4_ifset([b4_parse_param], [, b4_args(b4_parse_param)])[);
- } while (yystatus == YYPUSH_MORE);
- if (!yyps)
- yypstate_delete (yyps_local);
- return yystatus;
-}]])[
-
-/* Initialize the parser data structure. */
-]b4_function_define([[yypstate_new]], [[yypstate *]])[
-{
- yypstate *yyps;]b4_pure_if([], [[
- if (yypstate_allocated)
- return YY_NULL;]])[
- yyps = (yypstate *) malloc (sizeof *yyps);
- if (!yyps)
- return YY_NULL;
- yyps->yynew = 1;]b4_pure_if([], [[
- yypstate_allocated = 1;]])[
- return yyps;
-}
-
-]b4_function_define([[yypstate_delete]], [[void]],
- [[[yypstate *yyps]], [[yyps]]])[
-{
-#ifndef yyoverflow
- /* If the stack was reallocated but the parse did not complete, then the
- stack still needs to be freed. */
- if (!yyps->yynew && yyps->yyss != yyps->yyssa)
- YYSTACK_FREE (yyps->yyss);
-#endif]b4_lac_if([[
- if (!yyps->yynew && yyps->yyes != yyps->yyesa)
- YYSTACK_FREE (yyps->yyes);]])[
- free (yyps);]b4_pure_if([], [[
- yypstate_allocated = 0;]])[
-}
-]b4_pure_if([[
-#define ]b4_prefix[nerrs yyps->]b4_prefix[nerrs]])[
-#define yystate yyps->yystate
-#define yyerrstatus yyps->yyerrstatus
-#define yyssa yyps->yyssa
-#define yyss yyps->yyss
-#define yyssp yyps->yyssp
-#define yyvsa yyps->yyvsa
-#define yyvs yyps->yyvs
-#define yyvsp yyps->yyvsp]b4_locations_if([[
-#define yylsa yyps->yylsa
-#define yyls yyps->yyls
-#define yylsp yyps->yylsp
-#define yyerror_range yyps->yyerror_range]])[
-#define yystacksize yyps->yystacksize]b4_lac_if([[
-#define yyesa yyps->yyesa
-#define yyes yyps->yyes
-#define yyes_capacity yyps->yyes_capacity]])[
-
-
-/*---------------.
-| yypush_parse. |
-`---------------*/
-
-]b4_function_define([[yypush_parse]], [[int]],
- [[[yypstate *yyps]], [[yyps]]]b4_pure_if([,
- [[[int yypushed_char]], [[yypushed_char]]],
- [[[YYSTYPE const *yypushed_val]], [[yypushed_val]]]b4_locations_if([,
- [[[YYLTYPE *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [,
- b4_parse_param]))], [[
-
-
-/*----------.
-| yyparse. |
-`----------*/
-
-]b4_function_define([yyparse], [int], b4_parse_param)])[
-{]b4_pure_if([b4_declare_scanner_communication_variables
-])b4_push_if([b4_pure_if([], [[
- int yypushed_char = yychar;
- YYSTYPE yypushed_val = yylval;]b4_locations_if([[
- YYLTYPE yypushed_loc = yylloc;]])
-])],
- [b4_declare_parser_state_variables
-])b4_lac_if([[
- int yy_lac_established = 0;]])[
- int yyn;
- int yyresult;
- /* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;]b4_locations_if([[
- YYLTYPE yyloc;]])[
-
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)]b4_locations_if([, yylsp -= (N)])[)
-
- /* The number of symbols on the RHS of the reduced rule.
- Keep to zero when no symbol should be popped. */
- int yylen = 0;]b4_push_if([[
-
- if (!yyps->yynew)
- {
- yyn = yypact[yystate];
- goto yyread_pushed_token;
- }]])[
-
- yyssp = yyss = yyssa;
- yyvsp = yyvs = yyvsa;]b4_locations_if([[
- yylsp = yyls = yylsa;]])[
- yystacksize = YYINITDEPTH;]b4_lac_if([[
-
- yyes = yyesa;
- yyes_capacity = sizeof yyesa / sizeof *yyes;
- if (YYMAXDEPTH < yyes_capacity)
- yyes_capacity = YYMAXDEPTH;]])[
-
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-]m4_ifdef([b4_initial_action], [
-b4_dollar_pushdef([m4_define([b4_dollar_dollar_used])yylval], [],
- [b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])])dnl
-/* User initialization code. */
-b4_user_initial_action
-b4_dollar_popdef[]dnl
-m4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval;
-]])])dnl
-b4_locations_if([[ yylsp[0] = ]b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])[;
-]])dnl
-[ goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
-`------------------------------------------------------------*/
- yynewstate:
- /* In all cases, when you get here, the value and location stacks
- have just been pushed. So pushing a state here evens the stacks. */
- yyssp++;
-
- yysetstate:
- *yyssp = yystate;
-
- if (yyss + yystacksize - 1 <= yyssp)
- {
- /* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
- {
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;]b4_locations_if([
- YYLTYPE *yyls1 = yyls;])[
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. This used to be a
- conditional around just the two extra args, but that might
- be undefined if yyoverflow is a macro. */
- yyoverflow (YY_("memory exhausted"),
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),]b4_locations_if([
- &yyls1, yysize * sizeof (*yylsp),])[
- &yystacksize);
-]b4_locations_if([
- yyls = yyls1;])[
- yyss = yyss1;
- yyvs = yyvs1;
- }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyexhaustedlab;
-# else
- /* Extend the stack our own way. */
- if (YYMAXDEPTH <= yystacksize)
- goto yyexhaustedlab;
- yystacksize *= 2;
- if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
-
- {
- yytype_int16 *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss_alloc, yyss);
- YYSTACK_RELOCATE (yyvs_alloc, yyvs);]b4_locations_if([
- YYSTACK_RELOCATE (yyls_alloc, yyls);])[
-# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
- }
-# endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;]b4_locations_if([
- yylsp = yyls + yysize - 1;])[
-
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
-
- if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
- }
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- if (yystate == YYFINAL)
- YYACCEPT;
-
- goto yybackup;
-
-/*-----------.
-| yybackup. |
-`-----------*/
-yybackup:
-
- /* Do appropriate processing given the current state. Read a
- lookahead token if we need one and don't already have one. */
-
- /* First try to decide what to do without reference to lookahead token. */
- yyn = yypact[yystate];
- if (yypact_value_is_default (yyn))
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
- if (yychar == YYEMPTY)
- {]b4_push_if([[
- if (!yyps->yynew)
- {]b4_use_push_for_pull_if([], [[
- YYDPRINTF ((stderr, "Return for a new token:\n"));]])[
- yyresult = YYPUSH_MORE;
- goto yypushreturn;
- }
- yyps->yynew = 0;]b4_pure_if([], [[
- /* Restoring the pushed token is only necessary for the first
- yypush_parse invocation since subsequent invocations don't overwrite
- it before jumping to yyread_pushed_token. */
- yychar = yypushed_char;
- yylval = yypushed_val;]b4_locations_if([[
- yylloc = yypushed_loc;]])])[
-yyread_pushed_token:]])[
- YYDPRINTF ((stderr, "Reading a token: "));]b4_push_if([b4_pure_if([[
- yychar = yypushed_char;
- if (yypushed_val)
- yylval = *yypushed_val;]b4_locations_if([[
- if (yypushed_loc)
- yylloc = *yypushed_loc;]])])], [[
- yychar = ]b4_lex[;]])[
- }
-
- if (yychar <= YYEOF)
- {
- yychar = yytoken = YYEOF;
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yytoken = YYTRANSLATE (yychar);
- YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
- }
-
- /* If the proper action on seeing token YYTOKEN is to reduce or to
- detect an error, take that action. */
- yyn += yytoken;
- if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)]b4_lac_if([[
- {
- YY_LAC_ESTABLISH;
- goto yydefault;
- }]], [[
- goto yydefault;]])[
- yyn = yytable[yyn];
- if (yyn <= 0)
- {
- if (yytable_value_is_error (yyn))
- goto yyerrlab;]b4_lac_if([[
- YY_LAC_ESTABLISH;]])[
- yyn = -yyn;
- goto yyreduce;
- }
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
- /* Shift the lookahead token. */
- YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
- /* Discard the shifted token. */
- yychar = YYEMPTY;]b4_lac_if([[
- YY_LAC_DISCARD ("shift");]])[
-
- yystate = yyn;
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- *++yyvsp = yylval;
- YY_IGNORE_MAYBE_UNINITIALIZED_END
-]b4_locations_if([ *++yylsp = yylloc;])[
- goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state. |
-`-----------------------------------------------------------*/
-yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
- goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction. |
-`-----------------------------*/
-yyreduce:
- /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-
- /* If YYLEN is nonzero, implement the default value of the action:
- '$$ = $1'.
-
- Otherwise, the following line sets YYVAL to garbage.
- This behavior is undocumented and Bison
- users should not rely upon it. Assigning to YYVAL
- unconditionally makes the parser a bit smaller, and it avoids a
- GCC warning that YYVAL may be used uninitialized. */
- yyval = yyvsp[1-yylen];
-
-]b4_locations_if(
-[[ /* Default location. */
- YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);]])[
- YY_REDUCE_PRINT (yyn);]b4_lac_if([[
- {
- int yychar_backup = yychar;
- switch (yyn)
- {
- ]b4_user_actions[
- default: break;
- }
- if (yychar_backup != yychar)
- YY_LAC_DISCARD ("yychar change");
- }]], [[
- switch (yyn)
- {
- ]b4_user_actions[
- default: break;
- }]])[
- /* User semantic actions sometimes alter yychar, and that requires
- that yytoken be updated with the new translation. We take the
- approach of translating immediately before every use of yytoken.
- One alternative is translating here after every semantic action,
- but that translation would be missed if the semantic action invokes
- YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
- if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
- incorrect destructor might then be invoked immediately. In the
- case of YYERROR or YYBACKUP, subsequent parser actions might lead
- to an incorrect destructor call or verbose syntax error message
- before the lookahead is translated. */
- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
- YYPOPSTACK (yylen);
- yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
-
- *++yyvsp = yyval;]b4_locations_if([
- *++yylsp = yyloc;])[
-
- /* Now 'shift' the result of the reduction. Determine what state
- that goes to, based on the state we popped back to and the rule
- number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTOKENS];
-
- goto yynewstate;
-
-
-/*--------------------------------------.
-| yyerrlab -- here on detecting error. |
-`--------------------------------------*/
-yyerrlab:
- /* Make sure we have latest lookahead translation. See comments at
- user semantic actions for why this is necessary. */
- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus)
- {
- ++yynerrs;
-#if ! YYERROR_VERBOSE
- yyerror (]b4_yyerror_args[YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \]b4_lac_if([[
- yyesa, &yyes, &yyes_capacity, \]])[
- yyssp, yytoken)
- {
- char const *yymsgp = YY_("syntax error");
- int yysyntax_error_status;]b4_lac_if([[
- if (yychar != YYEMPTY)
- YY_LAC_ESTABLISH;]])[
- yysyntax_error_status = YYSYNTAX_ERROR;
- if (yysyntax_error_status == 0)
- yymsgp = yymsg;
- else if (yysyntax_error_status == 1)
- {
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
- if (!yymsg)
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- yysyntax_error_status = 2;
- }
- else
- {
- yysyntax_error_status = YYSYNTAX_ERROR;
- yymsgp = yymsg;
- }
- }
- yyerror (]b4_yyerror_args[yymsgp);
- if (yysyntax_error_status == 2)
- goto yyexhaustedlab;
- }
-# undef YYSYNTAX_ERROR
-#endif
- }
-
-]b4_locations_if([[ yyerror_range[1] = yylloc;]])[
-
- if (yyerrstatus == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- if (yychar <= YYEOF)
- {
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
- YYABORT;
- }
- else
- {
- yydestruct ("Error: discarding",
- yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[);
- yychar = YYEMPTY;
- }
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
- goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR. |
-`---------------------------------------------------*/
-yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
- if (/*CONSTCOND*/ 0)
- goto yyerrorlab;
-
-]b4_locations_if([[ yyerror_range[1] = yylsp[1-yylen];
-]])[ /* Do not reclaim the symbols of the rule whose action triggered
- this YYERROR. */
- YYPOPSTACK (yylen);
- yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
- yystate = *yyssp;
- goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR. |
-`-------------------------------------------------------------*/
-yyerrlab1:
- yyerrstatus = 3; /* Each real token shifted decrements this. */
-
- for (;;)
- {
- yyn = yypact[yystate];
- if (!yypact_value_is_default (yyn))
- {
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
- {
- yyn = yytable[yyn];
- if (0 < yyn)
- break;
- }
- }
-
- /* Pop the current state because it cannot handle the error token. */
- if (yyssp == yyss)
- YYABORT;
-
-]b4_locations_if([[ yyerror_range[1] = *yylsp;]])[
- yydestruct ("Error: popping",
- yystos[yystate], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[);
- YYPOPSTACK (1);
- yystate = *yyssp;
- YY_STACK_PRINT (yyss, yyssp);
- }]b4_lac_if([[
-
- /* If the stack popping above didn't lose the initial context for the
- current lookahead token, the shift below will for sure. */
- YY_LAC_DISCARD ("error recovery");]])[
-
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- *++yyvsp = yylval;
- YY_IGNORE_MAYBE_UNINITIALIZED_END
-]b4_locations_if([[
- yyerror_range[2] = yylloc;
- /* Using YYLLOC is tempting, but would change the location of
- the lookahead. YYLOC is available though. */
- YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
- *++yylsp = yyloc;]])[
-
- /* Shift the error token. */
- YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here. |
-`-------------------------------------*/
-yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here. |
-`-----------------------------------*/
-yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
-#if ]b4_lac_if([[1]], [[!defined yyoverflow || YYERROR_VERBOSE]])[
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here. |
-`-------------------------------------------------*/
-yyexhaustedlab:
- yyerror (]b4_yyerror_args[YY_("memory exhausted"));
- yyresult = 2;
- /* Fall through. */
-#endif
-
-yyreturn:
- if (yychar != YYEMPTY)
- {
- /* Make sure we have latest lookahead translation. See comments at
- user semantic actions for why this is necessary. */
- yytoken = YYTRANSLATE (yychar);
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[);
- }
- /* Do not reclaim the symbols of the rule whose action triggered
- this YYABORT or YYACCEPT. */
- YYPOPSTACK (yylen);
- YY_STACK_PRINT (yyss, yyssp);
- while (yyssp != yyss)
- {
- yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[);
- YYPOPSTACK (1);
- }
-#ifndef yyoverflow
- if (yyss != yyssa)
- YYSTACK_FREE (yyss);
-#endif]b4_lac_if([[
- if (yyes != yyesa)
- YYSTACK_FREE (yyes);]])b4_push_if([[
- yyps->yynew = 1;
-
-yypushreturn:]])[
-#if YYERROR_VERBOSE
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
-#endif
- return yyresult;
-}
-]b4_epilogue[]dnl
-b4_output_end()
-
-b4_defines_if(
-[b4_output_begin([b4_spec_defines_file])[
-]b4_copyright([Bison interface for Yacc-like parsers in C])[
-
-]b4_shared_declarations[
-]b4_output_end()
-])# b4_defines_if
diff --git a/gnuwin32/bin/flex.exe b/gnuwin32/bin/flex.exe
deleted file mode 100755
index a4c7d626..00000000
--- a/gnuwin32/bin/flex.exe
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/bin/gperf.exe b/gnuwin32/bin/gperf.exe
deleted file mode 100644
index f71b09cb..00000000
--- a/gnuwin32/bin/gperf.exe
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/bin/iconv.exe b/gnuwin32/bin/iconv.exe
deleted file mode 100644
index fb2d0d2a..00000000
--- a/gnuwin32/bin/iconv.exe
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/bin/libcharset1.dll b/gnuwin32/bin/libcharset1.dll
deleted file mode 100644
index aec4d231..00000000
--- a/gnuwin32/bin/libcharset1.dll
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/bin/libiconv2.dll b/gnuwin32/bin/libiconv2.dll
deleted file mode 100644
index 544dd92f..00000000
--- a/gnuwin32/bin/libiconv2.dll
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/bin/libintl3.dll b/gnuwin32/bin/libintl3.dll
deleted file mode 100644
index ec11e6b1..00000000
--- a/gnuwin32/bin/libintl3.dll
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/bin/m4.exe b/gnuwin32/bin/m4.exe
deleted file mode 100644
index a6673425..00000000
--- a/gnuwin32/bin/m4.exe
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/bin/regex2.dll b/gnuwin32/bin/regex2.dll
deleted file mode 100644
index f84a847a..00000000
--- a/gnuwin32/bin/regex2.dll
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/contrib/gperf/3.0.1/depends-GnuWin32.lst b/gnuwin32/contrib/gperf/3.0.1/depends-GnuWin32.lst
deleted file mode 100644
index 972dbc1b..00000000
--- a/gnuwin32/contrib/gperf/3.0.1/depends-GnuWin32.lst
+++ /dev/null
@@ -1,3 +0,0 @@
-kernel32.dll
-msvcrt.dll
-ntdll.dll
diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-GnuWin32.README b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-GnuWin32.README
deleted file mode 100644
index 56531d85..00000000
--- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-GnuWin32.README
+++ /dev/null
@@ -1,54 +0,0 @@
-* Gperf-3.0.1 for Windows *
-===========================
-
-What is it?
------------
-Gperf: generate a perfect hash function from a key set
-
-Description
------------
-GNU gperf is a perfect hash function generator. For a given list of
-strings, it produces a hash function and hash table in the form of
-C or C++ code, for looking up a value depending on the input string.
-The hash function is perfect,' which means that the hash table has
-no collisions, and the hash table lookup needs a single string
-comparison only. GNU gperf is highly customizable. There are options
-for generating C and C++ code, for emitting 'switch' statements or
-nested 'ifs' instead of a hash table, and for tuning the algorithm
-that gperf uses.
-
-Homepage
---------
-http://www.gnu.org/software/gperf/gperf.html
-
-System
-------
-- MS-Windows 95 / 98 / ME / NT / 2000 / XP with msvcrt.dll
-- if msvcrt.dll is not in your Windows/System folder, get it from
- Microsoft <http://support.microsoft.com/default.aspx?scid=kb;en-us;259403">
- or by installing Internet Explorer 4.0 or higher
- <http://www.microsoft.com/windows/ie>
-
-Notes
------
-- Bugs and questions on this MS-Windows port: gnuwin32@users.sourceforge.net
-
-Package Availability
---------------------
-- in: http://gnuwin32.sourceforge.net
-
-Sources
--------
-- gperf-3.0.1-src.zip
-
-Compilation
------------
-The package has been compiled with GNU auto-tools, GNU make, and Mingw
-(GCC for MS-Windows). Any differences from the original sources are given
-in gperf-3.0.1-GnuWin32.diffs in gperf-3.0.1-src.zip. Libraries needed
-for compilation can be found at the lines starting with 'LIBS = ' in the
-Makefiles. Usually, these are standard libraries provided with Mingw, or
-libraries from the package itself; 'gw32c' refers to the libgw32c package,
-which provides MS-Windows substitutes or stubs for functions normally found in
-Unix. For more information, see: http://gnuwin32.sourceforge.net/compile.html
-and http://gnuwin32.sourceforge.net/packages/libgw32c.htm.
diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/AUTHORS b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/AUTHORS
deleted file mode 100644
index 184c7ce6..00000000
--- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/AUTHORS
+++ /dev/null
@@ -1,2 +0,0 @@
-Douglas C. Schmidt <schmidt@ics.uci.edu>
-Bruno Haible <bruno@clisp.org>
diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/COPYING b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/COPYING
deleted file mode 100644
index bab08afa..00000000
--- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307,
- USA.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/ChangeLog b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/ChangeLog
deleted file mode 100644
index 1af586c4..00000000
--- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/ChangeLog
+++ /dev/null
@@ -1,3185 +0,0 @@
-2003-06-12 Bruno Haible <bruno@clisp.org>
-
- * gperf-3.0.1 released.
-
- * src/version.cc: Bump version number to 3.0.1.
- * doc/gperf.texi: Likewise.
- * tests/c-parse.exp, tests/charsets.exp, tests/chill.exp,
- tests/cplusplus.exp, tests/gpc.exp, tests/incomplete.exp,
- tests/java.exp, tests/languages.exp, tests/modula2.exp,
- tests/objc.exp, tests/permut2.exp, tests/permut3.exp,
- tests/permutc2.exp, tests/test-4.exp: Update.
-
-2003-05-31 Bruno Haible <bruno@clisp.org>
-
- * doc/gperf.texi (User-supplied Struct): Mention the possibility of an
- abbreviated struct declaration.
- * src/input.cc (Input::read_input): Support struct declarations of the
- form "struct foo;".
- * tests/incomplete.gperf: New file.
- * tests/incomplete.exp: New file.
- * tests/Makefile.in (check-test): Check incomplete.gperf too.
- Reported by Rob Leslie <rob@mars.org>.
-
-2003-05-20 Bruno Haible <bruno@clisp.org>
-
- * doc/Makefile.in (gperf.ps): Don't use $< in a target rule.
-
-2003-05-27 Bruno Haible <bruno@clisp.org>
-
- * Makefile.vms (CC): Correct value.
- (getopt.obj, getopt1.obj, getline.obj, hash.obj): Don't set
- HAVE_CONFIG_H.
-
-2003-05-17 Bruno Haible <bruno@clisp.org>
-
- * Makefile.msvc (DEBUGFLAGS): New variable.
- (gperf.exe): Use it, and MFLAGS too.
-
-2003-05-08 Bruno Haible <bruno@clisp.org>
-
- * gperf-3.0 released.
-
-2003-05-07 Bruno Haible <bruno@clisp.org>
-
- * src/version.cc: Bump version number to 3.0.
- * doc/gperf.texi: Likewise.
- * tests/c-parse.exp, tests/charsets.exp, tests/chill.exp,
- tests/cplusplus.exp, tests/gpc.exp, tests/java.exp,
- tests/languages.exp, tests/modula2.exp, tests/objc.exp,
- tests/permut2.exp, tests/permut3.exp, tests/permutc2.exp,
- tests/test-4.exp: Update.
-
- * src/configure.in: Fix AC_INIT argument.
-
- * Makefile.devel (configure, lib/configure, src/configure,
- tests/configure, doc/configure): Use the newest autoconf.
- (src/config.h.in): Use the newest autoheader.
-
-2003-05-03 Bruno Haible <bruno@clisp.org>
-
- * doc/gperf.texi: Use two spaces as sentence separator, as recommended
- by the texinfo manual.
-
-2003-04-12 Bruno Haible <bruno@clisp.org>
-
- * doc/configure.in (mandir): Change default value.
- * doc/Makefile.in (docdir): Use datadir instead of prefix.
- * Makefile.msvc (datadir): New variable.
- (mandir, docdir): Use it instead of prefix.
- (install, installdirs): Update.
- * Makefile.vms (datadir): New variable.
- (mandir, docdir): Use it instead of prefix.
- (install, installdirs): Update.
-
-2003-04-12 Bruno Haible <bruno@clisp.org>
-
- * README.vms: New file.
- * Makefile.vms: New file.
- * Makefile.devel (src/config.h_vms): New rule.
- (all): Depend on it.
-
-2003-03-19 Bruno Haible <bruno@clisp.org>
-
- * src/input.cc (Input::read_input): Ignore comments at the beginning
- of the declarations section.
- * doc/gperf.texi (Controls for GNU indent): New section.
- Reported by Bruce Lilly <blilly@erols.com>.
-
-2003-03-19 Bruno Haible <bruno@clisp.org>
-
- * src/output.cc (Output::output_hash_function): Avoid lint warning if
- not all arguments of the hash function are used. Avoid lint warning
- for fallthrough in switch.
- * tests/c-parse.exp, tests/charsets.exp, tests/chill.exp,
- tests/cplusplus.exp, tests/java.exp, tests/languages.exp,
- tests/modula2.exp, tests/objc.exp: All /*FALLTHROUGH*/ to expected
- output.
- Reported by Bruce Lilly <blilly@erols.com>.
-
-2003-03-01 Bruno Haible <bruno@clisp.org>
-
- * src/options.h (Options::set_initializer_suffix): New declaration.
- * src/options.cc (Options::set_initializer_suffix): New method.
- * src/input.cc (Input::read_input): Recognize %define
- initializer-suffix.
- * doc/gperf.texi (Gperf Declarations): Document %define
- initializer-suffix.
- * NEWS: Update.
-
-2003-02-26 Bruno Haible <bruno@clisp.org>
-
- * Makefile.msvc: New file.
- * README.woe32: New file.
- * Makefile.devel (all): Depend on src/config.h.msvc.
- (src/config.h.msvc): New rule.
-
-2003-01-07 Bruno Haible <bruno@clisp.org>
-
- * src/input.h (Input::_charset_dependent): New field.
- * src/input.cc (Input::read_input): Also set _charset_dependent.
- * src/main.cc (main): Pass _charset_dependent from Input to Output.
- * src/output.h (Output::Output): Add charset_dependent argument.
- (Output::_charset_dependent): New field.
- * src/output.cc (Output::Output): Add charset_dependent argument.
- (Output::output): Provoke a compilation error if the execution
- character set doesn't match the expectations.
- * tests/c-parse.exp, tests/charsets.exp, tests/chill.exp,
- tests/cplusplus.exp, tests/gpc.exp, tests/java.exp,
- tests/languages.exp, tests/modula2.exp, tests/objc.exp,
- tests/permut2.exp, tests/permut3.exp, tests/permutc2.exp,
- tests/test-4.exp: Update.
-
- * src/options.cc (Options::long_usage): Change bug report address to
- <bug-gnu-gperf@gnu.org>.
- * tests/test-6.exp: Update.
-
- * src/output.cc (USE_DOWNCASE_TABLE): New macro.
- (output_upperlower_table): New function.
- (output_upperlower_strcmp, output_upperlower_strncmp,
- output_upperlower_memcmp): Emit gperf_downcase array accesses.
- (Output::output): Call output_upperlower_table.
- * tests/permutc2.exp: Update.
-
- * src/keyword-list.icc (KeywordExt_List::rest): Use a portable cast.
- (Only in GCC a cast of an lvalue is an lvalue.)
-
-2003-01-01 Bruno Haible <bruno@clisp.org>
-
- * src/options.cc (Options::parse_options): Update copyright year.
-
- * doc/gperf.texi (@author): Add me.
-
- * src/options.h (NULLSTRINGS): New enum value.
- (Options::get_stringpool_name, Options::set_stringpool_name): New
- method declarations.
- (Options::_stringpool_name): New field.
- * src/options.icc (Options::get_stringpool_name): New method.
- * src/options.cc (DEFAULT_STRINGPOOL_NAME): New variable.
- (Options::long_usage): Document -Q and --null-strings.
- (Options::Options): Initialize _stringpool_name.
- (Options::~Options): Output _stringpool_name, NULLSTRINGS values too.
- (Options::set_stringpool_name): New method.
- (long_options): Add options --string-pool-name, --null-strings.
- (Options::parse_options): Implement options -P, -Q and --null-strings.
- * src/input.cc (Input::read_input): Recognize declarations %pic,
- %define string-pool-name, %null-strings.
- * src/output.h (Output::output_string_pool,
- Output::output_lookup_pools): New method declarations.
- (Output::_wordlist_eltype): New field.
- * src/output.cc (Output::output_keylength_table): Trivial
- simplification.
- (Output::output_string_pool): New method.
- (output_keyword_entry): Add stringpool_index argument. For SHAREDLIB,
- use struct offsets.
- (output_keyword_blank_entries): For SHAREDLIB, use -1 instead of "".
- (Output::output_keyword_table): Use _wordlist_eltype instead of
- _struct_tag. Compute stringpool_index for output_keyword_entry.
- (Output::output_lookup_pools): New method.
- (Output::output_lookup_function_body): Use _wordlist_eltype instead of
- _struct_tag. For SHAREDLIB, use "+ stringpool" to convert offsets to
- strings. Use "o >= 0" to test for nonempty table entry.
- (Output::output_lookup_function): Call output_lookup_pools.
- (Output::output): Initialize _wordlist_eltype. Call
- output_lookup_pools.
- * tests/jstest4.gperf: New file.
- * tests/test-6.exp: Update.
- * tests/Makefile.in (check-lang-syntax): Drop test of -p. Add tests of
- -P and -Q.
- * doc/gperf.texi (User-supplied Struct): Mention that first field has
- to be of type 'int' if -P is given.
- (Gperf Declarations): Document %pic, %define string-pool-name,
- %null-strings.
- (Output Details): Update description of option -P. Document options -Q
- and --null-strings.
-
- * tests/Makefile.in (check-link-c, check-ada, check-pascal,
- check-test): Omit option -p.
- * tests/c-parse.exp: Regenerated.
- * tests/chill.exp: Regenerated.
- * tests/cplusplus.exp: Regenerated.
- * tests/gpc.exp: Regenerated.
- * tests/java.exp: Regenerated.
- * tests/objc.exp: Regenerated.
- * tests/test-4.exp: Regenerated.
-
- * src/output.cc (Output::output_lookup_function_body): Omit the
- multicompare code section and its variables when it is not used.
- * tests/chill.exp: Regenerated.
-
- * src/output.c (Output_Compare::output_firstchar_comparison): New
- method.
- (Output_Compare_Strcmp::output_comparison,
- Output_Compare_Strncmp::output_comparison,
- Output_Compare_Memcmp::output_comparison): Use it.
- * tests/permutc2.exp: Update.
-
- * tests/smtp.gperf: New file, based on a contribution by Bruce Lilly.
- * tests/Makefile.in (check-smtp): New rule.
- (check): Depend on it.
- (clean): Update.
-
-2002-12-12 Bruno Haible <bruno@clisp.org>
-
- * src/search.h (Search::init_selchars_tuple,
- Search::count_duplicates_tuple): Add alpha_unify argument.
- (Search::count_duplicates_tuple): New method declaration.
- * src/search.cc (Search::init_selchars_tuple,
- Search::count_duplicates_tuple): Add alpha_unify argument.
- (Search::find_positions): Update.
- (Search::count_duplicates_tuple): New method.
- (Search::count_duplicates_multiset): Free temp alpha_unify vector.
- (Search::find_alpha_inc): Call count_duplicates_tuple.
-
- * src/configure.in: Add test for stack-allocated variable-size arrays.
- * src/config.h.in: Regenerated.
- * src/search.cc: Include config.h.
- (DYNAMIC_ARRAY, FREE_DYNAMIC_ARRAY): New macros.
- (Search::find_alpha_inc, Search::count_possible_collisions,
- Search::find_asso_values): Use them.
- * src/Makefile.in (search.o): Depend on config.h.
-
- * src/search.h (Search::keyword_list_length, Search::max_key_length,
- Search::get_max_keysig_size, Search::prepare): Remove declarations.
- (Search::prepare): Renamed from Search::preprepare.
- (Search::_max_selchars_length): New field.
- * src/search.cc (Search::prepare): Renamed from Search::preprepare.
- (Search::prepare_asso_values): Merged with old Search::prepare.
- Initialize _max_selchars_length.
- (Search::keyword_list_length): Remove function. Use _list_len instead.
- (Search::max_key_length): Remove function. Use _max_key_len instead.
- (Search::get_max_keysig_size): Remove function. Use
- _max_selchars_length instead.
- (Search::count_possible_collisions, Search::find_asso_values): Update.
- (Search::find_good_asso_values): Call just prepare_asso_values.
- (Search::~Search): Update.
-
- * src/output.h (Output::output_asso_values_ref): New declaration.
- * src/output.cc (char_to_index): Remove variable.
- (Output::output_asso_values_ref): New function.
- (Output::output_hash_function): Use it.
- (Output::output): Update.
-
- * src/positions.h (Positions::is_useall, Positions::set_useall,
- Positions::iterator, Positions::reviterator): New method declarations.
- (Positions::_useall): New field.
- (PositionIterator): Make constructor private. Add a constructor and a
- copy constructor.
- (PositionIterator::remaining): New declaration.
- (PositionReverseIterator): Make constructor private. Add a constructor
- and a copy constructor.
- (PositionReverseIterator::remaining): New declaration.
- (PositionReverseIterator::_minindex): New field.
- * src/positions.icc (Positions::Positions): Initialize _useall.
- (Positions::operator=): Likewise.
- (Positions::is_useall, Positions::set_useall): New methods.
- (Positions::sort): Do nothing if _useall is set.
- (Positions::iterator, Positions::reviterator): New methods.
- (PositionIterator::PositionIterator): New constructor.
- (PositionIterator::remaining): New method.
- (PositionReverseIterator::PositionReverseIterator): New constructor.
- (PositionReverseIterator::next): Use _minindex as bound.
- (PositionReverseIterator::remaining): New method.
- * src/positions.cc (Positions::add, Positions::remove): Reset the
- useall flag.
- (Positions::print): Handle the useall case.
- * src/options.h (ALLCHARS): Remove.
- * src/options.cc (Options::~Options): Update.
- (Options::parse_options): Use Positions::set_useall().
- * src/keyword.h (KeywordExt::init_selchars_tuple,
- KeywordExt::init_selchars_multiset, KeywordExt::init_selchars_low):
- Remove use_all_chars argument.
- * src/keyword.cc (KeywordExt::init_selchars_low): Remove use_all_chars
- argument. Tell the position iterator to stop at _allchars_length.
- Remove special case code for -k'*'.
- (KeywordExt::init_selchars_tuple, KeywordExt::init_selchars_multiset):
- Remove use_all_chars argument.
- * src/search.h (Search::init_selchars_tuple): Remove use_all_chars
- argument.
- (Search::init_selchars_multiset): Likewise.
- * src/search.cc (Search::init_selchars_tuple): Remove use_all_chars
- argument.
- (Search::count_duplicates_tuple, Search::find_positions): Update.
- (Search::compute_alpha_unify): Remove special case code for -k'*'.
- (Search::init_selchars_multiset): Remove use_all_chars argument.
- (Search::count_duplicates_multiset): Update.
- (Search::find_alpha_inc): Remove special case code for -k'*'.
- (Search::prepare): Update.
- (Search::get_max_keysig_size): Update.
- * src/output.cc (Output::output_hash_function): Remove special case
- code for -k'*'.
- * tests/chill.exp: Regenerated.
-
-2002-12-11 Bruno Haible <bruno@clisp.org>
-
- Change the positions to be 0-based, instead of 1-based.
- * src/positions.h (Positions::LASTCHAR): Set to -1.
- (Positions::MAX_SIZE): New constant.
- (Positions::pointer): Change return type.
- (Positions::_positions): Change element type.
- (PositionIterator::EOS, PositionReverseIterator::EOS): Set to -2.
- * src/positions.icc (Positions::pointer): Change return type.
- (Positions::sort): Update.
- * src/positions.cc (Positions::contains, Positions::add,
- Positions::remove): Update.
- (Positions::print): Update. Fix off-by-one bug.
- * src/options.cc (Options::~Options): Update.
- (Options::parse_options): Set BAD_VALUE to -3. Update.
- * src/keyword.cc (KeywordExt::init_selchars_low): Update.
- * src/search.cc (Search::find_positions, Search::compute_alpha_unify,
- Search::find_alpha_inc): Update.
- * src/output.cc (Output::output_hash_function): Update. Don't emit
- a 'case' statement right after 'default:'.
- * tests/c-parse.exp: Regenerated.
- * tests/charsets.exp: Regenerated.
- * tests/cplusplus.exp: Regenerated.
- * tests/java.exp: Regenerated.
- * tests/languages.exp: Regenerated.
- * tests/modula2.exp: Regenerated.
- * tests/objc.exp: Regenerated.
-
-2002-12-10 Bruno Haible <bruno@clisp.org>
-
- * src/options.h: Reorder enum values.
- (Options::short_usage, Options::long_usage): Make static.
- * src/options.cc (Options::short_usage); No longer print a monster
- usage line.
- (Options::print_options): Improve output of options like
- --key-positions=1,2,$.
- (Options::~Options): Update.
-
- * src/options.h (UPPERLOWER): New enum value.
- * src/options.cc (Options::long_usage): Document option --ignore-case.
- (Options::~Options): Update.
- (long_options): Add option --ignore-case.
- (Options::parse_options): Handle option --ignore-case.
- * src/input.cc (Input::read_input): Recognize option %ignore-case.
- * src/keyword.h (KeywordExt::init_selchars_tuple,
- KeywordExt::init_selchars_multiset, KeywordExt::init_selchars_low):
- Add alpha_unify argument.
- * src/keyword.cc (KeywordExt::init_selchars_low): Add alpha_unify
- argument.
- (KeywordExt::init_selchars_tuple): Add alpha_unify argument.
- (KeywordExt::init_selchars_multiset): Add alpha_unify argument.
- * src/search.h (Search::compute_alpha_size,
- Search::compute_alpha_unify): New declarations.
- (Search::init_selchars_multiset): Add alpha_unify argument.
- (Search::_alpha_unify): New field.
- * src/search.cc (Search::compute_alpha_size,
- Search::compute_alpha_unify): New functions.
- (Search::init_selchars_tuple): Update.
- (Search::find_positions): Temporarily set _alpha_unify. Perform a
- case insensitive comparison if needed.
- (Search::init_selchars_multiset): Add alpha_unify argument.
- (Search::count_duplicates_multiset): Call compute_alpha_unify.
- (Search::find_alpha_inc): Temporarily set _alpha_unify. At the end,
- set _alpha_size and _alpha_unify.
- (Search::prepare): Update. Don't compute _alpga_size here.
- (Search::optimize): Propagate unified asso_values.
- (Search::~Search) Delete _alpha_unify.
- * src/output.cc (output_upperlower_strcmp, output_upperlower_strncmp,
- output_upperlower_memcmp): New functions.
- (Output_Compare_Strcmp::output_comparison,
- Output_Compare_Strncmp::output_comparison,
- Output_Compare_Memcmp::output_comparison): Use the case-insensitive
- comparison function if --ignore-case was given.
- (Output::output): Emit the auxiliary case-insensitive comparison
- function if needed.
- * tests/permutc2.gperf, tests/permutc2.exp: New files.
- * tests/Makefile.in (check-test): Also check permutc2.gperf.
- * tests/test-6.exp: Update.
- * doc/gperf.texi (Gperf Declarations): Document %ignore-case.
- (Input Details): Document option --ignore-case.
- * NEWS: Update.
-
- * src/search.cc (Search::optimize): Fill unused asso_values[] entries
- with a large value.
- * src/output.h (Output::Output): Remove occurrences argument.
- (Output::_occurrences): Remove field.
- * src/output.cc (Output::Output): Remove occurrences argument.
- (Output::output_hash_function): Ignore _occurrences.
- * src/main.cc (main): Don't pass the _occurrences to Output.
-
- * src/search.cc (Search::preprepare): Exit if keywords contain
- out-of-range characters.
-
- * src/search.cc (for): Define so as to avoid errors with old compilers.
-
- * src/options.h (SHAREDLIB): New enum value.
- * src/options.cc (Options::short_usage): Mention option -P.
- (Options::long_usage): Document option -P.
- (long_options): Add option --pic.
- (Options::parse_options): Handle option -P/--pic.
- * src/output.cc (output_keyword_blank_entries): When SHAREDLIB is
- specified, emit NULL pointers instead of "".
- (Output::output_lookup_function_body): When SHAREDLIB is specified
- and SWITCH and DUP and not specified, test the table entry against
- NULL before the string comparison.
- * tests/test-6.exp: Update.
- * doc/gperf.texi (Output Details): Document option -P.
- * NEWS: Update.
- Suggested by Ulrich Drepper.
-
-2002-12-08 Bruno Haible <bruno@clisp.org>
-
- * tests/permut2.gperf, tests/permut2.exp: New files.
- * tests/permut3.gperf, tests/permut3.exp: New files.
- * tests/charsets.gperf: New file, from Bruce Lilly.
- * tests/charsets.exp: New file.
- * tests/languages.gperf: New file, from Bruce Lilly.
- * tests/languages.exp: New file.
- * Makefile.in (check-test): Test them all.
-
- Completely new asso_values search algorithm.
- * src/search.h (Search::compute_occurrence, Search::clear_determined,
- Search::set_determined, Search::already_determined, Search::reorder):
- Remove functions.
- (Search::init_asso_values, Search::sort_by_occurrence,
- Search::compute_occurrence, Search::sort_by_occurrence,
- Search::has_collisions, Search::collision_prior_to): Remove functions.
- (Search::compute_partition, Search::count_possible_collisions,
- Search::unchanged_partition): New method declarations.
- (Search::_determined): Remove field.
- * src/search.cc (Search::prepare): Don't initialize _determined.
- (Search::compute_occurrence, greater_by_occurrence,
- Search::clear_determined, Search::set_determined,
- Search::already_determined, Search::reorder): Remove functions.
- (Search::init_asso_values, compute_disjoint_union,
- Search::sort_by_occurrence, Search::compute_occurrence,
- Search::sort_by_occurrence, Search::has_collisions,
- Search::collision_prior_to): Remove functions.
- (StackEntry): Remove class.
- (EquivalenceClass, Step): New classes.
- (equals, Search::compute_partition, delete_partition,
- Search::count_possible_collisions, Search::unchanged_partition): New
- functions.
- (Search::find_asso_values): Completely rewritten.
- (Search::find_good_asso_values): Don't call reorder().
- (Search::~Search): Don't free _determined.
- * src/keyword.h (KeywordExt::_occurrence): Remove field.
- * src/options.h (ORDER, FAST, OPT_CHOICE): Remove enum values.
- (Options::_iterations): Remove field.
- * src/options.icc (Options::get_iterations): Remove method.
- * src/options.cc (Options::long_usage): Remove mention of -f and -o.
- (Options::Options): Don't initialize _iterations.
- (Options::~Options): Update.
- (Options::parse_options): Do nothing for options -f, -o, -O.
- * doc/gperf.texi: (Contributors): Update.
- (Algorithmic Details): Remove options -f and -o. Update description
- of option -s.
- * tests/c-parse.exp, tests/chill.exp, tests/cplusplus.exp,
- tests/gpc.exp, tests/java.exp, tests/modula2.exp, tests/objc.exp,
- tests/test-4.exp): Regenerated, smaller than before.
- * tests/test-6.exp: Update.
- * NEWS: Update.
-
-2002-12-08 Bruno Haible <bruno@clisp.org>
-
- * src/search.h (Search::_alpha_size): Change type to 'unsigned int'.
- (Search::_asso_value_max): Likewise.
- * src/search.cc (Search::prepare_asso_values): Update.
- (Search::init_asso_values): Update.
- (Search::~Search): Update.
- * src/output.h (Output::Output): Change alpha_size type to
- 'unsigned int'.
- (Output::_alpha_size): Change type to 'unsigned int'.
- * src/output.cc (Output::Output): Change alpha_size type to
- 'unsigned int'.
- (Output::output_hash_function): Update.
-
-2002-12-07 Bruno Haible <bruno@clisp.org>
-
- * src/options.h (OPT_CHOICE): New enum value.
- * src/options.cc (Options::~Options): Update.
- (long_options): New option --optimized-collision-resolution.
- (Options::parse_options): Accept option -O.
- * src/search.h (Search::sort_by_occurrence): Change argument to
- 'unsigned int'.
- (Search::compute_occurrence, Search::sort_by_occurrence): New method
- declarations.
- * src/search.cc (Search::sort_by_occurrence): Change argument to
- 'unsigned int'.
- (Search::compute_occurrence, Search::sort_by_occurrence): New methods.
- (Search::find_asso_values): Implement OPT_CHOICE. More debugging
- output.
-
- * src/search.cc (Search::prepare_asso_values) [DEBUG]: Also print
- the keyword list in order.
- (Search::find_asso_values) [DEBUG]: Upon failure, print the union_set.
-
- * src/options.h (Options::get_size_multiple): Change return type to
- float.
- (Options::_size_multiple): Change type to float.
- * src/options.icc (Options::get_size_multiple): Change return type to
- float.
- * src/options.cc (Options::long_usage): Update description of option
- -s.
- (Options::~Options): Update.
- (Options::parse_options): For option -s, accept a fraction.
- * src/search.cc (Search::prepare_asso_values): Use get_size_multiple
- as it is.
- * tests/test-6.exp: Update.
- * doc/gperf.texi (Algorithmic Details): Update description of option
- -s.
-
-2002-12-04 Bruno Haible <bruno@clisp.org>
-
- Improve debugging output.
- * src/hash-table.h (Hash_Table::dump): New method.
- * src/hash-table.cc (Hash_Table::dump): New method, extracted from
- destructor.
- (Hash_Table::~Hash_Table): No longer print the contents.
- * src/positions.h (PositionReverseIterator): New class.
- * src/positions.icc (PositionReverseIterator::PositionReverseIterator,
- PositionReverseIterator::next): New methods.
- * src/search.cc (Search::find_positions): If debugging, print the
- result.
- (Search::find_alpha_inc): If debugging, print the result.
- (Search::prepare): Explicitly dump the hash table's contents here.
-
- Portability fixes.
- * src/positions.h (Positions::LASTCHAR, Positions::MAX_KEY_POS,
- PositionIterator::EOS): Define as compile-time constants using enum.
- * src/bool-array.cc (Bool_Array::~Bool_Array): Remove const qualifier
- of pointer to be deleted.
- * src/input.cc (Input::~Input): Likewise.
- * src/keyword.cc (KeywordExt::delete_selchars): Likewise.
- * src/main.cc (main): Likewise.
- * src/hash-table.cc (Hash_Table::~Hash_Table): Limit scope of 'for'
- variables.
- * src/search.cc (Search::prepare_asso_values): Use a static_cast to
- convert from time_t to long. This is possible because ISO C 99 says
- time_t is a numeric type.
-
-2002-11-20 Bruno Haible <bruno@clisp.org>
-
- * src/search.cc (Search::find_asso_values): Avoid gcc warnings about
- uninitialized variables.
-
- Implement backtracking.
- * src/search.h (Search::has_collisions): Renamed from
- Search::less_collisions. Return a boolean.
- * src/search.cc (Search::has_collisions): Renamed from
- Search::less_collisions. Return a boolean.
- (StackEntry): Remove field _collisions_so_far.
- (Search::find_asso_values): Backtrack when encountering an unresolved
- collision. Assume collisions_so_far is always zero.
- (Search::optimize): Exit if there are accidental duplicates at the end.
- * src/output.cc (Output::num_hash_values): Simply return the list
- length.
- (Output::output_keylength_table): Remove handling of accidental
- duplicates.
- (Output::output_keyword_table, Output::output_lookup_array): Likewise.
- (output_switch_case, output_switches): Likewise.
- * doc/gperf.texi (Algorithmic Details): Adjust description of options
- -D, -f, -o, -r.
- (Bugs): Remove note about missing backtracking.
- (Projects): Likewise.
-
-2002-11-19 Bruno Haible <bruno@clisp.org>
-
- Prepare for backtracking.
- * src/search.h (Search::try_asso_value, Search::change_some_asso_value):
- Remove declarations.
- (Search::less_collisions, Search::collision_prior_to): New declarations.
- (Search::_fewest_collisions, Search::_union_set, Search::_num_done):
- Remove fields.
- * src/search.cc (Search::prepare_asso_values): Don't initialize
- _union_set.
- (Search::try_asso_value, Search::change_some_asso_value): Remove
- methods.
- (Search::less_collisions, Search::collision_prior_to): New methods.
- (StackEntry): New class.
- (Search::find_asso_values): Reorganized to use pseudo-recursion.
- (Search::~Search): Don't free _union_set.
-
- * src/search.h (Search::find_good_asso_values): New declaration.
- * src/search.cc: Add comments about the basic structure of the
- algorithm.
- (Search::find_positions): Move the option[POSITIONS] test to here.
- (Search::find_good_asso_values): New method, extracted from
- Search::optimize.
- (Search::optimize): Remove option[POSITIONS] test. Call
- find_good_asso_values.
-
-2002-11-17 Bruno Haible <bruno@clisp.org>
-
- * src/options.cc (Options::parse_options): Include copyright notice
- and authors in --version output.
-
- Avoid artificial duplicates.
- * src/keyword.h (KeywordExt::init_selchars_tuple): New declaration.
- (KeywordExt::init_selchars_multiset): Renamed from
- KeywordExt::init_selchars.
- (KeywordExt::init_selchars_low): New declaration.
- * src/keyword.cc (KeywordExt::init_selchars_low): Renamed from
- KeywordExt::init_selchars. Add alpha_inc argument. Remove sorting.
- (KeywordExt::init_selchars_tuple): New method.
- (KeywordExt::init_selchars_multiset): New method, replaces
- KeywordExt::init_selchars.
- * src/search.h (Search::init_selchars_tuple): Renamed from
- Search::init_selchars.
- (Search::count_duplicates_tuple): Renamed from Search::count_duplicates.
- (Search::init_selchars_multiset, Search::count_duplicates_multiset,
- Search::find_alpha_inc): New declarations.
- (Search::_alpha_inc): New field.
- (Search::_alpha_size, Search::_occurrences, Search::_asso_values,
- Search::_determined): Make non-const.
- * src/search.cc (Search::Search): Don't initialize _key_positions,
- _alpha_size, _occurrences, _asso_values, _determined here.
- (Search::init_selchars_tuple): Renamed from Search::init_selchars.
- (Search::count_duplicates_tuple): Renamed from Search::count_duplicates.
- (Search::find_positions): Update.
- (Search::init_selchars_multiset, Search::count_duplicates_multiset,
- Search::find_alpha_inc): New methods.
- (Search::prepare): Move preprepare, find_positions calls away.
- Initialize _alpha_size, _occurrences, _asso_values, _determined here.
- (Search::optimize): Call preprepare, find_positions here. Initialize
- _key_positions here.
- (Search::~Search): Deallocate _alpha_inc.
- * src/output.cc (Output::Output): Add alpha_inc argument.
- (Output::output_hash_function): Use _alpha_inc.
- * src/output.h (Output::Output): Add alpha_inc argument.
- (Output::_alpha_inc): New field.
- * src/main.cc (main): Pass _alpha_inc from Search to Output.
- * tests/chill.exp: Update.
- * doc/gperf.texi (Algorithmic Details): Remove description of
- artificial duplicates.
-
- * src/keyword.h (KeywordExt::_selchars): Change type to
- 'const unsigned int *'.
- * src/keyword.cc (sort_char_set): Change argument type to
- 'unsigned int *'.
- (KeywordExt::init_selchars): Update.
- * src/search.h (Search::sort_by_occurrence): Change argument type to
- 'unsigned int *'.
- (Search::try_asso_value): Change argument type to 'unsigned int'.
- (Search::_union_set): Change type to 'unsigned int *'.
- * src/search.cc (Search::prepare, Search::compute_occurrence,
- Search::set_determined, Search::already_determined,
- Search::prepare_asso_values, Search::compute_hash): Update.
- (compute_disjoint_union): Change argument types to 'unsigned int *'.
- (Search::sort_by_occurrence): Likewise.
- (Search::try_asso_value): Change argument type to 'unsigned int'.
- (Search::change_some_asso_value, Search::~Search): Update.
- * src/hash-table.cc (Hash_Table::~Hash_Table, Hash_Table::equal,
- Hash_Table::insert): Update.
-
- * src/positions.h: New file, extracted from options.h.
- * src/positions.icc: New file, extracted from options.icc.
- * src/positions.cc: New file, extracted from options.cc.
- * src/options.h: Include positions.h. Move classes Positions and
- PositionsIterator away.
- * src/options.icc: Move classes Positions and PositionsIterator away.
- * src/options.cc: Move class Positions away.
- * src/keyword.cc: Include positions.h instead of options.h.
- * src/output.h: Include positions.h instead of options.h.
- * src/search.h: Include positions.h instead of options.h.
- * src/Makefile.in (OBJECTS): Add positions.o.
- (POSITIONS_H): New variable.
- (OPTIONS_H, SEARCH_H, OUTPUT_H, keyword.o): Use it.
- (positions.o): New rule.
-
- * src/options.h (POSITIONS): New enum value.
- (Positions::Positions): New copy constructor.
- (Positions::operator=, Positions::contains, Position::add,
- Positions::remove, Positions::print): New method declaration.
- (Options::get_max_keysig_size): Remove method.
- * src/options.icc (Positions::Positions): New copy constructor.
- (Positions::operator=): New method.
- (Options::get_max_keysig_size): Remove method.
- * src/options.cc (Options::Options): Initialize _key_positions
- trivially.
- (Options::parse_options): Option -k sets POSITIONS.
- (Positions::contains, Positions::add, Positions::remove,
- Positions::print): New methods.
- * src/hash-table.cc (Hash_Table::~Hash_Table): Compute the field
- width explicitly, instead of using Options::get_max_keysig_size.
- * src/keyword.h (KeywordExt::init_selchars): Add arguments
- use_all_chars, positions.
- (KeywordExt::delete_selchars): New declaration.
- * src/keyword.cc (KeywordExt::init_selchars): Add arguments
- use_all_chars, positions. Remove error message if there are no key
- positions.
- (KeywordExt::delete_selchars): New method.
- * src/search.h: Include options.h.
- (Search::preprepare, Search::init_selchars, Search::delete_selchars,
- Search::count_duplicates, Search::find_positions): New declarations.
- (Search::_key_positions): New field.
- * src/search.cc (Search::Search): Initialize _key_positions.
- (Search::preprepare, Search::init_selchars, Search::delete_selchars,
- Search::count_duplicates, Search::find_positions): New functions.
- (Search::prepare): Call preprepare and find_positions. Tweak error
- message.
- (Search::get_max_keysig_size): Use _key_positions instead of
- option.get_key_positions().
- (Search::optimize): Tweak error message.
- * src/output.h: Include options.h.
- (Output::Output): Add Positions argument.
- (Output::_key_positions): New field.
- * src/output.cc (Output::Output): Add Positions argument.
- (Output::output_hash_function): Omit the table if there are no
- positions at all. Use _key_positions instead of
- option.get_key_positions().
- (Output::output): Output the computed positions as a comment.
- * src/main.cc (main): Pass the Positions from Searcher to Output.
- * src/Makefile.in (SEARCH_H, OUTPUT_H): Include OPTIONS_H.
- * tests/Makefile.in (check-test): Pass key positions explicitly.
- * tests/gpc.exp: Update.
- * tests/test-4.exp: Update.
- * doc/gperf.texi (Algorithmic Details): Mention that -k is not needed
- usually.
-
-2002-11-16 Bruno Haible <bruno@clisp.org>
-
- * src/options.h (Options::get_slot_name): Renamed from
- Options::get_key_name.
- (Options::set, Options::set_language, Options::set_total_switches,
- Options::set_function_name, Options::set_slot_name,
- Options::set_class_name, Options::set_hash_name,
- Options::set_wordlist_name, Options::set_delimiters): New method
- declarations.
- (Options::_language): New field.
- (Options::_slot_name): Renamed from Options::_key_name.
- * src/options.icc (Options::set): New method.
- (Options::get_slot_name): Renamed from Options::get_key_name.
- * src/options.cc (DEFAULT_FUNCTION_NAME): Renamed from DEFAULT_NAME.
- (DEFAULT_SLOT_NAME): Renamed from DEFAULT_NAME.
- (Options::Options): Initialize _language. Update.
- (Options::~Options): Update.
- (Options::set_language, Options::set_total_switches,
- Options::set_function_name, Options::set_slot_name,
- Options::set_class_name, Options::set_hash_name,
- Options::set_wordlist_name, Options::set_delimiters): New methods.
- (Options::parse_options): Call set_language. Update.
- * src/input.cc (is_declaration, is_declaration_with_arg,
- is_define_declaration): New functions.
- (Input::read_input): Accept %DECL declarations.
- * src/output.cc (Output::output_lookup_function_body): Update.
- * doc/gperf.texi (Declarations): Add new subnodes.
- (User-supplied Struct, Gperf Declarations, C Code Inclusion): New
- nodes.
- (Keywords, Output Format, Binary Strings, Options): Mention %
- declarations as being equivalent to the command line options.
-
- * src/options.cc (Options::long_usage): Rename options -H, -N, -l, -G.
- (long_options): Add --hash-function-name, --lookup-function-name,
- --compare-lengths.
- * doc/gperf.texi (Output Details): Rename options -H, -N, -l, -G.
- * tests/test-6.exp: Update.
-
- * src/options.cc (DEFAULT_DELIMITERS): Remove newline.
- * src/options.cc (Options::long_usage): Change default --delimiters.
- * doc/gperf.texi (Input Details): Likewise.
- * tests/test-6.exp: Update.
-
- * doc/gperf.texi: Move description of option -l from section
- Algorithmic Details to section Output Details.
- * src/options.cc (Options::long_usage): Likewise.
- * tests/test-6.exp: Update.
-
-2002-11-12 Bruno Haible <bruno@clisp.org>
-
- * src/options.h (Output::get_output_file_name): New method.
- (Output::_output_file_name): New field.
- * src/options.icc (Options::get_output_file_name): New method.
- * src/options.cc (Options::long_usage): Document option --output-file.
- (Options::Options): Initialize _output_file_name.
- (long_options): Add --output-file.
- (Options::parse_options): Handle it.
- * src/main.cc (main): Open the output file if given by name.
- * doc/gperf.texi (Output File): New section.
- * tests/test-6.exp: Update.
-
-2002-11-10 Bruno Haible <bruno@clisp.org>
-
- * src/input.cc (pretty_input_file_name): New function.
- (read_input): Use it in all error and warning messages.
-
- * src/keyword.h (Keyword::_lineno): New field.
- * src/input.h (Input::_struct_decl_lineno): New field.
- * src/input.cc (Input::read_input): Set _struct_decl_lineno. Fill
- each keyword's _lineno field.
- * src/main.cc (main): Pass _struct_decl_lineno from Input to Output.
- * src/output.h (Output::Output) Add struct_decl_lineno argument.
- (Output::_struct_decl_lineno): New field.
- * src/output.cc (Output::Output) Add struct_decl_lineno argument.
- (output_keyword_entry): Emit #line directive before table entry.
- (Output::output): Emit #line directive before _struct_decl.
-
- Fix memory leaks.
- * src/keyword.h (empty_string): New declaration.
- * src/keyword.cc (empty_string): New variable.
- * src/input.h (Input::_input): Make public.
- (Input::_input_end): New field.
- * src/input.cc (read_input): When removing leading whitespace from
- struct_decl, reallocate it. For rest, use empty_string instead of "".
- Set _input_end.
- (Input::~Input): Delete _struct_decl, _struct_tag, _return_type.
- * src/search.cc (Search::prepare): When removing an element from
- the keyword list, delete the list node.
- (Search::~Search): Delete _occurrences, _asso_values.
- * src/main.cc (main): Between Search::~Search and Input::~Input,
- destroy the keyword list.
-
- Rewrite the input routines.
- * src/input.h: Don't include read-line.h.
- (Input): Don't inherit from class Read_Line.
- (Input::read_keys, Input::strcspn, Input::set_output_types,
- Input::get_array_type, Input::save_include_src,
- Input::get_special_input): Remove declarations.
- (Input::read_input): New declaration.
- (Input::_struct_decl): Renamed from Input::_array_type.
- (Input::_verbatim_declarations): Renamed from Input::_include_src.
- (Input::_verbatim_code): Replaces Input::_additional_code.
- * src/input.cc: Completely rewritten.
- * src/output.h (Output::Output): Update the verbatim_* arguments.
- (Output::_struct_decl): Renamed from Output::_array_type.
- (Output::_verbatim_declarations): Renamed from Output::_include_src.
- (Output::_verbatim_code): Replaces Output::_additional_code.
- * src/output.cc (Output::Output): Update the verbatim_* arguments.
- (Output::output): Output the verbatim_* code pieces with #line.
- * src/main.cc (main): Call Input::read_input instead of
- Input::read_keys. Update Output::Output arguments.
- * src/read-line.h: Remove file.
- * src/read-line.cc, src/read-line.icc: Remove files.
- * src/Makefile.in (OBJECTS): Remove read-line.o.
- (READ_LINE_H): Remove variable.
- (INPUT_H): Update.
- (read-line.o): Remove rule.
- * doc/gperf.texi (Declarations): Correct the example.
- (Keywords): Mention that lines starting with % are forbidden here.
- * tests/c-parse.exp: Update.
- * tests/cplusplus.exp: Update.
- * tests/gpc.exp: Update.
- * tests/java.exp: Update.
- * tests/objc.exp: Update.
- * tests/test-4.exp: Update.
-
- * src/options.h (Options::get_input_file_name): New declaration.
- (Options::_input_file_name): New field.
- * src/options.icc (Options::get_input_file_name): New method.
- * src/options.cc (Options::Options): Initialize _input_file_name.
- (Options::parse_options): Don't open input file, only store it in
- _input_file_name.
- * src/main.cc (main): Open input file here.
- Print an error message upon write error on the output file.
-
- Upgrade to autoconf-2.52.
- * configure.in: Use AC_CONFIG_SUBDIRS instead of AC_OUTPUT_SUBDIRS.
- * Makefile.devel (configure, lib/configure, src/configure,
- tests/configure, doc/configure): Use autoconf-2.52.
-
-2002-11-09 Bruno Haible <bruno@clisp.org>
-
- * doc/gperf.texi: Talk about "bytes" instead of "characters". Talk
- about "keywords", not "keys". Talk about "input file", not "keyfile".
- (@menu): Fix a menu entry.
- (Contributors): Don't mention cperf.
- (Motivation): Fix an off-by-one error in the definition of "minimal".
- Mention GNU Java. Recommend http URL instead of anonymous ftp.
- (Search Structures): Mention GNU Java.
- (Output Format): Drop reference to node 'Implementation'.
- (Output Details): Talk about "slot-name" instead of "key name".
- (Algorithmic Details): Talk about "selected byte positons", not
- "key positions". Upper limit is now 255. Explain a third reason
- why duplicates can occur. Describe negative effects of
- --occurrence-sort.
- (Implementation): Remove chapter.
-
-2002-11-07 Bruno Haible <bruno@clisp.org>
-
- * src/bool-array.cc (Bool_Array::~Bool_Array): Free _storage_array.
- * src/search.cc (Search::~Search): Free _union_set, _determined.
-
- * tests/Makefile.in (check-test): Don't redirect stderr.
-
-2002-11-05 Bruno Haible <bruno@clisp.org>
-
- * src/keyword-list.h (mergesort_list): New declarations.
- * src/keyword-list.cc (Keyword_Comparison): New type.
- (merge, mergesort_list): New functions, moved here from search.cc.
- * src/search.h (Search::merge, Search::merge_sort): Remove methods.
- (Search::_occurrence_sort, Search::_hash_sort): Remove fields.
- * src/search.cc (Search::merge, Search::merge_sort): Remove methods.
- (greater_by_occurrence, less_by_hash_value): New functions.
- (Search::reorder, Search::sort): Use mergesort_list.
-
-2002-11-04 Bruno Haible <bruno@clisp.org>
-
- * src/options.h (Options::_asso_iterations): New field.
- (Options::get_asso_iterations): New method declaration.
- * src/options.icc (Options::get_asso_iterations): New method.
- * src/options.cc (Options::short_usage): Mention j<jump> and m<num>.
- (Options::long_usage): Document option -m.
- (Options::Options): Initialize _asso_iterations.
- (Options::~Options): Print _asso_iterations too.
- (long_options): Add --multiple-iterations.
- (Options::parse_options): Handle option -m.
- * src/keyword-list.h (copy_list, delete_list): New declarations.
- * src/keyword-list.cc (copy_list, delete_list): New functions.
- * src/search.h (Search::_initial_asso_value, Search::_jump): New fields.
- * src/search.cc (Search::prepare_asso_values): Initialize
- _initial_asso_value and _jump here.
- (Search::init_asso_values): Use _initial_asso_value.
- (Search::try_asso_value): Use _jump.
- (Search::optimize): If option -m was given, iterate over different
- values for _initial_asso_value and _jump.
- * doc/gperf.texi (Algorithmic Details): Document option -m.
- * tests/test-6.exp: Update.
-
-2002-11-03 Bruno Haible <bruno@clisp.org>
-
- Bug fix: When option -j 0 was used without option -r, the output was
- not random.
- * src/search.h (Search::prepare_asso_values): New method declaration.
- * src/search.cc (Search::prepare_asso_values): New method, extracted
- from Search::init_asso_values. Call srand also when "-j 0" was given.
- (Search::optimize): Call prepare_asso_values().
-
- * src/hash-table.h (Hash_Table::_ignore_length, Hash_Table::equal):
- Declare as const.
- * src/hash-table.cc (Hash_Table::equal): Declare as const.
- * src/input.h (Input::_factory): Declare as const.
- * src/keyword-list.h (Keyword_List::first, KeywordExt_List::first):
- Declare as const.
- * src/keyword-list.icc (Keyword_List::first, KeywordExt_List::first):
- Declare as const.
- * src/output.h (Output::num_hash_values, Output::output_constants,
- Output::output_hash_function, Output::output_keylength_table,
- Output::output_keyword_table, Output::output_lookup_array,
- Output::output_lookup_tables, Output::output_lookup_function_body,
- Output::output_lookup_function, Output::_array_type,
- Output::_additional_code, Output::_include_src, Output::_total_keys,
- Output::_total_duplicates, Output::_max_key_len, Output::_min_key_len):
- Declare as const.
- * src/output.cc (Output::num_hash_values, Output::output_constants,
- Output::output_hash_function, Output::output_keylength_table,
- Output::output_keyword_table, Output::output_lookup_array,
- Output::output_lookup_tables, Output::output_lookup_function_body,
- Output::output_lookup_function): Declare as const.
- * src/search.h (Search::merge, Search::merge_sort,
- Search::compute_occurrence, Search::already_determined,
- Search::keyword_list_length, Search::max_key_length,
- Search::get_max_keysig_size, Search::compute_hash,
- Search::sort_by_occurrence): Declare as const.
- * src/search.cc (Search::merge, Search::merge_sort,
- Search::compute_occurrence, Search::already_determined,
- Search::keyword_list_length, Search::max_key_length,
- Search::get_max_keysig_size, Search::compute_hash,
- Search::sort_by_occurrence): Declare as const.
-
- * src/output.cc (Output::output): Set char_to_index to a cast in all
- cases. Avoids gcc warnings on the generated code.
-
- * src/output.cc (Output_Enum): Prepend an underscore to field names.
- (Output_Expr1): Likewise.
- (Output::output_hash_function): Simplify the special case for "-k 1,$".
-
- * src/search.h (Search::init_asso_values, Search::find_asso_values):
- New declarations.
- (Search::try_asso_value): Renamed from Search::affects_prev.
- (Search::change_some_asso_value): Renamed from Search::change.
- (Search::set_asso_max, Search::get_asso_max): Remove methods.
- (Search::_union_set): New field.
- * src/search.cc (Search::init_asso_values): New method, extracted
- from Search::optimize.
- (Search::try_asso_value): Renamed from Search::affects_prev. Take the
- iteration count as argument.
- (Search::change_some_asso_value): Renamed from Search::change. Don't
- make union_set static. Don't increment _fewest_collisions here.
- (Search::find_asso_values): New method, extracted from
- Search::optimize.
- (Search::optimize); Update.
-
- * src/search.h (Search::compute_hash): Renamed from Search::hash.
- (Search::compute_disjoint_union): Remove declaration.
- (Search::sort_by_occurrence): Renamed from Search::sort_set.
- * src/search.cc (Search::compute_hash): Renamed from Search::hash.
- (compute_disjoint_union): Renamed from Search::compute_disjoint_union.
- (Search::sort_by_occurrence): Renamed from Search::sort_set.
- (Search::change): Simplify loop.
-
- * src/search.h (Search::clear_determined): New declaration.
- * src/search.cc (Search::clear_determined): New method.
- (Search::already_determined): Optimize.
- (Search::reorder): Even when the next keyword after the current one
- is completely determined, move all determined keywords after the
- current one.
-
- Compute the occurrences after removal of duplicates, not before.
- * src/keyword.h (KeywordExt::init_selchars): Remove occurrences
- argument.
- * src/keyword.cc (KeywordExt::init_selchars): Likewise.
- * src/search.cc (Search::prepare): Reorder the code. Compute the
- occurrences after removal of duplicates.
- (Search::merge_sort): Optimize the loop.
- (Search::compute_occurrence): Renamed from Search::get_occurrence.
- * src/search.h (Search::compute_occurrence): Renamed from
- Search::get_occurrence.
- * tests/chill.exp: Regenerated.
-
- Bug fix: The hash table could fail to detect duplicates, between
- keywords of different length, when option -n (option[NOLENGTH]) was
- given.
- * src/hash-table.h (Hash_Table::Hash_Table): Pass table size, not
- vector and vector size as arguments.
- (Hash_Table::_log_size): New field.
- (Hash_Table::equal): New declaration.
- * src/hash-table.cc (size_factor): New variable.
- (Hash_Table::Hash_Table): Pass table size, not vector and vector size
- as arguments. Allocate the vector here.
- (Hash_Table::~Hash_Table): Deallocate the vector here.
- (Hash_Table::equal): New function.
- (Hash_Table::insert): Use it. Don't use item->_allchars_length for the
- increment if _ignore_length is true.
- * src/search.cc (TABLE_MULTIPLE): Remove variable.
- (Search::prepare): Update.
-
-2002-11-02 Bruno Haible <bruno@clisp.org>
-
- Provide documentation also in PDF format.
- * doc/Makefile.in (pdfdir, TEXI2PDF): New variables.
- (all): Depend on pdf.
- (pdf, gperf.pdf): New rules.
- (maintainer-clean): Remove the PDF file.
-
- * src/keyword-list.icc: New file, extracted from keyword-list.h.
- * src/keyword-list.h: Include keyword-list.icc. Move inline methods
- to there.
- * src/keyword-list.cc: Include keyword-list.icc.
- * src/Makefile.in (KEYWORD_LIST_H): Add keyword-list.icc.
-
- * lib/hashpjw.h (hashpjw): Change argument type to 'unsigned char *'.
- * lib/hash.cc (hashpjw): Likewise.
- * src/keyword.icc: New file.
- * src/keyword.h: Include keyword.icc.
- (KeywordExt::_selchars): Change type to 'unsigned char *'.
- * src/keyword.cc: Include keyword.icc.
- (Keyword::Keyword, KeywordExt::KeywordExt): Move to keyword.icc.
- (sort_char_set): Change argument type to 'unsigned char *'.
- (KeywordExt::init_selchars): Update.
- * src/search.h (Search::compute_disjoint_union): Change argument types
- to 'unsigned char *'.
- (Search::sort_set): Likewise.
- (Search::affects_prev): Change argument type to 'unsigned char'.
- * src/search.cc (Search::prepare): Initialize _duplicate_link here.
- (Search::get_occurrence, Search::set_determined,
- Search::already_determined, Search::hash): Update.
- (Search::compute_disjoint_union): Change argument types to
- 'unsigned char *'.
- (Search::sort_set): Likewise.
- (Search::affects_prev): Change argument type to 'unsigned char'.
- (Search::change): Update.
- * src/Makefile.in (KEYWORD_H): Add keyword.icc.
-
- * src/options.cc (Options::parse_options): Fix error message.
-
- * src/read-line.h (Read_Line::Read_Line): Make FILE* argument
- mandatory. Move body to read-line.icc.
- * src/read-line.icc (Read_Line::Read_Line): New constructor.
- * src/input.h (Input::Input): Add FILE* argument.
- * src/input.cc (Input::Input): Likewise.
- * src/main.cc (main): Pass stdin to Input constructor.
-
- * src/options.h (DEFAULTCHARS): Remove.
- (Positions::MAX_KEY_POS): Set to 255.
- (Positions::_positions): Increase array size.
- (PositionIterator::EOS): Set to -1.
- (PositionIterator::_index): Change type to 'unsigned int'.
- * src/options.icc (Positions::Positions): Don't store
- PositionIterator::EOS.
- (PositionIterator::next): Produce PositionIterator::EOS here.
- * src/options.cc (Options::long_usage): Use MAX_KEY_POS, not
- MAX_KEY_POS-1.
- (PositionStringParser): Rename field _size to _in_range. Rename
- field _curr_value to _range_curr_value. Rename field _upper_bound
- to _range_upper_bound.
- (PositionStringParser::nextPosition): Comments.
- (Options::Options): Update.
- (Options::~Options): Update.
- (long_options): Use NULL, not 0.
- (Options::parse_options): Set BAD_VALUE to -2; -1 is now EOS. Bug fix:
- Check against array overflow when more than MAX_KEY_POS positions are
- given. Don't store PositionIterator::EOS.
- Check against extra arguments before opening the input file.
- * src/output.cc (Output::output_hash_function): Change test which
- was for option[DEFAULTCHARS].
- * tests/test-6.exp: Update.
-
- * src/options.h (Options::get_delimiters): Renamed from
- Options::get_delimiter.
- * src/options.icc (Options::get_delimiters): Renamed from
- Options::get_delimiter.
- * src/input.cc (Input::read_keys): Update.
-
- Bug fix.
- * src/options.cc (Options::print_options): Escape backquote inside
- double-quoted strings.
-
- Bug fix.
- * src/keyword.cc (KeywordExt::init_selchars): Avoid comparison with
- uninitialized member variable. Found with 'valgrind'.
-
- * src/version.cc: Include version.h.
- * src/Makefile.in (OBJECTS): Reorder.
- (KEYWORD_H, KEYWORD_LIST_H, INPUT_H, SEARCH_H, OUTPUT_H): New
- variables.
- (HASH_TABLE_H): Update.
- (options.o, read-line.o, keyword.o, keyword-list.o, input.o, search.o,
- output.o, main.o): Update dependencies.
-
- * src/vectors.h: Remove file.
- * src/vectors.cc: Remove file.
- * src/search.h: Don't include vectors.h.
- (Search): Don't inherit from Vectors. New fields _alpha_size,
- _occurrences, _asso_values.
- (Search::_determined, Search::get_occurrence, Search::set_determined,
- Search::already_determined, Search::hash, Search::sort_set): Make
- nonstatic.
- * src/search.cc (Search::Search): Initialize _alpha_size, _occurrences,
- _asso_values, _determined.
- (Search::optimize, Search::~Search): Update.
- * src/output.h: Don't include vectors.h.
- (Output): Remove field _v. New fields _alpha_size, _occurrences,
- _asso_values.
- (Output::Output): Replace Vectors* argument with alpha_size,
- occurrences, asso_values.
- * src/output.cc (Output::Output): Replace Vectors* argument with
- alpha_size, occurrences, asso_values.
- (Output::output_hash_function): Update.
- * src/main.cc (main): Don't set Vectors::ALPHA_SIZE.
- Pass _alpha_size, _occurrences, _asso_values from Search to Output.
- * src/keyword.h: Don't include vectors.h.
- * src/Makefile.in (OBJECTS): Remove vectors.o.
- (VECTORS_H): Remove variable.
- (vectors.o): Remove rule.
-
- * src/search.h: New file, combines src/key-list.h, src/gen-perf.h.
- * src/search,cc: New file, combines src/key-list.cc, src/gen-perf.cc.
- * src/key-list.h: Remove file.
- * src/key-list.cc: Remove file.
- * src/gen-perf.h: Remove file.
- * src/gen-perf.cc: Remove file.
- * src/main.cc (KeywordExt_Factory): Moved here from gen-perf.cc.
- (main): Inline some code from gen-perf.cc.
- * src/keyword.h (KeywordExt::init_selchars): Take the occurrences
- vector as argument.
- * src/keyword.cc (KeywordExt::init_selchars): Take the occurrences
- vector as argument.
- * src/input.cc (Input::set_output_types): Initialize _array_type,
- _return_type, _struct_tag.
- (Input::read_keys): Initialize _additional_code.
- * src/Makefile.in (OBJECTS): Add search.o.
- Remove key-list.o, gen-perf.o.
- (KEY_LIST_H, GEN_PERF_H): Remove variables.
- (gen-perf.o, key-list.o): Remove rules.
- (search.o): New rule.
-
- * *, */*: Update copyright notice to GPL version 2.
-
- * src/keyword-list.h (Keyword_List): New class.
- (KeywordExt_List): Inherit from it.
- * src/keyword-list.cc (Keyword_List::Keyword_List): New constructor.
- (KeywordExt_List::KeywordExt_List): Update.
- * src/input.h (Input::Input): Add Keyword_Factory argument.
- (Input::_factory): New field.
- (Input::_head): Change type to Keyword_List*.
- (Input::parse_line): New declaration.
- * src/input.cc (Input::Input): New constructor.
- (Input::parse_line): Renamed from parse_line. Use the _factory.
- (Input::read_keys): Update.
- * src/key-list.cc (KeywordExt_Factory): New class.
- (Key_List::read_keys): Pass a KeywordExt_Factory as Input constructor
- argument.
-
- Avoid g++ -Wold-style-cast warnings.
- * src/bool-array.icc: Use new-style casts.
- * src/gen-perf.cc: Likewise.
- * src/input.cc: Likewise.
- * src/key-list.cc: Likewise.
- * src/keyword.cc: Likewise.
- * src/options.cc: Likewise.
- * src/output.cc: Likewise.
- * src/hash-table.cc: Likewise. Remove (char *) cast in memset argument.
-
- * src/keyword-list.h (KeywordExt_List): Don't inherit from KeywordExt.
- (KeywordExt_List::KeywordExt_List): Take a KeywordExt* as argument.
- (KeywordExt_List::_car): New field.
- (KeywordExt_List::first): Use it.
- * src/keyword-list.cc (KeywordExt_List::KeywordExt_List): Take a
- KeywordExt* as argument.
- * src/input.cc (parse_line): Create the KeywordExt separately.
-
- Start using bool.
- * src/bool-array.h (Bool_Array::set_bit): Change return type to bool.
- * src/bool-array.icc (Bool_Array::set_bit): Likewise.
- * src/gen-perf.h (Gen_Perf::affects_prev): Likewise.
- * src/gen-perf.cc (Gen_Perf::affects_prev): Likewise.
- * src/hash-table.h (Hash_Table::_ignore_length): Change type to bool.
- (Hash_Table::Hash_Table): Change 3rd argument type to bool.
- * src/hash-table.cc (Hash_Table::Hash_Table): Likewise.
- * src/input.h (Input::_additional_code): Change type to bool.
- * src/input.cc (Input::read_keys): Update.
- * src/key-list.h (Key_List::_occurrence_sort, Key_List::_hash_sort,
- Key_List::_additional_code): Change type to bool.
- (Key_List::_determined): Change element type to bool.
- (Key_List::already_determined): Change return type to bool.
- * src/key-list.cc (Key_List::_determined): Change element type to bool.
- (Key_List::set_determined): Update.
- (Key_List::already_determined): Change return type to bool.
- (Key_List::reorder, Key_List::sort, Key_List::Key_List): Update.
- * src/options.h (Positions::sort): Change return type to bool.
- (Options::operator[]): Likewise.
- * src/options.icc (Positions::sort): Change return type to bool.
- (Options::operator[]): Likewise.
- * src/output.h (Output::Output): Change 5th argument type to bool.
- (Output::_additional_code): Change type to bool.
- * src/output.cc (Output::Output): Change 5th argument type to bool.
-
-2002-10-16 Bruno Haible <bruno@clisp.org>
-
- * src/*.h: Align all member names at column 24.
-
-2002-10-15 Bruno Haible <bruno@clisp.org>
-
- * src/input.h: New file.
- * src/input.cc: New file, extracted from key-list.cc.
- * src/key-list.h (Key_List): Don't inherit from Read_Line.
- (Key_List::get_special_input,
- Key_List::save_include_src, Key_List::get_array_type,
- Key_List::strcspn, Key_List::set_output_types): Remove methods.
- * src/key-list.cc (Key_List::get_special_input,
- Key_List::save_include_src, Key_List::get_array_type,
- Key_List::strcspn, Key_List::set_output_types, parse_line): Move to
- src/input.cc.
- (Key_List::read_keys): Use Input::read_keys.
- (Key_List::Key_List): Update.
- * src/gen-perf.cc: Update.
- * src/Makefile.in (OBJECTS): Add input.o.
- (input.o): New rule.
-
-2002-10-14 Bruno Haible <bruno@clisp.org>
-
- * src/options.cc: Don't include "vector.h".
- (Options::parse_options): Don't initialize Vectors::ALPHA_SIZE here.
- * src/vectors.cc (Vectors::ALPHA_SIZE): Don't initialize here.
- * src/gen-perf.cc (Gen_Perf::Gen_Perf): Initialize Vectors::ALPHA_SIZE.
-
- * src/options.h (Positions): New class.
- (PositionIterator): New class.
- (Options::parse_options): Renamed from Options::operator().
- (Options::get_asso_max, Options::set_asso_max): Move to class Key_List.
- (Options::reset, Options::get): Remove, replaced by class
- PositionIterator.
- (Options::get_initial_asso_value): Renamed from Options::initial_value.
- (Options::key_sort): Remove, replaced by Positions::sort.
- (Options): Make all fields and methods non-static.
- * src/options.icc (Positions::Positions, Positions::operator[],
- Positions::get_size, Positions::pointer, Positions::set_size,
- Positions::sort, PositionIterator::PositionIterator,
- PositionIterator::next): New methods.
- (Options::get_initial_asso_value): Renamed from Options::initial_value.
- (Options::get_size_multiple): New method.
- (Options::get_key_positions): New method.
- (Options::get_max_keysig_size): Implement using _key_positions.
- * src/options.cc (Options::long_usage): Split big string into small
- pieces.
- (PositionStringParser): Prefix field names with _.
- (Options::Options): Update.
- (Options::~Options): Fix explanation of of _size_multiple. Don't print
- _key_positions if it is effectively ignored.
- (Options::parse_options): Renamed from Options::operator(). Update.
- * src/key-list.h (Key_List): New field _size. New methods get_asso_max,
- set_asso_max, get_max_keysig_size.
- * src/key-list.cc (Key_List::read_keys): Don't make side effects on
- options.
- (Key_List::dump): Use Key_List::get_max_keysig_size() instead of
- Options::get_max_keysig_size().
- (Key_List::get_max_keysig_size): New function.
- * src/hash-table.cc (Hash_Table::~Hash_Table): Compute the field
- width on the fly if option[ALLCHARS].
- * src/gen-perf.cc (Gen_Perf::Gen_Perf): Update,
- Use Options::get_size_multiple() instead of Options::get_asso_max().
- Use Key_List::get_asso_max() instead of Options::get_asso_max(). Use
- Key_List::get_max_keysig_size() instead of
- Options::get_max_keysig_size().
- (Gen_Perf::affects_prev): Likewise.
- (Gen_Perf::change): Likewise.
- * src/keyword.cc: Update.
- * src/main.cc: Update.
- * src/output.cc: Update.
- * tests/test-6.exp: Update.
-
-2002-10-13 Bruno Haible <bruno@clisp.org>
-
- * src/bool-array.*: Some polishing.
-
- * src/options.h (Options::operator=, Options::operator!=): Remove
- unused methods.
- * src/options.icc (Options::operator=, Options::operator!=): Remove.
-
- * src/*.h: Prefix all field names with _.
- * src/*.cc, src/*.icc: Update.
-
- * src/*: Simplify declarations of functions without arguments.
-
-2002-10-04 Bruno Haible <bruno@clisp.org>
-
- * src/output.h: New file, extracted from key-list.h.
- * src/output.cc: New file, extracted from key-list.cc.
- * src/key-list.h (Key_List): Make some fields protected. Move output
- routines to src/output.h.
- * src/key-list.cc: Move output routines to src/output.cc.
- * src/gen-perf.cc (Gen_Perf::doit_all): Use class Output.
- * src/Makefile.in (OBJECTS): Add output.o.
- (output.o): New rule.
-
-2002-10-03 Bruno Haible <bruno@clisp.org>
-
- * src/iterator.h: Remove file.
- * src/iterator.cc: Remove file.
- * src/options.cc: (PositionStringParser): New class, taken from old
- iterator.cc.
- * src/Makefile.in (OBJECTS): Remove iterator.o.
- (ITERATOR_H): Remove variable.
- (iterator.o): Remove rule.
-
- * src/keyword-list.h: New file.
- * src/keyword-list.cc: New file.
- * src/list-node.h: Remove file.
- * src/list-node.cc: Remove file.
- * src/keyword.h (KeywordExt::init_selchars): New declaration.
- * src/keyword.cc (sort_char_set, KeywordExt::init_selchars): New, from
- old list-node.cc.
- * src/gen-perf.cc: Replace List_Node by KeywordExt or KeywordExt_List,
- as appropriate.
- * src/hash-table.h: Likewise.
- * src/key-list.h: Likewise.
- * src/key-list.cc: Likewise.
- * src/Makefile.in (OBJECTS): Remove list-node.o, add keyword-list.o.
- (LIST_NODE_H): Remove macro.
- (list-node.o): Remove rule.
- (keyword-list.o): New rule.
-
- * src/keyword.h (KeywordExt): New class.
- * src/keyword.cc (KeywordExt): New constructor.
- * src/list-node.h (List_Node): Inherit from KeywordExt.
- * src/list-node.cc: Update.
- * src/gen-perf.cc: Update.
- * src/hash-table.cc: Update.
- * src/key-list.cc: Update.
- (output_keyword_entry): Change argument type to KeywordExt*.
-
- * src/keyword.h: New file.
- * src/keyword.cc: New file.
- * src/list-node.h (List_Node): Extend Keyword.
- * src/list-node.cc: Update.
- * src/gen-perf.cc: Update.
- * src/hash-table.cc: Update.
- * src/key-list.cc: Update.
- * src/Makefile.in (OBJECTS): Add keyword.o.
- (keyword.o): New rule.
-
- * src/key-list.cc (Key_List::read_keys): Allocate the memory for the
- hash table using 'new'.
- (Key_List::output_lookup_array): Allocate the memory for the duplicates
- array using 'new'.
- * src/options.h (LARGE_STACK_ARRAYS): Remove definition.
- * src/main.cc (main): Remove setrlimit call.
- * src/configure.in: Don't test for unistd.h, sys/time.h,
- sys/resource.h, getrlimit, setrlimit.
-
- * src/bool-array.h (Bool_Array): Make all members non-static.
- Add an argument to the constructor. Remove init(), rename reset() to
- clear(), rename find() to set_bit().
- * src/bool-array.icc: Move init() code into the constructor.
- Rename reset() to clear(), rename find() to set_bit().
- * src/gen-perf.h (Gen_Perf): Add collision_detector member.
- * src/gen-perf.cc: Update.
-
- * src/gen-perf.h (Gen_Perf::doit_all): Renamed from
- Gen_Perf::operator ().
- * src/gen-perf.cc (Gen_Perf::doit_all): Renamed from
- Gen_Perf::operator ().
- * src/main.cc: Update.
-
- * src/read-line.h (Read_Line::read_next_line): Renamed from
- Read_Line::get_line.
- * src/read-line.icc: Likewise.
- * src/read-line.cc: Update.
- * src/key-list.cc: Update.
-
- * lib/getline.h: New file.
- * lib/getline.cc: New file.
- * lib/Makefile.in (OBJECTS): Add getline.o.
- (getline.o): New rule.
- * src/read-line.h (Read_Line::readln_aux): Remove declaration.
- * src/read-line.cc (Read_Line::readln_aux): Remove function.
- * src/read-line.icc (Read_Line::get_line): Use ::get_line.
- * src/options.h (LARGE_STACK): Remove macro.
-
- * src/bool-array.h (STORAGE_TYPE): Remove type.
- Use 'unsigned int' instead of STORAGE_TYPE.
- * src/bool-array.cc: Likewise.
- * src/bool-array.icc: Likewise.
- * src/gen-perf.cc: Likewise.
-
- * src/new.cc: Remove file.
- * src/Makefile.in (OBJECTS): Remove new.o.
- (new.o): Remove rule.
- * src/configure.in: Remove test for HAVE_THROW_DECL.
- * acconfig.h: Remove file.
-
- * src/trace.h: Remove file.
- * src/trace.cc: Remove file.
- * src/Makefile.in (OBJECTS): Remove trace.o.
- (TRACE_H): Remove variable.
- (trace.o): Remove rule.
- Update all dependencies.
- * src/bool-array.h, src/bool-array.cc, src/bool-array.icc: Don't use T.
- * src/gen-perf.cc: Likewise.
- * src/hash-table.cc: Likewise.
- * src/iterator.cc: Likewise.
- * src/key-list.cc: Likewise.
- * src/list-node.cc: Likewise.
- * src/main.cc: Likewise.
- * src/new.cc: Likewise.
- * src/options.h, src/options.cc, src/options.icc: Likewise.
- * src/read-line.h, src/read-line.cc, src/read-line.icc: Likewise.
-
- * tests/Makefile.in: Use gperf option -I, to avoid gcc-3.x warnings.
- * tests/test.c: Don't use gets(), to avoid warnings.
-
-2001-08-02 Bruno Haible <bruno@linuix.math.u-bordeaux.fr>
-
- * doc/gperf.texi: Change bug report address to <bug-gnu-gperf@gnu.org>.
- * README: Updated.
-
-2000-12-18 Bruno Haible <bruno@linuix.math.u-bordeaux.fr>
-
- * src/configure.in: Add check for rand() in libm. Needed for BeOS.
- * src/Makefile.in (LIBS): Use @GPERF_LIBM@ instead of hardwiring -lm.
-
-2000-11-20 Bruno Haible <bruno@linuix.math.u-bordeaux.fr>
-
- * doc/help2man: Update to version 1.23.
-
-2000-09-26 Bruno Haible <bruno@linuix.math.u-bordeaux.fr>
-
- * gperf-2.7.2 released.
-
- * doc/gperf.texi: Add a second bug report address
- <gperf-bugs@lists.sourceforge.net>.
- * README: Updated.
-
-2000-08-28 Bruno Haible <bruno@linuix.math.u-bordeaux.fr>
-
- * lib/getopt.h (struct option): Use "const" also when compiling in
- C++ mode. Avoids warnings from Sun CC and HP-UX aCC.
-
- * doc/Makefile.in (docdir): Change from $(datadir)/doc/@PACKAGE@ to
- $(prefix)/doc/@PACKAGE@, following the newest GNU standards.
-
-2000-08-20 Bruno Haible <bruno@linuix.math.u-bordeaux.fr>
-
- * src/version.cc: Bump version number to 2.7.2.
- * doc/gperf.texi: Likewise.
-
- * doc/texinfo.tex: Update to post-texinfo-4.0 version. @code in the
- title page now chooses a larger font. The overall layout of the
- text is denser.
-
- * AUTHORS: New file.
-
- * tests/Makefile.in (all): Add check-lang-utf8 and check-lang-ucs2.
- (check-lang-utf8, check-lang-ucs2): New targets.
- (clean): Remove lu8out and lu2out.
- * tests/lang-utf8.gperf, tests/lang-utf8.exp: New files.
- * tests/lang-ucs2.gperf, tests/test2.c, tests/lang-ucs2.in,
- tests/lang-ucs2.exp: New files.
-
- Allow the use of embedded NULs in keys.
- * lib/hash.h (hashpjw): Add a length argument.
- * lib/hash.cc (hashpjw): Likewise. Don't stop when encountering a NUL
- character.
- * src/hash-table.h (Hash_Table constructor): Add ignore_len argument.
- (Hash_Table::ignore_length): New field.
- (Hash_Table::insert): Renamed from Hash_Table::operator(). Remove
- ignore_length argument.
- * src/hash-table.cc (NIL): Remove macro.
- (Hash_Table constructor): Add ignore_len argument. Use it to
- initialize ignore_length.
- (Hash_Table destructor): Specify explicit length of char_set and
- key.
- (Hash_Table::insert): Renamed from Hash_Table::operator(). Remove
- ignore_length argument. Pass explicit length to hashpjw. Compare
- char_set using memcmp, not strcmp.
- * src/list-node.h (List_Node): Rename field length to key_length.
- New field char_set_length.
- (List_Node constructor): Accept key and rest, not the entire line.
- * src/list-node.cc (List_Node constructor): Accept key and rest, not
- the entire line. Don't NUL terminate key and char_set. Specify
- explicit length of key. Initialize char_set_length field.
- * src/key-list.cc: Include <ctype.h>.
- (parse_line): New function.
- (Key_List::read_keys): Call parse_line instead of new List_Node.
- Pass option[NOLENGTH] to Hash_Table constructor, not
- Hash_Table::insert. Specify explicit length of key and char_set.
- (Key_List::get_occurrence): Use explicit length of char_set.
- (Key_List::set_determined): Likewise.
- (Key_List::already_determined): Likewise.
- (output_string): Add length argument. Output unprintable characters
- using octal escape sequence.
- (output_keyword_entry): Use explicit length of key.
- (Key_List::output_lookup_array): Specify explicit length of key.
- (output_switch_case): Likewise.
- (Key_List::dump): Likewise.
- * src/gen-perf.h (Gen_Perf::compute_disjoint_union): Add two length
- arguments.
- * src/gen-perf.cc (Gen_Perf::compute_disjoint_union): Likewise. Don't
- stop when encountering NUL characters. Don't NUL terminate the
- result.
- (Gen_Perf::hash): Use explicit length of char_set.
- (Gen_Perf::change): Specify explicit length of key.
- * doc/gperf.texi: Document it.
-
- * doc/help2man: New file, help2man version 1.022.
- * Makefile.devel (all): Add doc/gperf.1.
- (doc/gperf.1): New target.
- * doc/gperf.1: Automatically generated.
-
- * mkinstalldirs: New file, from automake-1.4, grep-2.4.1, guile-1.4,
- libtool-1.3.3, make-3.79.1, tar-1.13.
- * src/Makefile.in (MKINSTALLDIRS): New variable.
- (install, installdirs): Use it instead of mkdir.
- * doc/Makefile.in (MKINSTALLDIRS): New variable.
- (install, installdirs): Use it instead of mkdir.
-
- * INSTALL: Update.
-
-2000-08-19 Bruno Haible <bruno@linuix.math.u-bordeaux.fr>
-
- * src/key-list.cc (Output_Compare_Memcmp): New class.
- (Key_List::output_lookup_function): When option -l is given, use
- memcmp instead of strcmp or strncmp.
-
- * doc/gperf.texi: The bug report address is <bug-gnu-utils@gnu.org>.
- The download address is ftp.gnu.org. Remove mention of -a and -g
- options (now nops). Explain effect of -c option.
-
- * doc/configure.in (PACKAGE): New variable.
- * doc/Makefile.in (datadir, docdir): New variables.
- (dvidir, htmldir): Change values.
- (install, installdirs): Update.
-
- * src/configure.in: Rename cache variable gp_cxx_throw_decl to
- gp_cv_cxx_throw_decl.
-
- * src/key-list.cc (Key_List::output_hash_function): When outputting
- __inline, take advantage of C++ compilers which have inline.
-
- * src/key-list.cc (Output_Compare_Strncmp::output_comparison):
- After the call to strncmp, verify that expr2 is not longer than
- `len'.
- Reported by Carlo Wood <carlo@runaway.xs4all.nl>.
-
- * src/key-list.cc (Key_List::output_lookup_function_body): Avoid
- emitting the loop for dealing with duplicates if
- total_duplicates == 0.
-
- * src/key-list.cc (Key_List::read_keys): Don't accept an empty key.
-
- * src/Makefile.in (install, installdirs, uninstall): Respect
- $(DESTDIR).
- * doc/Makefile.in (install, installdirs, uninstall): Likewise.
-
- * src/options.cc (Options::print_options): Escape the arguments which
- contain special characters.
-
- * tests/c-parse.gperf: Updated from gcc-2.95.2/gcc/c-parse.gperf.
- * tests/objc.gperf: New file, from gcc-2.95.2/gcc/objc/objc.gperf.
- * tests/chill.gperf: New file, from gcc-2.95.2/gcc/ch/gperf.
- * tests/cplusplus.gperf: New file, from gcc-2.95.2/gcc/cp/gxx.gperf.
- * tests/gplus.gperf: Remove file.
- * tests/java.gperf: New file, from gcc-2.95.2/gcc/java/keyword.gperf.
- * tests/Makefile: Check them all.
- * tests/c-parse.exp: Renamed from tests/test-1.exp.
- * tests/modula2.exp: Renamed from tests/test-2.exp.
- * tests/cplusplus.exp: Renamed from tests/test-3.exp.
- * tests/gpc.exp: Renamed from tests/test-5.exp.
-
- * src/key-list.cc (output_switch_case): Add trailing semicolon to
- lengthptr assignment line. Fixes bug with -D and -S.
- From Reini Urban <rurban@sbox.tu-graz.ac.at>. Also reported by
- David Hunter.
- * tests/Makefile.in (check-lang-syntax): Perform each test with -D
- once without and once with duplicates.
-
- * src/key-list.cc (output_keyword_entry): Avoid outputting a struct
- initializer of the form {"key",}.
-
- * src/iterator.cc: Don't include <stream.h>.
- From Michael Deutschmann <ldeutsch@mail.netshop.net>.
-
- * tests/Makefile.in (VALIDATE, check-lang-syntax): Use $(srcdir) where
- appropriate.
- Reported by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
-
- * tests/validate: Don't run -traditional tests by default.
-
- * src/main.cc (main): Check for write error on stdout before returning.
-
- * src/Makefile.in (LDFLAGS): New definition, to catch the value given
- at configure time.
-
- Make the structure initializers customizable. Based on a patch by
- Kaveh R. Ghazi <ghazi@caip.rutgers.edu>.
- * src/options.h (Options::get_initializer_suffix,
- Options::initializer_suffix): New declarations.
- * src/options.icc (Options::get_initializer_suffix): New function.
- * src/options.cc (DEFAULT_INITIALIZER_SUFFIX): New constant.
- (Options::initializer_suffix): New variable.
- (Options::short_usage): Document option "-F".
- (Options::long_usage): Document option "-F".
- (Options constructor): Initialize initializer_suffix.
- (Options destructor): Dump initializer_suffix.
- (long_options): Add option "-F".
- (Options::operator()): Accept option "-F". Sets initializer_suffix.
- * src/key-list.cc (output_keyword_blank_entries): Output
- initializer_suffix.
- * doc/gperf.texi: Document option "-F".
-
- * COPYING: Replace with GPL version 2 (with new FSF address and Y2K
- safe year format).
-
- * doc/gpl.texinfo: New file.
- * doc/gperf.texi: Document it.
- * doc/Makefile.in (gperf.info, gperf.dvi, gperf.html, gperf_toc.html):
- Update dependencies.
-
- * doc/Makefile.in (MAKEINFO): Unset LANG while running makeinfo.
-
-1998-05-20 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
-
- * doc/Makefile.in (gperf.dvi, clean): Remove gperf.cps.
- (install, installdirs, uninstall): Don't install gperf.dvi. The
- info and HTML documentations are sufficient for on-line use, and
- users who wish to print the documentation (in PS or DVI format)
- can do this directly off the source distribution.
- (DVIPS): Use "-D600" instead of "-Pljfour", for portability.
-
-1998-05-20 Akim Demaille <demaille@inf.enst.fr>
-
- * doc/gperf.texi: Many modifications:
- (Output Format): Declare `hash' and `in_word_set' as functions.
- (Concept Index): New section.
- (Title page): Use standard presentation.
- (Top): Use @top instead of @unnumbered so that automatic master
- update works.
- (Motivation): Avoid spaces in @var.
- (Options): Use the standard name ``Invoking ...''.
- (Options): Declare also the long form of the options.
- (Options): Remove redundant @itemize when @table is used.
-
-1998-05-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * aclocal.m4 (CL_PROG_INSTALL): Set cl_cv_path_install, not
- ac_cv_path_install.
-
-Sat May 2 13:20:54 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
-
- * gperf-2.7 released.
-
-Sat May 2 12:31:51 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
-
- * src/version.cc (version_string): Remove the "(C++ version)" suffix.
- It's redundant: the early C versions of gperf are called cperf.
- Reported by Karl Berry.
- * src/option.cc (Options::operator()): Trim the output of "gperf -v".
-
-Thu Apr 16 13:22:16 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
-
- * lib/Makefile.in, src/Makefile.in: Don't use $(TARGET_ARCH).
- Solaris "make" sets it to a value not understood by "cc".
-
-Wed Apr 15 23:52:14 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
-
- * lib/Makefile.in, src/Makefile.in: Don't use implicit rules. Don't
- use $<. AIX "make" and OSF/1 "make" have problems with both.
- * src/gen-perf.cc, src/key-list.cc: Cast free() argument to char*,
- otherwise it doesn't compile on SunOS 4.
- * src/key-list.h: Declare structs outside of other declarations,
- needed for OSF/1 cxx 5.5.
- * lib/getopt.h: Use prototypes if __STDC__ || __cplusplus.
- Don't give a prototype for getopt(), to avoid error on SunOS 4.
- * lib/getopt.c: Declare strncmp, to avoid warnings.
-
-Tue Apr 14 23:24:07 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
-
- * lib/GetOpt.{h,cc}: Remove files.
- * lib/getopt.{h,c}, lib/getopt1.c: New files, from GNU libc.
- * lib/configure.in (AC_INIT): Search for hash.cc, not GetOpt.cc.
- * lib/Makefile.in (OBJECTS): Remove GetOpt.o, add getopt.o, getopt1.o.
- (getopt.o, getopt1.o, hash.o): Use explicit building rules. Some
- "make"s don't support to have both implicit rules for "%.o : %.c"
- and "%.o : %.cc" in the same Makefile.
- * lib/hash.{h,cc}: Remove #pragma; there are no templates here.
- * src/option.h (Options::usage): Remove.
- (Options::short_usage, Options::long_usage): Declare.
- * src/option.cc (Options::usage): Remove.
- (Options::short_usage, Options::long_usage): New functions.
- (long_options): New array.
- (Options::operator()): Use getopt_long instead of GetOpt::operator(),
- change all references to GetOpt members.
-
- * src/std-err.{h,cc}: Remove files.
- * src/gen-perf.cc, src/key-list.cc, list-node.cc, new.cc, options.cc:
- Call fprintf(stderr) instead of Std_Err::report_error().
- * src/key-list.h, src/list-node.h, src/options.h: Don't use class
- Std_Err any more.
- * src/option.cc (program_name): New variable.
- * src/Makefile.in: Remove STD_ERR_H.
- (OBJECTS): Remove std-err.o.
-
-Mon Mar 23 01:03:35 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
-
- * aclocal.m4, {lib,src,tests}/configure.in: Remove CL_CC_WORKS and
- CL_CXX_WORKS, already contained in autoconf 2.12.
-
- * src/gen-perf.cc, src/key-list.cc: Move some code from
- Gen_Perf::Gen_Perf() to Key_List::output().
- * src/Makefile.in: Update dependencies.
-
- * src/options.{h,cc}: Remove option "-p".
- * src/key-list.cc (Key_List::set_output_types): Rewrite.
- (default_array_type, default_return_type): Remove.
- * src/key-list.cc: Adjust "const" handling.
- + With option "-t" [TYPE], don't emit wrong code if there is no
- space before the struct's opening brace.
-
-Sun Mar 22 16:59:15 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
-
- * src/key-list.{h,cc}: Completely reorganized the output routines.
- Rewrote from scratch the output_switch() function. Use classes
- (Output_Constants, Output_Expr, Output_Compare) for abstraction.
- In particular:
- + Don't emit trailing whitespace and spurious blank lines.
- + Adjust indentation of the arrays.
- + Don't emit commas at the end of array initializers and
- struct initializers.
- + With option "-l" [LENTABLE], compare the length before
- fetching the word from memory.
- + With option "-S" [SWITCH], emit the comparison code just once,
- not once in every switch statement.
- + With option "-S" [SWITCH], choose the right switch statement
- through a binary search, not a linear search.
- + With option "-S" [SWITCH], emit straightforward comparisons
- instead of switch statements with just one "case" label.
- + With options "-S -p -t" [SWITCH, POINTER, TYPE], don't emit
- spurious empty elements at the beginning of the wordlist array.
- + With option "-D" [DUP] and not option "-S" [SWITCH], if there
- is no more room for duplicate entries in the lookup array,
- don't call `assert (i != 0)'. Instead, make the array larger :-)
- + With option "-D" [DUP], if there are no duplicates, don't
- automatically fall back to the non-"-D" algorithm. If the user
- wants the non-"-D" algorithm, he can just not specify "-D".
- + With option "-D" [DUP] and either options "-p -t" [POINTER, TYPE]
- or not option "-S" [SWITCH], don't emit spurious empty elements
- at the beginning of the wordlist array.
- + With option "-D" [DUP], simplify the detection and processing
- of duplicate entries in the lookup array.
- + With options "-D -l" [DUP, LENTABLE] and not option "-S" [SWITCH],
- don't forget to emit the lengthtable array.
- + With options "-D -l -S" [DUP, LENTABLE, SWITCH], don't forget to
- compare the lengths before comparing the strings.
-
- * src/gen-perf.cc: No need to include <assert.h>.
- * src/options.cc: Likewise.
-
- * src/options.cc: Don't use `errno' after freopen failed.
- * src/std-err.cc: `report_error' doesn't call strerror(errno) any
- more. No need to include <string.h> and <errno.h>.
-
- * tests/Makefile.in (check-*): Any difference between .exp and .out
- is a failure. Don't ignore whitespace differences.
-
- * tests/Makefile.in (check-lang-syntax): Add some more checks.
-
-Fri Mar 20 00:54:54 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
-
- * tests/jscript.gperf: Renamed from tests/javascript.gperf, because
- of Minix and SVR2 14-character filename limit.
- * src/key-list.cc (output_string): New function.
- (Key_List::output_switch, Key_List::output_keyword_table): Call it.
-
- * src/options.{h,icc,cc} (get_wordlist_name): New function. Add
- option -W.
- * src/key-list.cc (Key_List::output_switch,
- Key_List::output_keyword_table, Key_List::output_lookup_function):
- Use it.
- Patch from William Bader <wbader@CSEE.Lehigh.Edu>.
-
- * src/version.cc: Bump version number directly from 2.5 to 2.7,
- because Schmidt's last release from 1991 carries version number 2.6.
-
-Tue Jul 30 00:02:39 1991 Douglas C. Schmidt (schmidt at net4.ics.uci.edu)
-
- * Fixed a small bug in the Key_List::output_keyword_table routine
- that caused an extra newline to be printed if there where no
- leading blank entries... (who cares, right?!)
-
-Mon Jul 29 22:05:40 1991 Douglas C. Schmidt (schmidt at net4.ics.uci.edu)
-
- * Modified the handling of the -E (emit enums rather than
- #defines) option in conjunction with the -G option. Now, if -G
- and -E are given the enums are generated outside the lookup
- function, rather than within it!
-
-Mon Apr 8 18:17:04 1991 Doug Schmidt (schmidt at net4.ics.uci.edu)
-
- * Yucko, there was a bug in the handling of -c (and of course the
- new -I command in key-list.cc). Apparently when I added the
- super-duper hack that provided support for duplicate keys I
- forgot to update the strcmp output...
-
-Mon Mar 9 02:19:04 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
-
- * Moved the documentation to doc/, put the stuff borrowed from
- libg++ into lib/.
- * Rewrote all Makefile.in's for better compliance with GNU standards.
- * Autoconf based configuration. Rewrote all configure.in's. Added
- aclocal.m4, with macros from CLISP and CLN. Added Makefile.devel.
- * src/depend: Removed. Dependencies are now in src/Makefile.in.
-
- * src/bool-array.icc: New file, contains inline functions, from both
- src/bool-array.h and src/bool-array.cc.
- * src/options.icc: New file, contains inline functions, from both
- src/options.h and src/options.cc.
- * src/read-line.icc: New file, contains inline functions, from both
- src/read-line.h and src/read-line.cc.
-
- * src/bool-array.h: Don't include <std.h>.
- * src/bool-array.cc: Include <string.h>.
- * src/gen-perf.cc: No need to include <ctype.h>. Don't include
- <_G_config.h>.
- * src/hash-table.cc: Don't include <std.h> and <builtin.h>. Include
- <string.h> and lib/hash.h instead.
- * src/iterator.cc: Don't include <std.h>.
- * src/key-list.cc: Don't include <builtin.h>. Include <string.h> and
- <stdlib.h> instead.
- * src/list-node.cc: Don't include <std.h>. Include <stdlib.h> instead.
- Remove `index' hack.
- * src/main.cc: Don't include <_G_config.h>.
- * src/new.cc: Don't include <std.h>. Include <stdlib.h> instead.
- * src/options.cc: Don't include <builtin.h>. Include <string.h> and
- <stdlib.h> instead.
- * src/read-line.cc: Don't include <builtin.h>. Include <stdlib.h>
- instead.
- * src/std-err.cc: Don't include <std.h>. Include <string.h> (for Irix).
- * src/vectors.h: No need to include <stdio.h>.
- * src/version.cc: No need to include <stdio.h>.
-
- * src/bool-array.h: Change `STORAGE_TYPE' from int to unsigned int.
- * src/bool-array.{h,cc}: Change type of `Bool_Array::size' from int
- to unsigned int.
- * src/bool-array.{h,cc}: Change type of `Bool_Array::init' argument
- from STORAGE_TYPE to unsigned int.
- * src/gen-perf.{h,cc}: Change two `Gen_Perf::compute_disjoint_union'
- argument types from `char *' to `const char *'.
- * src/iterator.h: Change type of `Iterator::str' and argument of
- `Iterator::Iterator' from `char *' to `const char *'.
- * src/iterator.cc: Cast to `unsigned char' before calling `isdigit'.
- * src/key-list.{h,cc}: Change type of `Key_List::array_type',
- `Key_List::return_type', `Key_List::struct_tag',
- `Key_List::include_src', `default_array_type', `default_return_type'
- and return type of `Key_List::get_array_type',
- `Key_List::get_special_input', `Key_List::save_include_src' from
- `char *' to `const char *'.
- * src/key-list.cc: Change "pretty gross" assignment.
- * src/key-list.cc: Don't use `alloca', HP-UX CC lacks it.
- * lib/GetOpt.cc: Likewise.
- * src/key-list.cc (merge): Use iteration instead of recursion.
- * src/list-node.{h,cc}: Change type of `List_Node::key',
- `List_Node::rest', `List_Node::char_set' from `char *' to
- `const char *'.
- * src/new.cc: Don't use BUFSIZ. Conditionalize the throw() declaration.
- * src/read-line.h: Don't use BUFSIZ.
- * src/read-line.cc: Make CHUNK_SIZE a constant, and use allocate the
- buffers on the stack by default. Use memcpy for copying buffers.
- Include <string.h>.
- * src/read-line.icc (get_line): Use iteration instead of tail recursion.
- Don't call ungetc(EOF,stdin).
- * src/std-err.{h,cc}: Change type of `Std_Err::program_name' and of
- argument `Std_Err::report_error' from `char *' to `const char *'.
- * src/std-err.cc: `report_error' doesn't call `exit' any more. All
- callers changed to do that themselves.
- * src/trace.h: Make constructor/destructor calls non-inline.
-
- * src/key-list.cc (output_hash_function): If option[CPLUSPLUS],
- always make the hash function inline.
- (output): Declare the hash function inline, with the right name.
- * src/options.{h,cc}, src/gen-perf.cc, src/key-list.cc: Remove
- options -g, making it on by default. Remove option -a. Instead,
- introduce "-L KR-C", "-L C", "-L ANSI-C", "-L C++".
- * src/options.{h,cc}, src/key-list.cc: Add option -I.
- * src/key-list.cc: Don't emit "const" if compiling in mode "-L KR-C".
- * src/key-list.cc: Don't emit a comma at the end of an enum list.
- * src/main.cc: Remove COUNT_TIME code.
- * src/vectors.h, src/key-list.cc, src/options.cc, src/list-node.cc:
- ALPHA_SIZE defaults to 256 now. Add option -7.
-
- * tests/javascript.gperf: New file.
- * tests/jstest*.gperf, tests/validate: New tests.
-
-Sat Jan 31 01:38:11 1998 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * src/Makefile.in ($(TARGETPROG)): Add $(CFLAGS).
-
-Wed Jan 28 01:56:00 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * configure.in (package_makefile_rules_frag): New and
- redirect stderr from ${srcdir}/config.shared to
- ${package_makefile_rules_frag}.
- * src/configure.in: Ditto.
- * tests/configure.in: Ditto.
-
-Fri Jan 23 08:00:41 1998 H.J. Lu (hjl@gnu.org)
-
- * gperf.texi (@ichapter): Changed to @chapter.
-
-Wed Jan 14 09:16:48 1998 H.J. Lu (hjl@gnu.org)
-
- * src/key-list.cc, src/key-list.h (Key_List::strcspn): Don't
- define if strcspn is defined.
-
-Fri Jan 24 13:23:47 1997 Mike Stump <mrs@cygnus.com>
-
- * src/new.cc (operator delete): Add the exception specification.
-
-Mon Feb 5 19:29:16 1996 Per Bothner <bothner@kalessin.cygnus.com>
-
- * src/read-line.cc (Read_Line::readln_aux): Handle EOF if last line
- has a length which is an exact multiple of CHUNK_SIZE. (Used to throw
- away the line's contents.) From Bruno Haible <haible@ilog.ilog.fr>.
- * src/Makefile.in ($(TARGETPROG)): Add -lm to link line.
-
-Tue Jun 11 13:43:50 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * src/list-node.cc (List_Node): Reorder init of nodes to
- match declaration order.
- * src/hash-table.cc (Hash_Table): Likewise.
-
-Tue Oct 10 16:37:28 1995 Mike Stump <mrs@cygnus.com>
-
- * src/new.cc: Since malloc/delete are not paired, we cannot call
- free.
-
-Wed Jan 4 12:40:14 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * src/Makefile.in ($(TARGETPROG)): Link with $(LDFLAGS).
- Patch from John Interrante <interran@uluru.stanford.edu>.
-
-Sat Nov 5 19:12:48 1994 Jason Merrill (jason@phydeaux.cygnus.com)
-
- * src/Makefile.in (LIBS): Remove.
-
-Tue Oct 18 17:51:14 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * src/std-err.cc: Use stderror, instead of the non-standard
- sys_nerr and sys_errlist.
-
-Sat Sep 17 22:02:13 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * src/key-list.cc (output_hash_function):
- Patch from William Bader <wbader@CSEE.Lehigh.Edu>.
-
-Fri Jul 15 09:38:11 1994 Per Bothner (bothner@cygnus.com)
-
- * src/std-err.cc: #include <errno.h>, and only declare
- extern int errno if errno is not a macro.
-
-Mon May 30 17:29:34 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in (src_all, install): Make sure to add '/' after
- `pwd` in $rootme, as expected by FLAGS_TO_PASS.
-
-Wed May 11 00:47:22 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- Make libg++ build with gcc -ansi -pedantic-errors
- * src/options.h: Lose commas at end of enumerator lists.
-
-Sun Dec 5 19:16:40 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
-
- * src/hash-table.cc (Hash_Table::~Hash_Table): Don't pass an
- argument to fprintf, since it's not expecting one.
-
-Fri Nov 26 19:03:18 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * src/list-node.cc: #undef index, for the sake of broken NeXT,
-
-Thu Nov 4 11:16:03 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in (install): Use INSTALL_DATA for gperf.1.
-
-Mon Oct 25 18:40:51 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * src/key-list.cc (Key_List::read_keys): Use POW macro
- to increase hash table size to power of 2.
-
- * options.h (LARGE_STACK_ARRAYS): New flag. Defaults to zero.
- * gen-perf.cc, key-list.cc, read-line.cc:
- Only stack-allocate large arrays if LARGE_STACK_ARRAYS is set.
- * main.cc (main): Only call setrlimit (RLIMIT_STACK, ...)
- if LARGE_STACK_ARRAYS.
-
-Mon Oct 4 17:45:08 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * src/gen-perf.cc: Always use ANSI rand/srand instead of BSDisms.
-
-Wed Aug 18 12:19:53 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in (src_all): Make less verbose output.
-
-Fri May 28 14:01:18 1993 Per Bothner (bothner@rtl.cygnus.com)
-
- * src/gen-perf.cc (Gen_Perf::change): Don't use gcc-specific
- 2-operand conditional expression.
- * src/key-list.cc (Key_List::output_lookup_array):
- Don't use variable-size stack arrays, unless compiled by g++.
-
-Tue May 4 14:08:44 1993 Per Bothner (bothner@cygnus.com)
-
- Changes (mostly from Peter Schauer) to permit compilation
- using cfront 3.0 and otherwise be ARM-conforming.
- * src/key-list.h: class Key_List must use public derivation
- of base class Std_Err (because Gen_Perf::operator() in gen-perf.cc
- calls Std_Err::report_error).
- * src/gen-perf.cc (Gen_Perf::affects_prev), src/hash-table.cc
- (Hash_Table::operator()): Don't use gcc-specific 2-operand
- conditional expression.
- * src/iterator.cc (Iterator::operator()): Don't use gcc-specific
- range construct in case label.
- * key-list.cc (Key_List::output_lookup_array, Key_List::read_keys),
- src/gen-perf.cc (Gen_Perf::operator(), src/read-line.cc
- (Read_Line::readln_aux): If not gcc, don't allocate
- variable-sized arrays on stack.
- * src/new.cc (operator new): Argument type should be size_t.
- * key-list.cc (Key_List::output_lookup_array, Key_List::read_keys),
- new/cc (::operator new): Don't use non-standard >?= operator.
-
-Tue Apr 27 20:11:30 1993 Per Bothner (bothner@cygnus.com)
-
- * src/Makefile.in: Define TARGETPROG, and use it.
-
-Mon Apr 19 00:29:18 1993 Per Bothner (bothner@cygnus.com)
-
- * Makefile.in, configure.in: Re-vamped configure scheme.
- * gperf.texinfo: Renamed to gperf.texi.
- * src/bool-array.{h,cc}: ANSIfy bzero->memset.
-
-Sat Jan 30 20:21:28 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
-
- * tests/Makefile.in (mostlyclean): Also delete aout, cout, m3out,
- pout, and preout.
-
-Tue Dec 29 08:58:17 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in: pass $(FLAGS_TO_PASS) to all calls to make.
- (FLAGS_TO_PASS): added INSTALL, INSTALL_DATA, INSTALL_PROGRAM.
-
-Mon Dec 21 18:46:46 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * tests/expected.* renamed to *.exp to fit in 14 chars.
- * tests/Makefile.in: Update accordingly.
- Also rename output.* to *.out.
- * src/Makefile.in (clean): Remove gperf program.
-
-Wed Dec 9 14:33:34 1992 Per Bothner (bothner@cygnus.com)
-
- * src/hash-table.cc, src/bool-array.h: ANSIfy bzero->memset.
-
-Thu Dec 3 19:34:12 1992 Per Bothner (bothner@cygnus.com)
-
- * Makefile.in (distclean, realclean): Don't delete
- Makefile before recursing.
-
-Fri Nov 6 13:41:49 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * key-list.{h,cc}: Remove MAX_INT (and similar) constant
- fields from Key_List class, and use INT_MAX (etc) from limits.h.
- * key-list.{h,cc}, options.{h,cc}, vectors.h: Removed all
- uses of initialized const fields, as they are non-standard
- - and their use was easy to do away with. Mostly, just
- made the constants static non-fields in the .cc file.
-
-Mon Nov 2 13:10:11 1992 Per Bothner (bothner@cygnus.com)
-
- * tests/Makefile.in: When generating cinset.c, don't pass -C,
- since -C assumes an ANSI compiler. Add the -C flag (with -a)
- when generating test.out.3 instead.
- * tests/expected.out.3: Update accordingly.
-
-Wed Aug 12 11:47:54 1992 Per Bothner (bothner@cygnus.com)
-
- * Makefile.in: Factor out common flags into $(FLAGS_TO_PASS).
- * Makefile.in: 'install-info' depends on gperf.info.
-
-Mon Aug 10 11:39:52 1992 Ian Lance Taylor (ian@dumbest.cygnus.com)
-
- * Makefile.in, src/Makefile.in: always create installation
- directories.
-
-Mon Jul 20 15:33:21 1992 Mike Stump (mrs@cygnus.com)
-
- * src/new.cc (operator new): Add cast from void * to char *,
- since it is not a standard conversion.
-
-Wed Jun 17 16:25:30 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * src/gen-perf.cc: #include <_G_config.h> for _G_SYSV.
- * src/key-list.cc: alloca() hair.
- * src/main.cc (main): Only call getrlimit if _G_HAVE_SYS_RESOURCE.
- * Makefile,in, {src,test}/Makefile.in: Fix *clean rules.
-
-Fri May 29 13:21:13 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * src/gen-perf.cc: Replace USG -> _G_SYSV.
-
-Thu May 14 13:58:36 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * src/Makefile.in: Don't pass obsolete flag -DUNLIMIT_STACK.
- * tests/Makefile.in (clean): Fix.
-
-Sat Mar 7 00:03:56 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * gperf.texinfo: added menu item hook.
-
-Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in, configure.in: removed traces of namesubdir,
- -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced
- copyrights to '92, changed some from Cygnus to FSF.
-
-Sun Jan 26 19:21:58 1992 Per Bothner (bothner at cygnus.com)
-
- * tests/Makefile.in: Use re-directed stdin instead of file
- name in argv. This allows us to remove the filename
- from the output, the expected output, and hence the diffs.
- (Note that the input file is in $(srcdir), which we cannot
- place in the expected out files.)
- * tests/expected.out.[1235]: Edit out input filename,
- to match new output.
-
-Thu Jun 28 16:17:27 1990 Doug Schmidt (schmidt at brilliant)
-
- * Wow, first fix on the new job! There was a dumb error
- in Key_List::output_lookup_function, where I printed the
- string "&wordlist[key]" instead of the correct "&wordlist[index]".
-
- * Added a couple of #ifdefs for USG support.
-
-Sun Jun 3 17:16:36 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Updated the version number to 2.5 and sent to Doug Lea for release
- with the latest GNU libg++.
-
- * Changed the error handling when a keyword file cannot be opened
- (now calls perror).
-
-Wed May 30 14:49:40 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Instrumented the source code with trace statements automagically
- inserted using my new automated trace instrumentation tool!
-
-Wed May 9 11:47:41 1990 Doug Schmidt (schmidt at siam.ics.uci.edu)
-
- * Really fixed the previous bug. Turns out that a small amount
- of logic had to be duplicated to handle static links that occur
- as part of dynamic link chains. What a pain!!!
-
-Tue May 8 23:11:44 1990 Doug Schmidt (schmidt at siam.ics.uci.edu)
-
- * Fixed a stupid bug in Key_List::output_lookup_array that was
- causing incorrect counts to be generated when there were both
- static and dynamic links occurring for the same hash value.
- Also simplified the code that performs the logic in this routine.
-
-Mon Apr 30 17:37:24 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Fixed stupid bug in Key_List::output_lookup_array that was
- making the generated lookup[] array contain `chars' even
- when the values stored in the chars are greater than 127!
-
- * Changed the behavior of the -G (global table) option so that it
- will output the `length[]' array in the global scope along with
- the `word_list[]' array.
-
- * Fixed a stupid bug in Key_List::output_lookup_function that
- would always output the complicated `duplicate-handling' lookup
- logic, even when there were no duplicates in the input!
-
- * Yikes, had to modify a bunch of stuff in key-list.cc to correctly
- handle duplicate entries. Changed the generated code so that
- the MIN_HASH_VALUE is no longer subtracted off when calculating
- the hash value for a keyword. This required changing some other
- code by substituting MAX_HASH_VALUE for TOTAL_KEYS in several places.
- Finally, this means that the generated tables may contain leading
- null entries, but I suppose it is better to trade-off space to get
- faster performance...
-
-Mon Mar 26 13:08:43 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Updated version number to 2.4 to reflect the latest changes.
-
- * Changed the main program so that it always prints out gperf's
- execution timings to the generated output file.
-
-Sun Mar 25 12:39:30 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Added the -Z option so that users can specify the name of the
- generated class explicitly. Updated documentation to reflect
- this change.
-
- * Modified the generated C++ class interface so that the functions
- are declared static (to remove the overhead of passing the `this'
- pointer). This means that operator()() can no longer be used,
- since it only works on non-static member functions.
- Also changed things so that there is no constructor (why waste
- the extra call, when it doesn't do anything, eh?)
-
- * Modified the behavior of Key_List::output when the -L C++ option
- is enabled. Previously the code generated use const data members
- to record MIN_WORD_LENGTH, MIN_HASH_VALUE, etc. However, as
- pointed out by James Clark this may result in suboptimal behavior
- on the part of C++ compilers that can't inline these values.
- Therefore, the new behavior is identical to what happens with
- -L C, i.e., either #defines or function-specific enums are used.
- Why sacrifice speed for some abstract notion of `code purity?' ;-)
-
-Tue Mar 6 18:17:42 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Added the -E option that defines constant values using an enum
- local to the lookup function rather than with #defines. This
- also means that different lookup functions can reside in the
- same file. Thanks to James Clark (jjc@ai.mit.edu).
-
-Sat Mar 3 20:19:00 1990 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Added a special case to key_list::output_switch that doesn't
- generate extra comparisons when the `-S' is given an argument
- of 1 (the normal case). This should speed up the generated
- code output a tad...
-
-Fri Feb 23 14:21:28 1990 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Renamed all instances of member function get_keysig_size
- to get_max_keysig_size, since this is more precise...
-
- * Changed all occurrences of charset to keysig (stands for ``key
- signature'') to reflect the new naming convention used in the
- USENIX paper.
-
-Thu Feb 22 11:28:36 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Changed the name of the generated associated values table from
- asso_value to asso_values to reflect conventions in the USENIX
- C++ paper.
-
-Thu Feb 15 23:29:03 1990 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Updated the gperf.texinfo file to fix some formatting problems
- that had crept in since last time.
-
-Wed Feb 14 23:27:24 1990 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Fixed stupid bug in key-list.cc (get_special_input), wher
- gperf replaced each '%' with the succeeding character.
-
- * Added support for multiple target language generation. Currently
- handled languages are C and C++, with C as the default. Updated
- documentation and option handler to reflect the changes.
-
- * Added a global destructor to new.cc and removed the #ifdef, since
- the bloody thing now works with libg++.
-
-Mon Feb 14 13:00:00 1990 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Found out that my gperf paper was accepted at the upcoming
- USENIX C++ Conference in San Francisco. Yow!
-
-Tue Jan 30 09:00:29 1990 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * #ifdef'd out the new.cc memory allocator, since there are
- problems with this and the libg++ stuff.
-
- * Changed key-list.h so that class Vectors is a public (rather
- than private) base class for class Key_List. The previous
- form was illegal C++, but wasn't being caught by the old
- g++ compiler. Should work now... ;-)
-
-Sun Dec 10 14:08:23 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Added several changes from rfg@ics.uci.edu. These changes
- help to automate the build process.
-
-Wed Nov 15 15:49:33 1989 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Removed conditional compilation for GATHER_STATISTICS. There's
- really no good reason to avoid collecting this info at run-time,
- since that section of code is *hardly* the bottleneck... ;-)
-
- * Simplified the C output routines in Key_List::set_output_types
- and Key_List::output_keyword_table a bit in order to
- speed-up and clean up the code generation.
-
- * Modified function Key_List::get_special_input so that it does
- not try to `delete' a buffer that turned out to be too short.
- This is important since the new memory management scheme
- does not handle deletions. However, adding a small amount of
- garbage won't hurt anything, since we generally don't do this
- operation more than a couple times *at most*!
-
- * Created a new file (new.cc) which includes my own overloaded
- operator new. This function should dramatically reduce the
- number of calls to malloc since it grabs large chunks and
- doles them out in small pieces. As a result of this change
- the class-specific `operator new' was removed from class List_Node.
-
-Tue Nov 14 21:45:30 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Continued to refine the great hack. The latest trick is to
- try and replace most uses of dynamic memory (i.e., calls to
- new) with uses of gcc dynamic arrays (i.e., an alloca solution).
- This makes life much easier for the overall process-size, since
- it reduces the amount of overhead for memory management. As a
- side-effect from this change there is no reason to have the
- Bool_Array::dispose member function, so it's outta here!
-
- * Fixed a stupid bug that was an disaster waiting to happen...
- Instead of making the boolean array large enough to index
- max_hash_value it was only large enough to index max_hash_value
- - 1. Once again, an off-by-one mistake in C/C++!!!!
-
-Mon Nov 13 19:38:27 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Added the final great hack! This allows us to generate hash tables
- for near-perfect hash functions that contain duplicates, *without*
- having to use switch statements! Since many compilers die on large
- switch statements this feature is essential. Furthermore, it appears
- that the generated code is often *smaller* than that put out by
- compilers, even though a large, sparse array must be created.
- Here's the general idea:
-
- a. Generate the wordlist as a contiguous block of keywords,
- just as before when using a switch statement. This
- wordlist *must* be sorted by hash value.
-
- b. Generate the lookup array, which is an array of signed
- {chars,shorts,ints}, (which ever allows full coverage of
- the wordlist dimensions). If the value v, where v =
- lookup[hash(str,len)], is >= 0 and < TOTAL_KEYWORDS, then we
- simply use this result as a direct access into the wordlist
- array to snag the keyword for comparison.
-
- c. Otherwise, if v is < -TOTAL_KEYWORDS or > TOTAL_KEYWORDS
- this is an indication that we'll need to search through
- some number of duplicates hash values. Using a hash
- linking scheme we'd then index into a different part of
- the hash table that provides the starting index and total
- length of the duplicate entries to find via linear search!
-
-Sun Nov 12 13:48:10 1989 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Simplified Key_List::output_min_max considerably by recognizing
- that since the keyword list was already sorted by hash value finding
- the min and max values is trivial!
-
- * Improved the debugging diagnostics considerably in classes Key_List,
- Hash_Table, and Gen_Perf.
-
- * Modified the `-s' option so that a negative argument is now
- interpreted to mean `allow the maximum associated value to be
- about x times *smaller* than the number of input keys.' This
- should help prevent massive explosion of generated hash table
- size for large keysets.
-
-Sat Nov 11 11:31:13 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Added a field in class Key_List that counts the total number
- of duplicate keywords, both static and dynamic.
-
- * Added a new member function Bool_Array that deletes the dynamic
- memory allocated to Bool_Array::storage_array. This space may
- be needed for subsequent options, so it made sense to free it as
- soon as possible...
-
- * Renamed file/class Alpha_Vectors to Vectors, to avoid problems
- with 14 character length filenames on SYSV. Also changed file
- adapredefined.gperf to adadefs.gperf in the ./tests directory.
-
- * Modified class Options by changing the member function
- Options::total_positions to Options::get_charset_size and
- Options::set_charset_size. These two routines now either return
- the total charset size *or* the length of the largest keyword
- if the user specifies the -k'*' (ALLCHARS) option. This change
- cleans up client code.
-
- * Merged all the cperf changes into gperf.
-
- * Made sure to explicitly initialize perfect.fewest_collisions to
- 0.
-
- * Cleaned up some loose ends noticed by Nels Olson.
- 1. Removed `if (collisions <= perfect.fewest_collisions)'
- from Gen_Perf::affects_prev since it was superfluous.
- 2. Removed the fields best_char_value and best_asso_value
- from Gen_Perf. There were also unnecessary.
- 3. Fixed a braino in the Bool_Array::bool_array_reset
- function. Since iteration numbers can never be zero
- the `if (bool_array.iteration_number++ == 0)' must be
- `if (++bool_array.iteration_number == 0).'
- 4. Modified Std_Err::report_error so that it correctly handles
- "%%".
-
- * It is important to note that -D no longer enables -S.
- There is a good reason for this change, which will become
- manifested in the next release... (suspense!).
-
- * Made some subtle changes to Key_List::print_switch so that if finally
- seems to work correctly. Needs more stress testing, however...
-
- * Made a major change to the Key_List::print_switch function.
- The user can now specify the number of switch statements to generate
- via an argument to the -S option, i.e., -S1 means `generate 1
- switch statement with all keywords in it,' -S2 means generate
- 2 switch statements with 1/2 the elements in each one, etc.
- Hopefully this will fix the problem with C compilers not being
- able to generate code for giant switch statements (but don't
- hold your breath!)
-
- * Changed Key_List::length function to Key_List::keyword_list_length.
-
- * Added a feature to main.c that prints out the starting wall-clock
- time before the program begins and prints out the ending wall-clock
- time when the program is finished.
-
- * Added the GATHER_STATISTICS code in hash-table.c so we can
- keep track of how well double hashing is doing. Eventually,
- GATHER_STATISTICS will be added so that all instrumentation
- code can be conditionally compiled in.
-
- * Fixed a stupid bug in Key_List::print_switch routine. This
- was necessary to make sure the generated switch statement worked
- correctly when *both* `natural,' i.e., static links and dynamic
- links, i.e., unresolved duplicates, hash to the same value.
-
- * Modified Bool_Array::~Bool_Array destructor so that
- it now frees the bool_array.storage_array when it is no longer
- needed. Since this array is generally very large it makes sense
- to return the memory to the freelist when it is no longer in use.
-
- * Changed the interface to constructor Hash_Table::Hash_Table. This
- constructor now passed a pointer to a power-of-two sized buffer that
- serve as storage for the hash table. Although this weakens information
- hiding a little bit it greatly reduces dynamic memory fragmentation,
- since we can now obtain the memory via a call to alloca, rather
- than malloc. This change modified Key_List::read_keys calling
- interface.
-
- * Since alloca is now being used more aggressively a conditional
- compilation section was added in main.c. Taken from GNU GCC,
- this code gets rid of any avoidable limit on stack size so that
- alloca does not fail. It is only used if the -DRLIMIT_STACK
- symbol is defined when gperf is compiled.
-
- * Added warnings in option.c so that user's would be informed
- that -r superceeds -i on the command-line.
-
- * Rewrote Gen_Perf::affects_prev. First, the code structure
- was cleaned up considerably (removing the need for a dreaded
- goto!). Secondly, a major change occurred so that Gen_Perf::affects_prev
- returns FALSE (success) when fewest_hits gets down to whatever
- it was after inserting the previous key (instead of waiting for
- it to reach 0). In other words, it stops trying if it can
- resolve the new collisions added by a key, even if there are
- still other old, unresolved collisions. This modification was
- suggested by Nels Olson and seems to *greatly* increase the
- speed of gperf for large keyfiles. Thanks Nels!
-
- * In a similar vein, inside the Gen_Perf::change routine
- the variable `perfect.fewest_collisions is no longer initialized
- with the length of the keyword list. Instead it starts out at
- 0 and is incremented by 1 every time change () is called.
- The rationale for this behavior is that there are times when a
- collision causes the number of duplicates (collisions) to
- increase by a large amount when it would presumably just have
- gone up by 1 if none of the asso_values were changed. That is,
- at the beginning of change(), you could initialize fewest_hits
- to 1+(previous value of fewest_hits) instead of to the number of
- keys. Thanks again, Nels.
-
- * Replaced alloca with new in the Gen_Perf::change function.
- This should eliminate some overhead at the expense of a little
- extra memory that is never reclaimed.
-
- * Renamed Gen_Perf::merge_sets to Gen_Perf::compute_disjoint_union
- to reflect the change in behavior.
-
- * Added the -e option so users can supply a string containing
- the characters used to separate keywords from their attributes.
- The default behavior is ",\n".
-
- * Removed the char *uniq_set field from LIST_NODE and modified
- uses of uniq_set in perfect.c and keylist.c. Due to changes
- to Gen_Perf::compute_disjoint_sets this field was no longer
- necessary, and its removal makes the program smaller and
- potentially faster.
-
- * Added lots of changes/fixes suggested by Nels Olson
- (umls.UUCP!olson@mis.ucsf.edu). In particular:
- 1. Changed Bool_Array so that it would dynamically create
- an array of unsigned shorts rather than ints if the
- LO_CAL symbol was defined during program compilation.
- This cuts the amount of dynamic memory usage in half,
- which is important for large keyfile input.
- 2. Added some additional debugging statements that print extra
- info to stderr when the -d option is enabled.
- 3. Fixed a really stupid bug in Key_List::print_switch
- A right paren was placed at the wrong location, which broke
- strlen ().
- 4. Fixed a subtle problem with printing case values when keylinks
- appear. The logic failed to account for the fact that there
- can be keylinks *and* regular node info also!
- 5. Changed the behavior of Key_List::read_keys so that it would
- honor -D unequivocally, i.e., it doesn't try to turn off dup
- handling if the user requests it, even if there are no
- immediate links in the keyfile input.
- 6. Modified the -j option so that -j 0 means `try random values
- when searching for a way to resolve collisions.'
- 7. Added a field `num_done' to the Gen_Perf struct. This is used
- to report information collected when trying to resolve
- hash collisions.
- 8. Modified the merge_sets algorithm to perform a disjoint
- union of two multisets. This ensures that subsequent
- processing in Gen_Perf::affect_prev doesn't
- waste time trying to change an associated value that is
- shared between two conflicting keywords.
- 9. Modified Gen_Perf::affects_prev so that it doesn't try
- random jump values unless the -j 0 option is enabled.
- 10. Fixed a silly bug in Gen_Perf::change. This problem caused
- gperf to seg fault when the -k* option was given and the
- keyfile file had long keywords.
-
-Sun Oct 29 00:18:55 1989 Doug Schmidt (schmidt at siam.ics.uci.edu)
-
- * Modified class-specific new operations for Read_Line and
- List_Node so they don't fail if SIZE is larger than twice
- the previous buffer size. Note we double buffer size
- everytime the previous buffer runs out, as a heuristic
- to reduce future calls to malloc.
-
-Sun Oct 22 13:49:43 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Updated gperf version number to 2.0. Send to Doug Lea for
- incorporation into the long-awaited `official' libg++ 1.36
- release!
-
- * Thanks to Nels Olson a silly bug in Gen_Perf::change ()
- was fixed. This problem caused gperf to seg fault when
- the -k* option was given and the keyfile file had long
- keywords.
-
- * Modified Key_List::print_hash_function so that it output
- max_hash_value + 1 (rather than just max_hash_value) for
- any associated value entries that don't correspond to
- keyword charset characters. This should speed up rejection
- of non-keyword strings a little in some cases.
-
-Sat Oct 21 19:28:36 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Fixed Key_List::print_hash_function so that it no longer output
- things like `return 0 + ...' Although this probably gets
- optimized away by even the worst C compilers there isn't any
- point tempting fate... ;-)
-
- * Fixed class List_Node's constructor so that it wouldn't a priori
- refuse to consider trying to hash keys whose length is less
- than the smallest user-specified key position. It turns out
- this is not a problem unless the user also specifies the -n
- (NOLENGTH) option, in which case such keys most likely
- don't have a prayer of being hashed correctly!
-
- * Changed the name of the generated lookup table from `Hash_Table'
- to `asso_value' to be consistent with the gperf paper.
-
-Tue Oct 17 14:19:48 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Added a flag GATHER_STATISTICS in the Makefile. If defined
- during compilation this turns on certain collection facilities
- that track the performance of gperf during its execution. In
- particular, I want to see how many collisions occur for the
- double hashing Hash_Table.
-
- * Added a safety check so that we don't screw up if the total
- number of `resets' of the Bool_Array exceeds MAX_INT. Since
- this number is around 2^31 it is unlikely that this would ever
- occur for most input, but why take the risk?
-
- * Changed the behavior for the -a (ANSI) option so that the
- generated prototypes use int rather than size_t for the LEN
- parameter. It was too ugly having to #include <stddef.h> all
- over the place...
-
-Mon Oct 16 11:00:35 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Continued to work on the gperf paper for the USENIX C++
- conference. At some point this will be merged back into
- the gperf documentation...
-
-Sat Oct 14 20:29:43 1989 Doug Schmidt (schmidt at siam.ics.uci.edu)
-
- * Added a majorly neat hack to Bool_Array, suggested by rfg.
- The basic idea was to throw away the Ullman array technique.
- The Ullman array was used to remove the need to reinitialize all
- the Bool_Array elements to zero everytime we needed to determine
- whether there were duplicate hash values in the keyword list.
- The current trick uses an `iteration number' scheme, which takes
- about 1/3 the space and reduces the overall program running a
- time by about 20 percent for large input! The hack works as
- follows:
-
- 1. Dynamically allocation 1 boolean array of size k.
- 2. Initialize the boolean array to zeros, and consider the first
- iteration to be iteration 1.
- 2. Then on all subsequent iterations we `reset' the bool array by
- kicking the iteration count by 1.
- 3. When it comes time to check whether a hash value is currently
- in the boolean array we simply check its index location. If
- the value stored there is *not* equal to the current iteration
- number then the item is clearly *not* in the set. In that
- case we assign the iteration number to that array's index
- location for future reference. Otherwise, if the item at
- the index location *is* equal to the iteration number we've
- found a duplicate. No muss, no fuss!
-
-Mon Oct 2 12:30:54 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Changed some consts in options.h to enumerals, since g++
- doesn't seem to like them at the moment!
-
-Sat Sep 30 12:55:24 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Fixed a stupid bug in Key_List::print_hash_function that manifested
- itself if the `-k$' option was given (i.e., only use the key[length]
- character in the hash function).
-
- * Added support for the -C option. This makes the contents of
- all generated tables `readonly'.
-
- * Changed the handling of generated switches so that there is
- only one call to str[n]?cmp. This *greatly* reduces the size of
- the generated assembly code on all compilers I've seen.
-
- * Fixed a subtle bug that occurred when the -l and -S option
- was given. Code produced looked something like:
-
- if (len != key_len || !strcmp (s1, resword->name)) return resword;
-
- which doesn't make any sense. Clearly, this should be:
-
- if (len == key_len && !strcmp (s1, resword->name)) return resword;
-
-Tue Sep 26 10:36:50 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Changed class Read_Line's definition so that it no longer
- needs to know about the buffering scheme used to speed up
- dynamic memory allocation of input keywords and their
- associated attributes. This means that operator new is no longer
- a friend of Read_Line.
-
-Mon Sep 25 23:17:10 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Decided that Obstacks had too much overhead, so they were
- removed in favor of super-efficient, low-overhead buffered
- storage allocation hacks in Read_Line and List_Node.
-
- * No longer try to inline functions that g++ complains about
- (Key_List::Merge and Key_List::Merge_Sort).
-
-Sun Sep 24 13:11:24 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Changed classes Read_Line and List_Node to use Obstacks in order
- to cache memory allocation for keyword strings and List_Nodes.
-
- * Continued to experiment with inheritance schemes.
-
- * Added a new file `alpha.h', that declares static data shared
- (i.e., inherited) between classes List_Node and Key_List.
-
-Tue Sep 12 16:14:41 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Made numerous changes to incorporate multiple inheritance in
- gperf.
-
-Wed Aug 16 23:04:08 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Added the -DCOMPILER_FIXED flag to the ./src/Makefile. This
- implies that people trying to compile gperf need to have a
- working version of the new g++ compiler (1.36.0).
-
- * Removed some extra spaces that were being added in the generated
- C code.
-
-Mon Jul 24 17:09:46 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Fixed PRINT_HASH_FUNCTION and PRINT_LOOKUP_FUNCTION in keylist.c
- so that the generated functions take an unsigned int length argument.
- If -a is enabled the prototype is (const char *str, size_t len).
-
-Fri Jul 21 13:06:15 1989 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Fixed a typo in PRINT_KEYWORD_TABLE in keylist.cc that prevented
- the indentation from working correctly.
-
- * Fixed a horrible typo in PRINT_KEYWORD_TABLE in keylist.cc
- that prevented links from being printed correctly.
-
-Tue Jul 18 16:04:31 1989 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Fixed up readline.cc and readline.h so that they work OK
- with g++ compilers that aren't completely up-to-date.
- If symbol COMPILER_FIXED is defined then the behavior
- that works on my more recent version of g++ is enabled.
-
-Sun Jul 9 17:53:28 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Changed the ./tests subdirectory Makefile so that it
- uses $(CC) instead of gcc.
-
-Sun Jul 2 21:52:15 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Fixed a number of subtle bugs that occurred when -S was
- combined with various and sundry options.
-
- * Added the -G option, that makes the generated keyword table
- a global static variable, rather than hiding it inside
- the lookup function. This allows other functions to directly
- access the contents in this table.
-
- * Added the "#" feature, that allows comments inside the keyword
- list from the input file. Comment handling takes place in readline.c.
- This simplifies the code and reduces the number of malloc calls.
-
- * Also added the -H option (user can give the name of the hash
- function) and the -T option (prevents the transfer of the type decl
- to the output file, which is useful if the type is already defined
- elsewhere).
-
-Thu Jun 22 20:39:39 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Modified many classes so that they would inherit Std_Err as
- a base class. This makes things more abstract...
-
-Fri Jun 16 14:23:00 1989 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Modified the -f (FAST) option. This now takes an argument.
- The argument corresponds to the number of iterations used
- to resolve collisions. -f 0 uses the length of the
- keyword list (which is what -f did before). This makes
- life much easier when dealing with large keyword files.
-
-Tue Jun 6 17:53:27 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Added the -c (comparison) option. Enabling this
- will use the strncmp function for string comparisons.
- The default is to use strcmp.
-
- * Fixed a typo in key_list.cc (PRINT_SWITCH). This caused
- faulty C code to be generated when the -D, -p, and -t
- options were all enabled.
-
-Thu May 25 14:07:21 1989 Doug Schmidt (schmidt at siam.ics.uci.edu)
-
- * Once again, changed class Read_Line to overload global operator
- new. Hopefully, this will work...!
-
-Sun May 21 01:51:45 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Modified Key_List::print_hash_function () so that it properly
- formats the associated values in the hash table according to
- the maximum number of digits required to represent the largest
- value.
-
- * Removed the named return value from class Hash_Table's
- operator (), since this causes a seg fault when -O is enabled.
- No sense tripping subtle g++ bugs if we don't have to.... ;-)
-
- * Removed the operator new hack from Read_Line, since this seemed
- to create horrible bus error problems.
-
- * Changed many class member functions and data members to be `static',
- if they don't manipulate this!
-
-Fri May 12 23:06:56 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Changed class Std_Err to use static member functions, a la
- Ada or Modula 2. This eliminates the need for an explicit
- error-handler class object.
-
- * Added the ``named return value'' feature to Hash_Table::operator ()
- and Bool_Array::operator [], just for the heck of it.... ;-)
-
- * Changed the previous hack in Read_Line so that we now use
- the overloaded global `new' instead of NEW_STRING!
-
-Wed May 3 17:36:55 1989 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Updated to version 1.7. This reflects the recent major changes
- and the new C port.
-
- * Modified the GNU getopt.cc routine to have a class-based interface.
-
- * Fixed a typo in Perfect.cc ~Perfect that prevented the actual maximum
- hash table size from being printed (maybe the stream classes
- weren't so bad after all.... ;-).
-
- * Added support for the -f option. This generates the perfect
- hash function ``fast.'' It reduces the execution time of
- gperf, at the cost of minimizing the range of hash values.
-
-Tue May 2 16:23:29 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Added an efficiency hack to Read_Line. Instead of making
- a call to operator NEW (a.k.a. malloc) for each input string
- a new member function NEW_STRING stores a large buffer from
- which new strings are carved out, growing the buffer if
- necessary. It might be useful to add this throughout the
- program....
-
- * Removed all unnecessary calls to DELETE. If the program is about
- to exit it is silly to waste time freeing memory.
-
- * Added the GNU getopt program to the distribution. This makes
- GPERF portable to systems that don't include getopt in libc.
-
- * Added a strcspn member to class Key_List. This also increases
- portability.
-
- * Added the get_include_src function from keylist.c as a member
- function in class Key_List. Hopefully every function is
- now associated with a class. This aids abstraction and
- modularity.
-
- * Ported gperf to C. From now on both K&R C and GNU G++ versions
- will be supported. There will be two ChangeLog files, one
- for each version of the program.
-
-Mon May 1 16:41:45 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Fixed a bug with -k'*'. This now prints out *all* the cases
- up to the length of the longest word in the keyword set.
-
-Sun Apr 30 12:15:25 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Removed all use of the stream classes. Too ugly, slow, and
- not handled by the c++-mode formatter....
-
- * Modified the handling of links (i.e., keywords that have
- identical hash values as other keywords). This should
- speed up hash function generation for keyword sets with
- many duplicate entries. The trick is to treat duplicate
- values as equivalence classes, so that each set of duplicate
- values is represented only once in the main list processing.
-
- * Fixed some capitialization typos and indentations mistakes in
- Key_List::print_hash_function.
-
-Sat Apr 29 12:04:03 1989 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Fixed a typo/logico in Key_List::print_switch that prevented
- the last keyword in the keyword list to be print out. This
- requires further examination.....
-
- * Fixed a stupid bug in List_Node::List_node. If the -k'*' option
- was enabled the KEY_SET string wasn't getting terminated with
- '\0'!
-
-Fri Apr 28 12:38:35 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Renamed strexp.h and strexp.cc to iterator.h and iterator.cc.
- Also changed the strexp class to iterator. Continued to work
- on style...
-
- * Updated the version number to 1.6. This reflects all the
- recent changes.
-
-Thu Apr 27 00:14:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Added the -D option that properly handles keyword sets that
- contain duplicate hash values.
-
- * Continued the stylistic changes. Added the #pragma once
- directive to all the *.h files. Removed all #defines and
- replaced them with static consts. Also moved the key_sort
- routine from options.cc into the options class as a
- member function.
-
-Mon Apr 3 13:26:55 1989 Doug Schmidt (schmidt at zola.ics.uci.edu)
-
- * Made massive stylistic changes to bring source code into
- conformance with GNU style guidelines.
-
-Thu Mar 30 23:28:45 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Fixed up the output routines so that they generate code
- corresponding to the GNU style guidelines.
-
-Sat Mar 11 13:12:37 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Fixed Stderr constructors so that they wouldn't try to
- use the base class initializer syntax for the static
- class variable Program_Name. G++ 1.34 is stricter in
- enforcing the rules!
-
-Fri Mar 10 11:24:14 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Removed -v and ``| more'' from the Makefile to keep rfg happy...
-
-Thu Mar 2 12:37:30 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Sent latest GNU gperf version 1.5 to Doug Lea for inclusion
- into libg++ 1.34. Note that there is a small bug with
- the new %{ ... %} source inclusion facility, since it doesn't
- understand comments and will barf if %{ or %} appear nested
- inside the outermost delimiters. This is too trivial of
- a defect to fix at the moment...
-
-Tue Feb 28 11:19:58 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Added the -K option, which allows the user to provide a
- alternative name for the keyword structure component.
- The default is still ``name.''
-
- * Added the LEX and YACC-like ability to include arbitrary
- text at the beginning of the generated C source code output.
- This required two new functions Get_Special_Input,
- Key_List::Save_Include_Src;
-
- * Fixed memory allocation bug in Key_List::Set_Types.
- Variable Return_Type needs 1 additional location
- to store the "*" if the -p option is used.
-
- * Added code to NULL terminate both Struct_Tag and Return_Type,
- *after* the strncpy (stupid mistake).
-
-Mon Feb 27 14:39:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Added a new option -N. This allows the user to specify the
- name to be used for the generated lookup function. The
- default name is still ``in_word_set.'' This makes it
- possible to completely automate the perfect hash function
- generation process!
-
-Mon Feb 20 23:33:14 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Corrected the Hash_Table::operator () function so that
- *it* is responsible for deciding when a new key has the
- same signature as a previously seen key. The key length
- information is now used internally to this function to
- decide whether to add to the hash table those keys with
- the same key sets, but different lengths. Before, this
- was handled by the Key_List::Read_Keys function. However,
- this failed to work for certain duplicate keys, since
- they weren't being entered into the hash table properly.
-
-Sun Feb 19 16:02:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Modified class Options by moving the enum Option_Type out
- of the class. This is to satisfy the new enumeration
- scope rules in C++.
-
-Sun Jan 15 15:12:09 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Incremented the version number upto 1.4 to reflect the new
- options that affect the generated code. Send the new
- distribution off to Michael for use with g++ 1.33.
-
- * Added a fix to Key_List::Read_Keys so that it checks for links
- properly when the -n option is used. Previously, it didn't
- catch obvious links, which caused it to spend large amount
- of time searching for a solution that could never occur!
-
- * Modified the Key_List data structure to record *both* the
- minimum and the maximum key lengths. This information
- is now computed in Key_List::Read_Keys, and thus
- Key_List::Print_Min_Max doesn't need to bother.
-
- * Modifed the key position iterator scheme in options.cc to
- eliminate the need for member function Options::Advance.
- Now, the Options::Get function performs the advancement
- automatically, obviating the need for an extra function call.
-
- * Added the new function Options::Print_Options, to print out
- the user-specified command line options to generated C
- output file.
-
- * Added a new function, Key_List::Print_Keylength_Table,
- which creates a table of lengths for use in speeding
- up the keyword search. This also meant that a new
- option, -l (LENTABLE) is recognized. It controls
- whether the length table is printed and the comparison
- made in the generated function ``in_word_set.''
-
- * Added a comment at the top of the generated C code
- output file that tells what version of gperf was used.
- Next, I'll also dump out the command line options
- as a comment too. Thanks to Michael Tiemann for the
- feedback on this.
-
- * Fixed the -n option to make it work correctly with
- other parts of the program (most notably the Perfect::Hash
- function and the computation of minimum and maximum lengths.
-
-Fri Jan 13 21:25:27 1989 Doug Schmidt (schmidt at siam.ics.uci.edu)
-
- * Realized the the need to add a test that will enable
- optimziation of the generated C code in the ``hash'' function
- by checking whether all the requested key positions are
- guaranteed to exist due to the comparison in `in_word_set.''
- I'll put this in soon....
-
-Thu Jan 12 20:09:21 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Added pascal, modula3, and modula2 tests inputs to the
- Makefile
-
- * Recognised that there is a bug with the -n option. However
- I'm too busy to fix it properly, right now. The problem
- is that the generated #define end up being 0, since that's
- my hack to make -n work. This needs complete rethinking!
-
-Tue Jan 10 00:08:16 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Added a new option, -n, that instructs gperf to not use the
- length of an identifier when computing the hash functions.
- I'm not sure how useful this is!
-
- * Retransmitted the distribution to rocky.oswego.edu. Hopefully,
- this will work!
-
- * Began fixing the indentation and capitalization to conform
- to the GNU coding guidelines.
-
-Mon Jan 9 22:23:18 1989 Doug Schmidt (schmidt at pompe.ics.uci.edu)
-
- * Fixed horrible bug in Read_Line::Readln_Aux. This was
- a subtle and pernicous off-by-1 error, that overwrote
- past the last character of the input string buffer. I
- think this fault was killing the vax!
-
- * Yow, fixed an oversight in List_Node::List_Node, where the
- pointer field Next was uninitialized. Luckily, the new routine
- seems to return 0 filled objects the first time through!
-
-Sun Jan 8 13:43:14 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Modified the ``key linked'' diagnostic in Key_List::Read_Keys
- to be more helpful and easy to read.
-
- * Fixed the List_Node::List_Node so that it would ignore trailing
- fields if the -t option was not enabled.
-
- * Moved the List_Node declarations out of keylist.h and
- into a file of its own, called listnode.cc and listnode.h
- Made Set_Sort a member function of class List_Node.
-
- * Massively updated the documentation in the gperf.texinfo file.
-
- * Polished off the major revision to the print functions,
- added a few new tests in the Makefile to check for the
- validity of the program and ftp'ed the entire distribution
- off to Doug Lea for libg++. ( changed it to
- 1.3 to reflect the major changes with the generated
- C code ).
-
- * Fixed Key_List::Print_Switch to deal with the -p and -t options.
- This meant that the ``still-born'' function Key_List::
- Print_Type_Switch was superflous, so I removed it.
- Also, removed the restriction in Option that the -p and
- -t options couldn't be used simultaneously.
-
- * Modified List_Node::List_Node, to perform only 1 call to
- ``new'' when dynamically allocating memory for the Key_Set
- and the Uniq_Set.
-
-Sat Jan 7 14:10:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu)
-
- * Fixed a big bug with the new policy of nesting the
- wordlist inside of generated function ``in_word_set.''
- I'd forgotten to declare the wordlist array as static!
- ( arrgh ).
-
- * Added a new function Key_List::Set_Types, that figures out
- the return type for generated function ``in_word_set,''
- the user-defined ``struct tag,'' if one is used, and also
- formates the array type for the static local array.
-
- * Changed the print routines to take advantage of the
- new -p option.
-
- * Began adding the hooks to allow the return of a pointer
- to a user defined struct location from the generated
- ``in_word_set'' function instead of the current 0 or 1
- return value. Created function Key_List::Print_Type_Switch
- and added option -p to class Option, allowing the user to
- request generation of the aforementioned pointers returned
- instead of booleans.
-
- * Put in checks in class Option to make sure that -S and -t
- options are not used simultaneously. This restriction
- will be removed in subsequent releases, once I decide on
- a clean way to implement it.
-
- * Sent version 1.2 to Doug Lea for possible inclusion into
- the libg++ distribution.
-
- * Moved the static word_list array inside the generated function
- in_word_set. This supports better data hiding.
-
- * Added a texinfo file, gperf.texinfo
-
- * Revised the Makefile to cleanup the droppings from texinfo
- and changed the name of gperf.cc and gperf.h to perfect.cc
- and perfect.h.
-
-Fri Jan 6 13:04:45 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu)
-
- * Implemented the switch statement output format. Much better
- for large datasets in terms of space used.
-
- * Added new functions to break up the Key_List::Output function.
- Functions added were Key_List::Print_Switch, Key_List::Print_Min_Max,
- Key_List::Print_Keyword_Table, Key_List::Print_Hash_Function,
- and Key_List::Print_Lookup_Function. This simplifies the
- big mess in Key_List::Output considerably!
-
- * Added switch statement option to Options, which potentially
- trades time for space in the generated lookup code.
-
-Thu Jan 5 22:46:34 1989 Doug Schmidt (schmidt at siam.ics.uci.edu)
-
- * Released version 1.1
-
- * Fixed a bug with Gperf::Merge_Set, it was skipping letters shared
- between the Set_1 and Set_2.
-
- * Added the optimal min/max algorithm in Key_List::Output. This
- runs in O ( 3n/2 ), rather than O ( 2n ) time.
-
- * Changed Gperf::Sort_Set to use insertion sort, rather than
- bubble sort.
-
- * Added a check in Key_List::Output for the special case where
- the keys used are 1,$. It is possible to generate more
- efficient C code in this case.
diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/INSTALL b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/INSTALL
deleted file mode 100644
index 350b32f5..00000000
--- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/INSTALL
+++ /dev/null
@@ -1,183 +0,0 @@
-Basic Installation
-==================
-
- These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
- The file `configure.in' is used to create `configure' by a program
-called `autoconf'. You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes a while. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. You can give `configure'
-initial values for variables by setting them in the environment. Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
- CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
- env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory. After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
-
-Installation Names
-==================
-
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on. Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
- CPU-COMPANY-SYSTEM
-
-See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
-
- If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Operation Controls
-==================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
- Use and save the results of the tests in FILE instead of
- `./config.cache'. Set FILE to `/dev/null' to disable caching, for
- debugging `configure'.
-
-`--help'
- Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`--version'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
-
diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/NEWS b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/NEWS
deleted file mode 100644
index efa3ca0c..00000000
--- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/NEWS
+++ /dev/null
@@ -1,80 +0,0 @@
-New in 3.0.1:
-
-* Bug fix.
-
-New in 3.0:
-
-* Added option --output that allows to specify the output file name.
-* Some options have been renamed:
- --hash-fn-name=NAME --> --hash-function-name=NAME
- --lookup-fn-name=NAME --> --lookup-function-name=NAME
- --compare-strlen --> --compare-lengths
- --global --> --global-table
- The older variants are still supported for backward compatibility.
-* The following options can now be specified inside the input file:
- %delimiters=DELIMITER-LIST
- %struct-type
- %ignore-case
- %language=LANGUAGE-NAME
- %define slot-name NAME
- %define initializer-suffix INITIALIZERS
- %define hash-function-name NAME
- %define lookup-function-name NAME
- %define class-name NAME
- %7bit
- %compare-lengths
- %compare-strncmp
- %readonly-tables
- %enum
- %includes
- %global-table
- %pic
- %define string-pool-name NAME
- %null-strings
- %define word-array-name NAME
- %switch=COUNT
- %omit-struct-type
-* When the option -k is not given, the default key positions are now
- computed depending on the set of keywords.
-* If the input file is given by name, the output file will now contain
- #line directives referring to the input file.
-* Some keyword sets containing permutations, like { "xy", "yx", "xz", "zx" }
- or { "abc", "acb", "bca", "cab" }, are now handled by gperf without
- requiring the option -D.
-* The generated table is usually much smaller than it was with earlier
- versions of gperf.
-* Added option -m/--multiple-iterations that allows to further reduce the
- size of the generated table.
-* When the search for a good hash function is not immediately successful,
- the table's size will grow as needed. Earlier versions of gperf bailed
- out with an "Internal error, duplicate hash code value".
-* The options -f/--fast and -o/--occurrence-sort have no effect any more.
-* Added options -P/--pic and --null-strings that optimize the generated code
- for use in shared libraries. -P/--pic does a perfect optimization but may
- require some small code changes (see the documentation for details), whereas
- --null-strings does only a half-hearted optimization but works without
- needing any change to surrounding code.
-* Added option --ignore-case that produces a case independent lookup function.
-* Bug fixes.
-
-New in 2.7.2:
-
-* Keywords may now be enclosed in double quotes; this permits the use of
- '#', ',', space or NUL inside keywords.
-* Bug fixes.
-
-New in 2.7.1:
-
-* Added option "-F" for gcc.
-
-New in 2.7:
-
-* gperf is now a stand-alone package, untied from libg++.
-* Autoconfiguring.
-* Removed the "-a" and "-g" options, extended the "-L" option instead.
-* Removed the "-p" option, it is the default.
-* Added long options ("--help", "--version" etc.).
-* 8-bit cleanliness is now the default; use "-7" to get the old behaviour.
-* Compiles with any C++ compiler.
-* Numerous small improvements.
-
diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/README b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/README
deleted file mode 100644
index 26173bfc..00000000
--- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/README
+++ /dev/null
@@ -1,28 +0,0 @@
-This is GNU gperf. It is a program that generates perfect hash
-functions for sets of key words. A perfect hash function is:
-
- A hash function and a data structure that allows
- recognition of a key word in a set of words using
- exactly 1 probe into the data structure.
-
-The doc/gperf.html file explains how the program works, the form of
-the input, what options are available, and hints on choosing the best
-options for particular key words set.
-
-See the file NEWS for a list of major changes in the current release.
-
-See the file INSTALL for compilation and installation instructions.
-
-Output from the GPERF program is used to recognize reserved words in
-the GNU C, GNU C++, and GNU Pascal compilers, as well as with the GNU
-indent program.
-
-For general documentation on the coding and usage standards
-this distribution follows, see the GNU standards document
-ftp://ftp.gnu.org/pub/gnu/standards.*, especially the 'Makefile
-Conventions', 'Configuration', and 'User Interfaces' sections.
-
-Mail suggestions and bug reports to <bug-gnu-gperf@gnu.org>. When
-reporting bugs, please include in the subject line the package name
-and version (output of 'gperf --version') for which you found a problem.
-
diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check.log b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check.log
deleted file mode 100644
index 1e16f46d..00000000
--- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check.log
+++ /dev/null
@@ -1,156 +0,0 @@
-cd lib; make check
-make[1]: Entering directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/lib'
-make[1]: Niets te doen voor `check'.
-make[1]: Leaving directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/lib'
-cd src; make check
-make[1]: Entering directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/src'
-make[1]: Niets te doen voor `check'.
-make[1]: Leaving directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/src'
-cd tests; make check
-make[1]: Entering directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/tests'
-performing some tests of the perfect hash generator
-gcc -c -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 ../../gperf-3.0.1-src/tests/test.c
-../src/gperf -c -l -S1 -I -o ../../gperf-3.0.1-src/tests/c.gperf > cinset.c
-gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o cout cinset.c test.o
-testing ANSI C reserved words, all items should be found in the set
-./cout -v < ../../gperf-3.0.1-src/tests/c.gperf > c.out
-diff ../../gperf-3.0.1-src/tests/c.exp c.out
-../src/gperf -k1,4,'$' -I ../../gperf-3.0.1-src/tests/ada.gperf > adainset.c
-gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o aout adainset.c test.o
-testing Ada reserved words, all items should be found in the set
-./aout -v < ../../gperf-3.0.1-src/tests/ada.gperf > ada-res.out
-diff ../../gperf-3.0.1-src/tests/ada-res.exp ada-res.out
-../src/gperf -D -k1,'$' -s 2 -I -o ../../gperf-3.0.1-src/tests/adadefs.gperf > preinset.c
-gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o preout preinset.c test.o
-testing Ada predefined words, all items should be found in the set
-./preout -v < ../../gperf-3.0.1-src/tests/adadefs.gperf > ada-pred.out
-diff ../../gperf-3.0.1-src/tests/ada-pred.exp ada-pred.out
-../src/gperf -k1,2,'$' -I -o ../../gperf-3.0.1-src/tests/modula3.gperf > m3inset.c
-gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o m3out m3inset.c test.o
-testing Modula3 reserved words, all items should be found in the set
-./m3out -v < ../../gperf-3.0.1-src/tests/modula3.gperf > modula.out
-diff ../../gperf-3.0.1-src/tests/modula.exp modula.out
-../src/gperf -o -S2 -I < ../../gperf-3.0.1-src/tests/pascal.gperf > pinset.c
-gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o pout pinset.c test.o
-testing Pascal reserved words, all items should be found in the set
-./pout -v < ../../gperf-3.0.1-src/tests/pascal.gperf > pascal.out
-diff ../../gperf-3.0.1-src/tests/pascal.exp pascal.out
-../src/gperf -k1 -t -I -K foreign_name < ../../gperf-3.0.1-src/tests/lang-utf8.gperf > lu8inset.c
-gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o lu8out lu8inset.c test.o
-testing UTF-8 encoded languages, all items should be found in the set
-sed -e '1,6d' -e 's/,.*//' < ../../gperf-3.0.1-src/tests/lang-utf8.gperf | ./lu8out -v > lang-utf8.out
-diff ../../gperf-3.0.1-src/tests/lang-utf8.exp lang-utf8.out
-gcc -c -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 ../../gperf-3.0.1-src/tests/test2.c
-../src/gperf -k4 -t -l -I -K foreign_name < ../../gperf-3.0.1-src/tests/lang-ucs2.gperf > lu2inset.c
-gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o lu2out lu2inset.c test2.o
-testing UCS-2 encoded languages, all items should be found in the set
-./lu2out -v < ../../gperf-3.0.1-src/tests/lang-ucs2.in > lang-ucs2.out
-diff ../../gperf-3.0.1-src/tests/lang-ucs2.exp lang-ucs2.out
-testing SMTP keywords, case-insensitive
-../src/gperf --struct-type --readonly-table --enum --global -K field_name -N header_entry --ignore-case ../../gperf-3.0.1-src/tests/smtp.gperf > smtp.c
-gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o smtp smtp.c
-./smtp
-../src/gperf --struct-type --readonly-table --enum --global -K field_name -N header_entry --ignore-case --compare-strncmp ../../gperf-3.0.1-src/tests/smtp.gperf > smtp.c
-gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o smtp smtp.c
-./smtp
-../src/gperf --struct-type --readonly-table --enum --global -K field_name -N header_entry --ignore-case --compare-lengths ../../gperf-3.0.1-src/tests/smtp.gperf > smtp.c
-gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o smtp smtp.c
-./smtp
-../src/gperf -L C -F ', 0, 0' -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,'$' < ../../gperf-3.0.1-src/tests/c-parse.gperf > c-parse.out
-diff ../../gperf-3.0.1-src/tests/c-parse.exp c-parse.out
-2c2
-< /* Command-line: ../src/gperf -L C -F ', 0, 0' -j1 -i 1 -g -o -t -G -N is_reserved_word -k'1,3,$' */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -L C -F ', 0, 0' -j1 -i 1 -g -o -t -G -N is_reserved_word -k'1,3,$' */
-../src/gperf -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,'$' < ../../gperf-3.0.1-src/tests/objc.gperf > objc.out
-diff ../../gperf-3.0.1-src/tests/objc.exp objc.out
-2c2
-< /* Command-line: ../src/gperf -j1 -i 1 -g -o -t -N is_reserved_word -k'1,3,$' */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -j1 -i 1 -g -o -t -N is_reserved_word -k'1,3,$' */
-../src/gperf -L C -F ', 0, 0, 0' -D -E -S1 -j1 -i 1 -g -o -t -k'*' < ../../gperf-3.0.1-src/tests/chill.gperf > chill.out
-diff ../../gperf-3.0.1-src/tests/chill.exp chill.out
-2c2
-< /* Command-line: ../src/gperf -L C -F ', 0, 0, 0' -D -E -S1 -j1 -i 1 -g -o -t -k'*' */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -L C -F ', 0, 0, 0' -D -E -S1 -j1 -i 1 -g -o -t -k'*' */
-../src/gperf -L C -F ', 0, 0' -j1 -g -o -t -N is_reserved_word -k1,4,7,'$' < ../../gperf-3.0.1-src/tests/cplusplus.gperf > cplusplus.out
-diff ../../gperf-3.0.1-src/tests/cplusplus.exp cplusplus.out
-2c2
-< /* Command-line: ../src/gperf -L C -F ', 0, 0' -j1 -g -o -t -N is_reserved_word -k'1,4,7,$' */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -L C -F ', 0, 0' -j1 -g -o -t -N is_reserved_word -k'1,4,7,$' */
-../src/gperf -L C -F ', 0' -t -j1 -i 1 -g -o -N java_keyword -k1,3,'$' < ../../gperf-3.0.1-src/tests/java.gperf > java.out
-diff ../../gperf-3.0.1-src/tests/java.exp java.out
-2c2
-< /* Command-line: ../src/gperf -L C -F ', 0' -t -j1 -i 1 -g -o -N java_keyword -k'1,3,$' */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -L C -F ', 0' -t -j1 -i 1 -g -o -N java_keyword -k'1,3,$' */
-../src/gperf -n -k1-8 -l < ../../gperf-3.0.1-src/tests/modula2.gperf > modula2.out
-diff ../../gperf-3.0.1-src/tests/modula2.exp modula2.out
-2c2
-< /* Command-line: ../src/gperf -n -k1-8 -l */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -n -k1-8 -l */
-../src/gperf -D -t -k1,'$' < ../../gperf-3.0.1-src/tests/c-parse.gperf > test-4.out
-diff ../../gperf-3.0.1-src/tests/test-4.exp test-4.out
-2c2
-< /* Command-line: ../src/gperf -D -t -k'1,$' */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -D -t -k'1,$' */
-../src/gperf -g -o -j1 -t -N is_reserved_word < ../../gperf-3.0.1-src/tests/gpc.gperf > gpc.out
-diff ../../gperf-3.0.1-src/tests/gpc.exp gpc.out
-2c2
-< /* Command-line: ../src/gperf -g -o -j1 -t -N is_reserved_word */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -g -o -j1 -t -N is_reserved_word */
-../src/gperf -m5 < ../../gperf-3.0.1-src/tests/permut2.gperf > permut2.out
-diff ../../gperf-3.0.1-src/tests/permut2.exp permut2.out
-2c2
-< /* Command-line: ../src/gperf -m5 */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -m5 */
-../src/gperf -m5 < ../../gperf-3.0.1-src/tests/permut3.gperf > permut3.out
-diff ../../gperf-3.0.1-src/tests/permut3.exp permut3.out
-2c2
-< /* Command-line: ../src/gperf -m5 */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -m5 */
-../src/gperf -m5 --ignore-case < ../../gperf-3.0.1-src/tests/permutc2.gperf > permutc2.out
-diff ../../gperf-3.0.1-src/tests/permutc2.exp permutc2.out
-2c2
-< /* Command-line: ../src/gperf -m5 --ignore-case */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -m5 --ignore-case */
-../src/gperf -C -E -G -I -t < ../../gperf-3.0.1-src/tests/charsets.gperf > charsets.out
-diff ../../gperf-3.0.1-src/tests/charsets.exp charsets.out
-2c2
-< /* Command-line: ../src/gperf -C -E -G -I -t */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -C -E -G -I -t */
-../src/gperf -C -E -G -I -t < ../../gperf-3.0.1-src/tests/languages.gperf > languages.out
-diff ../../gperf-3.0.1-src/tests/languages.exp languages.out
-2c2
-< /* Command-line: ../src/gperf -C -E -G -I -t */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -C -E -G -I -t */
-../src/gperf -t < ../../gperf-3.0.1-src/tests/incomplete.gperf > incomplete.out
-diff ../../gperf-3.0.1-src/tests/incomplete.exp incomplete.out
-2c2
-< /* Command-line: ../src/gperf -t */
----
-> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -t */
-../src/gperf -h > test-6.out
-diff ../../gperf-3.0.1-src/tests/test-6.exp test-6.out
-3c3
-< Usage: ../src/gperf [OPTION]... [INPUT-FILE]
----
-> Usage: k:\Devel\gperf\3.0.1\gperf-3.0.1\src\gperf.exe [OPTION]... [INPUT-FILE]
-only if, do, for, case, goto, else, while, and return should be found
-./aout -v < ../../gperf-3.0.1-src/tests/c.gperf > test-7.out
-diff ../../gperf-3.0.1-src/tests/test-7.exp test-7.out
-make[1]: Leaving directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/tests'
-cd doc; make check
-make[1]: Entering directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/doc'
-make[1]: Niets te doen voor `check'.
-make[1]: Leaving directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/doc'
diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check_err.log b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check_err.log
deleted file mode 100644
index 8263f49c..00000000
--- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check_err.log
+++ /dev/null
@@ -1,21 +0,0 @@
-../../gperf-3.0.1-src/tests/test.c: In function `main':
-../../gperf-3.0.1-src/tests/test.c:25: warning: implicit declaration of function `in_word_set'
-1 input keys have identical hash values, examine output carefully...
-../../gperf-3.0.1-src/tests/test2.c: In function `main':
-../../gperf-3.0.1-src/tests/test2.c:52: warning: implicit declaration of function `in_word_set'
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-8 input keys have identical hash values, examine output carefully...
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
-make[1]: [check-test] Fout 1 (genegeerd)
diff --git a/gnuwin32/contrib/libiconv/1.9.2/depends-GnuWin32.lst b/gnuwin32/contrib/libiconv/1.9.2/depends-GnuWin32.lst
deleted file mode 100644
index 0c9a4ac3..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/depends-GnuWin32.lst
+++ /dev/null
@@ -1,9 +0,0 @@
-advapi32.dll
-gdi32.dll
-kernel32.dll
-libintl3.dll
-msvcrt.dll
-ntdll.dll
-ole32.dll
-rpcrt4.dll
-user32.dll
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-1-GnuWin32.README b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-1-GnuWin32.README
deleted file mode 100644
index fc6b8ae0..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-1-GnuWin32.README
+++ /dev/null
@@ -1,54 +0,0 @@
-* LibIconv-1.9.2 for Windows *
-==============================
-
-What is it?
------------
-LibIconv: convert between character encodings
-
-Description
------------
-LibIconv converts from one character encoding to another through Unicode
-conversion (see Web page for full list of supported encodings). It has
-also limited support for transliteration, i.e. when a character cannot be
-represented in the target character set, it is approximated through one
-or several similar looking characters. It is useful if your application
-needs to support multiple character encodings, but that support lacks from
-your system.
-
-- Libiconv-1 is in Libiconv-1.7
-
-Homepage
---------
-http://www.gnu.org/software/libiconv
-
-System
-------
-- MS-Windows 95 / 98 / ME / NT / 2000 / XP with msvcrt.dll
-- if msvcrt.dll is not in your Windows/System folder, get it from
- Microsoft <http://support.microsoft.com/default.aspx?scid=kb;en-us;259403">
- or by installing Internet Explorer 4.0 or higher
- <http://www.microsoft.com/windows/ie>- libgw32c <http://gnuwin32.sourceforge.net/packages/libgw32c.htm> (for developing with LibIconv library)
-
-Notes
------
-- Bugs and questions on this MS-Windows port: gnuwin32@users.sourceforge.net
-
-Package Availability
---------------------
-- in: http://gnuwin32.sourceforge.net
-
-Sources
--------
-- libiconv-1.9.2-1-src.zip
-
-Compilation
------------
-The package has been compiled with GNU auto-tools, GNU make, and Mingw
-(GCC for MS-Windows). Any differences from the original sources are given
-in libiconv-1.9.2-1-GnuWin32.diffs in libiconv-1.9.2-1-src.zip. Libraries needed
-for compilation can be found at the lines starting with 'LIBS = ' in the
-Makefiles. Usually, these are standard libraries provided with Mingw, or
-libraries from the package itself; 'gw32c' refers to the libgw32c package,
-which provides MS-Windows substitutes or stubs for functions normally found in
-Unix. For more information, see: http://gnuwin32.sourceforge.net/compile.html
-and http://gnuwin32.sourceforge.net/packages/libgw32c.htm.
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/ABOUT-NLS b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/ABOUT-NLS
deleted file mode 100644
index d79798cc..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/ABOUT-NLS
+++ /dev/null
@@ -1,477 +0,0 @@
-Notes on the Free Translation Project
-*************************************
-
- Free software is going international! The Free Translation Project
-is a way to get maintainers of free software, translators, and users all
-together, so that will gradually become able to speak many languages.
-A few packages already provide translations for their messages.
-
- If you found this `ABOUT-NLS' file inside a distribution, you may
-assume that the distributed package does use GNU `gettext' internally,
-itself available at your nearest GNU archive site. But you do _not_
-need to install GNU `gettext' prior to configuring, installing or using
-this package with messages translated.
-
- Installers will find here some useful hints. These notes also
-explain how users should proceed for getting the programs to use the
-available translations. They tell how people wanting to contribute and
-work at translations should contact the appropriate team.
-
- When reporting bugs in the `intl/' directory or bugs which may be
-related to internationalization, you should tell about the version of
-`gettext' which is used. The information can be found in the
-`intl/VERSION' file, in internationalized packages.
-
-Quick configuration advice
-==========================
-
- If you want to exploit the full power of internationalization, you
-should configure it using
-
- ./configure --with-included-gettext
-
-to force usage of internationalizing routines provided within this
-package, despite the existence of internationalizing capabilities in the
-operating system where this package is being installed. So far, only
-the `gettext' implementation in the GNU C library version 2 provides as
-many features (such as locale alias, message inheritance, automatic
-charset conversion or plural form handling) as the implementation here.
-It is also not possible to offer this additional functionality on top
-of a `catgets' implementation. Future versions of GNU `gettext' will
-very likely convey even more functionality. So it might be a good idea
-to change to GNU `gettext' as soon as possible.
-
- So you need _not_ provide this option if you are using GNU libc 2 or
-you have installed a recent copy of the GNU gettext package with the
-included `libintl'.
-
-INSTALL Matters
-===============
-
- Some packages are "localizable" when properly installed; the
-programs they contain can be made to speak your own native language.
-Most such packages use GNU `gettext'. Other packages have their own
-ways to internationalization, predating GNU `gettext'.
-
- By default, this package will be installed to allow translation of
-messages. It will automatically detect whether the system already
-provides the GNU `gettext' functions. If not, the GNU `gettext' own
-library will be used. This library is wholly contained within this
-package, usually in the `intl/' subdirectory, so prior installation of
-the GNU `gettext' package is _not_ required. Installers may use
-special options at configuration time for changing the default
-behaviour. The commands:
-
- ./configure --with-included-gettext
- ./configure --disable-nls
-
-will respectively bypass any pre-existing `gettext' to use the
-internationalizing routines provided within this package, or else,
-_totally_ disable translation of messages.
-
- When you already have GNU `gettext' installed on your system and run
-configure without an option for your new package, `configure' will
-probably detect the previously built and installed `libintl.a' file and
-will decide to use this. This might be not what is desirable. You
-should use the more recent version of the GNU `gettext' library. I.e.
-if the file `intl/VERSION' shows that the library which comes with this
-package is more recent, you should use
-
- ./configure --with-included-gettext
-
-to prevent auto-detection.
-
- The configuration process will not test for the `catgets' function
-and therefore it will not be used. The reason is that even an
-emulation of `gettext' on top of `catgets' could not provide all the
-extensions of the GNU `gettext' library.
-
- Internationalized packages have usually many `po/LL.po' files, where
-LL gives an ISO 639 two-letter code identifying the language. Unless
-translations have been forbidden at `configure' time by using the
-`--disable-nls' switch, all available translations are installed
-together with the package. However, the environment variable `LINGUAS'
-may be set, prior to configuration, to limit the installed set.
-`LINGUAS' should then contain a space separated list of two-letter
-codes, stating which languages are allowed.
-
-Using This Package
-==================
-
- As a user, if your language has been installed for this package, you
-only have to set the `LANG' environment variable to the appropriate
-`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
-and `CC' is an ISO 3166 two-letter country code. For example, let's
-suppose that you speak German and live in Germany. At the shell
-prompt, merely execute `setenv LANG de_DE' (in `csh'),
-`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
-This can be done from your `.login' or `.profile' file, once and for
-all.
-
- You might think that the country code specification is redundant.
-But in fact, some languages have dialects in different countries. For
-example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
-country code serves to distinguish the dialects.
-
- The locale naming convention of `LL_CC', with `LL' denoting the
-language and `CC' denoting the country, is the one use on systems based
-on GNU libc. On other systems, some variations of this scheme are
-used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
-locales supported by your system for your country by running the command
-`locale -a | grep '^LL''.
-
- Not all programs have translations for all languages. By default, an
-English message is shown in place of a nonexistent translation. If you
-understand other languages, you can set up a priority list of languages.
-This is done through a different environment variable, called
-`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
-for the purpose of message handling, but you still need to have `LANG'
-set to the primary language; this is required by other parts of the
-system libraries. For example, some Swedish users who would rather
-read translations in German than English for when Swedish is not
-available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
-
- In the `LANGUAGE' environment variable, but not in the `LANG'
-environment variable, `LL_CC' combinations can be abbreviated as `LL'
-to denote the language's main dialect. For example, `de' is equivalent
-to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
-(Portuguese as spoken in Portugal) in this context.
-
-Translating Teams
-=================
-
- For the Free Translation Project to be a success, we need interested
-people who like their own language and write it well, and who are also
-able to synergize with other translators speaking the same language.
-Each translation team has its own mailing list. The up-to-date list of
-teams can be found at the Free Translation Project's homepage,
-`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
-area.
-
- If you'd like to volunteer to _work_ at translating messages, you
-should become a member of the translating team for your own language.
-The subscribing address is _not_ the same as the list itself, it has
-`-request' appended. For example, speakers of Swedish can send a
-message to `sv-request@li.org', having this message body:
-
- subscribe
-
- Keep in mind that team members are expected to participate
-_actively_ in translations, or at solving translational difficulties,
-rather than merely lurking around. If your team does not exist yet and
-you want to start one, or if you are unsure about what to do or how to
-get started, please write to `translation@iro.umontreal.ca' to reach the
-coordinator for all translator teams.
-
- The English team is special. It works at improving and uniformizing
-the terminology in use. Proven linguistic skill are praised more than
-programming skill, here.
-
-Available Packages
-==================
-
- Languages are not equally supported in all packages. The following
-matrix shows the current state of internationalization, as of February
-2003. The matrix shows, in regard of each package, for which languages
-PO files have been submitted to translation coordination, with a
-translation percentage of at least 50%.
-
- Ready PO files az be bg ca cs da de el en en_GB eo es et fa fi
- +-------------------------------------------------+
- a2ps | [] [] [] [] [] |
- aegis | () |
- anubis | |
- ap-utils | |
- bash | [] [] [] |
- batchelor | |
- bfd | [] [] |
- binutils | [] [] |
- bison | [] [] [] [] |
- clisp | [] [] [] |
- clisp | |
- coreutils | [] [] [] [] |
- cpio | [] [] [] |
- darkstat | () [] |
- diffutils | [] [] [] [] [] [] [] |
- enscript | [] [] [] |
- error | [] [] [] [] |
- fetchmail | [] () [] [] [] |
- fileutils | [] [] [] [] |
- findutils | [] [] [] [] [] [] [] |
- flex | [] [] [] [] |
- gas | [] |
- gawk | [] [] [] |
- gcal | [] |
- gcc | [] [] |
- gettext | [] [] [] [] [] |
- gimp-print | |
- gliv | |
- gnucash | [] () |
- gnucash-glossary| [] () [] |
- gnupg | [] [] [] [] [] [] [] |
- gpe-todo | |
- gphoto2 | [] [] |
- gprof | [] [] |
- gpsdrive | () () () () |
- grep | [] [] [] [] [] [] [] |
- gretl | [] |
- hello | [] [] [] [] [] [] [] [] [] |
- id-utils | [] [] |
- indent | [] [] [] [] [] [] |
- jpilot | () [] [] [] |
- jwhois | [] |
- kbd | [] [] [] |
- ld | [] [] |
- libc | [] [] [] [] [] [] [] |
- libgpewidget | |
- libiconv | [] [] [] [] [] [] |
- lifelines | [] () |
- lilypond | [] |
- lingoteach | [] |
- lingoteach_lessons| () () |
- lynx | [] [] [] [] [] |
- m4 | [] [] [] [] |
- mailutils | [] [] |
- make | [] [] [] |
- man-db | [] () [] () |
- mysecretdiary | [] [] [] |
- nano | [] () [] [] [] |
- nano_1_0 | [] () [] [] [] |
- opcodes | [] [] |
- parted | [] [] [] [] |
- ptx | [] [] [] [] [] [] [] |
- python | |
- radius | |
- recode | [] [] [] [] [] |
- sed | [] [] [] [] [] [] |
- sh-utils | [] [] [] [] |
- sharutils | [] [] [] [] [] [] [] |
- sketch | [] () [] |
- soundtracker | [] [] [] |
- sp | [] |
- tar | [] [] [] [] [] [] |
- texinfo | [] [] [] [] |
- textutils | [] [] [] [] |
- tin | () () [] |
- util-linux | [] [] [] [] [] [] [] |
- vorbis-tools | [] [] |
- wastesedge | () |
- wdiff | [] [] [] [] [] |
- wget | [] [] [] [] [] [] [] [] [] |
- xchat | |
- xpad | |
- +-------------------------------------------------+
- az be bg ca cs da de el en en_GB eo es et fa fi
- 0 1 2 26 9 49 46 9 1 1 11 52 19 1 15
-
- fr gl he hr hu id it ja ko lg lv ms nb nl
- +-------------------------------------------+
- a2ps | [] () () [] [] |
- aegis | () |
- anubis | [] [] |
- ap-utils | [] |
- bash | [] [] |
- batchelor | |
- bfd | [] [] |
- binutils | [] [] |
- bison | [] [] [] [] |
- clisp | [] [] |
- clisp | |
- coreutils | [] [] [] |
- cpio | [] [] [] [] [] |
- darkstat | () [] [] [] |
- diffutils | [] [] [] [] [] [] |
- enscript | [] [] [] |
- error | [] [] [] |
- fetchmail | [] |
- fileutils | [] [] [] [] |
- findutils | [] [] [] [] [] [] [] [] [] |
- flex | [] [] |
- gas | [] |
- gawk | [] [] |
- gcal | [] |
- gcc | [] |
- gettext | [] [] [] |
- gimp-print | |
- gliv | () |
- gnucash | [] [] [] |
- gnucash-glossary| [] [] |
- gnupg | [] [] [] [] [] |
- gpe-todo | |
- gphoto2 | [] [] [] |
- gprof | [] [] |
- gpsdrive | () [] () () |
- grep | [] [] [] [] [] [] [] [] |
- gretl | [] |
- hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
- id-utils | [] [] [] |
- indent | [] [] [] [] [] [] |
- jpilot | [] () () |
- jwhois | [] [] [] [] |
- kbd | [] |
- ld | [] |
- libc | [] [] [] [] [] [] |
- libgpewidget | |
- libiconv | [] [] [] [] [] [] |
- lifelines | () |
- lilypond | [] [] |
- lingoteach | [] |
- lingoteach_lessons| |
- lynx | [] [] [] [] |
- m4 | [] [] [] [] [] |
- mailutils | |
- make | [] [] [] [] [] [] [] |
- man-db | [] () () |
- mysecretdiary | [] [] |
- nano | [] [] [] [] [] [] |
- nano_1_0 | [] [] [] [] [] [] |
- opcodes | [] [] [] |
- parted | [] [] [] |
- ptx | [] [] [] [] [] [] |
- python | |
- radius | |
- recode | [] [] [] [] [] |
- sed | [] [] [] [] [] |
- sh-utils | [] [] [] [] [] |
- sharutils | [] [] [] [] [] |
- sketch | [] |
- soundtracker | [] [] [] |
- sp | [] () |
- tar | [] [] [] [] [] [] [] [] [] |
- texinfo | [] [] [] [] |
- textutils | [] [] [] [] [] [] |
- tin | |
- util-linux | [] [] () [] [] |
- vorbis-tools | [] |
- wastesedge | () |
- wdiff | [] [] [] [] [] |
- wget | [] [] [] [] [] [] [] |
- xchat | |
- xpad | |
- +-------------------------------------------+
- fr gl he hr hu id it ja ko lg lv ms nb nl
- 59 23 8 10 26 20 18 26 8 0 1 8 7 24
-
- nn no pl pt pt_BR ro ru sk sl sv tr uk zh_CN zh_TW
- +----------------------------------------------------+
- a2ps | () () () [] [] [] [] [] [] | 14
- aegis | () | 0
- anubis | [] [] | 4
- ap-utils | () () | 1
- bash | [] [] | 7
- batchelor | | 0
- bfd | [] [] | 6
- binutils | [] [] | 6
- bison | [] [] [] | 11
- clisp | | 5
- clisp | | 0
- coreutils | [] [] [] [] [] | 12
- cpio | [] [] [] [] [] | 13
- darkstat | [] [] () () | 6
- diffutils | [] [] [] [] [] [] | 19
- enscript | [] [] [] [] | 10
- error | [] [] [] [] | 11
- fetchmail | () () [] | 6
- fileutils | [] [] [] [] [] [] | 14
- findutils | [] [] [] [] [] [] [] [] | 24
- flex | [] [] [] [] | 10
- gas | [] | 3
- gawk | [] [] | 7
- gcal | [] [] | 4
- gcc | [] | 4
- gettext | [] [] [] [] [] [] | 14
- gimp-print | | 0
- gliv | [] | 1
- gnucash | [] [] [] [] [] | 9
- gnucash-glossary| [] [] [] [] | 8
- gnupg | [] [] [] [] | 16
- gpe-todo | | 0
- gphoto2 | [] [] | 7
- gprof | [] [] [] | 7
- gpsdrive | [] [] | 3
- grep | [] [] [] [] [] | 20
- gretl | | 2
- hello | [] [] [] [] [] [] [] [] [] | 31
- id-utils | [] [] [] [] | 9
- indent | [] [] [] [] [] | 17
- jpilot | () [] [] [] [] | 8
- jwhois | [] () () [] [] | 8
- kbd | [] [] | 6
- ld | [] [] | 5
- libc | [] [] [] [] [] [] [] | 20
- libgpewidget | | 0
- libiconv | [] [] [] [] [] [] | 18
- lifelines | [] | 2
- lilypond | [] | 4
- lingoteach | [] [] | 4
- lingoteach_lessons| () | 0
- lynx | [] [] [] [] | 13
- m4 | [] [] [] [] | 13
- mailutils | | 2
- make | [] [] [] [] [] | 15
- man-db | [] | 4
- mysecretdiary | [] [] [] | 8
- nano | [] [] [] | 13
- nano_1_0 | [] [] [] [] [] | 15
- opcodes | [] [] [] | 8
- parted | [] [] [] [] [] | 12
- ptx | [] [] [] [] [] [] [] | 20
- python | | 0
- radius | | 0
- recode | [] [] [] [] [] [] | 16
- sed | [] [] [] [] [] | 16
- sh-utils | [] [] [] | 12
- sharutils | [] [] [] [] | 16
- sketch | [] [] | 5
- soundtracker | [] | 7
- sp | [] | 3
- tar | [] [] [] [] [] [] [] [] [] | 24
- texinfo | [] [] [] [] | 12
- textutils | [] [] [] [] [] | 15
- tin | | 1
- util-linux | [] [] [] | 14
- vorbis-tools | [] | 4
- wastesedge | | 0
- wdiff | [] [] [] [] [] | 15
- wget | [] [] [] [] [] [] [] [] | 24
- xchat | | 0
- xpad | | 0
- +----------------------------------------------------+
- 43 teams nn no pl pt pt_BR ro ru sk sl sv tr uk zh_CN zh_TW
- 82 domains 3 4 14 4 34 1 29 14 13 53 46 6 9 13 723
-
- Some counters in the preceding matrix are higher than the number of
-visible blocks let us expect. This is because a few extra PO files are
-used for implementing regional variants of languages, or language
-dialects.
-
- For a PO file in the matrix above to be effective, the package to
-which it applies should also have been internationalized and
-distributed as such by its maintainer. There might be an observable
-lag between the mere existence a PO file and its wide availability in a
-distribution.
-
- If February 2003 seems to be old, you may fetch a more recent copy
-of this `ABOUT-NLS' file on most GNU archive sites. The most
-up-to-date matrix with full percentage details can be found at
-`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
-
-Using `gettext' in new packages
-===============================
-
- If you are writing a freely available program and want to
-internationalize it you are welcome to use GNU `gettext' in your
-package. Of course you have to respect the GNU Library General Public
-License which covers the use of the GNU `gettext' library. This means
-in particular that even non-free programs can use `libintl' as a shared
-library, whereas only free software can use `libintl' as a static
-library or use modified versions of `libintl'.
-
- Once the sources are changed appropriately and the setup can handle
-the use of `gettext' the only thing missing are the translations. The
-Free Translation Project is also available for packages which are not
-developed inside the GNU project. Therefore the information given above
-applies also for every other Free Software Project. Contact
-`translation@iro.umontreal.ca' to make the `.pot' files available to
-the translation teams.
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/AUTHORS b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/AUTHORS
deleted file mode 100644
index 8bedd794..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/AUTHORS
+++ /dev/null
@@ -1 +0,0 @@
-Bruno Haible <bruno@clisp.org>
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/ChangeLog b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/ChangeLog
deleted file mode 100644
index 93322059..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/ChangeLog
+++ /dev/null
@@ -1,2633 +0,0 @@
-2004-01-23 Bruno Haible <bruno@clisp.org>
-
- * tests/table-from.c: Include binary-io.h.
- (main): Switch stdout to binary mode.
- * tests/table-to.c: Include binary-io.h.
- (main): Switch stdout to binary mode.
- * tests/genutf8.c: Include binary-io.h.
- (main): Switch stdout to binary mode.
- * tests/Makefile.in (INCLUDES): Also look in srclib.
- (check): Pass INCLUDES when compiling genutf8.c.
- * tests/Makefile.os2 (INCLUDES): Also look in srclib.
- (genutf8.exe): Pass INCLUDES when compiling genutf8.c.
- * tests/Makefile.msvc (INCLUDES): Also look in srclib.
- (check): Pass INCLUDES when compiling genutf8.c.
-
-2004-01-21 Bruno Haible <bruno@clisp.org>
-
- * src/iconv.c (force_binary): Remove variable.
- (usage): Don't document --binary any more.
- (convert, main): Always switch to binary mode.
- * tests/check-stateful.bat: Remove --binary option.
- * tests/check-translit.bat: Likewise.
- * tests/check-stateful.cmd: Likewise.
- * tests/check-translit.cmd: Likewise.
- * djgpp/stateful-check.sed: Remove MODE variable.
- * djgpp/translit-check.sed: Likewise.
-
-2004-01-21 Bruno Haible <bruno@clisp.org>
-
- * man/iconv.3: Fix description of return value in case of error.
- Reported by Jonathan Wakely <redi@users.sf.net>.
-
-2003-09-12 Paul Eggert <eggert@twinsun.com>
-
- * srclib/progreloc.c (get_full_program_name): Define via prototype.
-
-2003-08-15 Bruno Haible <bruno@clisp.org>
-
- * Makefile.devel (lib/translit.h): Add ulimit command so that the
- gentranslit program gets the stack it needs. Many Linux distributions
- allow only 8 MB of stack by default.
-
-2003-08-01 Bruno Haible <bruno@clisp.org>
-
- * lib/relocatable.c (find_shared_library_fullname): Disable the code on
- Linux/libc5.
- * srclib/relocatable.c (find_shared_library_fullname): Likewise.
- Reported by Alain Guibert <derogaton+bgli@oreka.com>.
-
-2003-07-02 Bruno Haible <bruno@clisp.org>
-
- * m4/lib-ld.m4: Update from GNU gettext.
- * m4/lib-prefix.m4: Update from GNU gettext.
- * m4/gettext.m4: Update from GNU gettext.
- * m4/intmax.m4: New file, from GNU gettext.
- * m4/longdouble.m4: New file, from GNU gettext.
- * m4/longlong.m4: New file, from GNU gettext.
- * m4/printf-posix.m4: New file, from GNU gettext.
- * m4/signed.m4: New file, from GNU gettext.
- * m4/wchar_t.m4: New file, from GNU gettext.
- * m4/wint_t.m4: New file, from GNU gettext.
- * m4/pathmax.m4: Update from GNU gettext and gnulib.
- * m4/ssize_t.m4: Update from GNU gettext and gnulib.
- * m4/xreadlink.m4: Update from GNU gettext and gnulib.
- * m4/readlink.m4: New file, from gnulib.
- * autoconf/install-reloc: Update from GNU gettext.
- * srclib/stdbool_.h: Renamed from srclib/stdbool.h.in.
- * srclib/readlink.c: New file, from GNU gettext and gnulib.
- * srclib/Makefile.am (LIBADD_SOURCE): Add readlink.c.
- (EXTRA_DIST, stdbool.h): Use stdbool_.h instead of stdbool.h.in.
- * configure.in: Invoke gl_FUNC_READLINK.
-
-2003-06-22 Bruno Haible <bruno@clisp.org>
-
- * src/Makefile.in (install): Link with the already installed library.
- This fixes a link error on Solaris.
- Reported by Paul Eggert.
-
-2003-06-08 Bruno Haible <bruno@clisp.org>
-
- * srclib/canonicalize.c (__getcwd) [VMS]: Pass 3 arguments to getcwd.
-
-2003-05-02 Bruno Haible <bruno@clisp.org>
-
- Support for libtool-1.5.
- * srclib/progname.c (set_program_name): Remove a leading
- "<dirname>/.libs/lt-" or "<dirname>/.libs/", not only "lt-".
-
-2003-06-23 Bruno Haible <bruno@clisp.org>
-
- Avoid compilation units that are empty after preprocessing.
- * srclib/canonicalize.c: Add dummy declaration.
- * srclib/strerror.c: Likewise.
- * srclib/error.c: Include <stdio.h> even if there's nothing to be
- compiled.
-
-2003-06-22 Bruno Haible <bruno@clisp.org>
-
- Portability to mingw32.
- * m4/ssize_t.m4: New file, from GNU gettext.
- * m4/xreadlink.m4 (gl_XREADLINK): Require gt_TYPE_SSIZE_T.
- Reported by Jeff Bonggren <jbon@cfl.rr.com>.
-
-2003-06-22 Bruno Haible <bruno@clisp.org>
-
- Portability to mingw32.
- * lib/relocatable.c [WIN32]: Include <windows.h>.
- * srclib/relocatable.c: Likewise.
- Reported by Jeff Bonggren <jbon@cfl.rr.com>.
-
-2003-06-22 Bruno Haible <bruno@clisp.org>
-
- * lib/relocatable.c (compute_curr_prefix): Comment out this function in
- the case when it is not used.
- * srclib/relocatable.c (compute_curr_prefix): Likewise.
- Reported by Pavel Roskin <proski@gnu.org>.
-
-2003-06-18 Bruno Haible <bruno@clisp.org>
-
- * config/install-sh: Update from automake-1.7.5.
-
-2003-06-16 Bruno Haible <bruno@clisp.org>
-
- * lib/encodings.def (ISO-8859-15): Add alias LATIN-9.
- (ISO-8859-16): Add aliases ISO_8859-16:2001, LATIN10, L10. Remove alias
- ISO_8859-16:2000.
- (GBK): Add aliases MS936, WINDOWS-936.
- Reported by Guido Flohr <guido@imperia.net>.
-
-2003-05-09 Bruno Haible <bruno@clisp.org>
-
- * srclib/canonicalize.c: Add #ifdef around versioned_symbol. Avoids an
- "extraneous semicolon" warning from Tru64 cc.
-
-2003-06-07 Bruno Haible <bruno@clisp.org>
-
- * Makefile.devel (config.h_vms): Don't define HAVE_ENVIRON_DECL.
- * Makefile.vms (config.h): New rule.
- (all, install): Depend on it.
- (all, install, installdirs, uninstall, check): Fix typo.
- (mostlyclean, clean, distclean, maintainer-clean): Likewise. Remove
- config.h.
- * lib/Makefile.vms (DEFS): Fix value of INSTALLDIR.
- (OBJECTS): Use libiconv.obj instead of iconv.obj.
- (libiconv.obj): Renamed from iconv.obj.
- * srclib/Makefile.vms (INCLUDES): Add parent directory.
- (OBJECTS): Remove strtoul.obj, setenv.obj, unsetenv.obj.
- (strtoul.obj, setenv.obj, unsetenv.obj): Remove rules.
- (alloca.h): New rule.
- (canonicalize.obj): Depend on it.
- (clean): Remove alloca.h.
- * src/Makefile.vms (datadir, localedir): New variables.
- (DEFS): Also define LOCALEDIR.
- (iconv.obj): Add flags for relocatability,
- (iconv.exe): Link with libicrt. Use link_options.
- * vms/link_options.opt: New file.
- Reported by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.
-
-2003-06-07 Bruno Haible <bruno@clisp.org>
-
- Support for relocatable data files even on Woe32.
- * lib/Makefile.msvc (PICFLAGS): Also define PIC.
-
-2003-05-22 Bruno Haible <bruno@clisp.org>
-
- * Version 1.9.1 released.
-
-2003-05-22 Bruno Haible <bruno@clisp.org>
-
- * lib/genaliases.c (main): Emit %pic instead of %null-strings.
- Change type of 'name' field to 'int'.
- * lib/genaliases2.c (emit_encoding): Add a 'tag' argument. Emit an
- invocation of macro S(), including the tag and a counter.
- (main): Use the command-line argument as tag.
- * Makefile.devel (lib/aliases_aix.h, lib/aliases_osf1.h,
- lib/aliases_dos.h, lib/aliases_extra.h): Pass a tag to the program.
- * lib/iconv.c (stringpool2_t): New type.
- (stringpool2_contents): New data table.
- (stringpool2): New macro.
- (sysdep_aliases): Make position-independent. Move #includes out to
- aliases2.h.
- (aliases2_lookup): Update.
- (nalias): New type.
- (compare_by_index): Use 'struct nalias' instead of 'struct alias'.
- (iconvlist): Convert 'struct alias' to 'struct nalias' while copying.
- * lib/aliases2.h: New file, extracted from lib/iconv.c.
-
-2003-05-20 Bruno Haible <bruno@clisp.org>
-
- * lib/iconv.c (iconvlist): Test p->name against NULL, not against "".
- Reported by Muraoka Taro <koron@tka.att.ne.jp>.
-
-2003-05-19 Bruno Haible <bruno@clisp.org>
-
- * windows/iconv.rc: Include <winver.h>.
- Reported by Perry Rapp.
-
-2003-05-18 Bruno Haible <bruno@clisp.org>
-
- * Version 1.9 released.
-
-2003-05-18 Bruno Haible <bruno@clisp.org>
-
- * lib/Makefile.in (libiconv_plug_osf.so): Avoid using LIBTOOL_LINK.
-
-2003-05-18 Bruno Haible <bruno@clisp.org>
-
- * lib/Makefile.msvc (DEBUGFLAGS): New variable.
- (iconv.lib): Use it.
- * src/Makefile.msvc (DEBUGFLAGS): New variable.
- * tests/Makefile.msvc (DEBUGFLAGS): New variable.
-
-2003-05-17 Bruno Haible <bruno@clisp.org>
-
- * src/Makefile.msvc (libdir, datadir, localedir): New variables.
- (IIlibdir, IIdatadir, IIlocaledir): New variables.
- (CFLAGS): Define LOCALEDIR.
- (iconv_no_i18n.exe): New rule.
- (all): Depend on it.
- * tests/check-stateful.bat: Invoke iconv_no_i18n instead of iconv.
- * tests/check-translit.bat: Likewise.
-
-2003-05-16 Bruno Haible <bruno@clisp.org>
-
- * lib/genaliases.c (main): Emit declarations for gperf-3.0.
- * Makefile.devel (lib/aliases.h): Remove gperf command line options;
- add new option "-m 10" for gperf-3.0.
-
-2003-05-12 Bruno Haible <bruno@clisp.org>
-
- * m4/error.m4: Update from gettext.
-
-2003-05-12 Bruno Haible <bruno@clisp.org>
-
- * configure.in: Invoke AC_GNU_SOURCE and jm_FUNC_GLIBC_UNLOCKED_IO.
-
-2003-05-12 Bruno Haible <bruno@clisp.org>
-
- * lib/Makefile.msvc (PICFLAGS, CFLAGS): Move BUILDING_* macros from
- CFLAGS to PICFLAGS.
-
-2003-05-09 Bruno Haible <bruno@clisp.org>
-
- * srclib/error.c: Update from gnulib with modifications.
- * srclib/unlocked-io.h: New file, from gnulib.
- * m4/strerror_r.m4: New file, from gnulib.
- * m4/unlocked-io.m4: New file, from gnulib.
- * Makefile.devel (aclocal.m4): Depend on them.
-
-2003-05-08 Bruno Haible <bruno@clisp.org>
-
- * Makefile.msvc (IIPREFIX): New variable.
- * srclib/Makefile.msvc (INCLUDES): Add -I..\windows.
- * src/Makefile.msvc (IIPREFIX, IIprefix, IIexec_prefix, IIbindir,
- IIincludedir): New variables.
- (INCLUDES): Add -I..\windows.
- (iconv.exe): Define INSTALLPREFIX and INSTALLDIR. Link with
- ../srclib/icrt.lib.
- Patches by Perry Rapp.
-
-2003-05-07 Bruno Haible <bruno@clisp.org>
-
- * README.woe32: Fix instructions for step 1.
- * srclib/Makefile.msvc (OBJECTS): Remove strtoul.obj.
- (strtoul.obj): Remove rule.
- Reported by Perry Rapp.
-
-2003-05-07 Bruno Haible <bruno@clisp.org>
-
- * Makefile.vms: New file.
- * lib/Makefile.vms: New file.
- * srclib/Makefile.vms: New file.
- * src/Makefile.vms: New file.
- * man/Makefile.vms: New file.
- * tests/Makefile.vms: New file.
- * Makefile.devel (config.h_vms, lib/config.h_vms, include/iconv.h_vms):
- New rules.
- (all): Depend on them.
-
-2003-05-07 Bruno Haible <bruno@clisp.org>
-
- * srclib/Makefile.msvc (OBJECTS): Remove findprog.obj.
- (findprog.obj): Remove rule.
- * src/Makefile.msvc (includedir): New variable.
-
-2003-05-06 Bruno Haible <bruno@clisp.org>
-
- * lib/translit.def: Upgrade to Unicode 4.0.
-
-2003-05-06 Bruno Haible <bruno@clisp.org>
-
- * srclib/Makefile.am (DEFS): Fix spelling of DEPENDS_ON_LIBICONV.
- * srclib/Makefile.msvc (CFLAGS): Likewise.
-
- * srclib/Makefile.msvc (INCLUDES): Add -I.. .
- Reported by Perry Rapp.
-
- * Makefile.msvc (config.h): New rule.
- (all): Depend on it.
- (mostlyclean, clean, distclean, maintainer-clean): Erase config.h.
- Reported by Perry Rapp.
-
-2003-05-06 Bruno Haible <bruno@clisp.org>
-
- * autoconf/config.guess: Update to GNU version 2003-02-22.
- * autoconf/config.sub: Likewise.
-
-2003-05-06 Bruno Haible <bruno@clisp.org>
-
- * m4/lib-link.m4: Update from GNU gettext.
- * autoconf/config.rpath: Update from GNU gettext.
-
- * m4/libtool.m4: Update from GNU gettext, based on libtool-1.5.
- * autoconf/ltmain.sh: Update from GNU gettext, based on libtool-1.5.
-
- * m4/gettext.m4: Update from GNU gettext.
- * m4/nls.m4: Update from GNU gettext.
- * m4/po.m4: Update from GNU gettext.
- * Makefile.devel (aclocal.m4): Depend on m4/nls.m4 and m4/po.m4.
-
-2003-04-12 Bruno Haible <bruno@clisp.org>
-
- Support for OpenVMS 7.3.
- * lib/iconv.c (USE_OSF1): Define also on VMS.
-
-2003-04-12 Bruno Haible <bruno@clisp.org>
-
- Better support for FreeBSD.
- * lib/encodings.def (ISO8859-{1,2,3,4,5,6,7,8,9,10,13,14,15,16): New
- aliases, for compatibility with earlier FreeBSD iconv implementation
- by Konstantin Chuguev.
- * lib/iconv.c (iconv_open, iconv, iconv_close) [FreeBSD]: Define as
- aliases.
- * src/Makefile.in (install) [FreeBSD]: Avoid installation problem.
-
-2003-04-12 Bruno Haible <bruno@clisp.org>
-
- * configure.in (mandir): Change default value.
- * Makefile.in (datadir): New variable.
- (install, installdirs, uninstall): Pass datadir to po and man
- directories.
- * Makefile.os2 (datadir): New variable.
- (mandir): Use it instead of prefix.
- (install, uninstall): Pass datadir to man directory.
- * Makefile.msvc (mandir, docdir): Use datadir instead of prefix.
- * man/Makefile.in (datadir): New variable.
- (docdir): Use it instead of prefix.
- (install, installdirs): Update.
- * man/Makefile.os2 (datadir): New variable.
- (mandir): Use it instead of prefix.
- * man/Makefile.msvc (datadir): New variable.
- (mandir, docdir): Use it instead of prefix.
- (install, installdirs): Update.
-
-2003-04-06 Bruno Haible <bruno@clisp.org>
-
- Make it possible to build with or without libintl support on Woe32.
- * Makefile.devel (config.h.msvc): Remove ENABLE_NLS.
- * Makefile.msvc (NO_NLS): New variable.
- * srclib/Makefile.msvc (NO_NLS): New variable.
- (CFLAGS, INCLUDES): Use them.
- * src/Makefile.msvc (NO_NLS): New variable.
- (NLSFLAGS, INCINTL, LIBINTL): New variables.
- (CFLAGS, INCLUDES, iconv.exe): Use them.
-
-2003-04-12 Bruno Haible <bruno@clisp.org>
-
- * lib/loop_unicode.h (unicode_transliterate): When the Hangul or
- variants transliteration failed with RET_ILUNI, don't return
- RET_TOOSMALL.
- Reported by the FreeBSD porters.
-
-2003-04-06 Bruno Haible <bruno@clisp.org>
-
- * srclib/binary-io.h: New file, from GNU gettext.
- * src/iconv.c: Include it.
- (O_BINARY, O_TEXT, SET_BINARY): Remove definitions.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- Support for relocatable installation.
- * m4/alloca.m4: New file, from GNU gettext.
- * m4/canonicalize.m4: New file, from GNU gettext.
- * m4/error.m4: New file, from GNU gettext.
- * m4/onceonly.m4: New file, from GNU gettext.
- * m4/pathmax.m4: New file, from GNU gettext.
- * m4/relocatable.m4: New file, from GNU gettext.
- * m4/setenv.m4: New file, from GNU gettext.
- * m4/stdbool.m4: New file, from GNU gettext.
- * m4/strerror.m4: New file, from GNU gettext.
- * m4/xreadlink.m4: New file, from GNU gettext.
- * autoconf/config.libpath: New file, from GNU gettext.
- * autoconf/install-reloc: New file, from GNU gettext.
- * autoconf/reloc-ldflags: New file, from GNU gettext.
- * autoconf/missing: New file, from GNU automake 1.7.3.
- * lib/relocatable.h: New file, from GNU gettext.
- * lib/relocatable.c: New file, from GNU gettext.
- * srclib/alloca.c: New file, from GNU gettext.
- * srclib/alloca_.h: New file, from GNU gettext.
- * srclib/canonicalize.c: New file, from GNU gettext.
- * srclib/canonicalize.h: New file, from GNU gettext.
- * srclib/error.c: New file, from GNU gettext.
- * srclib/error.h: New file, from GNU gettext.
- * srclib/exit.h: New file, from GNU gettext.
- * srclib/gettext.h: New file, from GNU gettext.
- * srclib/memmove.c: New file, from GNU gettext.
- * srclib/pathmax.h: New file, from GNU gettext.
- * srclib/progname.c: New file, from GNU gettext.
- * srclib/progname.h: New file, from GNU gettext.
- * srclib/progreloc.c: New file, from GNU gettext.
- * srclib/relocatable.c: New file, from GNU gettext.
- * srclib/relocatable.h: New file, from GNU gettext.
- * srclib/relocwrapper.c: New file, from GNU gettext.
- * srclib/setenv.c: New file, from GNU gettext.
- * srclib/setenv.h: New file, from GNU gettext.
- * srclib/stdbool.h.in: New file, from GNU gettext.
- * srclib/strerror.c: New file, from GNU gettext.
- * srclib/unsetenv.c: New file, from GNU gettext.
- * srclib/xmalloc.c: New file, from GNU gettext.
- * srclib/xmalloc.h: New file, from GNU gettext.
- * srclib/xreadlink.c: New file, from GNU gettext.
- * srclib/xreadlink.h: New file, from GNU gettext.
- * srclib/xstrdup.c: New file, from GNU gettext.
- * srclib/Makefile.am: New file.
- * srclib/Makefile.msvc: New file.
- * windows/alloca.h: New file, from GNU gettext.
- * windows/stdbool.h: New file, from GNU gettext.
- * configure.in (AC_CONFIG_HEADERS): Replace src/config.h with config.h.
- Add AC_RELOCATABLE, AC_HEADER_STDC, AC_CHECK_HEADERS(stddef.h stdlib.h
- string.h), AC_CHECK_FUNCS(getc_unlocked), AC_REPLACE_FUNCS(memmove),
- AM_LANGINFO_CODESET, gl_FUNC_ALLOCA, gl_CANONICALIZE,
- gt_FUNC_ERROR_AT_LINE, gl_PATHMAX, gt_FUNC_SETENV, gt_STDBOOL_H,
- gl_FUNC_STRERROR, gl_XREADLINK, AC_OUTPUT(srclib/Makefile).
- * lib/config.h.in: Add HAVE_GETC_UNLOCKED, HAVE_LANGINFO_CODESET,
- HAVE_SETLOCALE, HAVE_STDDEF_H, HAVE_STDLIB_H, HAVE_STRING_H, for
- localcharset.c. Add ENABLE_RELOCATABLE, INSTALLPREFIX, for
- relocatable.c.
- * lib/Makefile.in (DEFS): New variable.
- (SOURCES): Add localcharset.c and relocatable.c.
- (OBJECTS): Add localcharset.lo and relocatable.lo.
- (LIBCHARSET_OBJECTS): Remove variable.
- (libiconv_plug_linux.so, libiconv_plug_solaris.so,
- libiconv_plug_osf.so): Use $(DEFS). Don't use $(LIBCHARSET_OBJECTS).
- (iconv.lo): Use $(DEFS).
- (localcharset.lo, relocatable.lo): New rules.
- * lib/Makefile.msvc (CFLAGS): Define HAVE_CONFIG_H, BUILDING_DLL,
- ENABLE_RELOCATABLE, IN_LIBRARY, INSTALLDIR, NO_XMALLOC,
- set_relocation_prefix, relocate. Remove $(PICFLAGS).
- (INCLUDES): Simplify.
- (SOURCES): Remove variable.
- (OBJECTS): Add localcharset.obj and relocatable.obj.
- (LIBCHARSET_OBJECTS): Remove variable.
- (iconv.obj): Add $(PICFLAGS).
- (localcharset.obj, relocatable.obj): New rules.
- (iconv.lib): Drop $(LIBCHARSET_OBJECTS).
- * include/iconv.h.in (libiconv_set_relocation_prefix): New declaration.
- * src/gettext.h: Remove file.
- * src/iconv.c: Include progname.h and relocatable.h.
- (ICONV_CONST): Define to const if the system has no iconv.
- (main): Invoke set_program_name. Relocate LOCALEDIR.
- * src/Makefile.in (top_srcdir): New variable.
- (INCLUDES): Add .. and ../srclib.
- (iconv_no_i18n, iconv): Link with ../srclib/libicrt.a.
- (iconv_no_i18n.@OBJEXT@, iconv.@OBJEXT@): Define INSTALLDIR.
- (RELOCATABLE_LIBRARY_PATH, RELOCATABLE_SRC_DIR, RELOCATABLE_BUILD_DIR,
- RELOCATABLE_CONFIG_H_DIR, @SET_RELOCATABLE@, iconv_LDFLAGS): New
- variables.
- (iconv): Use $(iconv_LDFLAGS).
- (install): Use $(INSTALL_PROGRAM_ENV).
- (distclean): Drop removing config.h.
- * src/Makefile.msvc (INCLUDES): Add .., simplify.
- * tests/Makefile.msvc (INCLUDES): Simplify.
- * Makefile.devel (AUTOHEADER, AUTOMAKE): New variables.
- (config.h.in, srclib/Makefile.in, config.h.msvc): New rules.
- (all): Depend on them.
- (aclocal.m4) Depend also on m4/alloca.m4, m4/canonicalize.m4,
- m4/error.m4, m4/onceonly.m4, m4/pathmax.m4, m4/relocatable.m4,
- m4/setenv.m4, m4/stdbool.m4, m4/strerror.m4, m4/xreadlink.m4.
- (lib/config.h.msvc): Additional processing.
- * Makefile.in (all, install, installdirs, uninstall, check): Recurse
- into srclib.
- (mostlyclean, clean, distclean, maintainerclean): Likewise. Remove
- lib/localcharset.h.
- (distclean, maintainerclean): Remove also config.h and some stamps.
- * Makefile.msvc (all, install, installdirs, uninstall, check,
- mostlyclean, clean, distclean, maintainerclean): Recurse into srclib.
- * INSTALL.generic: Document --enable-relocatable and
- --with-libintl-prefix. Remove the recommendation to set CPPFLAGS and
- LDFLAGS. The lib-link.m4 macros make this unnecessary.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- * configure.in: Bump version number to 1.9.
- * include/iconv.h.in (_LIBICONV_VERSION): Bump.
- * windows/iconv.rc: Bump version number.
- * lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 4:0:2.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- * Makefile.msvc (PREFIX): New variable.
- (prefix): Use it.
- (distclean, maintainer-clean): Drop Unix specific removals.
- * lib/Makefile.msvc (PREFIX, IIPREFIX): New variables.
- (prefix): Use it.
- (IIprefix, IIexec_prefix, IIbindir, IIlibdir): New variables.
- (clean): Drop Unix specific removal.
- * src/Makefile.msvc (PREFIX): New variable.
- (prefix): Use it.
- (clean): Drop Unix specific removal.
- (distclean): Likewise.
- * tests/Makefile.msvc (clean): Drop Unix specific removal.
- (distclean): Likewise.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- * m4/endian.m4 (CL_WORDS_LITTLEENDIAN): Use 3-argument AC_DEFINE.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- * m4/general.m4 (CL_CONFIG_SUBDIRS, CL_CANONICAL_HOST,
- CL_CANONICAL_HOST_CPU, CL_CANONICAL_HOST_CPU_FOR_FFCALL): Remove
- macros.
- * m4/gettext.m4: Update from GNU gettext.
- * m4/iconv.m4: Update from GNU gettext.
- * m4/lcmessage.m4: Update from GNU gettext.
- * m4/progtest.m4: Update from GNU gettext.
- * m4/libtool.m4: Update from GNU gettext.
- 2003-02-16 Bruno Haible <bruno@clisp.org>
- Workaround autoconf >= 2.52 breakage.
- * libtool.m4 (AC_LIBTOOL_ARG_WITH): New macro.
- (_LT_AC_LTCONFIG_HACK, AC_PROG_LD): Use it.
- * autoconf/ltmain.sh: Update from GNU gettext.
- 2003-02-18 Bruno Haible <bruno@clisp.org>
- Fix the 2002-09-16 fix.
- * ltmain.sh (install): If "ln -s -f" fails (this is the case
- with /usr/bin/ln on Solaris 2.7), fall back to "rm && ln -s".
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- Start using automake.
- * configure.in: Add AM_INIT_AUTOMAKE invocation.
- (PACKAGE, VERSION): Remove.
- Use AC_CANONICAL_HOST instead of CL_CANONICAL_HOST.
- Use AC_PROG_LN_S instead of CL_PROG_LN_S.
- Use AC_PROG_RANLIB instead of CL_PROG_RANLIB.
- Reorder so that AC_CANONICAL_HOST comes early but still after
- AC_PROG_CC.
- * m4/ranlib.m4: Remove file.
- * m4/libtool.m4: Undo AC_ -> CL_ substitutions.
- * Makefile.devel (CLISP_DIR): Comment out.
- (AUTOCONF_FILES): Change to aclocal.m4.
- (aclocal.m4): Renamed from autoconf/aclocal.m4. Update dependencies.
- (configure.in): Drop --include option.
-
-2003-03-17 Bruno Haible <bruno@clisp.org>
-
- Improved MSVC support.
- * Makefile.msvc (prefix): Use less Unixy value.
- (local_prefix): Remove variable.
- (libdir, includedir, mandir): Use backslashes.
- (bindir, datadir, localedir, docdir): New variables.
- (INSTALL, INSTALL_PROGRAM, INSTALL_DATA): New variables.
- (all): Recurse into po/ and man/.
- (install, installdirs, uninstall): Rewritten.
- (check, mostlyclean, clean, distclean, maintainer-clean): Recurse
- into po/ and man/.
- * lib/Makefile.msvc (prefix): Use less Unixy value.
- (local_prefix): Remove variable.
- (libdir): Use backslashes.
- (bindir): New variable.
- (INSTALL, INSTALL_PROGRAM, INSTALL_DATA): Set to real values.
- (RESOURCES): Enable iconv.res.
- (install, installdirs, uninstall): New rules.
- (clean): Remove config.h.
- (distclean): Don't remove config.h here.
- * src/Makefile.msvc (prefix, exec_prefix, bindir): New variables.
- (INSTALL, INSTALL_PROGRAM, INSTALL_DATA): New variables.
- (install, installdirs, uninstall): New rules.
- * man/Makefile.msvc: New file.
- * tests/Makefile.msvc (install, installdirs, uninstall): New rules.
- * Makefile.devel (all): Depend on po/Makefile.msvc.
- (po/Makefile.msvc): New rule.
- * windows/iconv.rc: Update.
- * README.woe32: Mention automatic installation command.
-
- Rename libcharset.h to localcharset.h.
- * lib/iconv.c: Include localcharset.h, not libcharset.h.
- * Makefile.in (lib/localcharset.h): Renamed from lib/libcharset.h.
- (all, install): Update dependencies.
- (all): Create lib/localcharset.h, not lib/libcharset.h.
- (mostlyclean, clean, distclean, maintainer-clean): Remove
- lib/localcharset.h, not lib/libcharset.h.
- * djgpp/README.in, djgpp/README: Update.
- * djgpp/config.bat: Update.
- * djgpp/config.sed: Update.
- * djgpp/fnchange.in, djgpp/fnchange.lst: Update.
-
-2003-01-31 Bruno Haible <bruno@clisp.org>
-
- * src/Makefile.in (all): Don't do the chmod if it has already been
- done.
-
-2003-01-31 Bruno Haible <bruno@clisp.org>
-
- * lib/loop_unicode.h (unicode_transliterate): Enable recursive
- transliteration. Idea from Perry Rapp.
- * lib/gentranslit.c (main): Change bound from 0x10000 to 0x110000.
- Change element type of translit_data to 'unsigned int'.
- * lib/translit.def: Many new transliterations, mostly taken from glibc.
- * lib/translit.h: Regenerated.
- * tests/Translit1.ISO-8859-1, tests/Translit1.ASCII: New files.
- * tests/Makefile.in (check): Add Translit1 check.
- * tests/Makefile.msvc (check): Likewise.
- * tests/Makefile.os2 (check): Likewise.
- * tests/TranslitFail1.ISO-8859-1: Choose a sentence which the new
- improved transliteration cannot do.
-
-2003-02-14 Bruno Haible <bruno@clisp.org>
-
- * Makefile.devel (AUTOCONF): Switch to autoconf-2.57.
- (configure): Update rule.
-
-2003-01-03 Albert Chin <libtool@thewrittenword.com>
-
- * autoconf/ltmain.sh: Don't pass -R flags found in a .la's
- dependency_libs variable directly down to the linker.
- Reported by Tim Mooney <mooney@dogbert.cc.ndsu.nodak.edu>.
-
-2003-01-01 Bruno Haible <bruno@clisp.org>
-
- * src/Makefile.in (install): Use libiconv.la in ../lib, not in
- $(libdir), so that installing with DESTDIR works.
- Reported by Michael Adams <michael@michaeladams.org>.
-
-2003-01-01 Bruno Haible <bruno@clisp.org>
-
- * Makefile.in (mkinstalldirs): New variable.
- (install-lib, install, installdirs): Use it instead of mkdir.
- * lib/Makefile.in (mkinstalldirs): New variable.
- (install-lib, install, installdirs): Use it instead of mkdir.
- * man/Makefile.in (mkinstalldirs): New variable.
- (install, installdirs): Use it instead of mkdir.
- * src/Makefile.in (mkinstalldirs): New variable.
- (install, installdirs): Use it instead of mkdir.
-
-2002-09-27 Bruno Haible <bruno@clisp.org>
-
- * autoconf/mkinstalldirs: Upgrade to automake-1.7.2 version.
-
-2002-11-07 Bruno Haible <bruno@clisp.org>
-
- * m4/libtool.m4: Upgrade to libtool-1.4.3.
- * autoconf/ltmain.sh: Upgrade to libtool-1.4.3.
-
-2002-07-14 Bruno Haible <bruno@clisp.org>
-
- * m4/libtool.m4 (_LT_AC_LTCONFIG_HACK): Add support for GNU/FreeBSD.
-
-2002-06-12 Bruno Haible <bruno@clisp.org>
-
- * configure.in: Use new AC_* names of libtool macros. Invoke
- AC_LIBTOOL_WIN32_DLL.
-
-2002-12-19 Bruno Haible <bruno@clisp.org>
-
- * lib/Makefile.in (libiconv_plug_solaris.so): Change rule if using gcc.
- Reported by Henry Nelson <henry@irm.nara.kindai.ac.jp>.
-
-2002-11-07 Bruno Haible <bruno@clisp.org>
-
- Make "make install" without prior "make" work.
- * Makefile.in (lib/libcharset.h): New rule.
- (all, install): Depend on it.
- Reported by Martin Mokrejš <mmokrejs@natur.cuni.cz>.
-
-2002-10-28 Bruno Haible <bruno@clisp.org>
-
- * man/Makefile.in (install): Change directory back to the working
- directory, so that install-sh (which may be a relative pathname) is
- found in the right place.
-
-2002-09-16 Bruno Haible <bruno@clisp.org>
-
- * autoconf/ltmain.sh (install): Use "ln -s -f" instead of
- "rm -f && ln -s" to make a symlink for a shared library.
- Reported by Nelson H. F. Beebe <beebe@math.utah.edu>.
-
-2002-09-02 Bruno Haible <bruno@clisp.org>
-
- * src/iconv.c (main): Don't call bindtextdomain if !ENABLE_NLS.
-
-2002-08-16 Bruno Haible <bruno@clisp.org>
-
- * src/iconv.c (main): Perform fflush before testing ferror(stdout).
-
-2002-05-29 Bruno Haible <bruno@clisp.org>
-
- * Version 1.8 released.
-
-2002-05-26 Bruno Haible <bruno@clisp.org>
-
- * lib/c99.h: New file.
- * lib/converters.h: Include it.
- * lib/encodings.def (C99): New encoding.
- * README, man/iconv_open.3: Document C99 encoding.
-
-2002-05-26 Bruno Haible <bruno@clisp.org>
-
- * lib/java.h (java_mbtowc): Accept 12-byte sequences for non-BMP
- characters.
- (java_wctomb): Produce 12-byte sequences for non-BMP characters.
-
-2002-05-29 Bruno Haible <bruno@clisp.org>
-
- Fix installation of iconv program when linked with a libintl that was
- built against an earlier libiconv.
- * src/iconv.c: Conditionally disable NLS.
- * src/iconv_no_i18n.c: New file.
- * src/Makefile.in (libdir): New variable.
- (all): Depend on iconv_no_i18n, iconv.@OBJEXT@ but not iconv. Make
- directory writable, so iconv executable can be created during "make
- install".
- (iconv): Remove rule.
- (iconv_no_i18n, iconv_no_i18n.@OBJEXT@): New rules.
- (install): Link iconv now, after the new libiconv.so is installed.
- (clean): Also remove iconv_no_i18n.
- * tests/Makefile.in: (check, check-extra-yes): Depend on iconv_no_i18n,
- not iconv.
- * tests/check-stateful: Use iconv_no_i18n, not iconv.
- * tests/check-translit: LIkewise.
- * tests/check-translitfailure: Likewise.
-
-2002-05-29 Bruno Haible <bruno@clisp.org>
-
- * configure.in: Call AC_PROG_INSTALL instead of CL_PROG_INSTALL.
- * m4/install.m4: Remove file.
- * Makefile.devel (autoconf/aclocal.m4): Don't depend on m4/install.m4.
-
-2002-05-24 Bruno Haible <bruno@clisp.org>
-
- * lib/jisx0213.h: Use 'inline' only conditionally.
-
-2002-05-18 Bruno Haible <bruno@clisp.org>
-
- * configure.in (AC_INIT), include/iconv.h.in (_LIBICONV_VERSION),
- README, windows/iconv.rc, djgpp/README, djgpp/fnchange.lst:
- Bump version number.
- * lib/Makefile.in (LIBICONV_VERSION_INFO): Define to 3:0:1.
-
-2002-02-06 Bruno Haible <bruno@clisp.org>
-
- * autoconf/ltmain.sh: Upgrade from libtool-1.4 to libtool-1.4.2.
-
-2002-02-02 Bruno Haible <bruno@clisp.org>
-
- * autoconf/ltmain.sh: Add DESTDIR support on ELF systems.
-
-2001-11-03 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/ltmain.sh: chmod 777 the .libs directory, so that
- "make install" succeeds.
-
-2002-05-18 Bruno Haible <bruno@clisp.org>
-
- * src/Makefile.in (iconv): Remove the -liconv dependency of -lintl
- from the command line. Needed to ensure that the new libiconv version
- is used on FreeBSD.
-
-2002-05-14 Bruno Haible <bruno@clisp.org>
-
- Implement and document CP853, TDS565, RISCOS-LATIN1.
- * tools/Makefile (ALL): Add cp853.h, tds565.h, riscos1.h.
- (cp853.h, tds565.h, riscos1.h): New rules.
- * lib/cp853.h: New file.
- * lib/tds565.h: New file.
- * lib/riscos1.h: New file.
- * lib/converters.h: Include them.
- * lib/encodings_dos.def (CP853): New encoding.
- * lib/encodings_extra.def (TDS565, RISCOS-LATIN1): New encodings.
- * README, man/iconv_open.3: Add CP853, TDS565, RISCOS-LATIN1.
- * tests/Makefile.in (check-extra-yes): Check CP853, TDS565,
- RISCOS-LATIN1.
- * tests/Makefile.msvc (check): Check CP853.
- * tests/CP853.TXT: New file.
- * tests/TDS565.TXT: New file.
- * tests/RISCOS-LATIN1.TXT: New file.
-
- * lib/cp860.h (cp860_wctomb): Optimize.
-
-2002-05-12 Bruno Haible <bruno@clisp.org>
-
- * tools/Makefile (ksc5601.h): Add two extra characters.
- * lib/ksc5601.h: Regenerated.
- * tests/EUC-KR.TXT: Add EURO SIGN and REGISTERED SIGN.
- * tests/CP949.TXT: Likewise.
- * tests/JOHAB.TXT: Likewise.
-
-2002-05-12 Bruno Haible <bruno@clisp.org>
-
- * README: Mention extra encodings.
- * man/iconv_open.3: Likewise. Improve formatting in text and html
- output formats.
-
-2002-05-12 Bruno Haible <bruno@clisp.org>
-
- * tests/SHIFT_JIS.TXT: Renamed from tests/SHIFT-JIS.TXT.
-
-2002-05-12 Bruno Haible <bruno@clisp.org>
-
- * Makefile.devel (AUTOCONF): New variable.
- (AUTOCONF_FILES): Remove autoconf/autoconf.m4f.
- (configure): Use the AUTOCONF variable.
- * autoconf/autoconf: Remove file.
- * autoconf/autoconf.m4: Remove file.
- * autoconf/autoconf.m4f: Remove file.
-
-2002-05-12 Bruno Haible <bruno@clisp.org>
-
- * tools/JISX0213.TXT: New file.
- * tools/cjk_tab_to_h.c (do_jisx0213): New function.
- (main): Accept "jisx0213".
- * tools/Makefile (all): Add jisx0213.h.
- (jisx0213.h): New rule.
- * lib/jisx0213.h: New file, generated by cjk_tab_to_h.
- * lib/euc_jisx0213.h: New file.
- * lib/shift_jisx0213.h: New file.
- * lib/iso2022_jp3.h: New file.
- * lib/converters.h: Include them.
- * lib/encodings_extra.def (EUC-JISX0213, SHIFT_JISX0213,
- ISO-2022-JP-3): New encodings.
- * tests/EUC-JISX0213.TXT: New file.
- * tests/SHIFT_JISX0213.TXT: New file.
- * tests/ISO-2022-JP-3-snippet: New file.
- * tests/ISO-2022-JP-3-snippet.UTF-8: New file.
- * tests/Makefile.in (check-extra): Also check EUC-JISX0213,
- SHIFT_JISX0213, ISO-2022-JP-3.
- * tests/check-stateless: Add support for encodings which contain
- precomposed Unicode characters, by eliminating precomposed characters
- before the comparison.
- * tests/table-from.c (main): Fix usage message.
- * tests/table-to.c (main): Make it work for encodings for which the
- "to" direction is stateful.
-
-2002-05-09 Bruno Haible <bruno@clisp.org>
-
- New configure option --enable-extra-encodings.
- * lib/encodings_extra.def: New file.
- * lib/converters.h: Handle USE_EXTRA.
- * lib/genaliases2.c (main): Handle USE_EXTRA.
- * lib/genflags.c: Define USE_EXTRA.
- (main): Include encodings_extra.def.
- * lib/iconv.c: Handle ENABLE_EXTRA, conditionally set USE_EXTRA.
- Handle USE_EXTRA.
- * lib/config.h.in (ENABLE_EXTRA): New macro.
- * configure.in: Accept option --enable-extra-encodings.
- * Makefile.devel (all): Depend on lib/aliases_extra.h.
- (lib/aliases_extra.h): New rule.
- (lib/flags.h): Depend on lib/encodings_extra.def.
- * tests/Makefile.in (check-extra, check-extra-no, check-extra-yes):
- New rules.
- (check): Invoke check-extra.
- * tests/Makefile.msvc (check): Also check the DOS encodings.
-
- Support for testing the AIX encodings.
- * tests/CP856.TXT: New file.
- * tests/CP922.TXT: New file.
- * tests/CP1046.TXT: New file.
- * tests/CP1124.TXT: New file.
- * tests/CP1129.TXT: New file.
- * tests/CP1161.TXT, tests/CP1161.IRREVERSIBLE.TXT: New files.
- * tests/CP1162.TXT: New file.
- * tests/CP1163.TXT, tests/CP1163.IRREVERSIBLE.TXT: New files.
-
- Support for testing the OSF/1 encodings.
- * tests/DEC-KANJI.TXT: New file.
- * tests/DEC-HANYU.TXT, tests/DEC-HANYU.IRREVERSIBLE.TXT: New files.
-
- Support for testing the DOS encodings.
- * tests/CP437.TXT: New file.
- * tests/CP737.TXT: New file.
- * tests/CP775.TXT: New file.
- * tests/CP852.TXT: New file.
- * tests/CP855.TXT: New file.
- * tests/CP857.TXT: New file.
- * tests/CP858.TXT: New file.
- * tests/CP860.TXT: New file.
- * tests/CP861.TXT: New file.
- * tests/CP863.TXT: New file.
- * tests/CP864.TXT: New file.
- * tests/CP865.TXT: New file.
- * tests/CP869.TXT: New file.
- * tests/CP1125.TXT: New file.
-
-2002-05-09 Bruno Haible <bruno@clisp.org>
-
- Implement more ASCII compatible DOS encodings.
- * tools/Makefile (ALL): Add cp737.h, cp858.h, cp860.h, cp863.h.
- (cp737.h, cp858.h, cp860.h, cp863.h): New rules.
- * lib/cp737.h: New file.
- * lib/cp858.h: New file.
- * lib/cp860.h: New file.
- * lib/cp863.h: New file.
- * lib/converters.h: Include them.
- * lib/encodings_dos.def (CP737, CP858, CP860, CP863): New encodings.
-
-2002-05-09 Bruno Haible <bruno@clisp.org>
-
- Implement new ASCII compatible encodings from IBM.
- * tools/Makefile (ALL): Add cp1161.h, cp1162.h, cp1163.h.
- (cp1161.h, cp1162.h, cp1163.h): New rules.
- * lib/cp1161.h: New file.
- * lib/cp1162.h: New file.
- * lib/cp1163.h: New file.
- * lib/converters.h: Include them.
- * lib/encodings_aix.def (CP1161, CP1162, CP1163): New encodings.
-
-2002-05-09 Bruno Haible <bruno@clisp.org>
-
- Implement and document KOI8-T.
- * tools/Makefile (ALL): Add koi8_t.h.
- (koi8_t.h): New rule.
- * lib/koi8_t.h: New file.
- * lib/converters.h: Include it.
- * lib/encodings.def (KOI8-T): New encoding.
- * README, man/iconv_open.3: Add KOI8-T.
- * tests/Makefile.in (tests): Check KOI8-T.
- * tests/Makefile.os2 (tests): Likewise.
- * tests/Makefile.msvc (tests): Likewise.
- * tests/KOI8-T.TXT: New file.
-
-2002-05-09 Bruno Haible <bruno@clisp.org>
-
- * tools/8bit_tab_to_h.c (main): Update copyright year.
- * tools/cjk_variants.c (main): Likewise.
-
-2002-05-08 Bruno Haible <bruno@clisp.org>
-
- * README.woe32: Renamed from README.win32.
-
-2002-05-08 Bruno Haible <bruno@clisp.org>
-
- * lib/iconv.c: Enable DOS encodings also when compiling for Woe32,
- because the Woe32 consoles use them.
-
-2002-05-04 Bruno Haible <bruno@clisp.org>
-
- * lib/loop_unicode.h (unicode_loop_convert): When quitting the loop
- without writing an output character, restore cd->istate to its value
- before the xxx_mbtowc call. Otherwise we lose some characters during
- CP1255/CP1258/TCVN to Unicode conversion.
- (unicode_loop_reset): Likewise for the xxx_flushwc call.
- * tests/CP1255-snippet, tests/CP1255-snippet.UTF-8: Make the test
- files large enough to test against the bug.
- * tests/CP1258-snippet, tests/CP1258-snippet.UTF-8: Likewise.
- * tests/TCVN-snippet, tests/TCVN-snippet.UTF-8: Likewise.
-
-2002-04-28 Bruno Haible <bruno@clisp.org>
-
- * tools/Makefile (armscii_8.h): Use table from glibc-2.2.90.
- * tests/ARMSCII-8.TXT: Update to glibc-2.2.90 version.
- * tests/ARMSCII-8.IRREVERSIBLE.TXT: Remove 0x0027.
- * lib/armscii_8.h: Regenerated.
-
-2002-04-28 Bruno Haible <bruno@clisp.org>
-
- * src/iconv.c: Include gettext.h.
- (_): New macro.
- (usage, print_version, convert, main): Internationalize.
- (main): Call setlocale, bindtextdomain, textdomain.
- * src/gettext.h: New file, from GNU gettext 0.11.2.
- * src/config.h.in: New file, needed for ENABLE_NLS.
- * src/Makefile.in (datadir, localedir): New variables.
- (iconv): Link with @LTLIBINTL@.
- (iconv.@OBJEXT@): Define LOCALEDIR.
- (distclean): Remove config.h.
- * po: New directory.
- * Makefile.in (all, install, installdirs, uninstall, check,
- mostlyclean, clean, distclean, maintainer-clean): Recurse into the po
- directory.
- * autoconf/mkinstalldirs: New file, from automake-1.5.
- * ABOUT-NLS: New file, from GNU gettext 0.11.2.
- * m4/codeset.m4: New file, from GNU gettext 0.11.2.
- * m4/gettext.m4: New file, from GNU gettext 0.11.2.
- * m4/glibc21.m4: New file, from GNU gettext 0.11.2.
- * m4/isc-posix.m4: New file, from GNU gettext 0.11.2.
- * m4/lcmessage.m4: New file, from GNU gettext 0.11.2.
- * m4/progtest.m4: New file, from GNU gettext 0.11.2.
- * configure.in: Require autoconf-2.52, needed for multiple config.h.in
- files. Use new form of AC_INIT. Invoke AM_GNU_GETTEXT.
- (PACKAGE, VERSION): Define, needed for po/Makefile.in.in.
- * lib/config.h.in (HAVE_LOCALE_H, HAVE_SETLOCALE): Remove.
-
-2002-04-28 gettextize <bug-gnu-gettext@gnu.org>
-
- * configure.in (AC_OUTPUT): Add po/Makefile.in.
-
-2002-04-28 Bruno Haible <bruno@clisp.org>
-
- * m4/eilseq.m4: Renamed from autoconf/eilseq.m4.
- * m4/mbstate_t.m4: Renamed from autoconf/mbstate_t.m4.
- * m4/general.m4: New file, from GNU clisp.
- * m4/proto.m4: New file, from GNU clisp.
- * m4/ranlib.m4: New file, from GNU clisp.
- * m4/install.m4: New file, from GNU clisp.
- * m4/cp.m4: New file, from GNU clisp.
- * m4/ln.m4: New file, from GNU clisp.
- * m4/endian.m4: New file, from GNU clisp.
- * m4/iconv.m4: New file, from GNU gettext 0.11.2.
- * m4/lib-ld.m4: New file, from GNU gettext 0.11.2.
- * m4/lib-link.m4: New file, from GNU gettext 0.11.2.
- * m4/lib-prefix.m4: New file, from GNU gettext 0.11.2.
- * autoconf/config.rpath: New file, from GNU gettext 0.11.2.
- * m4/libtool.m4: New file, based on libtool-1.4.2.
- * Makefile.devel (ACLOCAL): Remove variable.
- (ACSELECT): Remove variable.
- (OTHERMACROS): Remove variable.
- (m4/*.m4): New rules.
- (autoconf/aclocal.m4): Construct using aclocal instead of acselect.
- * configure.in: Invoke AM_ICONV instead of CL_ICONV.
-
-2002-04-06 Bruno Haible <bruno@clisp.org>
-
- Upgrade to Unicode 3.2.
- * tools/cjk_tab_to_h.c (output_title): Bump copyright year.
- (compact_large_charset2uni): Add an argument. Determine optimal shift.
- Copy modified enc->charset2uni table.
- (output_charset2uni): Deal with shift other than 8. Copy encoding, so
- as to not disturb subsequent output_uni2charset[_sparse] call.
- * lib/hkscs.h: Regenerated.
- * tests/BIG5-HKSCS.TXT: Update.
- * tests/BIG5-HKSCS.IRREVERSIBLE.TXT: Update.
-
-2002-04-06 Bruno Haible <bruno@clisp.org>
-
- Upgrade to Unicode 3.2.
- * tools/Makefile (cns11643_1.h, cns11643_2.h, cns11643_3.h,
- cns11643_4a.h, cns11643_4b.h, cns11643_5.h, cns11643_6.h,
- cns11643_7.h, cns11643_15.h, cns11643_inv.h): Use
- CNS11643-Unicode32.TXT instead of CNS11643-Unicode31.TXT.
- * lib/cns11643_3.h: Regenerated.
- * lib/cns11643_4a.h: Regenerated.
- * lib/cns11643_4b.h: Regenerated.
- * lib/cns11643_5.h: Regenerated.
- * lib/cns11643_6.h: Regenerated.
- * lib/cns11643_7.h: Regenerated.
- * lib/cns11643_15.h: Regenerated.
- * lib/cns11643_inv.h: Regenerated.
- * tests/EUC-TW.TXT: Update.
-
-2002-01-17 Bruno Haible <bruno@clisp.org>
-
- * lib/tcvn.h (tcvn_2uni_1): Make it smaller.
- (tcvn_mbtowc): Small optimization.
-
-2002-01-13 Bruno Haible <bruno@clisp.org>
-
- New options -l, -c, -s.
- * src/iconv.c (discard_unconvertible, silent): New variables.
- (usage): Document options -l, -c, -s.
- (print_one): New function.
- (convert): If silent is true, don't print error messages about the
- conversion to stderr. If discard_unconvertible is true, set the
- iconv descriptor to DISCARD_ILSEQ the first time, but make sure to
- return the same return code as when discard_unconvertible is false.
- (main): Accept options -l, -c, -s. Implement option -l.
- * man/iconv.1: Document options -l, -c, -s.
-
-2002-01-13 Bruno Haible <bruno@clisp.org>
-
- Support for "iconv -c".
- * include/iconv.h.in (ICONV_GET_DISCARD_ILSEQ): New macro.
- (ICONV_SET_DISCARD_ILSEQ): Likewise.
- * lib/converters.h (struct conv_struct): New field discard_ilseq.
- * lib/iconv.c (iconv_open): Set discard_ilseq to true if tocode
- has an "//IGNORE" suffix, and to false otherwise.
- (iconvctl): Implement ICONV_GET_DISCARD_ILSEQ, ICONV_SET_DISCARD_ILSEQ.
- * lib/loop_unicode.h (unicode_loop_convert): If discard_ilseq is
- true, skip one input character instead of returning EILSEQ.
- (unicode_loop_reset): Likewise.
- * lib/loop_wchar.h (wchar_from_loop_convert): Likewise.
- (wchar_to_loop_convert): Likewise.
-
-2002-01-13 Bruno Haible <bruno@clisp.org>
-
- Support for "iconv -l".
- * include/iconv.h.in (iconvlist): New declaration.
- * Makefile.devel (lib/aliases.h): Change gperf options.
- * lib/iconv.c (compare_by_index, compare_by_name, iconvlist): New
- functions.
-
-2002-01-06 Bruno Haible <bruno@clisp.org>
-
- * lib/loop_unicode.h (unicode_transliterate): If the transliteration
- fails due to limited output encoding, return RET_ILUNI, not
- RET_TOOSMALL. Reported by Nelson H. F. Beebe <beebe@math.utah.edu>.
- * tests/check-translitfailure: New file.
- * tests/TranslitFail1.ISO-8859-1: New file.
- * tests/Makefile.in (check): Call check-translitfailure.
-
-2001-12-15 Bruno Haible <bruno@clisp.org>
-
- * lib/euc_jp.h (euc_jp_wctomb): Add irreversible mappings for
- Shift_JIS characters 0x5C and 0x7E.
- * tests/EUC-JP.IRREVERSIBLE.TXT: New file.
-
-2001-12-05 Bruno Haible <bruno@clisp.org>
-
- * lib/iconv.c (iconv_open): Recognize the empty encoding name. Avoid
- endless loop if locale_charset() returns the empty string.
- * README, man/iconv_open.3: Add the empty encoding name.
-
-2001-11-10 Bruno Haible <haible@clisp.cons.org>
-
- * lib/Makefile.in (libiconv_plug_linux.so): Allow building it with a
- non-gcc compiler.
-
-2001-10-23 Bruno Haible <haible@clisp.cons.org>
-
- * tools/Makefile (cp1125.h): New target.
- (ALL): Add it.
- * lib/cp1125.h: New file.
- * lib/converters.h: Include it.
- * lib/encodings_dos.def (CP1125): New encoding.
-
-2001-09-08 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/eilseq.m4: New file.
- * Makefile.devel (OTHERMACROS): Add it.
- * configure.in: Call AC_EILSEQ.
- * include/iconv.h.in (EILSEQ): Define to the autoconf determined value.
-
-2001-08-25 Bruno Haible <haible@clisp.cons.org>
-
- Upgrade to autoconf-2.52.
- * autoconf/autoconf: Upgrade to autoconf-2.52.
- * autoconf/acgeneral.m4: Remove file.
- * autoconf/acspecific.m4: Remove file.
- * autoconf/autoconf.m4f: New file, from autoconf-2.52.
- * autoconf/aclocal.m4: Require autoconf-2.52.
- (CL_CANONICAL_HOST): Call AC_CANONICAL_HOST. Don't cache the result,
- AC_CANONICAL_HOST does it itself. Add $SHELL in front of
- $ac_config_guess and $ac_config_sub.
- * Makefile.devel (AUTOCONF_FILES): Remove acgeneral.m4, acspecific.m4.
- Add autoconf.m4f.
- (configure): Use autoconf options -A, -l instead of -m.
- * configure.in: Use AC_CONFIG_SUBDIRS, not AC_OUTPUT_SUBDIRS.
-
-2001-08-05 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/acgeneral.m4 (AC_MSG_RESULTPROTO): Remove macro.
- (AC_LANG_EXTERN): Move to aclocal.m4.
- * autoconf/aclocal.m4 (AC_LANG_EXTERN): Moved here from acgeneral.m4.
- (CL_PROTO): Use AC_MSG_RESULT directly, instead of AC_MSG_RESULTPROTO.
- (CL_SILENT): No need to pushdef AC_MSG_RESULTPROTO.
-
-2001-08-05 Bruno Haible <haible@clisp.cons.org>
-
- Make it possible to build libiconv with CC=gcc CFLAGS="-x c++".
- * lib/loop_wchar.h (wchar_to_loop_convert): Rename local variable
- 'try' to 'incount'.
- * lib/Makefile.in (libiconv_plug_linux.so): Add "-x none" option
- between sources and libs.
- (libiconv_plug_solaris.so) [GCC]: Likewise.
- (libiconv_plug_osf.so) [GCC]: Likewise.
- * src/Makefile.in (iconv.@OBJEXT@): New rule.
- (iconv): Depend on it.
- (clean): Erase *.@OBJEXT@, not *.o.
- * tests/Makefile.in (table-from.@OBJEXT@): New rule.
- (table-from): Depend on it.
- (table-to.@OBJEXT@): New rule.
- (table-to): Depend on it.
- (clean): Erase *.@OBJEXT@, not *.o.
-
-2001-07-28 Bruno Haible <haible@clisp.cons.org>
-
- * tools/Makefile (iso8859_16.h): Generate from the unicode.org table.
- * lib/iso8859_16.h: Regenerated.
- * tests/ISO-8859-16.TXT: Swap the values of 0xA5 and 0xAB.
-
-2001-07-17 Bruno Haible <haible@clisp.cons.org>
-
- * configure.in (VERSION): Define. Needed by djgpp/Makefile.maint.
-
-2001-07-03 Bruno Haible <haible@clisp.cons.org>
-
- * configure.in: Also check for mbsinit.
- * lib/loop_wchar.h (mbsinit): Define to 1 if not defined.
- Needed for SCO 3.2v5.0.2.
-
-2001-06-27 Bruno Haible <haible@clisp.cons.org>
-
- * Version 1.7 released.
-
-2001-06-27 Bruno Haible <haible@clisp.cons.org>
-
- * INSTALL.generic (Particular Systems): Generalize section about
- /usr/local to "most systems".
-
- * lib/Makefile.in (all): Build @PLUGLIB@ before libiconv.la, because
- Solaris cc destroys iconv.o and iconv.lo while building
- libiconv_plug_solaris.so.
- (clean): Remove so_locations, left there by the OSF/1 linker.
-
- * lib/cp1255.h (cp1255_decomp): Use 'signed int' instead of 'int'.
-
- * lib/vietcomb.h (viet_decomp): Use 'unsigned int' instead of
- 'unsigned short'.
-
- * tests/table-from.c: Include string.h.
- * tests/table-to.c: Likewise.
-
-2001-06-26 Bruno Haible <haible@clisp.cons.org>
-
- * tools/Makefile (jisx0208.h): Replace U+005C with U+FF3C.
- (jisx0212.h): Replace U+007E with U+FF5E.
- * lib/jisx0208.h: Regenerated.
- * lib/jisx0212.h: Regenerated.
- * tests/EUC-JP.TXT: Map 0xA1C0 to U+FF3C. Map 0x8FA2B7 to U+FF5E.
- * tests/EUC-JP.IRREVERSIBLE.TXT: Remove file.
- * tests/SHIFT-JIS.TXT: Map 0x815F to U+FF3C.
- * tests/CP932.TXT: Likewise.
- * tests/CP932.IRREVERSIBLE.TXT: 0x815F mapping is now reversible.
-
-2001-06-25 Bruno Haible <haible@clisp.cons.org>
-
- * src/Makefile.in (iconv): Mention $(INCLUDES) before $(CFLAGS) and
- $(CPPFLAGS).
- * src/Makefile.msvc (iconv.exe): Likewise.
- * src/Makefile.os2 (iconv.exe): Likewise.
- * lib/Makefile.in (libiconv_plug_linux.so): Likewise.
- (libiconv_plug_solaris.so): Likewise.
- (libiconv_plug_osf.so): Likewise.
- (iconv.lo): Likewise.
- * lib/Makefile.msvc (iconv.obj): Likewise.
- * lib/Makefile.os2 (iconv.obj): Likewise.
- * tests/Makefile.in (table-from, table-to): Likewise.
- * tests/Makefile.msvc (table-from.exe, table-to.exe): Likewise.
- * tests/Makefile.os2 (table-from.exe, table-to.exe): Likewise.
- (genutf8.exe): Don't use $(INCLUDES).
-
-2001-06-25 Bruno Haible <haible@clisp.cons.org>
-
- * include/iconv.h.in (_LIBICONV_VERSION), README, windows/iconv.rc:
- Bump version number.
- * lib/Makefile.in (LIBICONV_VERSION_INFO): Define to 2:4:0.
-
-2001-06-25 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.devel (OTHERMACROS): Use libtool.m4 in libcharset subdir.
-
-2001-06-25 Bruno Haible <haible@clisp.cons.org>
-
- * lib/encodings.def: Make SHIFT_JIS the primary name of SJIS.
-
-2001-06-08 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/ltmain.sh: Upgrade to libtool-1.4.
- * autoconf/ltconfig: Remove file.
-
-2001-06-08 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/config.guess: Update to GNU version 2001-05-11.
- * autoconf/config.sub: Likewise.
-
-2001-06-03 Bruno Haible <haible@clisp.cons.org>
-
- * lib/loop_unicode.h (unicode_loop_convert): Ignore Unicode 3.1 tag
- characters if they cannot be converted.
- (unicode_loop_reset): Likewise.
- * lib/iso2022_jp2.h (STATE_TAG_NONE, STATE_TAG_LANGUAGE,
- STATE_TAG_LANGUAGE_j, STATE_TAG_LANGUAGE_ja, STATE_TAG_LANGUAGE_k,
- STATE_TAG_LANGUAGE_ko, STATE_TAG_LANGUAGE_z, STATE_TAG_LANGUAGE_zh):
- New macros.
- (SPLIT_STATE, COMBINE_STATE): Different differently for wctomb
- direction.
- (iso2022_jp2_wctomb): Keep track of Unicode 3.1 language tag.
- If "ja", prefer conversion to Japanese character sets. If "zh",
- prefer conversion to GB2312. If "ko", prefer conversion to KSC5601.
-
- * lib/converters.h (RET_ILUNI): Change value from 0 to -1.
- (RET_TOOSMALL): Change value from -1 to -2.
- * lib/loop_unicode.h (unicode_transliterate): Allow xxx_wctomb to
- return 0 written bytes.
-
-2001-06-06 Bruno Haible <haible@clisp.cons.org>
-
- * lib/encodings.def: Align with IANA character-set registry.
- (US-ASCII): Add alias "ANSI_X3.4-1986".
- (ISO-8859-14): Add alias "ISO-CELTIC".
- (JIS_X0208): Add alias "JIS_C6226-1983".
- (BIG5HKSCS): Add alias "BIG5-HKSCS".
- * README, man/iconv_open.3: Rename BIG5HKSCS to BIG5-HKSCS.
- * tests/Makefile.in (check): Likewise.
- * tests/Makefile.os2 (check): Likewise.
- * tests/Makefile.msvc (check): Likewise.
- * tests/BIG5-HKSCS.TXT: Renamed from BIG5HKSCS.TXT.
- * tests/BIG5-HKSCS.IRREVERSIBLE.TXT: Renamed from
- BIG5HKSCS.IRREVERSIBLE.TXT.
-
-2001-06-02 Bruno Haible <haible@clisp.cons.org>
-
- * tools/cjk_tab_to_h.c (Encoding): Add fffd field.
- (is_charset2uni_large, compact_large_charset2uni): New functions.
- (find_charset2uni_pages): Use enc->fffd instead of 0xfffd.
- (output_charset2uni): If mapping to more than the Unicode BMP,
- use an extra indirection to keep each value in 16 bits.
- (invert): Bump limit from U+10000 to U+30000.
- (output_uni2charset_dense): Likewise.
- (output_uni2charset_sparse): Likewise. If mapping to more than one
- CJK plane, use three bytes per value instead of two bytes.
- (byte_row_cns11643): Allow more than 3 CJK planes.
- (do_cns11643_only_uni2charset): Increase number of rows, to include
- plane 15. Remove plane bits hack.
- (main): Accept names cns11643_4a,4b,5,6,7,15 as well.
- * tools/Makefile (ALL): Add cns11643_4a.h, cns11643_4b.h, cns11643_5.h,
- cns11643_6.h, cns11643_7.h, cns11643_15.h.
- (cns11643_1.h, cns11643_2.h, cns11643_3.h): Use new Unicode 3.1
- derived table.
- (cns11643_4a.h, cns11643_4b.h, cns11643_5.h, cns11643_6.h,
- cns11643_7.h, cns11643_15.h): New rules.
- (cns11643_inv.h): Change title.
- * lib/cns11643_1.h: Regenerated from Unicode 3.1 derived table.
- * lib/cns11643_3.h: Likewise.
- * lib/cns11643_4a.h: New file.
- * lib/cns11643_4b.h: New file.
- * lib/cns11643_4.h: New file.
- * lib/cns11643_5.h: New file.
- * lib/cns11643_6.h: New file.
- * lib/cns11643_7.h: New file.
- * lib/cns11643_15.h: New file.
- * lib/cns11643_inv.h: Regenerated from Unicode 3.1 derived table.
- (cns11643_inv_wctomb): Return 3 bytes now.
- * lib/cns11643.h: Include cns11643_4.h, cns11643_5.h, cns11643_6.h,
- cns11643_7.h, cns11643_15.h.
- (cns11643_wctomb): Now a simple alias to cns11643_inv_wctomb. Return
- plane number starting at 1, not 0.
- * lib/dec_hanyu.h (dec_hanyu_wctomb): Update for cns11643_wctomb
- change.
- * lib/euc_tw.h (euc_tw_mbtowc): Accept CNS11643 planes 4,5,6,7,15 as
- well.
- (euc_tw_wctomb): Update for cns11643_wctomb change.
- * lib/iso2022_cn.h (iso2022_cn_wctomb): Likewise.
- * lib/iso2022_cnext.h (iso2022_cn_ext_mbtowc): Accept CNS11643 planes
- 4,5,6,7 as well.
- (iso2022_cn_ext_wctomb): Update for cns11643_wctomb change.
- Try CNS11643 planes 4,5,6,7 as well.
- * tests/EUC-TW.TXT: Many additions, mostly in planes 3,4,5,6,7,15.
- * tests/EUC-TW.IRREVERSIBLE.TXT: Reflect additions to CNS11643 plane 1.
- Add U+5344.
-
-2001-06-01 Bruno Haible <haible@clisp.cons.org>
-
- * tests/table-from.c (bmp_only): New variable.
- (ucs4_decode): If bmp_only, don't return characters outside Unicode
- plane 0.
- (main): When testing UTF-8 or GB18030, set bmp_only to 1. Don't print
- a conversion line if ucs4_decode returns NULL.
- * tests/table-to.c (main): When testing encodings other than UTF-8 and
- GB18030, loop upto U+30000 instead of U+10000.
-
-2001-05-24 Bruno Haible <haible@clisp.cons.org>
-
- * lib/converters.h (mbtowc_funcs): Add flushwc member function.
- * lib/flushwc.h: New file.
- * lib/cp1255.h: Include flushwc.h.
- (cp1255_comp_table_data, cp1255_comp_table): New arrays.
- (cp1255_mbtowc): Compose base and combining characters.
- (cp1255_flushwc): New macro.
- * lib/vietcomb.h (viet_comp_table_data, viet_comp_table): New arrays.
- * lib/cp1258.h: Include flushwc.h.
- (cp1258_mbtowc): Compose base and combining characters.
- (cp1258_flushwc): New macro.
- * lib/tcvn.h: Include flushwc.h.
- (tcvn_mbtowc): Compose base and combining characters.
- (tcvn_flushwc): New macro.
- * lib/loop_unicode.h: (unicode_transliterate): New function, extracted
- from unicode_loop_convert.
- (unicode_loop_convert): Use unicode_transliterate.
- (unicode_loop_reset): Call xxx_flushwc and output the resulting
- character.
- * lib/encodings.def: Add xxx_flushwc member.
- * lib/encodings_aix.def: Likewise.
- * lib/encodings_dos.def: Likewise.
- * lib/encodings_local.def: Likewise.
- * lib/encodings_osf1.def: Likewise.
- * lib/genaliases.c: Add an argument to the DEFENCODING macro.
- * lib/genaliases2.c: Likewise.
- * lib/genflags.c: Likewise.
- * lib/iconv.c: Likewise.
- * tests/table-from.c (try): Reset the iconv descriptor before the main
- call, and flush it afterwards.
- (ucs4_decode): New function.
- (main): Allow up to 3 Unicode characters output. Call ucs4_decode.
- * tests/CP1255-snippet: New file.
- * tests/CP1255-snippet.UTF-8: New file.
- * tests/CP1258-snippet: New file.
- * tests/CP1258-snippet.UTF-8: New file.
- * tests/TCVN-snippet: New file.
- * tests/TCVN-snippet.UTF-8: New file.
- * tests/Makefile.in (check): Check combining behaviour of CP1255,
- CP1258, TCVN.
- * tests/Makefile.msvc (check): Likewise.
- * tests/Makefile.os2 (check): Likewise.
-
-2001-05-22 Bruno Haible <haible@clisp.cons.org>
-
- * lib/converters.h (RET_ILUNI): New macro.
- (RET_ILSEQ): Change value to -1.
- (RET_TOOFEW): Change value.
- * lib/loop_unicode.h (unicode_loop_convert): Write RET_ILUNI instead
- of 0. Update handling of xxx_mbtowc return value.
- * lib/genflags.c (emit_encoding): Likewise.
- * lib/ascii.h (ascii_wctomb): Use RET_ILUNI instead of RET_ILSEQ.
- * lib/armscii_8.h (armscii_8_wctomb): Likewise.
- * lib/big5.h (big5_wctomb): Likewise.
- * lib/big5hkscs.h (big5hkscs_wctomb): Likewise.
- * lib/ces_big5.h (ces_big5_wctomb): Likewise.
- * lib/ces_gbk.h (ces_gbk_wctomb): Likewise.
- * lib/cns11643.h (cns11643_wctomb): Likewise.
- * lib/cns11643_inv.h (cns11643_inv_wctomb): Likewise.
- * lib/cp437.h (cp437_wctomb): Likewise.
- * lib/cp775.h (cp775_wctomb): Likewise.
- * lib/cp850.h (cp850_wctomb): Likewise.
- * lib/cp852.h (cp852_wctomb): Likewise.
- * lib/cp855.h (cp855_wctomb): Likewise.
- * lib/cp856.h (cp856_wctomb): Likewise.
- * lib/cp857.h (cp857_wctomb): Likewise.
- * lib/cp861.h (cp861_wctomb): Likewise.
- * lib/cp862.h (cp862_wctomb): Likewise.
- * lib/cp864.h (cp864_wctomb): Likewise.
- * lib/cp865.h (cp865_wctomb): Likewise.
- * lib/cp866.h (cp866_wctomb): Likewise.
- * lib/cp869.h (cp869_wctomb): Likewise.
- * lib/cp874.h (cp874_wctomb): Likewise.
- * lib/cp922.h (cp922_wctomb): Likewise.
- * lib/cp932ext.h (cp932ext_wctomb): Likewise.
- * lib/cp932.h (cp932_wctomb): Likewise.
- * lib/cp936ext.h (cp936ext_wctomb): Likewise.
- * lib/cp949.h (cp949_wctomb): Likewise.
- * lib/cp950ext.h (cp950ext_wctomb): Likewise.
- * lib/cp950.h (cp950_wctomb): Likewise.
- * lib/cp1046.h (cp1046_wctomb): Likewise.
- * lib/cp1124.h (cp1124_wctomb): Likewise.
- * lib/cp1129.h (cp1129_wctomb): Likewise.
- * lib/cp1133.h (cp1133_wctomb): Likewise.
- * lib/cp1250.h (cp1250_wctomb): Likewise.
- * lib/cp1251.h (cp1251_wctomb): Likewise.
- * lib/cp1252.h (cp1252_wctomb): Likewise.
- * lib/cp1253.h (cp1253_wctomb): Likewise.
- * lib/cp1254.h (cp1254_wctomb): Likewise.
- * lib/cp1255.h (cp1255_wctomb): Likewise.
- * lib/cp1256.h (cp1256_wctomb): Likewise.
- * lib/cp1257.h (cp1257_wctomb): Likewise.
- * lib/cp1258.h (cp1258_wctomb): Likewise.
- * lib/dec_hanyu.h (dec_hanyu_wctomb): Likewise.
- * lib/dec_kanji.h (dec_kanji_wctomb): Likewise.
- * lib/euc_cn.h (euc_cn_wctomb): Likewise.
- * lib/euc_jp.h (euc_jp_wctomb): Likewise.
- * lib/euc_kr.h (euc_kr_wctomb): Likewise.
- * lib/euc_tw.h (euc_tw_wctomb): Likewise.
- * lib/gb12345ext.h (gb12345ext_wctomb): Likewise.
- * lib/gb12345.h (gb12345_wctomb): Likewise.
- * lib/gb18030ext.h (gb18030ext_wctomb): Likewise.
- * lib/gb18030.h (gb18030_wctomb): Likewise.
- * lib/gb18030uni.h (gb18030uni_wctomb): Likewise.
- * lib/gb2312.h (gb2312_wctomb): Likewise.
- * lib/gbkext_inv.h (gbkext_inv_wctomb): Likewise.
- * lib/gbk.h (gbk_wctomb): Likewise.
- * lib/georgian_academy.h (georgian_academy_wctomb): Likewise.
- * lib/georgian_ps.h (georgian_ps_wctomb): Likewise.
- * lib/hkscs.h (hkscs_wctomb): Likewise.
- * lib/hp_roman8.h (hp_roman8_wctomb): Likewise.
- * lib/hz.h (hz_wctomb): Likewise.
- * lib/iso2022_cnext.h (iso2022_cn_ext_wctomb): Likewise.
- * lib/iso2022_cn.h (iso2022_cn_wctomb): Likewise.
- * lib/iso2022_jp1.h (iso2022_jp1_wctomb): Likewise.
- * lib/iso2022_jp2.h (iso2022_jp2_wctomb): Likewise.
- * lib/iso2022_jp.h (iso2022_jp_wctomb): Likewise.
- * lib/iso2022_kr.h (iso2022_kr_wctomb): Likewise.
- * lib/iso646_cn.h (iso646_cn_wctomb): Likewise.
- * lib/iso646_jp.h (iso646_jp_wctomb): Likewise.
- * lib/iso8859_1.h (iso8859_1_wctomb): Likewise.
- * lib/iso8859_2.h (iso8859_2_wctomb): Likewise.
- * lib/iso8859_3.h (iso8859_3_wctomb): Likewise.
- * lib/iso8859_4.h (iso8859_4_wctomb): Likewise.
- * lib/iso8859_5.h (iso8859_5_wctomb): Likewise.
- * lib/iso8859_6.h (iso8859_6_wctomb): Likewise.
- * lib/iso8859_7.h (iso8859_7_wctomb): Likewise.
- * lib/iso8859_8.h (iso8859_8_wctomb): Likewise.
- * lib/iso8859_9.h (iso8859_9_wctomb): Likewise.
- * lib/iso8859_10.h (iso8859_10_wctomb): Likewise.
- * lib/iso8859_13.h (iso8859_13_wctomb): Likewise.
- * lib/iso8859_14.h (iso8859_14_wctomb): Likewise.
- * lib/iso8859_15.h (iso8859_15_wctomb): Likewise.
- * lib/iso8859_16.h (iso8859_16_wctomb): Likewise.
- * lib/isoir165ext.h (isoir165ext_wctomb): Likewise.
- * lib/isoir165.h (isoir165_wctomb): Likewise.
- * lib/jisx0201.h (jisx0201_wctomb): Likewise.
- * lib/jisx0208.h (jisx0208_wctomb): Likewise.
- * lib/jisx0212.h (jisx0212_wctomb): Likewise.
- * lib/johab.h (johab_wctomb): Likewise.
- * lib/johab_hangul.h (johab_hangul_wctomb, johab_hangul_decompose):
- Likewise.
- * lib/koi8_r.h (koi8_r_wctomb): Likewise.
- * lib/koi8_ru.h (koi8_ru_wctomb): Likewise.
- * lib/koi8_u.h (koi8_u_wctomb): Likewise.
- * lib/ksc5601.h (ksc5601_wctomb): Likewise.
- * lib/mac_arabic.h (mac_arabic_wctomb): Likewise.
- * lib/mac_centraleurope.h (mac_centraleurope_wctomb): Likewise.
- * lib/mac_croatian.h (mac_croatian_wctomb): Likewise.
- * lib/mac_cyrillic.h (mac_cyrillic_wctomb): Likewise.
- * lib/mac_greek.h (mac_greek_wctomb): Likewise.
- * lib/mac_hebrew.h (mac_hebrew_wctomb): Likewise.
- * lib/mac_iceland.h (mac_iceland_wctomb): Likewise.
- * lib/mac_roman.h (mac_roman_wctomb): Likewise.
- * lib/mac_romania.h (mac_romania_wctomb): Likewise.
- * lib/mac_thai.h (mac_thai_wctomb): Likewise.
- * lib/mac_turkish.h (mac_turkish_wctomb): Likewise.
- * lib/mac_ukraine.h (mac_ukraine_wctomb): Likewise.
- * lib/mulelao.h (mulelao_wctomb): Likewise.
- * lib/nextstep.h (nextstep_wctomb): Likewise.
- * lib/sjis.h (sjis_wctomb): Likewise.
- * lib/tcvn.h (tcvn_wctomb): Likewise.
- * lib/tis620.h (tis620_wctomb): Likewise.
- * lib/ucs2be.h (ucs2be_wctomb): Likewise.
- * lib/ucs2.h (ucs2_wctomb): Likewise.
- * lib/ucs2internal.h (ucs2internal_wctomb): Likewise.
- * lib/ucs2le.h (ucs2le_wctomb): Likewise.
- * lib/ucs2swapped.h (ucs2swapped_wctomb): Likewise.
- * lib/ucs4.h (ucs4_wctomb): Likewise.
- * lib/uhc_1.h (uhc_1_wctomb): Likewise.
- * lib/uhc_2.h (uhc_2_wctomb): Likewise.
- * lib/utf16be.h (utf16be_wctomb): Likewise.
- * lib/utf16.h (utf16_wctomb): Likewise.
- * lib/utf16le.h (utf16le_wctomb): Likewise.
- * lib/utf32be.h (utf32be_wctomb): Likewise.
- * lib/utf32.h (utf32_wctomb): Likewise.
- * lib/utf32le.h (utf32le_wctomb): Likewise.
- * lib/utf7.h (utf7_wctomb): Likewise.
- * lib/utf8.h (utf8_wctomb): Likewise.
- * lib/viscii.h (viscii_wctomb): Likewise.
- * tools/8bit_tab_to_h.c (main): Likewise.
- * tools/cjk_tab_to_h.c (output_uni2charset_dense,
- output_uni2charset_sparse, do_gb18030uni): Likewise.
-
-2001-05-19 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.devel (all): Add man/{iconv.1,iconv*.3}.html.
- (man/%.html): New rule.
- * man/Makefile.in (docdir, htmldir): New variables.
- (install, installdirs): Install the HTML formatted man pages in
- $(htmldir).
- (uninstall): Uninstall them.
-
-2001-05-20 Bruno Haible <haible@clisp.cons.org>
-
- * lib/cp1255.h (cp1255_decomp_table): New array.
- (cp1255_comb_table): New array.
- (cp1255_wctomb): Decompose Unicode characters.
- * tests/CP1255.IRREVERSIBLE.TXT: New file.
-
-2001-05-13 Bruno Haible <haible@clisp.cons.org>
-
- * lib/vietcomb.h: New file.
- * lib/cp1258.h: Include it.
- (cp1258_comb_table): New array.
- (cp1258_wctomb): Decompose Unicode characters.
- * lib/tcvn.h: Include it.
- (tcvn_comb_table): New array.
- (tcvn_wctomb): Decompose Unicode characters.
- * tests/CP1258.IRREVERSIBLE.TXT: New file.
- * tests/TCVN.IRREVERSIBLE.TXT: New file.
-
-2001-05-06 Bruno Haible <haible@clisp.cons.org>
-
- * lib/Makefile.msvc (config.h): Allow the 'del' command to fail.
- (iconv.lib): Likewise.
-
-2001-05-06 Bruno Haible <haible@clisp.cons.org>
-
- * lib/Makefile.in (CPPFLAGS, LDFLAGS): New variables.
- (CPP): Remove variable.
- (libiconv.la, libiconv_plug_linux.so, libiconv_plug_solaris.so,
- libiconv_plug_osf.so): Use LDFLAGS.
- (libiconv_plug_linux.so, libiconv_plug_solaris.so,
- libiconv_plug_osf.so, iconv.lo): Use CPPFLAGS.
- * lib/Makefile.msvc (CPP): Remove variable.
- * src/Makefile.in (CPPFLAGS, LDFLAGS): New variables.
- (CPP): Remove variable.
- (iconv): Use CPPFLAGS and LDFLAGS.
- * src/Makefile.msvc (CPP): Remove variable.
- * tests/Makefile.in (CPPFLAGS, LDFLAGS): New variables.
- (check, table-from, table-to): Use CPPFLAGS and LDFLAGS.
- * tests/Makefile.msvc (CPP): Remove variable.
-
-2001-05-06 Bruno Haible <haible@clisp.cons.org>
-
- * lib/Makefile.in (libiconv_plug_solaris.so): Change rule if not using
- gcc. Reported by Paananen Mikko <mikkopa@cs.tut.fi>.
-
-2001-04-11 Bruno Haible <haible@clisp.cons.org>
-
- Implement and document UTF-32, UTF-32BE, UTF-32LE.
- * src/utf32.h, src/utf32be.h, src/utf32le.h: New files.
- * src/converters.h: Include them.
- * src/encodings.def (UTF-32, UTF-32BE, UTF32LE): New encodings.
- * README, man/iconv_open.3: Add UTF-32, UTF-32BE, UTF32LE.
- * tests/Makefile.in (check): Check UTF-32, UTF-32BE, UTF32LE.
- * tests/Makefile.os2 (check): Likewise.
- * tests/Makefile.msvc (check): Likewise.
- * tests/UTF-32*snippet*: New files.
-
- * lib/ucs4.h (ucs4_mbtowc): Fix value of other-endian byte order.
- (ucs4_wctomb): Allow any 31-bit codepoint.
-
-2001-04-11 Bruno Haible <haible@clisp.cons.org>
-
- * tests/GB18030.TXT: Add mappings for all of U+0000..U+FFFF, including
- unassigned code points.
- * tests/table-from.c (main); When dumping GB18030, don't print code
- points larger than U+FFFF.
-
-2001-03-30 Bruno Haible <haible@clisp.cons.org>
-
- * tools/Makefile (GB18030uni.TXT): Use a table source which includes
- the unassigned Unicode code points.
- * lib/gb18030uni.h: Update.
- (gb18030uni_ranges): Remove bitmap_offset field.
- (gb18030uni_bitmap): Remove array.
- (gb18030uni_mbtowc): Omit gb18030uni_bitmap access.
- (gb18030uni_wctomb): Likewise.
- * lib/gb18030.h (gb18030_mbtowc): Handle Unicode characters >= 0x10000.
- (gb18030_wctomb): Likewise.
-
-2001-03-21 Bruno Haible <haible@clisp.cons.org>
-
- * INSTALL.generic (Particular Systems): Add recommendations for AIX 3.
-
-2001-03-21 Bruno Haible <haible@clisp.cons.org>
-
- * src/iconv.c (print_version): Now called GNU libiconv.
-
-2001-03-20 Bruno Haible <haible@clisp.cons.org>
-
- * README: This package is now called GNU libiconv.
-
- * tools/8bit_tab_to_h.c (main): Emit copyright notice to the output
- file.
- * tools/cjk_tab_to_h.c (output_title): Likewise.
- * tools/cjk_variants.c (main): Likewise.
- * lib/gentranslit.c (main): Likewise.
-
-2001-03-19 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/aclocal.m4 (CL_CANONICAL_HOST): Always define
- ac_config_guess and ac_config_sub. Then ignore requests for
- AC_CONFIG_AUX_DIR_DEFAULT or AC_CANONICAL_HOST.
-
-2001-03-10 Bruno Haible <haible@clisp.cons.org>
-
- * INSTALL.generic: New section "Particular Systems".
-
-2001-03-10 Bruno Haible <haible@clisp.cons.org>
-
- * lib/Makefile.in (libiconv.la): Pass flag -no-undefined. Needed on
- platforms like BeOS.
-
- * lib/loop_wchar.h (mbstate_t): Don't typedef if already #defined in
- config.h.
-
-2001-03-06 Bruno Haible <haible@clisp.cons.org>
-
- * Version 1.6 released.
- * include/iconv.h.in (_LIBICONV_VERSION), README, windows/iconv.rc:
- Bump version number.
- * lib/Makefile.in (LIBICONV_VERSION_INFO): Define to 2:3:0.
-
-2001-03-05 Bruno Haible <haible@clisp.cons.org>
-
- Provide all encodings used by OSF/1 5.1 locales.
- * lib/dec_kanji.h: New file.
- * lib/dec_hanyu.h: New file.
- * lib/converters.h: Include them if USE_OSF1 is defined.
- * lib/encodings_osf1.def: New file.
- * lib/genflags.c (main): Include it. Define USE_OSF1.
- * lib/genaliases2.c (main): Include it conditionally.
- * lib/iconv.c: Define USE_OSF1 on OSF/1.
- Include encodings_osf1.def and aliases_osf1.h.
- * lib/Makefile.in (iconv.lo): Depend on encodings_osf1.def and
- aliases_osf1.h.
- * Makefile.devel (lib/aliases_osf1.h): New target.
- (all): Depend on lib/aliases_osf1.h.
- (lib/flags.h): Depend on lib/encodings_osf1.def.
-
-2001-03-01 Bruno Haible <haible@clisp.cons.org>
-
- * tools/Makefile (cp775.h): New target.
- (ALL): Add it.
- * lib/cp775.h: New file.
- * lib/converters.h: Include it.
- * lib/encodings_dos.def (CP775): New encoding.
-
-2001-02-25 Bruno Haible <haible@clisp.cons.org>
-
- * lib/iconv.c (iconv_open): locale_charset() doesn't return NULL any
- more.
-
-2001-02-24 Bruno Haible <haible@clisp.cons.org>
-
- * src/iconv.c (convert): Use ICONV_CONST.
- * tests/table-from.c: Include config.h.
- (try): Use ICONV_CONST.
- * tests/table-to.c: Include config.h.
- (main): Use ICONV_CONST.
- * tests/Makefile.in (INCLUDES): Add -I../lib.
- * tests/Makefile.os2 (INCLUDES): Likewise.
- * tests/Makefile.msvc (INCLUDES): Add -I..\lib.
-
-2001-02-24 Bruno Haible <haible@clisp.cons.org>
-
- Provide all encodings used by DOS locales.
- * tools/Makefile (cp437.h, cp852.h, cp855.h, cp857.h, cp861.h,
- cp864.h, cp865.h, cp869.h): New targets.
- (ALL): Add them.
- * lib/cp437.h: New file.
- * lib/cp852.h: New file.
- * lib/cp855.h: New file.
- * lib/cp857.h: New file.
- * lib/cp861.h: New file.
- * lib/cp864.h: New file.
- * lib/cp865.h: New file.
- * lib/cp869.h: New file.
- * lib/converters.h: Include them if USE_DOS is defined.
- * lib/encodings_dos.def: New file.
- * lib/genflags.c (main): Include it. Define USE_DOS.
- * lib/genaliases2.c (main): Include it conditionally.
- * lib/iconv.c: Define USE_DOS on DJGPP.
- Include encodings_dos.def and aliases_dos.h.
- * lib/Makefile.in (iconv.lo): Depend on encodings_dos.def and
- aliases_dos.h.
- * Makefile.devel (lib/aliases_dos.h): New target.
- (all): Depend on lib/aliases_dos.h.
- (lib/flags.h): Depend on lib/encodings_dos.def.
-
-2001-02-23 Bruno Haible <haible@clisp.cons.org>
-
- * src/iconv.c [DJGPP]: Include <io.h> and <unistd.h>.
- (SET_BINARY) [O_BINARY]: New macro.
- (usage): Mention --binary if available.
- (convert): Use SET_BINARY instead of setmode.
- (main): Likewise.
- Reported by Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>.
-
-2001-02-25 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/ltconfig:
- sed -e 's/reload object files/produce relocatable object files/'.
-
-2001-02-20 Bruno Haible <haible@clisp.cons.org>
-
- * src/iconv.c (usage, main): Make -f and -t options optional.
- * man/iconv.1: Mark them as optional.
-
-2001-02-20 Bruno Haible <haible@clisp.cons.org>
-
- * tools/Makefile (GB18030ext.TXT, GB18030uni.TXT): Generate from
- glibc-2.2.2 table.
- * lib/gb18030uni.h, lib/gb18030ext.h: Add mapping 0xA989 -> U+303E,
- 0xFE5E -> U+2E97. Shift the entire four-byte range.
- * tests/GB18030.TXT: Regenerated.
-
-2001-02-20 Bruno Haible <haible@clisp.cons.org>
-
- Better support for DOS/Windows platforms.
- * autoconf/ltconfig: Upgrade to libtool-1.3.5.
- * autoconf/ltmain.sh: Likewise.
- * autoconf/aclocal.m4: Likewise.
- * autoconf/install-sh: New file.
- * configure.in: Call AC_OBJEXT and AC_EXEEXT. Call AC_CONFIG_AUX_DIR.
-
-2001-02-20 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (libdir, includedir, mandir): Use the autoconf
- determined value, in order to respect the configure arguments.
- * lib/Makefile.in (libdir): Likewise.
- * src/Makefile.in (bindir): Likewise.
- * man/Makefile.in (mandir): Likewise.
-
-2001-02-04 Bruno Haible <haible@clisp.cons.org>
-
- * lib/translit.def: Add all the neutral transliterations from glibc.
- * lib/gentranslit.c (main): Allow UTF-8 replacements which are in
- UCS-2 but not in ISO-8859-1. Generate a table of 'unsigned short'.
- Avoid accessing data[-1].
- * lib/loop_unicode.h (unicode_loop_convert): Change type of pointer
- into translit_data.
-
-2001-01-05 Bruno Haible <haible@clisp.cons.org>
-
- Implement and document CP862.
- * tools/Makefile (ALL): Add cp862.h.
- (cp862.h): New target.
- * lib/cp862.h: New file.
- * lib/converters.h: Include it.
- * lib/encodings.def (CP862): New encoding.
- * README, man/iconv_open.3: Add CP862.
- * tests/Makefile.in (check): Check CP862.
- * tests/Makefile.msvc (check): Likewise.
- * tests/Makefile.os2 (check): Likewise.
- * tests/CP862.TXT: New file.
-
-2000-12-18 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/mbstate_t.m4: New file, from textutils-2.0.10.
- * Makefile.devel (OTHERMACROS): Add it.
- * configure.in: Call AC_MBSTATE_T.
- * lib/config.h.in (mbstate_t): New definition.
- * lib/loop_wchar.h (mbrtowc): For BeOS, declare and define fallback.
-
-2000-12-12 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in: Use $(MAKE) instead of $(MAKE) -r. Needed with Solaris
- "make", which doesn't set MAKE as expected by @SET_MAKE@ if -r is
- given. Reported by Toshimitsu Fujiwara.
-
-2000-12-08 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (exec_prefix): Use configure's --exec-prefix argument.
- * lib/Makefile.in (exec_prefix): Likewise.
- * src/Makefile.in (exec_prefix): Likewise.
- * man/Makefile.in (exec_prefix): Likewise.
-
-2000-12-02 Bruno Haible <haible@clisp.cons.org>
-
- * Version 1.5 released.
- * include/iconv.h.in (_LIBICONV_VERSION), README, windows/iconv.rc:
- Bump version number.
- * lib/Makefile.in (LIBICONV_VERSION_INFO): Define to 2:2:0.
-
-2000-12-02 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (mostlyclean, clean, distclean, maintainer-clean):
- Remove files installed in lib by libcharset.
- * Makefile.msvc (mostlyclean): Likewise.
-
- * Makefile.in (check): Depend on target 'all'.
- * Makefile.os2 (check): Likewise.
- * Makefile.msvc (check): Depend on target 'force' as well.
-
- * src/iconv.c (usage): Take an exitcode argument.
- (print_version): New function.
- (main): Recognize --help and --version command line options.
-
-2000-12-02 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc: Replace STATIC with its opposite flag, DLL.
- * lib/Makefile.msvc: Likewise.
- * src/Makefile.msvc: Likewise.
- * tests/Makefile.msvc: Likewise.
-
-2000-12-01 Bruno Haible <haible@clisp.cons.org>
-
- * src/iconv.c: Include <fcntl.h>. Define fallbacks for setmode, fileno.
- (force_binary): New variable.
- (convert): If requested, set the input O_BINARY.
- (main): Accept --binary option. If requested, set the output O_BINARY.
- * tests/check-stateful.bat: Pass --binary to iconv.
- * tests/check-stateful.cmd: Likewise.
- * tests/check-translit.bat: Likewise.
- * tests/check-translit.cmd: Likewise.
-
-2000-12-01 Bruno Haible <haible@clisp.cons.org>
-
- * include/iconv.h.in (_libiconv_version): New declaration.
- * lib/iconv.c (_libiconv_version): New variable.
-
-2000-11-30 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc (all): File now named lib/libcharset.h.
- (clean, distclean, maintainer-clean): Likewise.
-
-2000-11-23 Bruno Haible <haible@clisp.cons.org>
-
- * lib/*: Move here all files from src/*.
- * src/*: Move all files to lib.
- * lib/Makefile.in (distclean): No need to remove config.status,
- config.log, config.cache.
- * configure.in: Require lib/iconv.c, not src/iconv.c. Create
- lib/config.h, not src/config.h. Also create lib/Makefile.
- * Makefile.in (all): Install libcharset into lib, not src. Recurse
- into lib and src.
- (install-lib): Recurse into lib, not src.
- (install): Recurse into libcharset, lib and src.
- (installdirs, uninstall): Likewise.
- (check, mostlyclean, clean, distclean, maintainer-clean): Likewise.
- * Makefile.msvc (all): Recurse into lib and src.
- (install): Recurse into libcharset, lib and src.
- (installdirs, uninstall): Likewise.
- (check, mostlyclean, clean, distclean, maintainer-clean): Likewise.
- * Makefile.os2 (all): Recurse into lib and src.
- (install-lib): Recurse into lib, not src.
- (install, uninstall): Recurse into lib and src.
- (check, mostlyclean, clean, distclean, maintainer-clean): Likewise.
- * Makefile.devel (lib/config.h.msvc): Renamed from src/config.h.msvc.
- (lib/aliases.h): Renamed from src/aliases.h.
- (lib/aliases.gperf): Renamed from src/aliases.gperf.
- (lib/aliases_aix.h): Renamed from src/aliases_aix.h.
- (lib/flags.h): Renamed from src/flags.h.
- (lib/translit.h): Renamed from src/translit.h.
- * src/iconv.c: Moved here from tests/iconv.c.
- * src/Makefile.in: New file.
- * src/Makefile.msvc: New file.
- * src/Makefile.os2: New file.
- * tests/Makefile.in (iconv): Remove target.
- (../lib/libiconv.la): Renamed from ../src/libiconv.la.
- (clean): No need to remove iconv.
- * tests/Makefile.msvc (iconv.exe): Remove target.
- * tests/Makefile.os2 (iconv.exe): Likewise.
- * tests/check-stateful: iconv is in ../src.
- * tests/check-stateful.bat: Likewise.
- * tests/check-stateful.cmd: Likewise.
- * tests/check-translit: iconv is in ../src.
- * tests/check-translit.bat: Likewise.
- * tests/check-translit.cmd: Likewise.
- * man/iconv.1: New file.
- * man/Makefile.in (install, installdirs, uninstall): Also install *.1
- man pages.
- * man/Makefile.os2 (MAN3): Renamed from MAN.
- (MAN1): New variable.
- (install, uninstall): Also install *.1 man pages.
-
-2000-11-21 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc (all, check, mostlyclean, clean, distclean,
- maintainer-clean): Recurse into libcharset.
- (clean, distclean, maintainer-clean): Remove src\libcharset.h.
- * src/Makefile.msvc (LIBCHARSET_OBJECTS): New variable.
- (iconv.lib): Link with $(LIBCHARSET_OBJECTS).
-
-2000-11-18 Bruno Haible <haible@clisp.cons.org>
-
- * src/cp950.h (cp950_mbtowc, cp950_wctomb): Change implementation
- so that it agrees with Microsoft's definition of CP950.
- * tests/CP950.TXT: Likewise.
- * tests/CP950.IRREVERSIBLE.TXT: Add 0xA244, 0xA2CC, 0xA2CE.
-
-2000-11-18 Bruno Haible <haible@clisp.cons.org>
-
- Add support for locale dependent "char" and "wchar_t" encodings.
- * libcharset: New subdirectory.
- * src/loop_unicode.h: New file, extracted from src/iconv.c.
- * src/loop_wchar.h: New file.
- * src/loops.h: New file. Include loop_unicode.h and loop_wchar.h.
- * src/encodings_local.def: New file.
- * src/genaliases.c: Also create aliases for encodings_local.def.
- * src/converters.h (conv_struct): Add lfuncs field.
- * src/genflags.c: Add dummy definitions of struct loop_funcs.
- * src/iconv.c: Include libcharset.h.
- (loop_funcs): New structure.
- Treat encodings_local.def like encodings.def.
- Include loops.h.
- (iconv_open): Move the bulk of the code to loop_unicode.h.
- (iconv): Likewise.
- (iconvctl): Extend determination of TRIVIALP to wchar_t conversion
- descriptors.
- * src/Makefile.in (PLUG_SOURCES): Remove variable.
- (LIBCHARSET_OBJECTS): New variable.
- (libiconv.la): Link in the LIBCHARSET_OBJECTS.
- (libiconv_plug_linux.so, libiconv_plug_solaris.so,
- libiconv_plug_osf.so): Link in the LIBCHARSET_OBJECTS, using
- LIBTOOL_LINK.
- (iconv.lo): Depend on encodings_local.def.
- * src/Makefile.msvc (iconv.obj): Depend on encodings_local.def.
- * src/Makefile.os2 (iconv.obj): Likewise.
- * configure.in: Add tests for locale.h, mbrtowc, wcrtomb, setlocale.
- Recurse into libcharset.
- * src/config.h.in (HAVE_LOCALE_H, HAVE_MBRTOWC, HAVE_WCRTOMB,
- HAVE_SETLOCALE): New macros.
- * tests/iconv.c: Include config.h and locale.h.
- (main): Call setlocale.
- * tests/Makefile.in (iconv): Search for config.h in ../src.
- * tests/Makefile.os2 (iconv.exe): Likewise.
- * tests/Makefile.msvc (iconv.exe): Likewise.
- * README, man/iconv_open.3: Document "char" and "wchar_t" encodings.
- * Makefile.in: After "cd", use "&&" not ";".
- (all, check, mostlyclean, clean, distclean, maintainer-clean):
- Recurse into libcharset.
- * Makefile.devel (all): Recurse into libcharset.
- (src/aliases.gperf): Depend on src/encodings_local.def.
-
-2000-11-18 Bruno Haible <haible@clisp.cons.org>
-
- * src/converters.h (ucs4_t): New type.
- (wchar_t): Remove locally defined override.
- (mbtowc_funcs, wctomb_funcs): Use ucs4_t instead of wchar_t.
- * src/iconv.c (iconv): Likewise.
- * src/genflags.c (emit_encoding): Use ucs4_t instead of wchar_t.
- * tools/8bit_tab_to_h.c: Use "ucs4_t" instead of "wchar_t".
- * tools/cjk_tab_to_h.c: Likewise.
- * src/armscii_8.h: Use ucs4_t instead of wchar_t.
- * src/ascii.h: Likewise.
- * src/big5.h: Likewise.
- * src/big5hkscs.h: Likewise.
- * src/ces_big5.h: Likewise.
- * src/ces_gbk.h: Likewise.
- * src/cns11643.h: Likewise.
- * src/cns11643_1.h: Likewise.
- * src/cns11643_2.h: Likewise.
- * src/cns11643_3.h: Likewise.
- * src/cns11643_inv.h: Likewise.
- * src/cp1046.h: Likewise.
- * src/cp1124.h: Likewise.
- * src/cp1129.h: Likewise.
- * src/cp1133.h: Likewise.
- * src/cp1250.h: Likewise.
- * src/cp1251.h: Likewise.
- * src/cp1252.h: Likewise.
- * src/cp1253.h: Likewise.
- * src/cp1254.h: Likewise.
- * src/cp1255.h: Likewise.
- * src/cp1256.h: Likewise.
- * src/cp1257.h: Likewise.
- * src/cp1258.h: Likewise.
- * src/cp850.h: Likewise.
- * src/cp856.h: Likewise.
- * src/cp866.h: Likewise.
- * src/cp874.h: Likewise.
- * src/cp922.h: Likewise.
- * src/cp932.h: Likewise.
- * src/cp932ext.h: Likewise.
- * src/cp936ext.h: Likewise.
- * src/cp949.h: Likewise.
- * src/cp950.h: Likewise.
- * src/cp950ext.h: Likewise.
- * src/euc_cn.h: Likewise.
- * src/euc_jp.h: Likewise.
- * src/euc_kr.h: Likewise.
- * src/euc_tw.h: Likewise.
- * src/gb12345.h: Likewise.
- * src/gb12345ext.h: Likewise.
- * src/gb18030.h: Likewise.
- * src/gb18030ext.h: Likewise.
- * src/gb18030uni.h: Likewise.
- * src/gb2312.h: Likewise.
- * src/gbk.h: Likewise.
- * src/gbkext1.h: Likewise.
- * src/gbkext2.h: Likewise.
- * src/gbkext_inv.h: Likewise.
- * src/georgian_academy.h: Likewise.
- * src/georgian_ps.h: Likewise.
- * src/hkscs.h: Likewise.
- * src/hp_roman8.h: Likewise.
- * src/hz.h: Likewise.
- * src/iso2022_cn.h: Likewise.
- * src/iso2022_cnext.h: Likewise.
- * src/iso2022_jp.h: Likewise.
- * src/iso2022_jp1.h: Likewise.
- * src/iso2022_jp2.h: Likewise.
- * src/iso2022_kr.h: Likewise.
- * src/iso646_cn.h: Likewise.
- * src/iso646_jp.h: Likewise.
- * src/iso8859_1.h: Likewise.
- * src/iso8859_10.h: Likewise.
- * src/iso8859_13.h: Likewise.
- * src/iso8859_14.h: Likewise.
- * src/iso8859_15.h: Likewise.
- * src/iso8859_16.h: Likewise.
- * src/iso8859_2.h: Likewise.
- * src/iso8859_3.h: Likewise.
- * src/iso8859_4.h: Likewise.
- * src/iso8859_5.h: Likewise.
- * src/iso8859_6.h: Likewise.
- * src/iso8859_7.h: Likewise.
- * src/iso8859_8.h: Likewise.
- * src/iso8859_9.h: Likewise.
- * src/isoir165.h: Likewise.
- * src/isoir165ext.h: Likewise.
- * src/java.h: Likewise.
- * src/jisx0201.h: Likewise.
- * src/jisx0208.h: Likewise.
- * src/jisx0212.h: Likewise.
- * src/johab.h: Likewise.
- * src/johab_hangul.h: Likewise.
- * src/koi8_r.h: Likewise.
- * src/koi8_ru.h: Likewise.
- * src/koi8_u.h: Likewise.
- * src/ksc5601.h: Likewise.
- * src/mac_arabic.h: Likewise.
- * src/mac_centraleurope.h: Likewise.
- * src/mac_croatian.h: Likewise.
- * src/mac_cyrillic.h: Likewise.
- * src/mac_greek.h: Likewise.
- * src/mac_hebrew.h: Likewise.
- * src/mac_iceland.h: Likewise.
- * src/mac_roman.h: Likewise.
- * src/mac_romania.h: Likewise.
- * src/mac_thai.h: Likewise.
- * src/mac_turkish.h: Likewise.
- * src/mac_ukraine.h: Likewise.
- * src/mulelao.h: Likewise.
- * src/nextstep.h: Likewise.
- * src/sjis.h: Likewise.
- * src/tcvn.h: Likewise.
- * src/tis620.h: Likewise.
- * src/ucs2.h: Likewise.
- * src/ucs2be.h: Likewise.
- * src/ucs2internal.h: Likewise.
- * src/ucs2le.h: Likewise.
- * src/ucs2swapped.h: Likewise.
- * src/ucs4.h: Likewise.
- * src/ucs4be.h: Likewise.
- * src/ucs4internal.h: Likewise.
- * src/ucs4le.h: Likewise.
- * src/ucs4swapped.h: Likewise.
- * src/uhc_1.h: Likewise.
- * src/uhc_2.h: Likewise.
- * src/utf16.h: Likewise.
- * src/utf16be.h: Likewise.
- * src/utf16le.h: Likewise.
- * src/utf7.h: Likewise.
- * src/utf8.h: Likewise.
- * src/viscii.h: Likewise.
-
-2000-11-18 Bruno Haible <haible@clisp.cons.org>
-
- Make transliteration optional.
- * src/iconv.c (iconv_open): Strip off //TRANSLIT suffix from names.
- Set transliteration on if and only if tocode ends in //TRANSLIT.
- * README, man/iconv_open.3: Document how to enable transliteration.
- * tests/check-translit: Add //TRANSLIT to iconv's 't' argument.
- * tests/check-translit.bat: Likewise.
- * tests/check-translit.cmd: Likewise.
-
-2000-11-18 Bruno Haible <haible@clisp.cons.org>
-
- * man/iconv.3: Fix typo.
-
-2000-10-31 Bruno Haible <haible@clisp.cons.org>
-
- * README, man/iconv_open.3: Document JOHAB again.
-
-2000-11-15 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc: Add support for MFLAGS and DEBUG parameters.
- (STATIC): Change default from 0 to 1.
- * src/Makefile.msvc: Likewise.
- * tests/Makefile.msvc: Likewise.
- * tests/check-stateless.bat: Call 'sort' with no arguments.
-
-2000-11-12 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/config.guess, autoconf/config.sub: Upgrade to newest
- version from GNU CVS.
-
-2000-10-24 Bruno Haible <haible@clisp.cons.org>
-
- * Version 1.4 released.
- * include/iconv.h.in (_LIBICONV_VERSION), README, windows/iconv.rc:
- Bump version number.
- * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 2:1:0.
-
-2000-10-23 Bruno Haible <haible@clisp.cons.org>
-
- Implement and document GB18030 and BIG5HKSCS.
- * tools/cjk_tab_to_h.c (row_byte_hkscs, byte_row_hkscs, do_hkscs): New
- functions.
- (do_gb18030uni): New function.
- (main): Accept gb18030ext, gb18030uni, hkscs.
- * tools/Makefile (ALL): Add gb18030ext.h, gb18030uni.h, hkscs.h.
- (gb18030ext.h, GB18030ext.TXT, gb18030uni.h, GB18030uni.TXT,
- hkscs.h): New targets.
- * src/gb18030ext.h, src/gb18030uni.h, src/gb18030.h: New files.
- * src/hkscs.h, src/big5hkscs.h: New files.
- * src/converters.h: Include gb18030.h and big5hkscs.h.
- * src/encodings.def (GB18030, BIG5HKSCS): New encodings.
- * README, man/iconv_open.3: Add GB18030, BIG5HKSCS.
- * tests/Makefile.in (check): Check GB18030, BIG5HKSCS.
- * tests/Makefile.msvc (check): Likewise.
- * tests/Makefile.os2 (check): Likewise.
- * tests/GB18030.TXT: New file.
- * tests/BIG5HKSCS.TXT, tests/BIG5HKSCS.IRREVERSIBLE.TXT: New files.
-
-2000-10-23 Bruno Haible <haible@clisp.cons.org>
-
- * tests/table-from.c (try, main): Use UCS-4-INTERNAL instead of
- UCS-2-INTERNAL, to avoid problems with UCS-2 surrogate handling.
- * tests/table-to.c (main): Likewise.
-
-2000-10-22 Bruno Haible <haible@clisp.cons.org>
-
- * src/gentranslit.c (main): Read the input in UTF-8 encoding.
-
-2000-10-09 Bruno Haible <haible@clisp.cons.org>
-
- CPU recognition on OpenBSD.
- * autoconf/aclocal.m4 (CL_WORDS_LITTLEENDIAN): Recognize __m68k__,
- __mc68020__, __MIPSEB__, __MIPSEL__, __m88k__ as CPU indicators.
-
-2000-10-03 Bruno Haible <haible@clisp.cons.org>
-
- * src/gentranslit.c (main): Don't output non-ASCII ISO-8859-1
- character literals, use the numeric value instead.
- Reported by Shin-Hsien Yeh <shyeh@alcatel.com.tw>.
-
-2000-09-29 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/aclocal.m4 (CL_CANONICAL_HOST): Fix bug in 2000-05-23
- change.
-
-2000-09-25 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/aclocal.m4 (CL_WORDS_LITTLEENDIAN): Recognize __i386__
- as equivalent to __i386. For OpenBSD.
-
-2000-09-21 Bruno Haible <haible@clisp.cons.org>
-
- * src/utf16.h (utf16_wctomb): Reject single surrogates.
- * src/utf16be.h (utf16be_wctomb): Likewise.
- * src/utf16le.h (utf16le_wctomb): Likewise.
- * src/ucs2.h (ucs2_mbtowc, ucs2_wctomb): Likewise.
- * src/ucs2be.h (ucs2be_mbtowc, ucs2be_wctomb): Likewise.
- * src/ucs2le.h (ucs2le_mbtowc, ucs2le_wctomb): Likewise.
- * src/ucs2internal.h (ucs2internal_mbtowc, ucs2internal_wctomb):
- Likewise.
- * src/ucs2swapped.h (ucs2swapped_mbtowc, ucs2swapped_wctomb):
- Likewise.
-
-2000-09-15 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (install, installdirs, uninstall): Support DESTDIR.
- * src/Makefile.in (install, installdirs, uninstall): Likewise.
- * man/Makefile.in (install, installdirs, uninstall): Likewise.
-
-2000-09-11 Bruno Haible <haible@clisp.cons.org>
-
- * src/utf7.h (utf7_mbtowc): Fix combining of UTF-16 surrogates.
-
-2000-08-26 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/acgeneral.m4 (AC_OUTPUT): Use braces in exec_prefix default
- value, not parens.
-
-2000-07-04 Akira Hatakeyama <akira@sra.co.jp>
- Bruno Haible <haible@clisp.cons.org>
-
- * os2/iconv.def, README.os2, Makefile.os2, src/Makefile.os2,
- tests/Makefile.os2, man/Makefile.os2, tests/check-stateful.cmd,
- tests/check-stateless.cmd, tests/check-translit.cmd: New files.
-
-2000-06-28 Bruno Haible <haible@clisp.cons.org>
-
- * src/ucs2internal.h (ucs2internal_mbtowc): Avoid gcc warning about
- cast.
- * src/ucs4internal.h (ucs4internal_mbtowc): Likewise.
- * src/ucs2swapped.h (ucs2swapped_mbtowc, ucs2swapped_wctomb): Verify
- sizeof(unsigned short).
- * src/ucs4swapped.h (ucs4swapped_mbtowc, ucs4swapped_mbtowc): Verify
- sizeof(unsigned int).
- Reported by François Pinard <pinard@iro.umontreal.ca>.
-
-2000-05-29 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/aclocal.m4 (CL_PROG_INSTALL): Fix typo.
- Reported by Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>.
-
-2000-05-23 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/aclocal.m4 (CL_CANONICAL_HOST): Determine host_cpu,
- host_vendor, host_os correctly if $host has more than two hyphens.
-
-2000-04-15 Bruno Haible <haible@clisp.cons.org>
-
- * Version 1.3 released.
- * include/iconv.h.in (_LIBICONV_VERSION), README, windows/iconv.rc:
- Bump version number.
- * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 2:0:0.
-
-2000-04-15 Bruno Haible <haible@clisp.cons.org>
-
- * THANKS: New file.
- * INSTALL.generic: New file.
-
- Implement and document UCS-2BE, UCS-2LE, UCS-4BE, UCS-4LE.
- * src/ucs2be.h, src/ucs2le.h, src/ucs4be.h, src/ucs4le.h: New files.
- * src/converters.h: Include them.
- * src/ucs2swapped.h: Remove #defines for UCS-2-BE, UCS-2-LE.
- * src/ucs4swapped.h: Remove #defines for UCS-4-BE, UCS-4-LE.
- * src/encodings.def (UCS-2BE): Renamed from UCS-2-BE.
- (UCS-2LE): Renamed from UCS-2-LE.
- (UCS-4BE): Renamed from UCS-4-BE.
- (UCS-4LE): Renamed from UCS-4-LE.
- * Makefile.devel (src/aliases.h): Pass option "-i 1" to gperf.
- * README, man/iconv_open.3: Add UCS-2BE, UCS-2LE, UCS-4BE, UCS-4LE.
- * tests/Makefile.in (check): Check UCS-2BE, UCS-2LE, UCS-4BE, UCS-4LE.
- * tests/Makefile.msvc (check): Likewise.
- * tests/UCS-*snippet*: New files.
-
- Allow building as a shared library on Windows.
- Allow running the tests on Windows.
- * Makefile.devel (include/iconv.h.msvc): Remove rule.
- (include/iconv.h.msvc-static, include/iconv.h.msvc-shared): New
- rules.
- (all): Update.
- * windows/dllexport.h: New file.
- * include/iconv.h.msvc: Remove file.
- * include/iconv.h.msvc-static, include/iconv.h.msvc-shared: New
- autogenerated files.
- * Makefile.msvc (STATIC, DEBUG): Default to 0.
- (all): Choose either include\iconv.h.msvc-static or
- include\iconv.h.msvc-shared.
- (check): Depend on all.
- (all, check, mostlyclean, clean, distclean, maintainer-clean):
- Recurse into tests directory.
- * src/Makefile.msvc (STATIC, DEBUG): Default to 0.
- (WARN_CFLAGS, PICFLAGS, OPTIMFLAGS): New variables.
- (CFLAGS): Use them. Add -MD and -DBUILDING_LIBICONV.
- (RESOURCES): New variable.
- (iconv.lib): Change rule when building DLL.
- (clean, distclean): One filename per line.
- * tests/Makefile.msvc: New file.
- * tests/check-stateful.bat, tests/check-stateless.bat,
- tests/check-translit.bat: New files.
- * tests/uniq-u.c: New file, taken from GNU textutils.
- * README.win32: Update.
- Based on patches by Taro Muraoka <koron@tka.att.ne.jp>.
-
-2000-04-14 Bruno Haible <haible@clisp.cons.org>
-
- Fix an OSF/1 problem.
- * configure.in: Define GCC variable for substitution.
- * src/Makefile.in (libiconv_plug_osf.so): Change rule if not using
- gcc.
-
-2000-04-13 Bruno Haible <haible@clisp.cons.org>
-
- Fix a SunOS 4 problem.
- * include/iconv.h.in: If EILSEQ is not defined by the system, define
- it to ENOENT, not EINVAL.
-
-2000-04-02 Bruno Haible <haible@clisp.cons.org>
-
- Allow building on filesystems lacking symlinks and hard links.
- * Makefile.devel (autoconf/aclocal.m4): Replace AC_PROG_LN_S with
- CL_PROG_LN_S.
- * configure.in: Add CL_PROG_LN, CL_PROG_LN_S.
- * src/Makefile.in (LN): Use autoconfigured value @LN@.
- (LN_S): Use autoconfigured value @LN_S@.
-
-2000-03-15 Bruno Haible <haible@clisp.cons.org>
-
- * Version 1.2 released.
- * include/iconv.h.in (_LIBICONV_VERSION): Bump version number.
- * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 1:1:1.
-
-2000-03-14 Bruno Haible <haible@clisp.cons.org>
-
- Implement and document UTF-16BE and UTF16LE.
- * src/utf16be.h, src/utf16le.h: New files.
- * src/converters.h: Include them.
- * src/encodings.def (UTF-16BE, UTF16LE): New encodings.
- * README, man/iconv_open.3: Add UTF-16BE, UTF16LE.
- * tests/Makefile.in (check): Check UTF-16, UTF-16BE, UTF16LE.
- * tests/UTF-16*snippet*: New files.
-
- * src/utf16.h (utf16_wctomb): Output a byte order mark.
-
-2000-03-13 Bruno Haible <haible@clisp.cons.org>
-
- Provide all encodings used by AIX locales.
- * tools/Makefile (all): Add cp856.h, cp922.h, cp1046.h, cp1124.h,
- cp1129.h.
- (cp856.h, cp922.h, cp1046.h, cp1124.h, cp1129.h): New targets.
- * src/cp856.h, src/cp922.h, src/cp943.h, src/cp1046.h, src/cp1124.h,
- src/cp1129.h: New files.
- * src/converters.h: Include them if USE_AIX is defined.
- * src/encodings_aix.def: New file, with CP856, CP922, CP943, CP1046,
- CP1124, CP1129.
- * src/genflags.c: Define USE_AIX. Include encodings_aix.def.
- * src/genaliases2.c: New file.
- * src/iconv.c: Define USE_AIX on AIX.
- Include encodings_aix.def and aliases_aix.h.
- (aliases2_lookup): New function.
- (iconv_open): Call aliases2_lookup.
- * src/Makefile.in (iconv.lo): Depend on encodings_aix.def and
- aliases_aix.h.
- * Makefile.devel (all): Add src/aliases_aix.h.
- (src/aliases_aix.h): New rule.
- (src/flags.h): Depend on src/encodings_aix.def.
-
-2000-02-24 Bruno Haible <haible@clisp.cons.org>
-
- * src/iconv.c (iconv): Don't write beyond the end of the output buffer.
- Reported by Edmund Grimley Evans <edmundo@rano.org>.
-
-2000-02-22 Bruno Haible <haible@clisp.cons.org>
-
- * src/utf7.h (direct_tab, xdirect_tab): Treat tab like space.
-
-2000-02-15 Bruno Haible <haible@clisp.cons.org>
-
- * src/iconv.c (iconv): Add cast in xxx_reset call.
-
-2000-02-05 Bruno Haible <haible@clisp.cons.org>
-
- * src/tis620.h: Simplify.
-
-2000-01-27 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.devel (CLISP_DIR): Change to "..".
-
-2000-01-24 Bruno Haible <haible@clisp.cons.org>
-
- * Version 1.1 released.
- * include/iconv.h.in (_LIBICONV_VERSION): Bump version number.
- * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 1:0:1.
-
-2000-01-23 Bruno Haible <haible@clisp.cons.org>
-
- * src/utf7.h (utf7_wctomb): If base64 encoding is not active, encode
- '+' as "+-".
-
-2000-01-22 Bruno Haible <haible@clisp.cons.org>
-
- * include/iconv.h.in (iconvctl): New declaration.
- (ICONV_TRIVIALP, ICONV_GET_TRANSLITERATE, ICONV_SET_TRANSLITERATE):
- New macros.
- * src/iconv.c (iconvctl): New function.
-
- * tests/Makefile.in: Add a rule for ../src/libiconv.la. Define $(MAKE).
-
- Solve a build problem.
- * include/iconv.h.in: Renamed from include/libiconv.h.in.
- * Makefile.devel: libiconv.h -> iconv.h.
- * Makefile.in: Likewise.
- * configure.in: Likewise. Remove check for <iconv.h>.
- * src/iconv.c: Include iconv.h instead of libiconv.h.
- * tests/iconv.c, tests/table-from.c, tests/table-to.c: Likewise.
-
- * README, man/iconv_open.3: Don't document JOHAB any more.
-
- * man/iconv.3: Clarify return value again.
-
-2000-01-16 Bruno Haible <haible@clisp.cons.org>
-
- Add aliases.
- * src/encodings.def (ISO-8859-14): Add alias ISO-IR-199.
- (ISO-8859-15): Add alias ISO-IR-203.
- (EUC-CN): Add alias CN-GB, from RFC 1922.
- (BIG5): Add alias CN-BIG5, from RFC 1922.
- * Makefile.devel (src/aliases.h): Add 8th character to key set.
-
- Drop X11 aliases.
- * src/encodings.def (JIS_X0201): Drop JISX0201.1976-0 alias.
- (JIS_X0208): Drop JIS_X0208.1983-0, JIS_X0208.1983-1 aliases.
- (KSC_5601): Drop KSC5601.1987-0 alias.
-
- Improve GB/T 12345 (not used yet).
- * tools/Makefile (gb12345ext.h): Use GB12345-more.TXT.
- * src/gb12345ext.h: Regenerated.
-
- Improve and document CP949.
- * tools/Makefile (all): Add uhc_1.h and uhc_2.h.
- (uhc_1.h, uhc_2.h): New rules.
- * tools/cjk_tab_to_h.c (output_charset2uni_noholes_monotonic): New
- function.
- (output_uni2charset_sparse): Take an additional boolean argument.
- All callers changed.
- (*_uhc_1, *_uhc_2): New functions.
- (main): Treat uhc_1 and uhc_2.
- * src/uhc_1.h, src/uhc_2.h: New files.
- * src/cp949.h: New file, include them.
- * src/converters.h: Include it.
- * src/encodings.def (KSC_5601): Remove alias CP949.
- (CP949): New encoding.
- * README, man/iconv_open.3: Add CP949.
- * tests/Makefile.in (check): Check CP949.
- * tests/CP949.TXT: New file.
-
- Document CP932.
- * README, man/iconv_open.3: Add CP932.
- * tests/Makefile.in (check): Check CP932.
- * tests/CP932.TXT, tests/CP932.IRREVERSIBLE.TXT: New files.
-
- * Makefile.devel (src/flags.h): Depend on src/converters.h.
-
- * tests/Makefile.in (check): Check JIS_X0201.
- * tests/JIS_X0201.TXT: New file.
-
- * src/euc_kr.h (euc_kr_wctomb): Shrink size of buf.
- * src/iso2022_kr.h (iso2022_kr_wctomb): Likewise.
-
- * src/iso2022_cnext.h (iso2022_cn_ext_mbtowc): Use isoir165_mbtowc.
- (iso2022_cn_ext_wctomb): Use isoir165_wctomb.
-
- Add ISO-IR-165 (undocumented).
- * tools/Makefile (all): Add isoir165ext.h.
- (isoir165ext.h): New rule.
- * tools/cjk_tab_to_h.c (main): Treat isoir165ext like gb2312.
- * src/isoir165.h, src/isoir165ext.h: New files.
- * src/converters.h: Include it.
- * src/encodings.def: Add ISO-IR-165.
- * tests/Makefile.in (check): Check ISO-IR-165.
- * tests/ISO-IR-165.TXT, tests/ISO-IR-165.IRREVERSIBLE.TXT: New files.
-
- Add ISO646-CN (undocumented).
- * src/iso646_cn.h: New file.
- * src/converters.h: Include it.
- * src/encodings.def: Add ISO646-CN.
- * tests/Makefile.in (check): Check ISO646-CN.
- * tests/ISO646-CN.TXT: New file.
-
- Add ISO646-JP (undocumented).
- * src/iso646_jp.h: New file.
- * src/converters.h: Include it.
- * src/encodings.def: Add ISO646-JP.
- * tests/Makefile.in (check): Check ISO646-JP.
- * tests/ISO646-JP.TXT: New file.
-
-2000-01-05 Bruno Haible <haible@clisp.cons.org>
-
- Add ISO-8859-16.
- * tools/Makefile (all): Add iso8859_16.h.
- (iso8859_16.h): New rule.
- * src/iso8859_16.h: New file.
- * src/converters.h: Include it.
- * src/encodings.def: Add ISO-8859-16.
- * README, man/iconv_open.3: Add ISO-8859-16.
- * tests/Makefile.in (check): Check ISO-8859-16.
- * tests/ISO-8859-16.TXT: New file.
-
- * man/iconv.3: Clarify what happens *inbuf in case 3.
-
- * src/iso8859_8.h: Update using newest table from ftp.unicode.org.
- * tests/ISO-8859-8.TXT: Likewise.
-
-2000-01-04 Bruno Haible <haible@clisp.cons.org>
-
- * Version 1.0 released.
- * include/libiconv.h.in (_LIBICONV_VERSION): Bump version number.
- * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 0:1:0.
- (libiconv.la): Use LIBICONV_VERSION_INFO.
-
-2000-01-03 Bruno Haible <haible@clisp.cons.org>
-
- * tests/Makefile.in: New file.
- tests/check-stateless, tests/table-from.c, tests/table-to.c,
- tests/*.TXT, tests/genutf8.c: New files, checks for stateless
- encodings.
- tests/check-stateful, tests/iconv.c, tests/*-snippet*: New files,
- checks for stateful encodings.
- * Makefile.in (all, check, mostlyclean, clean, distclean,
- maintainer-clean): Descend into tests directory.
- * configure.in: Add tests/Makefile to AC_OUTPUT duties.
-
- * src/gentranslit.c: New file.
- * Makefile.devel (src/translit.h): New rule.
- * src/translit.def, src/translit.h: New files.
- * src/iconv.c: Include it.
- (iconv): Transliterate using translit.h table.
-
- * src/genflags.c: New file.
- * Makefile.devel (src/flags.h): New rule.
- * src/flags.h: New file.
- * src/iconv.c: Include it.
- (encoding): Add field 'oflags'.
- (all_encodings): Initialize the field 'oflags'.
- (iconv_open): Copy field 'oflags'.
- (iconv): Transliterate quotation marks U+2018, U+2019, U+201A.
- * src/Makefile.in (iconv.lo): Update dependencies.
-
- * src/converters.h: New file, extracted from src/iconv.c.
- * src/iconv.c: Include it.
- * src/Makefile.in (iconv.lo): Update dependencies.
-
- * tools/cjk_variants.c: New file.
- * tools/Makefile (ALL): Add cjk_variants.h.
- (cjk_variants.h, cjk_variants): New rules.
- * src/cjk_variants.h: New file.
- * src/iconv.c: Include it.
- (iconv): Use cjk_variants for transliteration.
-
- * man/iconv.3: Fix description of return value.
- * euc_kr.h (euc_kr_wctomb): Remove Hangul transliteration.
- * iso2022_kr.h (iso2022kr_wctomb): Likewise.
- * src/iconv.c (iconv): Do Hangul transliteration here and increment
- result once for every transliterated character.
- * src/johab_hangul.h (johab_hangul_decompose): Change result array
- from 'unsigned char*' to 'wchar_t*'.
-
- * src/cp1258.h (cp1258_mbtowc): Return RET_ILSEQ instead of storing
- 0xfffd.
-
- * src/georgian_ps.h (georgian_ps_wctomb): Accept 0x00e6.
-
- * src/euc_jp.h (euc_jp_wctomb): Don't treat U+005C and U+007E like
- Katakana.
-
- * src/euc_tw.h (euc_tw_mbtowc): Fix typo.
-
- * src/cp950.h (cp950_mbtowc, cp950_wctomb): Exclude the range
- 0xC6A1..0xC7FE.
-
- * tools/cjk_tab_to_h.c (read_table_ksc5601): Some Hangul range was
- not being excluded. Fix that.
- * src/ksc5601.h: Regenerated.
- * src/johab.h (johab_mbtowc): Don't accept 0xDA{A1..D3} - this is
- valid in KSC5601/KSX1001 but not in JOHAB.
-
- * src/iconv.c (conv_struct): Add fields iindex, oindex.
- (iconv_open): Fill in iindex, oindex.
-
- * src/encodings.def (UCS-2-BE): Add aliases "UNICODE-1-1" and
- "csUnicode11", from IANA charset list.
- (MacRoman): Add aliases "MAC" and "csMacintosh" for "MACINTOSH",
- from IANA charset list.
- (JIS_X0208): Add aliases "X0208", "ISO-IR-87", "csISO87JISX0208",
- from IANA charset list.
- (GB_2312-80): New encoding, from IANA charset list.
-
- * README, man/iconv_open.3: Add MacIceland and MacUkraine.
-
- * Makefile.devel: Add rules for src/aliases.h and src/aliases.gperf.
- (all): Depend on src/aliases.h.
- * src/Makefile.in: Remove rules for $(srcdir)/aliases.h and
- $(srcdir)/aliases.gperf.
- (clean): Clean up.
-
- * src/Makefile.in (libiconv_plug_linux.so): Remove unneeded "-ldl".
-
-1999-12-31 Bruno Haible <haible@clisp.cons.org>
-
- * Version 0.3 released.
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/DESIGN b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/DESIGN
deleted file mode 100644
index 9ff2ad3a..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/DESIGN
+++ /dev/null
@@ -1,64 +0,0 @@
-While some other iconv(3) implementations - like FreeBSD iconv(3) - choose
-the "many small shared libraries" and dlopen(3) approach, this implementation
-packs everything into a single shared library. Here is a comparison of the
-two designs.
-
-* Run-time efficiency
- 1. A dlopen() based approach needs a cache of loaded shared libraries.
- Otherwise, every iconv_open() call will result in a call to dlopen()
- and thus to file system related system calls - which is prohibitive
- because some applications use the iconv_open/iconv/iconv_close sequence
- for every single filename, string, or piece of text.
- 2. In terms of virtual memory use, both approaches are on par. Being shared
- libraries, the tables are shared between any processes that use them.
- And because of the demand loading used by Unix systems (and because libiconv
- does not have initialization functions), only those parts of the tables
- which are needed (typically very few kilobytes) will be read from disk and
- paged into main memory.
- 3. Even with a cache of loaded shared libraries, the dlopen() based approach
- makes more system calls, because it has to load one or two shared libraries
- for every encoding in use.
-
-* Total size
- In the dlopen(3) approach, every shared library has a symbol table and
- relocation offset. All together, FreeBSD iconv installs more than 200 shared
- libraries with a total size of 2.3 MB. Whereas libiconv installs 0.45 MB.
-
-* Extensibility
- The dlopen(3) approach is good for guaranteeing extensibility if the iconv
- implementation is distributed without source. (Or when, as in glibc, you
- cannot rebuild iconv without rebuilding your libc, thus possibly
- destabilizing your system.)
- The libiconv package achieves extensibility through the LGPL license:
- Every user has access to the source of the package and can extend and
- replace just libiconv.so.
- The places which have to be modified when a new encoding is added are as
- follows: add an #include statement in iconv.c, add an entry in the table in
- iconv.c, and of course, update the README and iconv_open.3 manual page.
-
-* Use within other packages
- If you want to incorporate an iconv implementation into another package
- (such as a mail user agent or web browser), the single library approach
- is easier, because:
- 1. In the shared library approach you have to provide the right directory
- prefix which will be used at run time.
- 2. Incorporating iconv as a static library into the executable is easy -
- it won't need dynamic loading. (This assumes that your package is under
- the LGPL or GPL license.)
-
-
-All conversions go through Unicode. This is possible because most of the
-world's characters have already been allocated in the Unicode standard.
-Therefore we have for each encoding two functions:
-- For conversion from the encoding to Unicode, a function called xxx_mbtowc.
-- For conversion from Unicode to the encoding, a function called xxx_wctomb,
- and for stateful encodings, a function called xxx_reset which returns to
- the initial shift state.
-
-
-All our functions operate on a single Unicode character at a time. This is
-obviously less efficient than operating on an entire buffer of characters at
-a time, but it makes the coding considerably easier and less bug-prone. Those
-who wish best performance should install the Real Thing (TM): GNU libc 2.1
-or newer.
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/NEWS b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/NEWS
deleted file mode 100644
index 1248c5a8..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/NEWS
+++ /dev/null
@@ -1,119 +0,0 @@
-New in 1.9:
-* Many more transliterations.
-* New configuration option --enable-relocatable. See the INSTALL.generic file
- for details.
-
-New in 1.8:
-* The iconv program has new options -l, -c, -s.
-* The iconv program is internationalized.
-* Added C99 converter.
-* Added KOI8-T converter.
-* New configuration option --enable-extra-encodings that enables a bunch of
- additional encodings; see the README for details.
-* Updated the ISO-8859-16 converter.
-* Upgraded BIG5-HKSCS, EUC-TW, ISO-2022-CN, ISO-2022-CN-EXT converters to
- Unicode 3.2.
-* Upgraded EUC-KR, CP949, JOHAB converters to include the Euro sign.
-* Changed the ARMSCII-8 converter.
-* Extended the EUC-JP encoder so that YEN SIGN characters don't cause failures
- in Shift_JIS to EUC-JP conversion.
-* The JAVA converter now handles characters outside the Unicode BMP correctly.
-* Fixed a bug in the CP1255, CP1258, TCVN decoders: The base characters of
- combining characters could be dropped at the end of the conversion buffer.
-* Fixed a bug in the transliteration that could lead to excessive memory
- allocations in libintl when transliteration was needed.
-* Portability to BSD/OS and SCO 3.2.5.
-
-New in 1.7:
-* Added UTF-32, UTF-32BE, UTF-32LE converters.
-* Changed CP1255, CP1258 and TCVN converters to handle combining characters.
-* Changed EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1
- converters to use fullwidth Yen sign instead of halfwidth Yen sign, and
- fullwidth tilde instead of halfwidth tilde.
-* Upgraded EUC-TW, ISO-2022-CN, ISO-2022-CN-EXT converters to Unicode 3.1.
-* Changed the GB18030 converter to not reject unassigned and private-use
- Unicode characters.
-* Fixed a bug in the byte order mark treatment of the UCS-4 decoder.
-* The manual pages are now distributed also in HTML format.
-
-New in 1.6:
-* The iconv program's -f and -t options are now optional.
-* Many more transliterations.
-* Added CP862 converter.
-* Changed the GB18030 converter.
-* Portability to DOS with DJGPP.
-
-New in 1.5:
-* Added an iconv(1) program.
-* New locale dependent encodings "char", "wchar_t".
-* Transliteration is now off by default. Use a //TRANSLIT suffix to enable it.
-* The JOHAB encoding is documented again.
-* Changed a few mappings in the CP950 converter.
-
-New in 1.4:
-* Added GB18030, BIG5HKSCS converters.
-* Portability to OS/2 with emx+gcc.
-
-New in 1.3:
-* Added UCS-2BE, UCS-2LE, UCS-4BE, UCS-4LE converters.
-* Fixed the definition of EILSEQ on SunOS4.
-* Fixed a build problem on OSF/1.
-* Support for building as a shared library on Woe32.
-
-New in 1.2:
-* Added UTF-16BE and UTF-16LE converters.
-* Changed the UTF-16 encoder.
-* Fixed the treatment of tab characters in the UTF-7 converter.
-* Fixed an internal error when output buffer was not large enough.
-
-New in 1.1:
-* Added ISO-8859-16 converter.
-* Added CP932 converter, a variant of SHIFT_JIS.
-* Added CP949 converter, a variant of EUC-KR.
-* Improved the ISO-2022-CN-EXT converter: It now covers the ISO-IR-165 range.
-* Updated the ISO-8859-8 conversion table.
-* The JOHAB encoding is deprecated and not documented any more.
-* Fixed two build problems: 1. "make -n check" failed. 2. When libiconv was
- already installed, "make" failed.
-
-New in 1.0:
-* Added transliteration facilities.
-* Added a test suite.
-* Fixed the iconv(3) manual page and function: the return value was not
- described correctly.
-* Fixed a bug in the CP1258 decoder: invalid bytes now yield EILSEQ instead of
- U+FFFD.
-* Fixed a bug in the Georgian-PS encoder: accept U+00E6.
-* Fixed a bug in the EUC-JP encoder: reject 0x8E5C and 0x8E7E.
-* Fixed a bug in the KSC5601 and JOHAB converters: they recognized some Hangul
- characters at some invalid code positions.
-* Fixed a bug in the EUC-TW decoder; it was severely broken.
-* Fixed a bug in the CP950 converter: it recognized a dubious BIG5 range.
-
-New in 0.3:
-* Reduced the size of the tables needed for the JOHAB converter.
-* Portability to Woe32.
-
-New in 0.2:
-* Added KOI8-RU, CP850, CP866, CP874, CP950, ISO-2022-CN-EXT, GBK and
- ISO-2022-JP-1 converters.
-* Added MACINTOSH as an alias for MAC-ROMAN.
-* Added ASMO-708 as an alias for ISO-8859-6.
-* Added ELOT_928 as an alias for ISO-8859-7.
-* Improved the EUC-TW converter: Treat CNS 11643 plane 3.
-* Improved the ISO-2022-KR and EUC-KR converters: Hangul characters are
- decomposed into Jamo when needed.
-* Improved the CP932 converter.
-* Updated the CP1133, MULELAO-1 and ARMSCII-8 mappings.
-* The EUC-JP and SHIFT_JIS converters now cover the user-defined range.
-* Fixed a possible buffer overrun in the JOHAB converter.
-* Fixed a bug in the UTF-7, ISO-2022-*, HZ decoders: a shift sequence a the
- end of the input no longer gives an error.
-* The HZ encoder now always terminates its output in the ASCII state.
-* Use a perfect hash table for looking up the aliases.
-
-New in 0.1:
-* Portability to Linux/glibc-2.0.x, Linux/libc5, OSF/1, FreeBSD.
-* Fixed a bug in the EUC-JP decoder. Extended the ISO-2022-JP-2 converter.
-* Made TIS-620 mapping consistent with glibc-2.1.
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/NOTES b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/NOTES
deleted file mode 100644
index 8f630e23..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/NOTES
+++ /dev/null
@@ -1,392 +0,0 @@
-Q: Why does libiconv support encoding XXX? Why does libiconv not support
- encoding ZZZ?
-
-A: libiconv, as an internationalization library, supports those character
- sets and encodings which are in wide-spread use in at least one territory
- of the world.
-
- Hint1: On http://www.w3c.org/International/O-charset-lang.html you find a
- page "Languages, countries, and the charsets typically used for them".
- From this table, we can conclude that the following are in active use:
-
- ISO-8859-1, CP1252 Afrikaans, Albanian, Basque, Catalan, Danish, Dutch,
- English, Faroese, Finnish, French, Galician, German,
- Icelandic, Irish, Italian, Norwegian, Portuguese,
- Scottish, Spanish, Swedish
- ISO-8859-2 Croatian, Czech, Hungarian, Polish, Romanian, Slovak,
- Slovenian
- ISO-8859-3 Esperanto, Maltese
- ISO-8859-5 Bulgarian, Byelorussian, Macedonian, Russian,
- Serbian, Ukrainian
- ISO-8859-6 Arabic
- ISO-8859-7 Greek
- ISO-8859-8 Hebrew
- ISO-8859-9, CP1254 Turkish
- ISO-8859-10 Inuit, Lapp
- ISO-8859-13 Latvian, Lithuanian
- ISO-8859-15 Estonian
- KOI8-R Russian
- SHIFT_JIS Japanese
- ISO-2022-JP Japanese
- EUC-JP Japanese
-
- Ordered by frequency on the web (1997):
- ISO-8859-1, CP1252 96%
- SHIFT_JIS 1.6%
- ISO-2022-JP 1.2%
- EUC-JP 0.4%
- CP1250 0.3%
- CP1251 0.2%
- CP850 0.1%
- MACINTOSH 0.1%
- ISO-8859-5 0.1%
- ISO-8859-2 0.0%
-
- Hint2: The character sets mentioned in the XFree86 4.0 locale.alias file.
-
- ISO-8859-1 Afrikaans, Basque, Breton, Catalan, Danish, Dutch,
- English, Estonian, Faroese, Finnish, French,
- Galician, German, Greenlandic, Icelandic,
- Indonesian, Irish, Italian, Lithuanian, Norwegian,
- Occitan, Portuguese, Scottish, Spanish, Swedish,
- Walloon, Welsh
- ISO-8859-2 Albanian, Croatian, Czech, Hungarian, Polish,
- Romanian, Serbian, Slovak, Slovenian
- ISO-8859-3 Esperanto
- ISO-8859-4 Estonian, Latvian, Lithuanian
- ISO-8859-5 Bulgarian, Byelorussian, Macedonian, Russian,
- Serbian, Ukrainian
- ISO-8859-6 Arabic
- ISO-8859-7 Greek
- ISO-8859-8 Hebrew
- ISO-8859-9 Turkish
- ISO-8859-14 Breton, Irish, Scottish, Welsh
- ISO-8859-15 Basque, Breton, Catalan, Danish, Dutch, Estonian,
- Faroese, Finnish, French, Galician, German,
- Greenlandic, Icelandic, Irish, Italian, Lithuanian,
- Norwegian, Occitan, Portuguese, Scottish, Spanish,
- Swedish, Walloon, Welsh
- KOI8-R Russian
- KOI8-U Russian, Ukrainian
- EUC-JP (alias eucJP) Japanese
- ISO-2022-JP (alias JIS7) Japanese
- SHIFT_JIS (alias SJIS) Japanese
- U90 Japanese
- S90 Japanese
- EUC-CN (alias eucCN) Chinese
- EUC-TW (alias eucTW) Chinese
- BIG5 Chinese
- EUC-KR (alias eucKR) Korean
- ARMSCII-8 Armenian
- GEORGIAN-ACADEMY Georgian
- GEORGIAN-PS Georgian
- TIS-620 (alias TACTIS) Thai
- MULELAO-1 Laothian
- IBM-CP1133 Laothian
- VISCII Vietnamese
- TCVN Vietnamese
- NUNACOM-8 Inuktitut
-
- Hint3: The character sets supported by Netscape Communicator 4.
-
- Where is this documented? For the complete picture, I had to use
- "strings netscape" and then a lot of guesswork. For a quick take,
- look at the "View - Character set" menu of Netscape Communicator 4.6:
-
- ISO-8859-{1,2,5,7,9,15}
- WINDOWS-{1250,1251,1253}
- KOI8-R Cyrillic
- CP866 Cyrillic
- Autodetect Japanese (EUC-JP, ISO-2022-JP, ISO-2022-JP-2, SJIS)
- EUC-JP Japanese
- SHIFT_JIS Japanese
- GB2312 Chinese
- BIG5 Chinese
- EUC-TW Chinese
- Autodetect Korean (EUC-KR, ISO-2022-KR, but not JOHAB)
-
- UTF-8
- UTF-7
-
- Hint4: The character sets supported by Microsoft Internet Explorer 4.
-
- ISO-8859-{1,2,3,4,5,6,7,8,9}
- WINDOWS-{1250,1251,1252,1253,1254,1255,1256,1257}
- KOI8-R Cyrillic
- KOI8-RU Ukrainian
- ASMO-708 Arabic
- EUC-JP Japanese
- ISO-2022-JP Japanese
- SHIFT_JIS Japanese
- GB2312 Chinese
- HZ-GB-2312 Chinese
- BIG5 Chinese
- EUC-KR Korean
- ISO-2022-KR Korean
- WINDOWS-874 Thai
- WINDOWS-1258 Vietnamese
-
- UTF-8
- UTF-7
- UNICODE actually UNICODE-LITTLE
- UNICODEFEFF actually UNICODE-BIG
-
- and various DOS character sets: DOS-720, DOS-862, IBM852, CP866.
-
- We take the union of all these four sets. The result is:
-
- European and Semitic languages
- * ASCII.
- We implement this because it is occasionally useful to know or to
- check whether some text is entirely ASCII (i.e. if the conversion
- ISO-8859-x -> UTF-8 is trivial).
- * ISO-8859-{1,2,3,4,5,6,7,8,9,10}
- We implement this because they are widely used. Except ISO-8859-4
- which appears to have been superseded by ISO-8859-13 in the baltic
- countries. But it's an ISO standard anyway.
- * ISO-8859-13
- We implement this because it's a standard in Lithuania and Latvia.
- * ISO-8859-14
- We implement this because it's an ISO standard.
- * ISO-8859-15
- We implement this because it's increasingly used in Europe, because
- of the Euro symbol.
- * ISO-8859-16
- We implement this because it's an ISO standard.
- * KOI8-R, KOI8-U
- We implement this because it appears to be the predominant encoding
- on Unix in Russia and Ukraine, respectively.
- * KOI8-RU
- We implement this because MSIE4 supports it.
- * KOI8-T
- We implement this because it is the locale encoding in glibc's Tajik
- locale.
- * CP{1250,1251,1252,1253,1254,1255,1256,1257}
- We implement these because they are the predominant Windows encodings
- in Europe.
- * CP850
- We implement this because it is mentioned as occurring in the web
- in the aforementioned statistics.
- * CP862
- We implement this because Ron Aaron says it is sometimes used in web
- pages and emails.
- * CP866
- We implement this because Netscape Communicator does.
- * Mac{Roman,CentralEurope,Croatian,Romania,Cyrillic,Greek,Turkish} and
- Mac{Hebrew,Arabic}
- We implement these because the Sun JDK does, and because Mac users
- don't deserve to be punished.
- * Macintosh
- We implement this because it is mentioned as occurring in the web
- in the aforementioned statistics.
- Japanese
- * EUC-JP, SHIFT_JIS, ISO-2022-JP
- We implement these because they are widely used. EUC-JP and SHIFT_JIS
- are more used for files, whereas ISO-2022-JP is recommended for email.
- * CP932
- We implement this because it is the Microsoft variant of SHIFT_JIS,
- used on Windows.
- * ISO-2022-JP-2
- We implement this because it's the common way to represent mails which
- make use of JIS X 0212 characters.
- * ISO-2022-JP-1
- We implement this because it's in the RFCs, but I don't think it is
- really used.
- * U90, S90
- We DON'T implement this because I have no informations about what it
- is or who uses it.
- Simplified Chinese
- * EUC-CN = GB2312
- We implement this because it is the widely used representation
- of simplified Chinese.
- * GBK
- We implement this because it appears to be used on Solaris and Windows.
- * GB18030
- We implement this because it is an official requirement in the
- People's Republic of China.
- * ISO-2022-CN
- We implement this because it is in the RFCs, but I have no idea
- whether it is really used.
- * ISO-2022-CN-EXT
- We implement this because it's in the RFCs, but I don't think it is
- really used.
- * HZ = HZ-GB-2312
- We implement this because the RFCs recommend it for Usenet postings,
- and because MSIE4 supports it.
- Traditional Chinese
- * EUC-TW
- We implement it because it appears to be used on Unix.
- * BIG5
- We implement it because it is the de-facto standard for traditional
- Chinese.
- * CP950
- We implement this because it is the Microsoft variant of BIG5, used
- on Windows.
- * BIG5+
- We DON'T implement this because it doesn't appear to be in wide use.
- Only the CWEX fonts use this encoding. Furthermore, the conversion
- tables in the big5p package are not coherent: If you convert directly,
- you get different results than when you convert via GBK.
- * BIG5-HKSCS
- We implement it because it is the de-facto standard for traditional
- Chinese in Hongkong.
- Korean
- * EUC-KR
- We implement these because they appear to be the widely used
- representations for Korean.
- * CP949
- We implement this because it is the Microsoft variant of EUC-KR, used
- on Windows.
- * ISO-2022-KR
- We implement it because it is in the RFCs and because MSIE4 supports
- it, but I have no idea whether it's really used.
- * JOHAB
- We implement this because it is apparently used on Windows as a locale
- encoding (codepage 1361).
- * ISO-646-KR
- We DON'T implement this because although an old ASCII variant, its
- glyph for 0x7E is not clear: RFC 1345 and unicode.org's JOHAB.TXT
- say it's a tilde, but Ken Lunde's "CJKV information processing" says
- it's an overline. And it is not ISO-IR registered.
- Armenian
- * ARMSCII-8
- We implement it because XFree86 supports it.
- Georgian
- * Georgian-Academy, Georgian-PS
- We implement these because they appear to be both used for Georgian;
- Xfree86 supports them.
- Thai
- * TIS-620
- We implement this because it seems to be standard for Thai.
- * CP874
- We implement this because MSIE4 supports it.
- * MacThai
- We implement this because the Sun JDK does, and because Mac users
- don't deserve to be punished.
- Laotian
- * MuleLao-1, CP1133
- We implement these because XFree86 supports them. I have no idea which
- one is used more widely.
- Vietnamese
- * VISCII, TCVN
- We implement these because XFree86 supports them.
- * CP1258
- We implement this because MSIE4 supports it.
- Other languages
- * NUNACOM-8 (Inuktitut)
- We DON'T implement this because it isn't part of Unicode yet, and
- therefore doesn't convert to anything except itself.
- Platform specifics
- * HP-ROMAN8, NEXTSTEP
- We implement these because they were the native character set on HPs
- and NeXTs for a long time, and libiconv is intended to be usable on
- these old machines.
- Full Unicode
- * UTF-8, UCS-2, UCS-4
- We implement these. Obviously.
- * UCS-2BE, UCS-2LE, UCS-4BE, UCS-4LE
- We implement these because they are the preferred internal
- representation of strings in Unicode aware applications. These are
- non-ambiguous names, known to glibc. (glibc doesn't have
- UCS-2-INTERNAL and UCS-4-INTERNAL.)
- * UTF-16, UTF-16BE, UTF-16LE
- We implement these, because UTF-16 is still the favourite encoding of
- the president of the Unicode Consortium (for political reasons), and
- because they appear in RFC 2781.
- * UTF-32, UTF-32BE, UTF-32LE
- We implement these because they are part of Unicode 3.1.
- * UTF-7
- We implement this because it is essential functionality for mail
- applications.
- * C99
- We implement it because it's used for C and C++ programs and because
- it's a nice encoding for debugging.
- * JAVA
- We implement it because it's used for Java programs and because it's
- a nice encoding for debugging.
- * UNICODE (big endian), UNICODEFEFF (little endian)
- We DON'T implement these because they are stupid and not standardized.
- Full Unicode, in terms of `uint16_t' or `uint32_t'
- (with machine dependent endianness and alignment)
- * UCS-2-INTERNAL, UCS-4-INTERNAL
- We implement these because they are the preferred internal
- representation of strings in Unicode aware applications.
-
-Q: Support encodings mentioned in RFC 1345 ?
-A: No, they are not in use any more. Supporting ISO-646 variants is pointless
- since ISO-8859-* have been adopted.
-
-Q: Support EBCDIC ?
-A: No!
-
-Q: How do I add a new character set?
-A: 1. Explain the "why" in this file, above.
- 2. You need to have a conversion table from/to Unicode. Transform it into
- the format used by the mapping tables found on ftp.unicode.org: each line
- contains the character code, in hex, with 0x prefix, then whitespace,
- then the Unicode code point, in hex, 4 hex digits, with 0x prefix. '#'
- counts as a comment delimiter until end of line.
- Please also send your table to Mark Leisher <mleisher@crl.nmsu.edu> so he
- can include it in his collection.
- 3. If it's an 8-bit character set, use the '8bit_tab_to_h' program in the
- tools directory to generate the C code for the conversion. You may tweak
- the resulting C code if you are not satisfied with its quality, but this
- is rarely needed.
- If it's a two-dimensional character set (with rows and columns), use the
- 'cjk_tab_to_h' program in the tools directory to generate the C code for
- the conversion. You will need to modify the main() function to recognize
- the new character set name, with the proper dimensions, but that shouldn't
- be too hard. This yields the CCS. The CES you have to write by hand.
- 4. Store the resulting C code file in the lib directory. Add a #include
- directive to converters.h, and add an entry to the encodings.def file.
- 5. Compile the package, and test your new encoding using a program like
- iconv(1) or clisp(1).
- 6. Augment the testsuite: Add a line to each of tests/Makefile.in,
- tests/Makefile.msvc and tests/Makefile.os2. For a stateless encoding,
- create the complete table as a TXT file. For a stateful encoding,
- provide a text snippet encoded using your new encoding and its UTF-8
- equivalent.
- 7. Update the README and man/iconv_open.3, to mention the new encoding.
- Add a note in the NEWS file.
-
-Q: What about bidirectional text? Should it be tagged or reversed when
- converting from ISO-8859-8 or ISO-8859-6 to Unicode? Qt appears to do
- this, see qt-2.0.1/src/tools/qrtlcodec.cpp.
-A: After reading RFC 1556: I don't think so. Support for ISO-8859-8-I and
- ISO-8859-E remains to be implemented.
- On the other hand, a page on www.w3c.org says that ISO-8859-8 in *email*
- is visually encoded, ISO-8859-8 in *HTML* is logically encoded, i.e.
- the same as ISO-8859-8-I. I'm confused.
-
-Other character sets not implemented:
-"MNEMONIC" = "csMnemonic"
-"MNEM" = "csMnem"
-"ISO-10646-UCS-Basic" = "csUnicodeASCII"
-"ISO-10646-Unicode-Latin1" = "csUnicodeLatin1" = "ISO-10646"
-"ISO-10646-J-1"
-"UNICODE-1-1" = "csUnicode11"
-"csWindows31Latin5"
-
-Other aliases not implemented (and not implemented in glibc-2.1 either):
- From MSIE4:
- ISO-8859-1: alias ISO8859-1
- ISO-8859-2: alias ISO8859-2
- KSC_5601: alias KS_C_5601
- UTF-8: aliases UNICODE-1-1-UTF-8 UNICODE-2-0-UTF-8
-
-
-Q: How can I integrate libiconv into my package?
-A: Just copy the entire libiconv package into a subdirectory of your package.
- At configuration time, call libiconv's configure script with the
- appropriate --srcdir option and maybe --enable-static or --disable-shared.
- Then "cd libiconv && make && make install-lib libdir=... includedir=...".
- 'install-lib' is a special (not GNU standardized) target which installs
- only the include file - in $(includedir) - and the library - in $(libdir) -
- and does not use other directory variables. After "installing" libiconv
- in your package's build directory, building of your package can proceed.
-
-Q: Why is the testsuite so big?
-A: Because some of the tests are very comprehensive.
- If you don't feel like using the testsuite, you can simply remove the
- tests/ directory.
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/PORTS b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/PORTS
deleted file mode 100644
index 2c4cfa03..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/PORTS
+++ /dev/null
@@ -1,46 +0,0 @@
-* Linux with libc6 (glibc-2.1):
- OK
-
-* Linux with libc6 (glibc-2.0.7):
- OK
-
-* Linux with libc5:
- OK
-
-* Solaris 2.7:
- OK
-
-* Solaris 2.6:
- OK
-
-* OSF/1 5.1:
- OK
-
-* OSF/1 4.0d:
- OK
-
-* Irix 6.5:
- OK
-
-* HP-UX 10.20:
- OK
-
-* AIX 4.2:
- OK
-
-* SunOS 4:
- OK when configured --enable-static --disable-shared
- (gcc cannot create shared libraries without relocations)
-
-* FreeBSD 3.3:
- OK
-
-* BeOS 5:
- OK
-
-* Woe32 with MSVC 4.0:
- OK
-
-* Woe32 with MSVC 5.0:
- OK
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/README b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/README
deleted file mode 100644
index e07ba0f0..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/README
+++ /dev/null
@@ -1,149 +0,0 @@
- GNU LIBICONV - character set conversion library
-
-This library provides an iconv() implementation, for use on systems which
-don't have one, or whose implementation cannot convert from/to Unicode.
-
-It provides support for the encodings:
-
- European languages
- ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16},
- KOI8-R, KOI8-U, KOI8-RU,
- CP{1250,1251,1252,1253,1254,1257}, CP{850,866},
- Mac{Roman,CentralEurope,Iceland,Croatian,Romania},
- Mac{Cyrillic,Ukraine,Greek,Turkish},
- Macintosh
- Semitic languages
- ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic}
- Japanese
- EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1
- Chinese
- EUC-CN, HZ, GBK, GB18030, EUC-TW, BIG5, CP950, BIG5-HKSCS,
- ISO-2022-CN, ISO-2022-CN-EXT
- Korean
- EUC-KR, CP949, ISO-2022-KR, JOHAB
- Armenian
- ARMSCII-8
- Georgian
- Georgian-Academy, Georgian-PS
- Tajik
- KOI8-T
- Thai
- TIS-620, CP874, MacThai
- Laotian
- MuleLao-1, CP1133
- Vietnamese
- VISCII, TCVN, CP1258
- Platform specifics
- HP-ROMAN8, NEXTSTEP
- Full Unicode
- UTF-8
- UCS-2, UCS-2BE, UCS-2LE
- UCS-4, UCS-4BE, UCS-4LE
- UTF-16, UTF-16BE, UTF-16LE
- UTF-32, UTF-32BE, UTF-32LE
- UTF-7
- C99, JAVA
- Full Unicode, in terms of `uint16_t' or `uint32_t'
- (with machine dependent endianness and alignment)
- UCS-2-INTERNAL, UCS-4-INTERNAL
- Locale dependent, in terms of `char' or `wchar_t'
- (with machine dependent endianness and alignment, and with OS and
- locale dependent semantics)
- char, wchar_t
- The empty encoding name "" is equivalent to "char": it denotes the
- locale dependent character encoding.
-
-When configured with the option --enable-extra-encodings, it also provides
-support for a few extra encodings:
-
- European languages
- CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125}
- Semitic languages
- CP864
- Japanese
- EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3
- Turkmen
- TDS565
- Platform specifics
- RISCOS-LATIN1
-
-It can convert from any of these encodings to any other, through Unicode
-conversion.
-
-It has also some limited support for transliteration, i.e. when a character
-cannot be represented in the target character set, it can be approximated
-through one or several similarly looking characters. Transliteration is
-activated when "//TRANSLIT" is appended to the target encoding name.
-
-libiconv is for you if your application needs to support multiple character
-encodings, but that support lacks from your system.
-
-Installation:
-
-As usual for GNU packages:
-
- $ ./configure --prefix=/usr/local
- $ make
- $ make install
-
-After installing GNU libiconv for the first time, it is recommended to
-recompile and reinstall GNU gettext, so that it can take advantage of
-libiconv.
-
-On systems other than GNU/Linux, the iconv program will be internationalized
-only if GNU gettext has been built and installed before GNU libiconv. This
-means that the first time GNU libiconv is installed, we have a circular
-dependency between the GNU libiconv and GNU gettext packages, which can be
-resolved by building and installing either
- - first libiconv, then gettext, then libiconv again,
-or (on systems supporting shared libraries, excluding AIX)
- - first gettext, then libiconv, then gettext again.
-Recall that before building a package for the second time, you need to erase
-the traces of the first build by running "make distclean".
-
-This library can be built and installed in two variants:
-
- - The library mode. This works on all systems, and uses a library
- `libiconv.so' and a header file `<iconv.h>'. (Both are installed
- through "make install".)
-
- To use it, simply #include <iconv.h> and use the functions.
-
- To use it in an autoconfiguring package:
- - If you don't use automake, append m4/iconv.m4 to your aclocal.m4
- file.
- - If you do use automake, add m4/iconv.m4 to your m4 macro repository.
- - Add to the link command line of libraries and executables that use
- the functions the placeholder @LIBICONV@ (or, if using libtool for
- the link, @LTLIBICONV@). If you use automake, the right place for
- these additions are the *_LDADD variables.
- Note that 'iconv.m4' is also part of the GNU gettext package, which
- installs it in /usr/local/share/aclocal/iconv.m4.
-
- - The libc plug/override mode. This works on GNU/Linux, Solaris and OSF/1
- systems only. It is a way to get good iconv support without having
- glibc-2.1.
- It installs a library `libiconv_plug.so'. This library can be used with
- LD_PRELOAD, to override the iconv* functions present in the C library.
-
- On GNU/Linux and Solaris:
- $ export LD_PRELOAD=/usr/local/lib/libiconv_plug.so
-
- On OSF/1:
- $ export _RLD_LIST=/usr/local/lib/libiconv_plug.so:DEFAULT
-
- A program's source need not be modified, the program need not even be
- recompiled. Just set the LD_PRELOAD environment variable, that's it!
-
-
-Distribution:
- ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz
-
-Homepage:
- http://www.gnu.org/software/libiconv/
-
-Bug reports to:
- <bug-gnu-libiconv@gnu.org>
-
-
-Bruno Haible <bruno@clisp.org>
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/THANKS b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/THANKS
deleted file mode 100644
index 35fc2eab..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/THANKS
+++ /dev/null
@@ -1,13 +0,0 @@
- Thanks to for
-
-Edmund Grimley Evans <edmundo@rano.org> bug reports
-
-Taro Muraoka <koron@tka.att.ne.jp> Woe32 DLL support
-
-Akira Hatakeyama <akira@sra.co.jp> OS/2 support
-
-Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>
- DOS/DJGPP support
-
-Hironori Sakamoto <hsaka@mth.biglobe.ne.jp> advice on EUC-JP and JISX0213
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/djgpp/README b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/djgpp/README
deleted file mode 100644
index dfcc894b..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/djgpp/README
+++ /dev/null
@@ -1,122 +0,0 @@
-This is a port of GNU Libiconv 1.8 to MSDOS/DJGPP.
-
-1.: DJGPP specific changes.
- =======================
- There are no DJGPP specific changes. This package should
- configure and compile out-of-the-box.
- Please read the documentation to become familiar with this
- product.
-
-
-2.: Installing the binary package.
- ==============================
-
-2.1.: Copy the binary distribution into the top DJGPP installation
- directory and unzip the binary distribution running *ONE* of
- the following commands:
- unzip32 licv18b.zip or
- djtarx licv18b.zip or
- pkunzip -d licv18b.zip
-
-
-
-3.: Building the binaries from sources.
- ===================================
-
-3.1.: To build the binaries you will need the following binary packages:
- djdev203.zip, bsh204b.zip, gcc2952b.zip,
- bnu210b.zip, mak3791b.zip, fil316b.zip,
- shl112b.zip, txt20b.zip, txi40b.zip,
- grep24b.zip and sed302b.zip
-
-
- All this packages can be found in the v2gnu directory of any
- Simtel.NET mirror.
- You will need bsh204b.zip and *NOT* a prior version or the build will fail.
- The same applies to djdev203.zip. You *MUST* use the updated versions of
- fil316b.zip (date: 2000-05-30) and shl112b.zip (date: 2000-08-11). This
- updated versions have been recompiled with djdev203.zip and know about
- the "/dev/env" functionality introduced with djdev203.zip. All the other
- packages are the ones I have used to build the binaries from this sources.
- Previuos and/or later versions of this packages may do the job as well but
- I have not tested this.
-
-3.2.: Create a temporary directory and copy the source package: licv18s.zip
- into the temporary directory. If you download the source distribution
- from one of the DJGPP archives, just unzip it preserving the directory
- structure, runnig ONE of the following commands:
- unzip32 licv18s.zip or
- djtarx licv18s.zip or
- pkunzip -d licv18s.zip
-
- Source distributions downloaded from one of the GNU FTP sites need
- some more work to unpack. First, you MUST use the `djtar' program to
- unzip the package. That's because some file names in the official
- distributions need to be changed to avoid problems on the various
- platforms supported by DJGPP. `djtar' can rename files on the fly
- given a file with name mappings. The distribution includes a file
- `djgpp/fnchange.lst' with the necessary mappings. So you need first
- to retrieve that file, and then invoke `djtar' to unpack the
- distribution. Here's how:
-
- djtar -x -p -o libiconv-1.7/djgpp/fnchange.lst libiconv-1.7.tar.gz > lst
- djtar -x -n lst libiconv-1.7.tar.gz
-
- (The name of the distribution archive and the top-level directory will
- be different for versions other than 1.7.)
-
-3.3.: The package is preconfigured for djdev203. To build the products you
- should run the following command:
- make
-
- After the compilation has finished, you can check the products
- running the command:
- make check
-
- To install the products run the command:
- make install
-
- This will install the products (iconv.exe iconv.h localcharset.h libconv.a
- libcharset.a iconv.1 iconv.3 iconv_open.3 iconv_close.3) into your DJGPP
- installation tree. As usual, prefix is defined as "/dev/env/DJDIR".
- If you prefer to install into same other directory run the command:
- make install prefix=z:/some/other/dir
-
- Of course, you should replace "z:/some/other/dir" by an appropriate path
- that will meet your requeriments.
-
-3.4.: If you need/want to reconfigure the package you will have to run the
- following commands:
- make distclean
- djgpp\config
-
- Please note that you *MUST* use the "distclean" option or the config.cache
- file will *NOT* be deleted. In this case you are *NOT* reconfiguring
- because the configuration informations is read from the cache file instead
- of being newly computed.
- To build the programs in a directory other than where the sources are,
- you must add the parameter that specifies the source directory,
- e.g:
- x:\src\gnu\libiconv.18\djgpp\config x:/src/gnu/libiconv.18
-
- Lets assume you want to build the binaries in a directory placed on a
- different drive (z:\build in this case) from where the sources are,
- then you will run the following commands:
- z:
- md \build
- cd \build
- x:\src\gnu\libiconv.18\djgpp\config x:/src/gnu/libiconv.18
-
- You *MUST* use forward slashes to specify the source directory.
- After having configured the package run the folowing commands to create
- the binaries and docs and install them:
- make
- make check
- make install
-
- Send suggestions and bug reports concerning the DJGPP port to
- comp.os.msdos.djgpp or djgpp@delorie.com. Libiconv specific bugs
- must be reported to Bruno Haible <haible@clisp.cons.org>.
-
-
- Guerrero, Juan Manuel <st001906@hrz1.hrz.tu-darmstadt.de>
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/extras/ChangeLog b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/extras/ChangeLog
deleted file mode 100644
index e74835b0..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/extras/ChangeLog
+++ /dev/null
@@ -1,64 +0,0 @@
-2003-05-10 Bruno Haible <bruno@clisp.org>
-
- * iconv_string.c (iconv_string): Don't return -1 just because the
- string is longer than 4 KB.
-
-2002-02-13 Bruno Haible <bruno@clisp.org>
-
- * iconv.m4: Remove file. Obsoleted by m4/iconv.m4.
-
-2000-06-16 Bruno Haible <haible@clisp.cons.org>
-
- * iconv.m4: Change prefix to AM.
-
-2001-05-23 Bruno Haible <haible@clisp.cons.org>
-
- * iconv.m4 (jm_ICONV): Accept --with-libiconv-prefix option.
-
-2001-03-23 Bruno Haible <haible@clisp.cons.org>
-
- * iconv.m4 (jm_ICONV): Tweak printing of prototype.
-
-2001-03-20 Bruno Haible <haible@clisp.cons.org>
-
- * iconv.m4 (jm_ICONV): Recommend GNU libiconv.
-
-2001-01-03 Bruno Haible <haible@clisp.cons.org>
-
- * iconv.m4 (jm_ICONV): Also check whether the iconv declaration
- has const.
-
-2000-02-02 Bruno Haible <haible@clisp.cons.org>
-
- * iconv.m4: New file.
-
-2001-01-29 Bruno Haible <haible@clisp.cons.org>
-
- * locale_charset.c: Remove file. Obsoleted by libcharset.
-
-2000-10-22 Bruno Haible <haible@clisp.cons.org>
-
- * locale_charset.c (get_locale_charset): Accept french and spanish
- names in both ISO-8859-1 and UTF-8.
-
-2000-08-24 Jim Blackson <blackson@ontrack-japan.com>
-
- * iconv_string.c (iconv_string): Fix return value for autodetect.
-
-2000-01-24 Bruno Haible <haible@clisp.cons.org>
-
- * iconv_string.c (iconv_string): Stop recognizing JOHAB.
- Fix typo for EUC-JP.
-
-1999-12-18 Bruno Haible <haible@clisp.cons.org>
-
- * locale_charset.c (get_locale_charset): Recognize more language codes:
- "af" (afrikaans), "ca" (catalan), "eu" (basque), "fo" (faeroese),
- "ga" (irish), "gd" (scottish), "gl" (galician), "sq" (albanian),
- "eo" (esperanto), "mt" (maltese), "be" (byelorussian),
- "et" (estonian), "lt" (lithuanian), "lv" (latvian), "uk" (ukrainian).
- Recognize more aliases: "english", "slovenian", "macedonian",
- "serbian", "arabic".
- Change default: KOI8-R for "ru" (russian) instead of ISO-8859-5,
- ISO-8859-5 for "sr" instead of ISO-8859-2.
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/AUTHORS b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/AUTHORS
deleted file mode 100644
index 8bedd794..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/AUTHORS
+++ /dev/null
@@ -1 +0,0 @@
-Bruno Haible <bruno@clisp.org>
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/ChangeLog b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/ChangeLog
deleted file mode 100644
index 1be73272..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/ChangeLog
+++ /dev/null
@@ -1,322 +0,0 @@
-2003-06-18 Bruno Haible <bruno@clisp.org>
-
- * config/install-sh: Update from automake-1.7.5.
-
-2003-06-07 Bruno Haible <bruno@clisp.org>
-
- * Makefile.devel (config.h_vms): Remove INSTALLPREFIX.
- Reported by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.
-
-2003-05-19 Bruno Haible <bruno@clisp.org>
-
- * windows/charset.rc: Include <winver.h>.
- Reported by Perry Rapp.
-
-2003-05-07 Bruno Haible <bruno@clisp.org>
-
- * Makefile.vms: New file.
- * Makefile.devel (config.h_vms): New rule.
- (all): Depend on it.
-
-2003-05-06 Bruno Haible <bruno@clisp.org>
-
- * m4/libtool.m4: Update from GNU gettext, based on libtool-1.5.
-
-2003-05-06 Bruno Haible <bruno@clisp.org>
-
- * autoconf/config.guess: Update to GNU version 2003-02-22.
- * autoconf/config.sub: Likewise.
-
-2003-05-06 Bruno Haible <bruno@clisp.org>
-
- * autoconf/ltmain.sh: Update from GNU gettext, based on libtool-1.5.
-
-2003-04-12 Bruno Haible <bruno@clisp.org>
-
- * configure.in (mandir): Change default value.
- * Makefile.in (datadir): New variable.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- Support for relocatable installation.
- * autoconf/config.libpath: New file, from GNU gettext.
- * configure.in: Invoke AC_RELOCATABLE_LIBRARY.
- * include/libcharset.h.in: New file.
- * Makefile.devel (include/libcharset.h.msvc-shared): New rule.
- (all): Depend on it.
- (autoconf/aclocal.m4): Update aclocal invocation.
- (config.h.msvc): Handle INSTALLPREFIX.
- * Makefile.in (include/libcharset.h): New rule.
- (all): Depend on it.
- (install-lib, install): Also install libcharset.h.
- (uninstall): Uninstall libcharset.h.
- (distclean, maintainer-clean): Remove include/libcharset.h.
- * Makefile.msvc (all): Create include/libcharset.h.
- (install): Also install libcharset.h.
- (uninstall): Uninstall libcharset.h.
- (mostlyclean, clean, distclean, maintainer-clean): Remove
- include/libcharset.h.
- * INSTALL.generic: Document --enable-relocatable and
- --with-libintl-prefix. Remove the recommendation to set CPPFLAGS and
- LDFLAGS. The lib-link.m4 macros make this unnecessary.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- * Makefile.msvc (PREFIX): New variable.
- (prefix): Use it.
- (distclean, maintainer-clean): Drop Unix specific removals.
- * man/Makefile.msvc (PREFIX): New variable.
- (prefix): Use it.
- (clean): Drop unnecessary removals.
- (distclean): Drop Unix specific removal.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- * configure.in: Invoke AM_LANGINFO_CODESET, not jm_LANGINFO_CODESET.
- * autoconf/ltmain.sh: Update from GNU gettext.
- 2003-02-18 Bruno Haible <bruno@clisp.org>
- Fix the 2002-09-16 fix.
- * ltmain.sh (install): If "ln -s -f" fails (this is the case
- with /usr/bin/ln on Solaris 2.7), fall back to "rm && ln -s".
-
-2003-03-17 Bruno Haible <bruno@clisp.org>
-
- Improved MSVC support.
- * windows/charset.rc: New file.
- * Makefile.msvc (prefix): Use less Unixy value.
- (local_prefix): Remove variable.
- (libdir, includedir): Use backslashes.
- (bindir): New variable.
- (mandir): Remove variable.
- (INSTALL, INSTALL_PROGRAM, INSTALL_DATA): New variables.
- (mostlyclean, clean): Remove config.h and include/localcharset.h.
- (install, installdirs, uninstall): Rewritten.
- * README.woe32: Mention automatic installation command.
-
- Rename libcharset.h to localcharset.h.
- * include/localcharset.h.in: Renamed from include/libcharset.h.in.
- * tools/locale_charset.c: Include localcharset.h, not libcharset.h.
- * Makefile.in (include/localcharset.h): Renamed from
- include/libcharset.h.
- (all): Update dependency.
- (install-lib, install, uninstall, distclean, maintainer-clean): Update.
- * Makefile.msvc (all): Create include/localcharset.h, not
- include/libcharset.h.
- * Makefile.devel (include/localcharset.h.msvc-shared): Renamed from
- include/libcharset.h.msvc-shared.
- (all): Update dependency.
- (config.h.in): Touch the file when done; autoheader doesn't do it.
- (config.h.msvc): Make rule more robust.
- * INTEGRATE: Mention localcharset.h only once.
- * djgpp/README.in, djgpp/README: Update.
- * djgpp/config.bat: Update.
- * djgpp/config.sed: Update.
- * djgpp/fnchange.in, djgpp/fnchange.lst: Update.
- * configure.in (VERSION): Bump to 1.2.
- * NEWS: New file.
-
-2003-02-14 Bruno Haible <bruno@clisp.org>
-
- * Makefile.devel (AUTOCONF): Switch to autoconf-2.57.
- (configure, config.h.in): Update rules.
-
-2003-01-03 Albert Chin <libtool@thewrittenword.com>
-
- * autoconf/ltmain.sh: Don't pass -R flags found in a .la's
- dependency_libs variable directly down to the linker.
- Reported by Tim Mooney <mooney@dogbert.cc.ndsu.nodak.edu>.
-
-2003-01-12 Bruno Haible <bruno@clisp.org>
-
- * INTEGRATE: Mention localcharset.h.
-
-2003-01-01 Bruno Haible <bruno@clisp.org>
-
- * Makefile.in (mkinstalldirs): Renamed from MKINSTALLDIRS.
- (install-lib, install, installdirs): Use it.
-
-2002-09-27 Bruno Haible <bruno@clisp.org>
-
- * autoconf/mkinstalldirs: Upgrade to automake-1.7.2 version.
-
-2002-11-07 Bruno Haible <bruno@clisp.org>
-
- * autoconf/ltmain.sh: Upgrade to libtool-1.4.3.
-
-2002-06-12 Bruno Haible <bruno@clisp.org>
-
- * configure.in: Use new AC_* names of libtool macros. Invoke
- AC_LIBTOOL_WIN32_DLL.
-
-2002-11-07 Bruno Haible <bruno@clisp.org>
-
- Make "make install" without prior "make" work.
- * Makefile.in (install): Depend on include/libcharset.h.
- Reported by Martin Mokrejš <mmokrejs@natur.cuni.cz>.
-
-2002-05-12 Bruno Haible <bruno@clisp.org>
-
- * tools/all-charsets: Update for change of lib/config.charset.
-
-2002-05-12 Bruno Haible <bruno@clisp.org>
-
- * Makefile.devel (AUTOCONF): New variable.
- (configure): Use the AUTOCONF variable.
-
-2002-05-08 Bruno Haible <bruno@clisp.org>
-
- * README.woe32: Renamed from README.win32.
-
-2002-02-06 Bruno Haible <bruno@clisp.org>
-
- * m4/libtool.m4: Upgrade to libtool-1.4.2.
- * autoconf/ltmain.sh: Likewise.
-
-2002-02-02 Bruno Haible <bruno@clisp.org>
-
- * autoconf/ltmain.sh: Add DESTDIR support on ELF systems.
-
-2001-11-03 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/ltmain.sh: chmod 777 the .libs directory, so that
- "make install" succeeds.
-
-2001-12-04 Bruno Haible <bruno@clisp.org>
-
- * INTEGRATE: Change the install rule to not create $(libdir) if
- there is no file to install in it.
-
-2001-07-17 Bruno Haible <haible@clisp.cons.org>
-
- * configure.in (VERSION): Bump to 1.1.
-
-2001-06-08 Bruno Haible <haible@clisp.cons.org>
-
- * m4/libtool.m4: Upgrade to libtool-1.4.
- * autoconf/ltmain.sh: Likewise.
- * autoconf/ltconfig: Remove file.
-
-2001-06-08 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/config.guess: Update to GNU version 2001-05-11.
- * autoconf/config.sub: Likewise.
-
-2001-05-21 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (include/libcharset.h): New target.
- (all): Depend on it.
-
-2001-05-11 Bruno Haible <haible@clisp.cons.org>
-
- * INTEGRATE (Makefile.in): Fix syntax error.
-
-2001-05-06 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc (config.h): Allow the 'del' command to fail.
-
-2001-03-21 Bruno Haible <haible@clisp.cons.org>
-
- * INSTALL.generic (Particular Systems): Add recommendations for AIX 3.
-
-2001-03-10 Bruno Haible <haible@clisp.cons.org>
-
- * INSTALL.generic: New section "Particular Systems".
-
-2001-03-05 Bruno Haible <haible@clisp.cons.org>
-
- * tools/all-charsets: Update for change of lib/config.charset.
-
-2001-03-01 Bruno Haible <haible@clisp.cons.org>
-
- * tools/all-charsets: Update for change of lib/config.charset.
-
-2001-02-25 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/ltconfig:
- sed -e 's/reload object files/produce relocatable object files/'.
-
-2001-02-25 Bruno Haible <haible@clisp.cons.org>
-
- * include/libcharset.h.in (locale_charset): Return value is never
- NULL any more.
-
-2001-02-22 Bruno Haible <haible@clisp.cons.org>
-
- * INTEGRATE (Makefile.am): Change $@-t to t-$@. For DJGPP.
- Patch by Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>.
-
-2001-02-20 Bruno Haible <haible@clisp.cons.org>
-
- Better support for DOS/Windows platforms.
- * autoconf/ltconfig: Upgrade to libtool-1.3.5.
- * autoconf/ltmain.sh: Likewise.
- * m4/libtool.m4: Likewise.
- * autoconf/aclocal.m4: Likewise.
- * configure.in: Call AC_OBJEXT and AC_EXEEXT.
-
-2001-02-20 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (libdir, includedir, mandir): Use the autoconf
- determined value, in order to respect the configure arguments.
- * lib/Makefile.in (libdir): Likewise.
-
-2000-12-13 Bruno Haible <haible@clisp.cons.org>
-
- * autoconf/install-sh: Update to a newer version from fileutils.
-
-2000-12-12 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in: Use $(MAKE) instead of $(MAKE) -r. Needed with Solaris
- "make", which doesn't set MAKE as expected by @SET_MAKE@ if -r is
- given. Reported by Toshimitsu Fujiwara.
-
-2000-12-08 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (exec_prefix): Use configure's --exec-prefix argument.
-
-2000-12-02 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc (check): Depend on target 'force' as well.
- (mostlyclean, clean, distclean, maintainer-clean): Fix dependency.
-
- * Makefile.msvc: Replace STATIC with its opposite flag, DLL.
-
-2000-11-24 Bruno Haible <haible@clisp.cons.org>
-
- * tools/all-charsets: Update for 2000-10-31 change of
- lib/config.charset.
-
-2000-11-23 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (install-lib): Fix for builddir != srcdir.
-
-2000-11-22 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (all): Fix for builddir != srcdir.
-
-2000-11-21 Bruno Haible <haible@clisp.cons.org>
-
- * include/libcharset.h.in: Renamed from include/libcharset.h.
- * windows/dllexport.h: New file.
- * Makefile.devel (all): Add config.h.msvc,
- include/libcharset.h.msvc-shared.
- (config.h.msvc, include/libcharset.h.msvc-shared): New targets.
- * Makefile.msvc (MFLAGS): New variable.
- (all): Create include\libcharset.h.
- (distclean, maintainer-clean): Remove include\libcharset.h.
- * Makefile.in (CP): New variable.
- (all): Create include/libcharset.h.
- (distclean, maintainer-clean): Remove include/libcharset.h.
-
-2000-11-18 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.devel (config.h.in): Rename from config.h.
-
-2000-11-16 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in: After "cd", use "&&" not ";".
-
-2000-10-31 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc: New file.
- * README.win32: New file.
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/NEWS b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/NEWS
deleted file mode 100644
index 7e82f6c1..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/NEWS
+++ /dev/null
@@ -1,2 +0,0 @@
-New in 1.2:
-* The include file is renamed from "libcharset.h" to "localcharset.h".
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/README b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/README
deleted file mode 100644
index 9f4cf7b4..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/README
+++ /dev/null
@@ -1,60 +0,0 @@
- LIBCHARSET - portable character set determination library
-
-This library provides a function which determines the character set / encoding
-of text in the currently selected locale (the LC_CTYPE locale facet).
-
-It is useful for portable programs which need to process text in other
-encodings and locales than the currently selected one. Possible uses:
-
- * Use of Unicode in POSIX compliant applications.
- * Conversion of text between the current locale's encoding and UTF-8 (or
- any other given encoding).
- * Mail agents.
-
-In theory, this would be very simple: The Single Unix Specification (SUSV2)
-provides the nl_langinfo function, in such a way that
-
- nl_langinfo (CODESET)
-
-returns the encoding name. But the nl_langinfo function still does not exist
-on some systems, and on those where it exists it returns unstandardized
-variations of the encoding names, like (on Solaris) "PCK" for "Shift_JIS".
-
-This library fixes these flaws and provides a function
-
- const char * locale_charset (void);
-
-It determines the current locale's character encoding, and canonicalizes it
-into one of the canonical names listed in config.charset. The result must
-not be freed; it is statically allocated. If the canonical name cannot be
-determined, the result is a non-canonical name.
-
-
-Installation:
-
-As usual for GNU packages:
-
- $ ./configure --prefix=/usr/local
- $ make
- $ make install
-
-
-This library is used in
- GNU sh-utils, fileutils, textutils
- GNU gettext
- GNU clisp
-
-
-To integrate this library into your package:
-See file INTEGRATE.
-
-
-Distribution:
- The libcharset directory of
- ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.8.tar.gz
-
-Homepage:
- http://www.haible.de/bruno/packages-libcharset.html
-
-
-Bruno Haible <bruno@clisp.org>
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/djgpp/README b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/djgpp/README
deleted file mode 100644
index 27c44a27..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/djgpp/README
+++ /dev/null
@@ -1,123 +0,0 @@
-This is a port of GNU Libiconv 1.7 to MSDOS/DJGPP.
-
-1.: DJGPP specific changes.
- =======================
- There are no DJGPP specific changes. This package should
- configure and compile out-of-the-box.
- Please read the documentation to become familiar with this
- product.
-
-
-2.: Installing the binary package.
- ==============================
-
-2.1.: Copy the binary distribution into the top DJGPP installation
- directory and unzip the binary distribution running *ONE* of
- the following commands:
- unzip32 licv16b.zip or
- djtarx licv16b.zip or
- pkunzip -d licv16b.zip
-
-
-
-3.: Building the binaries from sources.
- ===================================
-
-3.1.: To build the binaries you will need the following binary packages:
- djdev203.zip, bsh204b.zip, gcc2952b.zip,
- bnu210b.zip, mak3791b.zip, fil316b.zip,
- shl112b.zip, txt20b.zip, txi40b.zip,
- grep24b.zip and sed302b.zip
-
-
- All this packages can be found in the v2gnu directory of any
- Simtel.NET mirror.
- You will need bsh204b.zip and *NOT* a prior version or the build will fail.
- The same applies to djdev203.zip. You *MUST* use the updated versions of
- fil316b.zip (date: 2000-05-30) and shl112b.zip (date: 2000-08-11). This
- updated versions have been recompiled with djdev203.zip and know about
- the "/dev/env" functionality introduced with djdev203.zip. All the other
- packages are the ones I have used to build the binaries from this sources.
- Previuos and/or later versions of this packages may do the job as well but
- I have not tested this.
-
-3.2.: Create a temporary directory and copy the source package: licv16s.zip
- into the temporary directory. If you download the source distribution
- from one of the DJGPP archives, just unzip it preserving the directory
- structure, runnig ONE of the following commands:
- unzip32 licv16s.zip or
- djtarx licv16s.zip or
- pkunzip -d licv16s.zip
-
- Source distributions downloaded from one of the GNU FTP sites need
- some more work to unpack. First, you MUST use the `djtar' program to
- unzip the package. That's because some file names in the official
- distributions need to be changed to avoid problems on the various
- platforms supported by DJGPP. `djtar' can rename files on the fly
- given a file with name mappings. The distribution includes a file
- `djgpp/fnchange.lst' with the necessary mappings. So you need first
- to retrieve that file, and then invoke `djtar' to unpack the
- distribution. Here's how:
-
- djtar -x -p -o libiconv-1.7/djgpp/fnchange.lst libiconv-1.7.tar.gz > lst
- djtar -x -n lst libiconv-1.7.tar.gz
-
- (The name of the distribution archive and the top-level directory will
- be different for versions other than 1.7.)
-
-
-3.3.: The package is preconfigured for djdev203. To build the products you
- should run the following command:
- make
-
- After the compilation has finished, you can check the products
- running the command:
- make check
-
- To install the products run the command:
- make install
-
- This will install the products (iconv.exe iconv.h localcharset.h libconv.a
- libcharset.a iconv.1 iconv.3 iconv_open.3 iconv_close.3) into your DJGPP
- installation tree. As usual, prefix is defined as "/dev/env/DJDIR".
- If you prefer to install into same other directory run the command:
- make install prefix=z:/some/other/dir
-
- Of course, you should replace "z:/some/other/dir" by an appropriate path
- that will meet your requeriments.
-
-3.4.: If you need/want to reconfigure the package you will have to run the
- following commands:
- make distclean
- djgpp\config
-
- Please note that you *MUST* use the "distclean" option or the config.cache
- file will *NOT* be deleted. In this case you are *NOT* reconfiguring
- because the configuration informations is read from the cache file instead
- of being newly computed.
- To build the programs in a directory other than where the sources are,
- you must add the parameter that specifies the source directory,
- e.g:
- x:\src\gnu\libiconv.16\djgpp\config x:/src/gnu/libiconv.16
-
- Lets assume you want to build the binaries in a directory placed on a
- different drive (z:\build in this case) from where the sources are,
- then you will run the following commands:
- z:
- md \build
- cd \build
- x:\src\gnu\libiconv.16\djgpp\config x:/src/gnu/libiconv.16
-
- You *MUST* use forward slashes to specify the source directory.
- After having configured the package run the folowing commands to create
- the binaries and docs and install them:
- make
- make check
- make install
-
- Send suggestions and bug reports concerning the DJGPP port to
- comp.os.msdos.djgpp or djgpp@delorie.com. Libiconv specific bugs
- must be reported to Bruno Haible <haible@clisp.cons.org>.
-
-
- Guerrero, Juan Manuel <st001906@hrz1.hrz.tu-darmstadt.de>
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/lib/ChangeLog b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/lib/ChangeLog
deleted file mode 100644
index 4cf95b4f..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/lib/ChangeLog
+++ /dev/null
@@ -1,302 +0,0 @@
-2004-01-21 Bruno Haible <bruno@clisp.org>
-
- Upgrade from gettext-0.14.
-
- 2004-01-21 Bruno Haible <bruno@clisp.org>
- * config.charset: Add support for MacOS X (Darwin).
-
- 2003-12-02 Bruno Haible <bruno@clisp.org>
- * config.charset: Treat the new country name CS like the old country
- name YU.
-
- 2003-08-20 Bruno Haible <bruno@clisp.org>
- * config.charset (linux-gnulibc1*): Change hr_HR, ro_RO to ISO-8859-2.
- Reported by Alain Guibert <derogaton+bgli@oreka.com>.
-
- 2003-08-14 Bruno Haible <bruno@clisp.org>
- * config.charset: Add support for Linux libc5. Based on data from
- Alain Guibert <derogaton+bgli@oreka.com>.
-
-2003-06-27 Bruno Haible <bruno@clisp.org>
-
- Avoid use of *_unlocked functions on Solaris 2.5.1.
- * localcharset.c: Test HAVE_DECL_GETC_UNLOCKED, not HAVE_GETC_UNLOCKED.
- Reported by Eric Botcazou <ebotcazou@libertysurf.fr>.
-
-2003-08-20 Bruno Haible <bruno@clisp.org>
-
- * config.charset (linux-gnulibc1*): Change hr_HR, ro_RO to ISO-8859-2.
- Reported by Alain Guibert <derogaton+bgli@oreka.com>.
-
-2003-08-14 Bruno Haible <bruno@clisp.org>
-
- * config.charset: Add support for Linux libc5. Based on data from
- Alain Guibert <derogaton+bgli@oreka.com>.
-
-2003-08-01 Bruno Haible <bruno@clisp.org>
-
- * relocatable.c (find_shared_library_fullname): Disable the code on
- Linux/libc5. Reported by Alain Guibert <derogaton+bgli@oreka.com>.
-
-2003-06-22 Bruno Haible <bruno@clisp.org>
-
- Portability to mingw32.
- * relocatable.c [WIN32]: Include <windows.h>.
- Reported by Jeff Bonggren <jbon@cfl.rr.com>.
-
-2003-06-22 Bruno Haible <bruno@clisp.org>
-
- * relocatable.c (compute_curr_prefix): Comment out this function in
- the case when it is not used.
- Reported by Pavel Roskin <proski@gnu.org>.
-
-2003-06-07 Bruno Haible <bruno@clisp.org>
-
- Support for relocatable data files even on VMS.
- * Makefile.vms (bindir): New variable.
- (DEFS): Add flags for relocatability.
- Reported by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.
-
-2003-06-07 Bruno Haible <bruno@clisp.org>
-
- Support for relocatable data files even on Woe32.
- * Makefile.msvc (IIPREFIX, IIprefix, IIexec_prefix, IIbindir,
- IIlibdir): New variables.
- (PICFLAGS): Also define PIC. Define BUILDING_* flags here.
- (CFLAGS): ... not here. Add flags for relocatability.
-
-2003-05-18 Bruno Haible <bruno@clisp.org>
-
- * Makefile.msvc (DEBUGFLAGS): New variable.
- (charset.lib): Use it.
-
-2003-05-07 Bruno Haible <bruno@clisp.org>
-
- * Makefile.vms: New file.
-
-2003-04-12 Bruno Haible <bruno@clisp.org>
-
- * lib/localcharset.c (get_charset_aliases): Add special case for VMS.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- Support for relocatable installation.
- * relocatable.h: New file, from GNU gettext.
- * relocatable.c: New file, from GNU gettext.
- * localcharset.c: Update from GNU gettext.
- 2003-02-28 Bruno Haible <bruno@clisp.org>
- * localcharset.c: Include relocatable.h.
- (get_charset_aliases): Relocate LIBDIR value.
- * localcharset.c: Drop C linkage declaration.
- * Makefile.in (DEFS): New variable.
- (SOURCES): Add relocatable.c.
- (OBJECTS): Add relocatable.lo.
- (localcharset.lo): Use $(DEFS).
- (relocatable.lo): New rule.
- * Makefile.msvc (CFLAGS): Remove $(PICFLAGS).
- (INCLUDES): Simplify.
- (SOURCES): Remove variable.
- (OBJECTS): Add relocatable.obj.
- (localcharset.obj): Add $(PICFLAGS).
- (relocatable.obj): New rule.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- * Makefile.msvc (PREFIX): New variable.
- (prefix): Use it.
- (clean): Drop Unix specific removal.
-
-2003-03-17 Bruno Haible <bruno@clisp.org>
-
- Improved MSVC support.
- * Makefile.msvc (prefix): Use less Unixy value.
- (local_prefix): Remove variable.
- (libdir): Use backslashes.
- (bindir): New variable.
- (INSTALL, INSTALL_PROGRAM, INSTALL_DATA): Set to real values.
- (RESOURCES): Enable charset.res.
- (charset.lib): Set the target library name explicitly.
- (charset.res): New rule.
- (install, installdirs, uninstall): New rules.
-
- Rename libcharset.h to localcharset.h.
- * localcharset.c: Include localcharset.h.
- * localcharset.h: Remove file.
- * Makefile.in (INCLUDES): Add -I../include.
- * Makefile.msvc (INCLUDES): Add -I../include.
-
-2003-01-29 Bruno Haible <bruno@clisp.org>
-
- * config.charset: Add an alias for CP1251 on Solaris.
- Reported by Hidetoshi Tajima <hidetoshi.tajima@sun.com>.
-
-2003-01-12 Bruno Haible <bruno@clisp.org>
-
- * localcharset.h: New file.
- * localcharset.c: Include it.
-
-2003-01-01 Bruno Haible <bruno@clisp.org>
-
- * Makefile.in (mkinstalldirs): Renamed from MKINSTALLDIRS.
- (install-lib, install, installdirs): Use it.
-
-2002-05-09 Bruno Haible <bruno@clisp.org>
-
- * config.charset: Update for newest glibc. Add canonical names
- ISO-8859-14, KOI8-T, TCVN5712-1, GEORGIAN-PS.
-
-2002-05-09 Bruno Haible <bruno@clisp.org>
-
- * localcharset.c (get_charset_aliases): Add more Windows specific
- aliases.
-
-2002-05-08 Owen Taylor <otaylor@redhat.com>
-
- * config.charset: A few additions for Solaris.
-
-2002-02-15 Bruno Haible <bruno@clisp.org>
-
- * config.charset [msdosdjgpp]: For Russian, use CP866.
-
-2002-02-11 Bruno Haible <bruno@clisp.org>
-
- * config.charset: Add support for NetBSD.
-
-2002-01-10 Andrew Zabolotny <zap@cobra.ru>
- Bruno Haible <bruno@clisp.org>
-
- * localcharset.c: Rework OS/2 support.
- * config.charset: Add OS/2 support.
-
-2001-12-21 Bruno Haible <bruno@clisp.org>
-
- * localcharset.c (ISSLASH): Provide definition for DOS-like systems.
-
-2001-12-15 Bruno Haible <bruno@clisp.org>
-
- * localcharset.c: Add OS/2 support.
-
-2001-12-05 Bruno Haible <bruno@clisp.org>
-
- * localcharset.c (locale_charset): Don't return an empty string.
-
-2001-10-23 Bruno Haible <haible@clisp.cons.org>
-
- * config.charset: msdos in uk_UA uses CP1125.
-
-2001-08-05 Bruno Haible <haible@clisp.cons.org>
-
- Make it possible to build libcharset with CC=gcc CFLAGS="-x c++".
- * localcharset.c (locale_charset): Declare as extern "C".
- (get_charset_aliases): Cast malloc and realloc results to 'char *'.
-
-2001-06-27 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (clean): Remove also *.o.lock, left there by libtool
- on IRIX.
-
-2001-06-25 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (localcharset.lo): Mention $(INCLUDES) before $(CFLAGS)
- and $(CPPFLAGS).
- * Makefile.msvc (localcharset.obj): Likewise.
-
-2001-06-24 Bruno Haible <haible@clisp.cons.org>
-
- * config.charset: Change canonical name of BIG5HKSCS to BIG5-HKSCS.
- Change canonical name of SJIS to SHIFT_JIS.
-
-2001-05-06 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc (charset.lib): Allow the 'del' command to fail.
-
-2001-05-06 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (CPPFLAGS, LDFLAGS): New variables.
- (libcharset.la): Use LDFLAGS.
- (localcharset.lo): Use CPPFLAGS.
-
-2001-04-30 Bruno Haible <haible@clisp.cons.org>
-
- Silence "gcc -Wall -Wwrite-strings" warnings.
- * localcharset.c (charset_aliases): Change type to 'const char *'.
- (get_charset_aliases): Change type of 'cp' to 'const char *'.
-
-2001-03-10 Bruno Haible <haible@clisp.cons.org>
-
- * localcharset.c (locale_charset): Allow wildcard syntax. Also resolve
- alias if codeset is empty.
- * config.charset (BeOS): Use wildcard syntax.
-
- * Makefile.in (libcharset.la): Pass flag -no-undefined. Needed on
- platforms like BeOS.
-
- * Makefile.in (RM): New variable.
-
-2001-01-05 Bruno Haible <haible@clisp.cons.org>
-
- * localcharset.c (volatile): Define to empty if not using ANSI C.
-
-2001-03-05 Bruno Haible <haible@clisp.cons.org>
-
- * config.charset: Update for OSF/1 5.1.
-
-2001-03-01 Bruno Haible <haible@clisp.cons.org>
-
- * config.charset: For DOS/DJGPP, add CP775.
-
-2001-02-24 Bruno Haible <haible@clisp.cons.org>
-
- * config.charset: Add support for DOS/DJGPP.
-
-2001-02-25 Bruno Haible <haible@clisp.cons.org>
-
- * localcharset.c (locale_charset): Don't return NULL.
-
-2001-02-24 Bruno Haible <haible@clisp.cons.org>
-
- * localcharset.c (locale_charset): Don't use setlocale(LC_CTYPE,NULL).
-
-2001-01-30 Bruno Haible <haible@clisp.cons.org>
-
- * config.charset: Update for FreeBSD 4.2.
-
-2000-12-19 Jim Meyering <jim@meyering.net>
-
- * localcharset.c: Improve WIN32 macrology.
- (locale_charset): Increase size of buffer.
-
-2000-12-18 Bruno Haible <haible@clisp.cons.org>
-
- * config.charset: Add support for BeOS.
-
-2000-12-12 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (ref-add.sed, ref-del.sed): Don't use $<, not understood
- by Solaris "make". Reported by Toshimitsu Fujiwara.
-
-2000-12-08 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.in (exec_prefix): Use configure's --exec-prefix argument.
-
-2000-12-02 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc: Replace STATIC with its opposite flag, DLL.
-
-2000-11-21 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc (MFLAGS): New variable.
- (CFLAGS, charset.lib): Use it.
- (INCLUDES): Use "..", not "..\include".
-
-2000-10-31 Bruno Haible <haible@clisp.cons.org>
-
- * Makefile.msvc: New file.
-
-2000-10-31 Bruno Haible <haible@clisp.cons.org>
-
- * config.charset: Add ISO-8859-3, BIG5HKSCS, GB18030, JOHAB, VISCII,
- CP874, CP949, CP950, CP1250, CP1253, CP1254, CP1255, CP1256, CP1257
- to the list of canonical encodings. Rename EUC-CN to GB2312.
- * localcharset.c (locale_charset): Add support for Win32.
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/m4/ChangeLog b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/m4/ChangeLog
deleted file mode 100644
index 236923ff..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/m4/ChangeLog
+++ /dev/null
@@ -1,18 +0,0 @@
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- Support for relocatable installation.
- * relocatable.m4: New file, from GNU gettext.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- * codeset.m4: Update from GNU gettext-0.10.40.
- * glibc21.m4: Update from GNU gettext-0.10.40.
-
-2002-11-07 Bruno Haible <bruno@clisp.org>
-
- * libtool.m4: Upgrade to libtool-1.4.3.
-
-2002-07-14 Bruno Haible <bruno@clisp.org>
-
- * libtool.m4 (_LT_AC_LTCONFIG_HACK): Add support for GNU/FreeBSD.
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/tools/README b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/tools/README
deleted file mode 100644
index 7c5f7d73..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/libcharset/tools/README
+++ /dev/null
@@ -1,25 +0,0 @@
-This directory contains tools for maintaining the config.charset file.
-
-The main script is "all-charsets". Before using it, you must configure
-this package. For all installed locales, it prints
- - the result of the command "locale charmap",
- - the result of "nl_langinfo (CODESET)",
- - the result of "locale_charset ()".
-
-It uses the following auxiliary scripts and programs:
- - all-locales
- Prints all usable locales in the system, one per line.
- - locale_charmap
- Executes "locale charmap".
- - locale_codeset.c
- Prints nl_langinfo (CODESET).
- - locale_charset.c
- Prints locale_charset().
-
-A second main script is "all-charsets-X11". It also prints the X11
-encoding name. Before using it, you must tweak the X11 paths needed
-for compiling locale_x11encoding (a simple X11 program), and let your
-DISPLAY environment variable point to a running X11 screen.
-
-The other files are test results from various operating systems.
-
diff --git a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/po/ChangeLog b/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/po/ChangeLog
deleted file mode 100644
index daf35ca7..00000000
--- a/gnuwin32/contrib/libiconv/1.9.2/libiconv-1.9.2-src/po/ChangeLog
+++ /dev/null
@@ -1,148 +0,0 @@
-2003-11-13 Bruno Haible <bruno@clisp.org>
-
- * sr.po: New file, from Aleksandar Jelenak <jelenak@netlinkplus.net>.
- * LINGUAS: Add sr.
-
-2003-10-14 Bruno Haible <bruno@clisp.org>
-
- * pl.po: New file, from Arkadiusz Lipiec <A.Lipiec@elka.pw.edu.pl>.
- * LINGUAS: Add pl.
-
-2003-08-22 Bruno Haible <bruno@clisp.org>
-
- * wa.po: New file, from Pablo Saratxaga <pablo@walon.org>.
- * LINGUAS: Add wa.
-
-2003-08-05 Bruno Haible <bruno@clisp.org>
-
- * nl.po: Update from Elros Cyriatan <cyriatan@fastmail.fm>.
-
-2003-07-31 Bruno Haible <bruno@clisp.org>
-
- * nl.po: New file, from Taco Witte <T.C.Witte@phys.uu.nl>.
- * LINGUAS: Add nl.
-
-2003-06-11 Bruno Haible <bruno@clisp.org>
-
- * et.po: New file, from Toomas Soome <Toomas.Soome@microlink.ee>.
- * ro.po: Update from Eugen Hoanca <eugenh@urban-grafx.ro>.
- * ru.po: Update from Dmitry S. Sivachenko <mitya@cavia.pp.ru>.
- * zh_CN.po: New file, from Wang Jian <lark@linux.net.cn>.
- * LINGUAS: Add et and zh_CN.
-
-2003-05-07 Bruno Haible <bruno@clisp.org>
-
- * ga.po: Update from Kevin Patrick Scannell <scannell@slu.edu>.
-
-2003-05-06 Bruno Haible <bruno@clisp.org>
-
- * ga.po: New file, from Kevin Patrick Scannell <scannell@slu.edu>.
- * LINGUAS: Add it.
-
-2003-04-22 Bruno Haible <bruno@clisp.org>
-
- * ro.po: New file, from Eugen Hoanca <eugenh@urban-grafx.ro>.
- * LINGUAS: Add it.
-
-2003-04-05 Bruno Haible <bruno@clisp.org>
-
- * Makefile.msvc.sh (PREFIX): New variable.
- (prefix): Use it.
- (clean): Drop Unix specific removal.
-
-2003-04-09 Bruno Haible <bruno@clisp.org>
-
- * Makevars (MSGID_BUGS_ADDRESS): New variable.
-
-2003-04-09 gettextize <bug-gnu-gettext@gnu.org>
-
- * Makefile.in.in: Upgrade to gettext-0.12-pre3.
-
-2003-03-17 Bruno Haible <bruno@clisp.org>
-
- Improved MSVC support.
- * Makefile.msvc.sh: New file.
- * Rules-msvc: New file.
-
-2003-02-10 Bruno Haible <bruno@clisp.org>
-
- * uk.po: New file, from Volodymyr M. Lisivka <lvm@mystery.lviv.net>.
- * LINGUAS: Add it.
-
-2002-12-05 Bruno Haible <bruno@clisp.org>
-
- * it.po: New file, from Marco Parrone <marc0@autistici.org>.
- * LINGUAS: Add it.
-
-2002-11-12 Bruno Haible <bruno@clisp.org>
-
- * da.po: New file, from Keld Simonsen <keld@dkuug.dk>.
- * LINGUAS: Add da.
-
-2002-10-29 Bruno Haible <bruno@clisp.org>
-
- * id.po: New file, from Tedi Heriyanto <tedi_h@gmx.net>.
- * LINGUAS: Add id.
-
-2002-08-23 Bruno Haible <bruno@clisp.org>
-
- * fi.po: New file, from Matti Koskimies <matti@apulanta.fi>.
- * fr.po: New file, from Michel Robitaille <robitail@iro.umontreal.ca>.
- * pt_BR.po: Update from
- Alexandre Folle de Menezes <afmenez@terra.com.br>.
- * ru.po: New file, from Dmitry S. Sivachenko <mitya@cavia.pp.ru>.
- * sl.po: New file, from
- Primož Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>.
- * tr.po: New file, from Deniz Akkus Kanca <deniz@arayan.com>.
- * LINGUAS: Add fi, fr, ru, sl, tr.
-
-2002-06-20 Bruno Haible <bruno@clisp.org>
-
- * es.po: New file, from Santiago Vila Doncel <sanvila@unex.es>.
- * LINGUAS: Add es.
-
-2002-06-14 Bruno Haible <bruno@clisp.org>
-
- * hr.po: New file, from Denis Lackovic <delacko@fly.srk.fer.hr>.
- * LINGUAS: Add hr.
-
-2002-06-14 Bruno Haible <bruno@clisp.org>
-
- * pt_BR.po: Update from
- Alexandre Folle de Menezes <afmenez@terra.com.br>.
-
-2002-06-11 Bruno Haible <bruno@clisp.org>
-
- * sv.po: New file, from Christian Rose <menthos@menthos.com>.
- * LINGUAS: Add sv.
-
-2002-06-05 Bruno Haible <bruno@clisp.org>
-
- * pt_BR.po: New file, from
- Alexandre Folle de Menezes <afmenez@terra.com.br>.
- * LINGUAS: Add pt_BR.
-
-2002-06-03 Bruno Haible <bruno@clisp.org>
-
- * gl.po: New file, from Jacobo Tarrio <jtarrio@trasno.net>.
- * LINGUAS: Add gl.
-
-2002-05-31 Bruno Haible <bruno@clisp.org>
-
- * ca.po: New file, from Ivan Vilata i Balaguer <ivan@selidor.net>.
- * eo.po: New file, from Edmund Grimley Evans <edmundo@rano.org>.
- * hu.po: New file, from Emese Kovacs <emese@gnome.hu>.
- * sk.po: New file, from Marcel Telka <marcel@telka.sk>.
- * LINGUAS: Add ca, eo, hu, sk.
-
-2002-04-27 gettextize <bug-gnu-gettext@gnu.org>
-
- * Makefile.in.in: New file, from gettext-0.11.1.
- * Rules-quot: New file, from gettext-0.11.1.
- * boldquot.sed: New file, from gettext-0.11.1.
- * en@boldquot.header: New file, from gettext-0.11.1.
- * en@quot.header: New file, from gettext-0.11.1.
- * insert-header.sin: New file, from gettext-0.11.1.
- * quot.sed: New file, from gettext-0.11.1.
- * remove-potcdate.sin: New file, from gettext-0.11.1.
-
diff --git a/gnuwin32/lib/charset.alias b/gnuwin32/lib/charset.alias
deleted file mode 100644
index 204ab43a..00000000
--- a/gnuwin32/lib/charset.alias
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file contains a table of character encoding aliases,
-# suitable for operating system 'mingw32'.
-# It was automatically generated from config.charset.
-# Packages using this file:
diff --git a/gnuwin32/lib/libcharset.la b/gnuwin32/lib/libcharset.la
deleted file mode 100644
index 85ed6289..00000000
--- a/gnuwin32/lib/libcharset.la
+++ /dev/null
@@ -1,35 +0,0 @@
-# libcharset.la - a libtool library file
-# Generated by ltmain.sh - GNU libtool 1.5 (1.1220 2003/04/05 19:32:58)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='../bin/libcharset1.dll'
-
-# Names of this library.
-library_names='libcharset.dll.a'
-
-# The name of the static archive.
-old_library=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Version information for libcharset.
-current=1
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='C:/Users/marius/DOWNLO~1/WEBKIT~1/install/lib'
diff --git a/gnuwin32/lib/libcharset.la.orig b/gnuwin32/lib/libcharset.la.orig
deleted file mode 100644
index bc1e4484..00000000
--- a/gnuwin32/lib/libcharset.la.orig
+++ /dev/null
@@ -1,35 +0,0 @@
-# libcharset.la - a libtool library file
-# Generated by ltmain.sh - GNU libtool 1.5 (1.1220 2003/04/05 19:32:58)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='../bin/libcharset1.dll'
-
-# Names of this library.
-library_names='libcharset.dll.a'
-
-# The name of the static archive.
-old_library=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Version information for libcharset.
-current=1
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='c:/progra~1/LibIconv/lib'
diff --git a/gnuwin32/lib/libiconv.la b/gnuwin32/lib/libiconv.la
deleted file mode 100644
index 839df51b..00000000
--- a/gnuwin32/lib/libiconv.la
+++ /dev/null
@@ -1,35 +0,0 @@
-# libiconv.la - a libtool library file
-# Generated by ltmain.sh - GNU libtool 1.5 (1.1220 2003/04/05 19:32:58)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='../bin/libiconv2.dll'
-
-# Names of this library.
-library_names='libiconv.dll.a'
-
-# The name of the static archive.
-old_library=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Version information for libiconv.
-current=4
-age=2
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='C:/Users/marius/DOWNLO~1/WEBKIT~1/install/lib'
diff --git a/gnuwin32/lib/libiconv.la.orig b/gnuwin32/lib/libiconv.la.orig
deleted file mode 100644
index b894609c..00000000
--- a/gnuwin32/lib/libiconv.la.orig
+++ /dev/null
@@ -1,35 +0,0 @@
-# libiconv.la - a libtool library file
-# Generated by ltmain.sh - GNU libtool 1.5 (1.1220 2003/04/05 19:32:58)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='../bin/libiconv2.dll'
-
-# Names of this library.
-library_names='libiconv.dll.a'
-
-# The name of the static archive.
-old_library=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Version information for libiconv.
-current=4
-age=2
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='c:/progra~1/LibIconv/lib'
diff --git a/gnuwin32/man/cat1/gperf.1.txt b/gnuwin32/man/cat1/gperf.1.txt
deleted file mode 100644
index d9e128c7..00000000
--- a/gnuwin32/man/cat1/gperf.1.txt
+++ /dev/null
@@ -1,226 +0,0 @@
-GPERF(1) FSF GPERF(1)
-
-
-
-
-
-NAME
- gperf - generate a perfect hash function from a key set
-
-SYNOPSIS
- gperf [OPTION]... [INPUT-FILE]
-
-DESCRIPTION
- GNU 'gperf' generates perfect hash functions.
-
- If a long option shows an argument as mandatory, then it
- is mandatory for the equivalent short option also.
-
- Output file location:
- --output-file=FILE Write output to specified file.
-
- The results are written to standard output if no output
- file is specified or if it is -.
-
- Input file interpretation:
- -e, --delimiters=DELIMITER-LIST
- Allow user to provide a string containing delim-
- iters used to separate keywords from their
- attributes. Default is ",".
-
- -t, --struct-type
- Allows the user to include a structured type dec-
- laration for generated code. Any text before %%
- is considered part of the type declaration. Key
- words and additional fields may follow this, one
- group of fields per line.
-
- --ignore-case
- Consider upper and lower case ASCII characters as
- equivalent. Note that locale dependent case map-
- pings are ignored.
-
- Language for the output code:
- -L, --language=LANGUAGE-NAME
- Generates code in the specified language. Lan-
- guages handled are currently C++, ANSI-C, C, and
- KR-C. The default is C.
-
- Details in the output code:
- -K, --slot-name=NAME
- Select name of the keyword component in the key-
- word structure.
-
- -F, --initializer-suffix=INITIALIZERS
- Initializers for additional components in the
- keyword structure.
-
- -H, --hash-function-name=NAME
- Specify name of generated hash function. Default
- is 'hash'.
-
- -N, --lookup-function-name=NAME
- Specify name of generated lookup function.
- Default name is 'in_word_set'.
-
- -Z, --class-name=NAME
- Specify name of generated C++ class. Default name
- is 'Perfect_Hash'.
-
- -7, --seven-bit
- Assume 7-bit characters.
-
- -l, --compare-lengths
- Compare key lengths before trying a string com-
- parison. This is necessary if the keywords con-
- tain NUL bytes. It also helps cut down on the
- number of string comparisons made during the
- lookup.
-
- -c, --compare-strncmp
- Generate comparison code using strncmp rather
- than strcmp.
-
- -C, --readonly-tables
- Make the contents of generated lookup tables con-
- stant, i.e., readonly.
-
- -E, --enum
- Define constant values using an enum local to the
- lookup function rather than with defines.
-
- -I, --includes
- Include the necessary system include file
- <string.h> at the beginning of the code.
-
- -G, --global-table
- Generate the static table of keywords as a static
- global variable, rather than hiding it inside of
- the lookup function (which is the default behav-
- ior).
-
- -P, --pic
- Optimize the generated table for inclusion in
- shared libraries. This reduces the startup time
- of programs using a shared library containing the
- generated code.
-
- -Q, --string-pool-name=NAME
- Specify name of string pool generated by option
- --pic. Default name is 'stringpool'.
-
- --null-strings
- Use NULL strings instead of empty strings for
- empty keyword table entries.
-
- -W, --word-array-name=NAME
- Specify name of word list array. Default name is
- 'wordlist'.
-
- -S, --switch=COUNT
- Causes the generated C code to use a switch
- statement scheme, rather than an array lookup ta-
- ble. This can lead to a reduction in both time
- and space requirements for some keyfiles. The
- COUNT argument determines how many switch state-
- ments are generated. A value of 1 generates 1
- switch containing all the elements, a value of 2
- generates 2 tables with 1/2 the elements in each
- table, etc. If COUNT is very large, say 1000000,
- the generated C code does a binary search.
-
- -T, --omit-struct-type
- Prevents the transfer of the type declaration to
- the output file. Use this option if the type is
- already defined elsewhere.
-
- Algorithm employed by gperf:
- -k, --key-positions=KEYS
- Select the key positions used in the hash func-
- tion. The allowable choices range between 1-255,
- inclusive. The positions are separated by com-
- mas, ranges may be used, and key positions may
- occur in any order. Also, the meta-character '*'
- causes the generated hash function to consider
- ALL key positions, and $ indicates the "final
- character" of a key, e.g., $,1,2,4,6-10.
-
- -D, --duplicates
- Handle keywords that hash to duplicate values.
- This is useful for certain highly redundant key-
- word sets.
-
- -m, --multiple-iterations=ITERATIONS
- Perform multiple choices of the -i and -j values,
- and choose the best results. This increases the
- running time by a factor of ITERATIONS but does a
- good job minimizing the generated table size.
-
- -i, --initial-asso=N
- Provide an initial value for the associate values
- array. Default is 0. Setting this value larger
- helps inflate the size of the final table.
-
- -j, --jump=JUMP-VALUE
- Affects the "jump value", i.e., how far to
- advance the associated character value upon col-
- lisions. Must be an odd number, default is 5.
-
- -n, --no-strlen
- Do not include the length of the keyword when
- computing the hash function.
-
- -r, --random
- Utilizes randomness to initialize the associated
- values table.
-
- -s, --size-multiple=N
- Affects the size of the generated hash table. The
- numeric argument N indicates "how many times
- larger or smaller" the associated value range
- should be, in relationship to the number of keys,
- e.g. a value of 3 means "allow the maximum asso-
- ciated value to be about 3 times larger than the
- number of input keys". Conversely, a value of 1/3
- means "make the maximum associated value about 3
- times smaller than the number of input keys". A
- larger table should decrease the time required
- for an unsuccessful search, at the expense of
- extra table space. Default value is 1.
-
- Informative output:
- -h, --help
- Print this message.
-
- -v, --version
- Print the gperf version number.
-
- -d, --debug
- Enables the debugging option (produces verbose
- output to the standard error).
-
-AUTHOR
- Written by Douglas C. Schmidt and Bruno Haible.
-
-REPORTING BUGS
- Report bugs to <bug-gnu-gperf@gnu.org>.
-
-COPYRIGHT
- Copyright (C) 1989-1998, 2000-2003 Free Software Founda-
- tion, Inc.
- This is free software; see the source for copying condi-
- tions. There is NO warranty; not even for MERCHANTABIL-
- ITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-SEE ALSO
- The full documentation for gperf is maintained as a Tex-
- info manual. If the info and gperf programs are prop-
- erly installed at your site, the command
-
- info gperf
-
- should give you access to the complete manual.
-
-
-
-GNU gperf 3.0.1 June 2003 GPERF(1)
diff --git a/gnuwin32/man/cat1/iconv.1.txt b/gnuwin32/man/cat1/iconv.1.txt
deleted file mode 100644
index 2089d32e..00000000
--- a/gnuwin32/man/cat1/iconv.1.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-ICONV(1) Linux Programmer's Manual ICONV(1)
-
-
-
-
-
-NAME
- iconv - character set conversion
-
-SYNOPSIS
- iconv [-c] [-s] [-f encoding] [-t encoding] [inputfile ...]
- iconv -l
-
-DESCRIPTION
- The iconv program converts text from one encoding to
- another encoding. More precisely, it converts from the
- encoding given for the -f option to the encoding given
- for the -t option. Either of these encodings defaults to
- the encoding of the current locale. All the inputfiles
- are read and converted in turn; if no inputfile is
- given, the standard input is used. The converted text is
- printed to standard output.
-
- When option -c is given, characters that cannot be con-
- verted are silently discarded, instead of leading to a
- conversion error.
-
- When option -s is given, error messages about invalid or
- unconvertible characters are omitted, but the actual
- converted text is unaffected.
-
- The encodings permitted are system dependent. For the
- libiconv implementation, they are listed in the
- iconv_open(3) manual page.
-
- The iconv -l command lists the names of the supported
- encodings, in a system dependent format. For the libi-
- conv implementation, the names are printed in upper
- case, separated by whitespace, and alias names of an
- encoding are listed on the same line as the encoding
- itself.
-
-SEE ALSO
- iconv_open(3), locale(7)
-
-
-
-GNU January 13, 2002 ICONV(1)
diff --git a/gnuwin32/man/cat1/yacc.1.txt b/gnuwin32/man/cat1/yacc.1.txt
deleted file mode 100644
index ada6a5c1..00000000
--- a/gnuwin32/man/cat1/yacc.1.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-YACC(1) User Commands YACC(1)
-
-
-
-NAME
- yacc - GNU Project parser generator
-
-SYNOPSIS
- yacc [OPTION]... FILE
-
-DESCRIPTION
- Yacc (Yet Another Compiler Compiler) is a parser genera-
- tor. This version is a simple wrapper around bison(1).
- It passes option -y, --yacc to activate the upward com-
- patibility mode. See bison(1) for more information.
-
-AUTHOR
- Written by Paul Eggert.
-
-REPORTING BUGS
- Report bugs to <bug-bison@gnu.org>.
-
-COPYRIGHT
- Copyright © 2008 Free Software Foundation, Inc.
- This is free software; see the source for copying condi-
- tions. There is NO warranty; not even for MERCHANTABIL-
- ITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-SEE ALSO
- lex(1), flex(1), bison(1).
-
- The full documentation for bison is maintained as a Tex-
- info manual. If the info and bison programs are prop-
- erly installed at your site, the command
-
- info bison
-
- should give you access to the complete manual.
-
-
-
-GNU Bison 2.4.1 November 2007 YACC(1)
diff --git a/gnuwin32/man/cat1p/yacc.1p.txt b/gnuwin32/man/cat1p/yacc.1p.txt
deleted file mode 100644
index cab30089..00000000
--- a/gnuwin32/man/cat1p/yacc.1p.txt
+++ /dev/null
@@ -1,1269 +0,0 @@
-YACC(1P) POSIX Programmer's Manual YACC(1P)
-
-
-
-PROLOG
- This manual page is part of the POSIX Programmer's Man-
- ual. The Linux implementation of this interface may
- differ (consult the corresponding Linux manual page for
- details of Linux behavior), or the interface may not be
- implemented on Linux.
-
-NAME
- yacc - yet another compiler compiler (DEVELOPMENT)
-
-SYNOPSIS
- yacc [-dltv][-b file_prefix][-p sym_prefix] grammar
-
-DESCRIPTION
- The yacc utility shall read a description of a context-
- free grammar in grammar and write C source code, con-
- forming to the ISO C standard, to a code file, and
- optionally header information into a header file, in the
- current directory. The C code shall define a function
- and related routines and macros for an automaton that
- executes a parsing algorithm meeting the requirements in
- Algorithms .
-
- The form and meaning of the grammar are described in the
- EXTENDED DESCRIPTION section.
-
- The C source code and header file shall be produced in a
- form suitable as input for the C compiler (see c99 ).
-
-OPTIONS
- The yacc utility shall conform to the Base Definitions
- volume of IEEE Std 1003.1-2001, Section 12.2, Utility
- Syntax Guidelines.
-
- The following options shall be supported:
-
- -b file_prefix
- Use file_prefix instead of y as the prefix for
- all output filenames. The code file y.tab.c, the
- header file y.tab.h (created when -d is speci-
- fied), and the description file y.output (created
- when -v is specified), shall be changed to
- file_prefix .tab.c, file_prefix .tab.h, and
- file_prefix .output, respectively.
-
- -d Write the header file; by default only the code
- file is written. The #define statements associate
- the token codes assigned by yacc with the user-
- declared token names. This allows source files
- other than y.tab.c to access the token codes.
-
- -l Produce a code file that does not contain any
- #line constructs. If this option is not present,
- it is unspecified whether the code file or header
- file contains #line directives. This should only
- be used after the grammar and the associated
- actions are fully debugged.
-
- -p sym_prefix
-
- Use sym_prefix instead of yy as the prefix for
- all external names produced by yacc. The names
- affected shall include the functions yyparse(),
- yylex(), and yyerror(), and the variables yylval,
- yychar, and yydebug. (In the remainder of this
- section, the six symbols cited are referenced
- using their default names only as a notational
- convenience.) Local names may also be affected by
- the -p option; however, the -p option shall not
- affect #define symbols generated by yacc.
-
- -t Modify conditional compilation directives to per-
- mit compilation of debugging code in the code
- file. Runtime debugging statements shall always
- be contained in the code file, but by default
- conditional compilation directives prevent their
- compilation.
-
- -v Write a file containing a description of the
- parser and a report of conflicts generated by
- ambiguities in the grammar.
-
-
-OPERANDS
- The following operand is required:
-
- grammar
- A pathname of a file containing instructions,
- hereafter called grammar, for which a parser is
- to be created. The format for the grammar is
- described in the EXTENDED DESCRIPTION section.
-
-
-STDIN
- Not used.
-
-INPUT FILES
- The file grammar shall be a text file formatted as spec-
- ified in the EXTENDED DESCRIPTION section.
-
-ENVIRONMENT VARIABLES
- The following environment variables shall affect the
- execution of yacc:
-
- LANG Provide a default value for the internationaliza-
- tion variables that are unset or null. (See the
- Base Definitions volume of IEEE Std 1003.1-2001,
- Section 8.2, Internationalization Variables for
- the precedence of internationalization variables
- used to determine the values of locale cate-
- gories.)
-
- LC_ALL If set to a non-empty string value, override the
- values of all the other internationalization
- variables.
-
- LC_CTYPE
- Determine the locale for the interpretation of
- sequences of bytes of text data as characters
- (for example, single-byte as opposed to multi-
- byte characters in arguments and input files).
-
- LC_MESSAGES
- Determine the locale that should be used to
- affect the format and contents of diagnostic mes-
- sages written to standard error.
-
- NLSPATH
- Determine the location of message catalogs for
- the processing of LC_MESSAGES .
-
-
- The LANG and LC_* variables affect the execution of the
- yacc utility as stated. The main() function defined in
- Yacc Library shall call:
-
-
- setlocale(LC_ALL, "")
-
- and thus the program generated by yacc shall also be
- affected by the contents of these variables at runtime.
-
-ASYNCHRONOUS EVENTS
- Default.
-
-STDOUT
- Not used.
-
-STDERR
- If shift/reduce or reduce/reduce conflicts are detected
- in grammar, yacc shall write a report of those conflicts
- to the standard error in an unspecified format.
-
- Standard error shall also be used for diagnostic mes-
- sages.
-
-OUTPUT FILES
- The code file, the header file, and the description file
- shall be text files. All are described in the following
- sections.
-
- Code File
- This file shall contain the C source code for the
- yyparse() function. It shall contain code for the vari-
- ous semantic actions with macro substitution performed
- on them as described in the EXTENDED DESCRIPTION sec-
- tion. It also shall contain a copy of the #define state-
- ments in the header file. If a %union declaration is
- used, the declaration for YYSTYPE shall also be included
- in this file.
-
- Header File
- The header file shall contain #define statements that
- associate the token numbers with the token names. This
- allows source files other than the code file to access
- the token codes. If a %union declaration is used, the
- declaration for YYSTYPE and an extern YYSTYPE yylval
- declaration shall also be included in this file.
-
- Description File
- The description file shall be a text file containing a
- description of the state machine corresponding to the
- parser, using an unspecified format. Limits for internal
- tables (see Limits ) shall also be reported, in an
- implementation-defined manner. (Some implementations may
- use dynamic allocation techniques and have no specific
- limit values to report.)
-
-EXTENDED DESCRIPTION
- The yacc command accepts a language that is used to
- define a grammar for a target language to be parsed by
- the tables and code generated by yacc. The language
- accepted by yacc as a grammar for the target language is
- described below using the yacc input language itself.
-
- The input grammar includes rules describing the input
- structure of the target language and code to be invoked
- when these rules are recognized to provide the associ-
- ated semantic action. The code to be executed shall
- appear as bodies of text that are intended to be C-lan-
- guage code. The C-language inclusions are presumed to
- form a correct function when processed by yacc into its
- output files. The code included in this way shall be
- executed during the recognition of the target language.
-
- Given a grammar, the yacc utility generates the files
- described in the OUTPUT FILES section. The code file can
- be compiled and linked using c99. If the declaration and
- programs sections of the grammar file did not include
- definitions of main(), yylex(), and yyerror(), the com-
- piled output requires linking with externally supplied
- versions of those functions. Default versions of main()
- and yyerror() are supplied in the yacc library and can
- be linked in by using the -l y operand to c99. The yacc
- library interfaces need not support interfaces with
- other than the default yy symbol prefix. The application
- provides the lexical analyzer function, yylex(); the lex
- utility is specifically designed to generate such a rou-
- tine.
-
- Input Language
- The application shall ensure that every specification
- file consists of three sections in order: declarations,
- grammar rules, and programs, separated by double percent
- signs ( "%%" ). The declarations and programs sections
- can be empty. If the latter is empty, the preceding "%%"
- mark separating it from the rules section can be omit-
- ted.
-
- The input is free form text following the structure of
- the grammar defined below.
-
- Lexical Structure of the Grammar
- The <blank>s, <newline>s, and <form-feed>s shall be
- ignored, except that the application shall ensure that
- they do not appear in names or multi-character reserved
- symbols. Comments shall be enclosed in "/* ... */", and
- can appear wherever a name is valid.
-
- Names are of arbitrary length, made up of letters, peri-
- ods ( '.' ), underscores ( '_' ), and non-initial dig-
- its. Uppercase and lowercase letters are distinct. Con-
- forming applications shall not use names beginning in yy
- or YY since the yacc parser uses such names. Many of the
- names appear in the final output of yacc, and thus they
- should be chosen to conform with any additional rules
- created by the C compiler to be used. In particular they
- appear in #define statements.
-
- A literal shall consist of a single character enclosed
- in single-quotes ( '" ). All of the escape sequences
- supported for character constants by the ISO C standard
- shall be supported by yacc.
-
- The relationship with the lexical analyzer is discussed
- in detail below.
-
- The application shall ensure that the NUL character is
- not used in grammar rules or literals.
-
- Declarations Section
- The declarations section is used to define the symbols
- used to define the target language and their relation-
- ship with each other. In particular, much of the addi-
- tional information required to resolve ambiguities in
- the context-free grammar for the target language is pro-
- vided here.
-
- Usually yacc assigns the relationship between the sym-
- bolic names it generates and their underlying numeric
- value. The declarations section makes it possible to
- control the assignment of these values.
-
- It is also possible to keep semantic information associ-
- ated with the tokens currently on the parse stack in a
- user-defined C-language union, if the members of the
- union are associated with the various names in the gram-
- mar. The declarations section provides for this as well.
-
- The first group of declarators below all take a list of
- names as arguments. That list can optionally be pre-
- ceded by the name of a C union member (called a tag
- below) appearing within '<' and '>' . (As an exception
- to the typographical conventions of the rest of this
- volume of IEEE Std 1003.1-2001, in this case <tag> does
- not represent a metavariable, but the literal angle
- bracket characters surrounding a symbol.) The use of tag
- specifies that the tokens named on this line shall be of
- the same C type as the union member referenced by tag.
- This is discussed in more detail below.
-
- For lists used to define tokens, the first appearance of
- a given token can be followed by a positive integer (as
- a string of decimal digits). If this is done, the under-
- lying value assigned to it for lexical purposes shall be
- taken to be that number.
-
- The following declares name to be a token:
-
-
- %token [<tag>] name [number][name [number]]...
-
- If tag is present, the C type for all tokens on this
- line shall be declared to be the type referenced by tag.
- If a positive integer, number, follows a name, that
- value shall be assigned to the token.
-
- The following declares name to be a token, and assigns
- precedence to it:
-
-
- %left [<tag>] name [number][name [number]]...
- %right [<tag>] name [number][name [number]]...
-
- One or more lines, each beginning with one of these sym-
- bols, can appear in this section. All tokens on the same
- line have the same precedence level and associativity;
- the lines are in order of increasing precedence or bind-
- ing strength. %left denotes that the operators on that
- line are left associative, and %right similarly denotes
- right associative operators. If tag is present, it shall
- declare a C type for names as described for %token.
-
- The following declares name to be a token, and indicates
- that this cannot be used associatively:
-
-
- %nonassoc [<tag>] name [number][name [number]]...
-
- If the parser encounters associative use of this token
- it reports an error. If tag is present, it shall declare
- a C type for names as described for %token.
-
- The following declares that union member names are non-
- terminals, and thus it is required to have a tag field
- at its beginning:
-
-
- %type <tag> name...
-
- Because it deals with non-terminals only, assigning a
- token number or using a literal is also prohibited. If
- this construct is present, yacc shall perform type
- checking; if this construct is not present, the parse
- stack shall hold only the int type.
-
- Every name used in grammar not defined by a %token,
- %left, %right, or %nonassoc declaration is assumed to
- represent a non-terminal symbol. The yacc utility shall
- report an error for any non-terminal symbol that does
- not appear on the left side of at least one grammar
- rule.
-
- Once the type, precedence, or token number of a name is
- specified, it shall not be changed. If the first decla-
- ration of a token does not assign a token number, yacc
- shall assign a token number. Once this assignment is
- made, the token number shall not be changed by explicit
- assignment.
-
- The following declarators do not follow the previous
- pattern.
-
- The following declares the non-terminal name to be the
- start symbol, which represents the largest, most general
- structure described by the grammar rules:
-
-
- %start name
-
- By default, it is the left-hand side of the first gram-
- mar rule; this default can be overridden with this dec-
- laration.
-
- The following declares the yacc value stack to be a
- union of the various types of values desired:
-
-
- %union { body of union (in C) }
-
- By default, the values returned by actions (see below)
- and the lexical analyzer shall be of type int. The yacc
- utility keeps track of types, and it shall insert corre-
- sponding union member names in order to perform strict
- type checking of the resulting parser.
-
- Alternatively, given that at least one <tag> construct
- is used, the union can be declared in a header file
- (which shall be included in the declarations section by
- using a #include construct within %{ and %}), and a
- typedef used to define the symbol YYSTYPE to represent
- this union. The effect of %union is to provide the dec-
- laration of YYSTYPE directly from the yacc input.
-
- C-language declarations and definitions can appear in
- the declarations section, enclosed by the following
- marks:
-
-
- %{ ... %}
-
- These statements shall be copied into the code file, and
- have global scope within it so that they can be used in
- the rules and program sections.
-
- The application shall ensure that the declarations sec-
- tion is terminated by the token %%.
-
- Grammar Rules in yacc
- The rules section defines the context-free grammar to be
- accepted by the function yacc generates, and associates
- with those rules C-language actions and additional
- precedence information. The grammar is described below,
- and a formal definition follows.
-
- The rules section is comprised of one or more grammar
- rules. A grammar rule has the form:
-
-
- A : BODY ;
-
- The symbol A represents a non-terminal name, and BODY
- represents a sequence of zero or more names, literals,
- and semantic actions that can then be followed by
- optional precedence rules. Only the names and literals
- participate in the formation of the grammar; the seman-
- tic actions and precedence rules are used in other ways.
- The colon and the semicolon are yacc punctuation. If
- there are several successive grammar rules with the same
- left-hand side, the vertical bar '|' can be used to
- avoid rewriting the left-hand side; in this case the
- semicolon appears only after the last rule. The BODY
- part can be empty (or empty of names and literals) to
- indicate that the non-terminal symbol matches the empty
- string.
-
- The yacc utility assigns a unique number to each rule.
- Rules using the vertical bar notation are distinct
- rules. The number assigned to the rule appears in the
- description file.
-
- The elements comprising a BODY are:
-
- name, literal
- These form the rules of the grammar: name is
- either a token or a non-terminal; literal stands
- for itself (less the lexically required quotation
- marks).
-
- semantic action
-
- With each grammar rule, the user can associate
- actions to be performed each time the rule is
- recognized in the input process. (Note that the
- word "action" can also refer to the actions of
- the parser-shift, reduce, and so on.)
-
- These actions can return values and can obtain the val-
- ues returned by previous actions. These values are kept
- in objects of type YYSTYPE (see %union). The result
- value of the action shall be kept on the parse stack
- with the left-hand side of the rule, to be accessed by
- other reductions as part of their right-hand side. By
- using the <tag> information provided in the declarations
- section, the code generated by yacc can be strictly type
- checked and contain arbitrary information. In addition,
- the lexical analyzer can provide the same kinds of val-
- ues for tokens, if desired.
-
- An action is an arbitrary C statement and as such can do
- input or output, call subprograms, and alter external
- variables. An action is one or more C statements
- enclosed in curly braces '{' and '}' .
-
- Certain pseudo-variables can be used in the action.
- These are macros for access to data structures known
- internally to yacc.
-
- $$
- The value of the action can be set by assigning
- it to $$. If type checking is enabled and the
- type of the value to be assigned cannot be deter-
- mined, a diagnostic message may be generated.
-
- $number
- This refers to the value returned by the compo-
- nent specified by the token number in the right
- side of a rule, reading from left to right; num-
- ber can be zero or negative. If number is zero or
- negative, it refers to the data associated with
- the name on the parser's stack preceding the
- leftmost symbol of the current rule. (That is,
- "$0" refers to the name immediately preceding the
- leftmost name in the current rule to be found on
- the parser's stack and "$-1" refers to the symbol
- to its left.) If number refers to an element past
- the current point in the rule, or beyond the bot-
- tom of the stack, the result is undefined. If
- type checking is enabled and the type of the
- value to be assigned cannot be determined, a
- diagnostic message may be generated.
-
- $<tag>number
-
- These correspond exactly to the corresponding
- symbols without the tag inclusion, but allow for
- strict type checking (and preclude unwanted type
- conversions). The effect is that the macro is
- expanded to use tag to select an element from the
- YYSTYPE union (using dataname.tag). This is par-
- ticularly useful if number is not positive.
-
- $<tag>$
- This imposes on the reference the type of the
- union member referenced by tag. This construction
- is applicable when a reference to a left context
- value occurs in the grammar, and provides yacc
- with a means for selecting a type.
-
-
- Actions can occur anywhere in a rule (not just at the
- end); an action can access values returned by actions to
- its left, and in turn the value it returns can be
- accessed by actions to its right. An action appearing
- in the middle of a rule shall be equivalent to replacing
- the action with a new non-terminal symbol and adding an
- empty rule with that non-terminal symbol on the left-
- hand side. The semantic action associated with the new
- rule shall be equivalent to the original action. The use
- of actions within rules might introduce conflicts that
- would not otherwise exist.
-
- By default, the value of a rule shall be the value of
- the first element in it. If the first element does not
- have a type (particularly in the case of a literal) and
- type checking is turned on by %type, an error message
- shall result.
-
- precedence
- The keyword %prec can be used to change the
- precedence level associated with a particular
- grammar rule. Examples of this are in cases where
- a unary and binary operator have the same sym-
- bolic representation, but need to be given dif-
- ferent precedences, or where the handling of an
- ambiguous if-else construction is necessary. The
- reserved symbol %prec can appear immediately
- after the body of the grammar rule and can be
- followed by a token name or a literal. It shall
- cause the precedence of the grammar rule to
- become that of the following token name or lit-
- eral. The action for the rule as a whole can fol-
- low %prec.
-
-
- If a program section follows, the application shall
- ensure that the grammar rules are terminated by %%.
-
- Programs Section
- The programs section can include the definition of the
- lexical analyzer yylex(), and any other functions; for
- example, those used in the actions specified in the
- grammar rules. It is unspecified whether the programs
- section precedes or follows the semantic actions in the
- output file; therefore, if the application contains any
- macro definitions and declarations intended to apply to
- the code in the semantic actions, it shall place them
- within "%{ ... %}" in the declarations section.
-
- Input Grammar
- The following input to yacc yields a parser for the
- input to yacc. This formal syntax takes precedence over
- the preceding text syntax description.
-
- The lexical structure is defined less precisely; Lexical
- Structure of the Grammar defines most terms. The corre-
- spondence between the previous terms and the tokens
- below is as follows.
-
- IDENTIFIER
- This corresponds to the concept of name, given
- previously. It also includes literals as defined
- previously.
-
- C_IDENTIFIER
- This is a name, and additionally it is known to
- be followed by a colon. A literal cannot yield
- this token.
-
- NUMBER A string of digits (a non-negative decimal inte-
- ger).
-
- TYPE, LEFT, MARK, LCURL, RCURL
-
- These correspond directly to %type, %left, %%,
- %{, and %}.
-
- { ... }
- This indicates C-language source code, with the
- possible inclusion of '$' macros as discussed
- previously.
-
-
-
- /* Grammar for the input to yacc. */
- /* Basic entries. */
- /* The following are recognized by the lexical analyzer. */
-
-
- %token IDENTIFIER /* Includes identifiers and literals */
- %token C_IDENTIFIER /* identifier (but not literal)
- followed by a :. */
- %token NUMBER /* [0-9][0-9]* */
-
-
- /* Reserved words : %type=>TYPE %left=>LEFT, and so on */
-
-
- %token LEFT RIGHT NONASSOC TOKEN PREC TYPE START UNION
-
-
- %token MARK /* The %% mark. */
- %token LCURL /* The %{ mark. */
- %token RCURL /* The %} mark. */
-
-
- /* 8-bit character literals stand for themselves; */
- /* tokens have to be defined for multi-byte characters. */
-
-
- %start spec
-
-
- %%
-
-
- spec : defs MARK rules tail
- ;
- tail : MARK
- {
- /* In this action, set up the rest of the file. */
- }
- | /* Empty; the second MARK is optional. */
- ;
- defs : /* Empty. */
- | defs def
- ;
- def : START IDENTIFIER
- | UNION
- {
- /* Copy union definition to output. */
- }
- | LCURL
- {
- /* Copy C code to output file. */
- }
- RCURL
- | rword tag nlist
- ;
- rword : TOKEN
- | LEFT
- | RIGHT
- | NONASSOC
- | TYPE
- ;
- tag : /* Empty: union tag ID optional. */
- | '<' IDENTIFIER '>'
- ;
- nlist : nmno
- | nlist nmno
- ;
- nmno : IDENTIFIER /* Note: literal invalid with % type. */
- | IDENTIFIER NUMBER /* Note: invalid with % type. */
- ;
-
-
- /* Rule section */
-
-
- rules : C_IDENTIFIER rbody prec
- | rules rule
- ;
- rule : C_IDENTIFIER rbody prec
- | '|' rbody prec
- ;
- rbody : /* empty */
- | rbody IDENTIFIER
- | rbody act
- ;
- act : '{'
- {
- /* Copy action, translate $$, and so on. */
- }
- '}'
- ;
- prec : /* Empty */
- | PREC IDENTIFIER
- | PREC IDENTIFIER act
- | prec ';'
- ;
-
- Conflicts
- The parser produced for an input grammar may contain
- states in which conflicts occur. The conflicts occur
- because the grammar is not LALR(1). An ambiguous grammar
- always contains at least one LALR(1) conflict. The yacc
- utility shall resolve all conflicts, using either
- default rules or user-specified precedence rules.
-
- Conflicts are either shift/reduce conflicts or
- reduce/reduce conflicts. A shift/reduce conflict is
- where, for a given state and lookahead symbol, both a
- shift action and a reduce action are possible. A
- reduce/reduce conflict is where, for a given state and
- lookahead symbol, reductions by two different rules are
- possible.
-
- The rules below describe how to specify what actions to
- take when a conflict occurs. Not all shift/reduce con-
- flicts can be successfully resolved this way because the
- conflict may be due to something other than ambiguity,
- so incautious use of these facilities can cause the lan-
- guage accepted by the parser to be much different from
- that which was intended. The description file shall con-
- tain sufficient information to understand the cause of
- the conflict. Where ambiguity is the reason either the
- default or explicit rules should be adequate to produce
- a working parser.
-
- The declared precedences and associativities (see Decla-
- rations Section ) are used to resolve parsing conflicts
- as follows:
-
- 1. A precedence and associativity is associated with
- each grammar rule; it is the precedence and associa-
- tivity of the last token or literal in the body of
- the rule. If the %prec keyword is used, it overrides
- this default. Some grammar rules might not have both
- precedence and associativity.
-
-
- 2. If there is a shift/reduce conflict, and both the
- grammar rule and the input symbol have precedence
- and associativity associated with them, then the
- conflict is resolved in favor of the action (shift
- or reduce) associated with the higher precedence. If
- the precedences are the same, then the associativity
- is used; left associative implies reduce, right
- associative implies shift, and non-associative
- implies an error in the string being parsed.
-
-
- 3. When there is a shift/reduce conflict that cannot be
- resolved by rule 2, the shift is done. Conflicts
- resolved this way are counted in the diagnostic out-
- put described in Error Handling .
-
-
- 4. When there is a reduce/reduce conflict, a reduction
- is done by the grammar rule that occurs earlier in
- the input sequence. Conflicts resolved this way are
- counted in the diagnostic output described in Error
- Handling .
-
-
- Conflicts resolved by precedence or associativity shall
- not be counted in the shift/reduce and reduce/reduce
- conflicts reported by yacc on either standard error or
- in the description file.
-
- Error Handling
- The token error shall be reserved for error handling.
- The name error can be used in grammar rules. It indi-
- cates places where the parser can recover from a syntax
- error. The default value of error shall be 256. Its
- value can be changed using a %token declaration. The
- lexical analyzer should not return the value of error.
-
- The parser shall detect a syntax error when it is in a
- state where the action associated with the lookahead
- symbol is error. A semantic action can cause the parser
- to initiate error handling by executing the macro YYER-
- ROR. When YYERROR is executed, the semantic action
- passes control back to the parser. YYERROR cannot be
- used outside of semantic actions.
-
- When the parser detects a syntax error, it normally
- calls yyerror() with the character string "syntax error"
- as its argument. The call shall not be made if the
- parser is still recovering from a previous error when
- the error is detected. The parser is considered to be
- recovering from a previous error until the parser has
- shifted over at least three normal input symbols since
- the last error was detected or a semantic action has
- executed the macro yyerrok. The parser shall not call
- yyerror() when YYERROR is executed.
-
- The macro function YYRECOVERING shall return 1 if a syn-
- tax error has been detected and the parser has not yet
- fully recovered from it. Otherwise, zero shall be
- returned.
-
- When a syntax error is detected by the parser, the
- parser shall check if a previous syntax error has been
- detected. If a previous error was detected, and if no
- normal input symbols have been shifted since the preced-
- ing error was detected, the parser checks if the looka-
- head symbol is an endmarker (see Interface to the Lexi-
- cal Analyzer ). If it is, the parser shall return with a
- non-zero value. Otherwise, the lookahead symbol shall be
- discarded and normal parsing shall resume.
-
- When YYERROR is executed or when the parser detects a
- syntax error and no previous error has been detected, or
- at least one normal input symbol has been shifted since
- the previous error was detected, the parser shall pop
- back one state at a time until the parse stack is empty
- or the current state allows a shift over error. If the
- parser empties the parse stack, it shall return with a
- non-zero value. Otherwise, it shall shift over error and
- then resume normal parsing. If the parser reads a looka-
- head symbol before the error was detected, that symbol
- shall still be the lookahead symbol when parsing is
- resumed.
-
- The macro yyerrok in a semantic action shall cause the
- parser to act as if it has fully recovered from any pre-
- vious errors. The macro yyclearin shall cause the parser
- to discard the current lookahead token. If the current
- lookahead token has not yet been read, yyclearin shall
- have no effect.
-
- The macro YYACCEPT shall cause the parser to return with
- the value zero. The macro YYABORT shall cause the parser
- to return with a non-zero value.
-
- Interface to the Lexical Analyzer
- The yylex() function is an integer-valued function that
- returns a token number representing the kind of token
- read. If there is a value associated with the token
- returned by yylex() (see the discussion of tag above),
- it shall be assigned to the external variable yylval.
-
- If the parser and yylex() do not agree on these token
- numbers, reliable communication between them cannot
- occur. For (single-byte character) literals, the token
- is simply the numeric value of the character in the cur-
- rent character set. The numbers for other tokens can
- either be chosen by yacc, or chosen by the user. In
- either case, the #define construct of C is used to allow
- yylex() to return these numbers symbolically. The
- #define statements are put into the code file, and the
- header file if that file is requested. The set of char-
- acters permitted by yacc in an identifier is larger than
- that permitted by C. Token names found to contain such
- characters shall not be included in the #define declara-
- tions.
-
- If the token numbers are chosen by yacc, the tokens
- other than literals shall be assigned numbers greater
- than 256, although no order is implied. A token can be
- explicitly assigned a number by following its first
- appearance in the declarations section with a number.
- Names and literals not defined this way retain their
- default definition. All token numbers assigned by yacc
- shall be unique and distinct from the token numbers used
- for literals and user-assigned tokens. If duplicate
- token numbers cause conflicts in parser generation, yacc
- shall report an error; otherwise, it is unspecified
- whether the token assignment is accepted or an error is
- reported.
-
- The end of the input is marked by a special token called
- the endmarker, which has a token number that is zero or
- negative. (These values are invalid for any other
- token.) All lexical analyzers shall return zero or nega-
- tive as a token number upon reaching the end of their
- input. If the tokens up to, but excluding, the endmarker
- form a structure that matches the start symbol, the
- parser shall accept the input. If the endmarker is seen
- in any other context, it shall be considered an error.
-
- Completing the Program
- In addition to yyparse() and yylex(), the functions
- yyerror() and main() are required to make a complete
- program. The application can supply main() and yyer-
- ror(), or those routines can be obtained from the yacc
- library.
-
- Yacc Library
- The following functions shall appear only in the yacc
- library accessible through the -l y operand to c99; they
- can therefore be redefined by a conforming application:
-
- int main(void)
-
- This function shall call yyparse() and exit with
- an unspecified value. Other actions within this
- function are unspecified.
-
- int yyerror(const char *s)
-
- This function shall write the NUL-terminated
- argument to standard error, followed by a <new-
- line>.
-
-
- The order of the -l y and -l l operands given to c99 is
- significant; the application shall either provide its
- own main() function or ensure that -l y precedes -l l.
-
- Debugging the Parser
- The parser generated by yacc shall have diagnostic
- facilities in it that can be optionally enabled at
- either compile time or at runtime (if enabled at compile
- time). The compilation of the runtime debugging code is
- under the control of YYDEBUG, a preprocessor symbol. If
- YYDEBUG has a non-zero value, the debugging code shall
- be included. If its value is zero, the code shall not be
- included.
-
- In parsers where the debugging code has been included,
- the external int yydebug can be used to turn debugging
- on (with a non-zero value) and off (zero value) at run-
- time. The initial value of yydebug shall be zero.
-
- When -t is specified, the code file shall be built such
- that, if YYDEBUG is not already defined at compilation
- time (using the c99 -D YYDEBUG option, for example),
- YYDEBUG shall be set explicitly to 1. When -t is not
- specified, the code file shall be built such that, if
- YYDEBUG is not already defined, it shall be set explic-
- itly to zero.
-
- The format of the debugging output is unspecified but
- includes at least enough information to determine the
- shift and reduce actions, and the input symbols. It also
- provides information about error recovery.
-
- Algorithms
- The parser constructed by yacc implements an LALR(1)
- parsing algorithm as documented in the literature. It is
- unspecified whether the parser is table-driven or
- direct-coded.
-
- A parser generated by yacc shall never request an input
- symbol from yylex() while in a state where the only
- actions other than the error action are reductions by a
- single rule.
-
- The literature of parsing theory defines these concepts.
-
- Limits
- The yacc utility may have several internal tables. The
- minimum maximums for these tables are shown in the fol-
- lowing table. The exact meaning of these values is
- implementation-defined. The implementation shall define
- the relationship between these values and between them
- and any error messages that the implementation may gen-
- erate should it run out of space for any internal struc-
- ture. An implementation may combine groups of these
- resources into a single pool as long as the total avail-
- able to the user does not fall below the sum of the
- sizes specified by this section.
-
- Table: Internal Limits in yacc
-
- Minimum
- Limit Maximum Description
- {NTERMS} 126 Number of tokens.
- {NNONTERM} 200 Number of non-terminals.
- {NPROD} 300 Number of rules.
- {NSTATES} 600 Number of states.
- {MEMSIZE} 5200 Length of rules. The total length, in
- names (tokens and non-terminals), of all
- the rules of the grammar. The left-hand
- side is counted for each rule, even if
- it is not explicitly repeated, as speci-
- fied in Grammar Rules in yacc .
- {ACTSIZE} 4000 Number of actions. "Actions" here (and
- in the description file) refer to parser
- actions (shift, reduce, and so on) not
- to semantic actions defined in Grammar
- Rules in yacc .
-
-EXIT STATUS
- The following exit values shall be returned:
-
- 0 Successful completion.
-
- >0 An error occurred.
-
-
-CONSEQUENCES OF ERRORS
- If any errors are encountered, the run is aborted and
- yacc exits with a non-zero status. Partial code files
- and header files may be produced. The summary informa-
- tion in the description file shall always be produced if
- the -v flag is present.
-
- The following sections are informative.
-
-APPLICATION USAGE
- Historical implementations experience name conflicts on
- the names yacc.tmp, yacc.acts, yacc.debug, y.tab.c,
- y.tab.h, and y.output if more than one copy of yacc is
- running in a single directory at one time. The -b option
- was added to overcome this problem. The related problem
- of allowing multiple yacc parsers to be placed in the
- same file was addressed by adding a -p option to over-
- ride the previously hard-coded yy variable prefix.
-
- The description of the -p option specifies the minimal
- set of function and variable names that cause conflict
- when multiple parsers are linked together. YYSTYPE does
- not need to be changed. Instead, the programmer can use
- -b to give the header files for different parsers dif-
- ferent names, and then the file with the yylex() for a
- given parser can include the header for that parser.
- Names such as yyclearerr do not need to be changed
- because they are used only in the actions; they do not
- have linkage. It is possible that an implementation has
- other names, either internal ones for implementing
- things such as yyclearerr, or providing non-standard
- features that it wants to change with -p.
-
- Unary operators that are the same token as a binary
- operator in general need their precedence adjusted. This
- is handled by the %prec advisory symbol associated with
- the particular grammar rule defining that unary opera-
- tor. (See Grammar Rules in yacc .) Applications are not
- required to use this operator for unary operators, but
- the grammars that do not require it are rare.
-
-EXAMPLES
- Access to the yacc library is obtained with library
- search operands to c99. To use the yacc library main():
-
-
- c99 y.tab.c -l y
-
- Both the lex library and the yacc library contain
- main(). To access the yacc main():
-
-
- c99 y.tab.c lex.yy.c -l y -l l
-
- This ensures that the yacc library is searched first, so
- that its main() is used.
-
- The historical yacc libraries have contained two simple
- functions that are normally coded by the application
- programmer. These functions are similar to the follow-
- ing code:
-
-
- #include <locale.h>
- int main(void)
- {
- extern int yyparse();
-
-
- setlocale(LC_ALL, "");
-
-
- /* If the following parser is one created by lex, the
- application must be careful to ensure that LC_CTYPE
- and LC_COLLATE are set to the POSIX locale. */
- (void) yyparse();
- return (0);
- }
-
-
- #include <stdio.h>
-
-
- int yyerror(const char *msg)
- {
- (void) fprintf(stderr, "%s\n", msg);
- return (0);
- }
-
-RATIONALE
- The references in may be helpful in constructing the
- parser generator. The referenced DeRemer and Pennello
- article (along with the works it references) describes a
- technique to generate parsers that conform to this vol-
- ume of IEEE Std 1003.1-2001. Work in this area contin-
- ues to be done, so implementors should consult current
- literature before doing any new implementations. The
- original Knuth article is the theoretical basis for this
- kind of parser, but the tables it generates are imprac-
- tically large for reasonable grammars and should not be
- used. The "equivalent to" wording is intentional to
- assure that the best tables that are LALR(1) can be gen-
- erated.
-
- There has been confusion between the class of grammars,
- the algorithms needed to generate parsers, and the algo-
- rithms needed to parse the languages. They are all rea-
- sonably orthogonal. In particular, a parser generator
- that accepts the full range of LR(1) grammars need not
- generate a table any more complex than one that accepts
- SLR(1) (a relatively weak class of LR grammars) for a
- grammar that happens to be SLR(1). Such an implementa-
- tion need not recognize the case, either; table compres-
- sion can yield the SLR(1) table (or one even smaller
- than that) without recognizing that the grammar is
- SLR(1). The speed of an LR(1) parser for any class is
- dependent more upon the table representation and com-
- pression (or the code generation if a direct parser is
- generated) than upon the class of grammar that the table
- generator handles.
-
- The speed of the parser generator is somewhat dependent
- upon the class of grammar it handles. However, the orig-
- inal Knuth article algorithms for constructing LR
- parsers were judged by its author to be impractically
- slow at that time. Although full LR is more complex than
- LALR(1), as computer speeds and algorithms improve, the
- difference (in terms of acceptable wall-clock execution
- time) is becoming less significant.
-
- Potential authors are cautioned that the referenced
- DeRemer and Pennello article previously cited identifies
- a bug (an over-simplification of the computation of
- LALR(1) lookahead sets) in some of the LALR(1) algorithm
- statements that preceded it to publication. They should
- take the time to seek out that paper, as well as current
- relevant work, particularly Aho's.
-
- The -b option was added to provide a portable method for
- permitting yacc to work on multiple separate parsers in
- the same directory. If a directory contains more than
- one yacc grammar, and both grammars are constructed at
- the same time (by, for example, a parallel make pro-
- gram), conflict results. While the solution is not his-
- torical practice, it corrects a known deficiency in his-
- torical implementations. Corresponding changes were made
- to all sections that referenced the filenames y.tab.c
- (now "the code file"), y.tab.h (now "the header file"),
- and y.output (now "the description file").
-
- The grammar for yacc input is based on System V documen-
- tation. The textual description shows there that the
- ';' is required at the end of the rule. The grammar and
- the implementation do not require this. (The use of
- C_IDENTIFIER causes a reduce to occur in the right
- place.)
-
- Also, in that implementation, the constructs such as
- %token can be terminated by a semicolon, but this is not
- permitted by the grammar. The keywords such as %token
- can also appear in uppercase, which is again not dis-
- cussed. In most places where '%' is used, '\' can be
- substituted, and there are alternate spellings for some
- of the symbols (for example, %LEFT can be "%<" or even
- "\<" ).
-
- Historically, <tag> can contain any characters except
- '>', including white space, in the implementation. How-
- ever, since the tag must reference an ISO C standard
- union member, in practice conforming implementations
- need to support only the set of characters for ISO C
- standard identifiers in this context.
-
- Some historical implementations are known to accept
- actions that are terminated by a period. Historical
- implementations often allow '$' in names. A conforming
- implementation does not need to support either of these
- behaviors.
-
- Deciding when to use %prec illustrates the difficulty in
- specifying the behavior of yacc. There may be situations
- in which the grammar is not, strictly speaking, in
- error, and yet yacc cannot interpret it unambiguously.
- The resolution of ambiguities in the grammar can in many
- instances be resolved by providing additional informa-
- tion, such as using %type or %union declarations. It is
- often easier and it usually yields a smaller parser to
- take this alternative when it is appropriate.
-
- The size and execution time of a program produced with-
- out the runtime debugging code is usually smaller and
- slightly faster in historical implementations.
-
- Statistics messages from several historical implementa-
- tions include the following types of information:
-
-
- n/512 terminals, n/300 non-terminals
- n/600 grammar rules, n/1500 states
- n shift/reduce, n reduce/reduce conflicts reported
- n/350 working sets used
- Memory: states, etc. n/15000, parser n/15000
- n/600 distinct lookahead sets
- n extra closures
- n shift entries, n exceptions
- n goto entries
- n entries saved by goto default
- Optimizer space used: input n/15000, output n/15000
- n table entries, n zero
- Maximum spread: n, Maximum offset: n
-
- The report of internal tables in the description file is
- left implementation-defined because all aspects of these
- limits are also implementation-defined. Some implementa-
- tions may use dynamic allocation techniques and have no
- specific limit values to report.
-
- The format of the y.output file is not given because
- specification of the format was not seen to enhance
- applications portability. The listing is primarily
- intended to help human users understand and debug the
- parser; use of y.output by a conforming application
- script would be unusual. Furthermore, implementations
- have not produced consistent output and no popular for-
- mat was apparent. The format selected by the implementa-
- tion should be human-readable, in addition to the
- requirement that it be a text file.
-
- Standard error reports are not specifically described
- because they are seldom of use to conforming applica-
- tions and there was no reason to restrict implementa-
- tions.
-
- Some implementations recognize "={" as equivalent to '{'
- because it appears in historical documentation. This
- construction was recognized and documented as obsolete
- as long ago as 1978, in the referenced Yacc: Yet Another
- Compiler-Compiler. This volume of IEEE Std 1003.1-2001
- chose to leave it as obsolete and omit it.
-
- Multi-byte characters should be recognized by the lexi-
- cal analyzer and returned as tokens. They should not be
- returned as multi-byte character literals. The token
- error that is used for error recovery is normally
- assigned the value 256 in the historical implementation.
- Thus, the token value 256, which is used in many multi-
- byte character sets, is not available for use as the
- value of a user-defined token.
-
-FUTURE DIRECTIONS
- None.
-
-SEE ALSO
- c99, lex
-
-COPYRIGHT
- Portions of this text are reprinted and reproduced in
- electronic form from IEEE Std 1003.1, 2003 Edition,
- Standard for Information Technology -- Portable Operat-
- ing System Interface (POSIX), The Open Group Base Speci-
- fications Issue 6, Copyright (C) 2001-2003 by the Insti-
- tute of Electrical and Electronics Engineers, Inc and
- The Open Group. In the event of any discrepancy between
- this version and the original IEEE and The Open Group
- Standard, the original IEEE and The Open Group Standard
- is the referee document. The original Standard can be
- obtained online at http://www.open-
- group.org/unix/online.html .
-
-
-
-IEEE/The Open Group 2003 YACC(1P)
diff --git a/gnuwin32/man/cat3/iconv.3.txt b/gnuwin32/man/cat3/iconv.3.txt
deleted file mode 100644
index 1feacab2..00000000
--- a/gnuwin32/man/cat3/iconv.3.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-ICONV(3) Linux Programmer's Manual ICONV(3)
-
-
-
-
-
-NAME
- iconv - perform character set conversion
-
-SYNOPSIS
- #include <iconv.h>
-
- size_t iconv (iconv_t cd,
- const char* * inbuf, size_t * inbytesleft,
- char* * outbuf, size_t * outbytesleft);
-
-DESCRIPTION
- The argument cd must be a conversion descriptor created
- using the function iconv_open.
-
- The main case is when inbuf is not NULL and *inbuf is
- not NULL. In this case, the iconv function converts the
- multibyte sequence starting at *inbuf to a multibyte
- sequence starting at *outbuf. At most *inbytesleft
- bytes, starting at *inbuf, will be read. At most *out-
- bytesleft bytes, starting at *outbuf, will be written.
-
- The iconv function converts one multibyte character at a
- time, and for each character conversion it increments
- *inbuf and decrements *inbytesleft by the number of con-
- verted input bytes, it increments *outbuf and decrements
- *outbytesleft by the number of converted output bytes,
- and it updates the conversion state contained in cd.
- The conversion can stop for four reasons:
-
- 1. An invalid multibyte sequence is encountered in the
- input. In this case it sets errno to EILSEQ and returns
- (size_t)(-1). *inbuf is left pointing to the beginning
- of the invalid multibyte sequence.
-
- 2. The input byte sequence has been entirely converted,
- i.e. *inbytesleft has gone down to 0. In this case iconv
- returns the number of non-reversible conversions per-
- formed during this call.
-
- 3. An incomplete multibyte sequence is encountered in
- the input, and the input byte sequence terminates after
- it. In this case it sets errno to EINVAL and returns
- (size_t)(-1). *inbuf is left pointing to the beginning
- of the incomplete multibyte sequence.
-
- 4. The output buffer has no more room for the next con-
- verted character. In this case it sets errno to E2BIG
- and returns (size_t)(-1).
-
- A different case is when inbuf is NULL or *inbuf is
- NULL, but outbuf is not NULL and *outbuf is not NULL. In
- this case, the iconv function attempts to set cd's con-
- version state to the initial state and store a corre-
- sponding shift sequence at *outbuf. At most *out-
- bytesleft bytes, starting at *outbuf, will be written.
- If the output buffer has no more room for this reset
- sequence, it sets errno to E2BIG and returns
- (size_t)(-1). Otherwise it increments *outbuf and decre-
- ments *outbytesleft by the number of bytes written.
-
- A third case is when inbuf is NULL or *inbuf is NULL,
- and outbuf is NULL or *outbuf is NULL. In this case, the
- iconv function sets cd's conversion state to the initial
- state.
-
-RETURN VALUE
- The iconv function returns the number of characters con-
- verted in a non-reversible way during this call;
- reversible conversions are not counted. In case of
- error, it sets errno and returns (size_t)(-1).
-
-ERRORS
- The following errors can occur, among others:
-
- E2BIG There is not sufficient room at *outbuf.
-
- EILSEQ An invalid multibyte sequence has been encoun-
- tered in the input.
-
- EINVAL An incomplete multibyte sequence has been encoun-
- tered in the input.
-
-CONFORMING TO
- UNIX98
-
-SEE ALSO
- iconv_open(3), iconv_close(3)
-
-
-
-GNU January 21, 2004 ICONV(3)
diff --git a/gnuwin32/man/cat3/iconv_close.3.txt b/gnuwin32/man/cat3/iconv_close.3.txt
deleted file mode 100644
index f7aa1aae..00000000
--- a/gnuwin32/man/cat3/iconv_close.3.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-ICONV_CLOSE(3) Linux Programmer's Manual ICONV_CLOSE(3)
-
-
-
-
-
-NAME
- iconv_close - deallocate descriptor for character set
- conversion
-
-SYNOPSIS
- #include <iconv.h>
-
- int iconv_close (iconv_t cd);
-
-DESCRIPTION
- The iconv_close function deallocates a conversion
- descriptor cd previously allocated using iconv_open.
-
-RETURN VALUE
- When successful, the iconv_close function returns 0. In
- case of error, it sets errno and returns -1.
-
-CONFORMING TO
- UNIX98
-
-SEE ALSO
- iconv_open(3), iconv(3)
-
-
-
-GNU November 27, 1999 ICONV_CLOSE(3)
diff --git a/gnuwin32/man/cat3/iconv_open.3.txt b/gnuwin32/man/cat3/iconv_open.3.txt
deleted file mode 100644
index 6f07c463..00000000
--- a/gnuwin32/man/cat3/iconv_open.3.txt
+++ /dev/null
@@ -1,152 +0,0 @@
-ICONV_OPEN(3) Linux Programmer's Manual ICONV_OPEN(3)
-
-
-
-
-
-NAME
- iconv_open - allocate descriptor for character set con-
- version
-
-SYNOPSIS
- #include <iconv.h>
-
- iconv_t iconv_open (const char* tocode, const char* fromcode);
-
-DESCRIPTION
- The iconv_open function allocates a conversion descrip-
- tor suitable for converting byte sequences from charac-
- ter encoding fromcode to character encoding tocode.
-
- The values permitted for fromcode and tocode and the
- supported combinations are system dependent. For the
- libiconv library, the following encodings are supported,
- in all combinations.
-
- European languages
- ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16},
- KOI8-R, KOI8-U, KOI8-RU,
- CP{1250,1251,1252,1253,1254,1257}, CP{850,866},
- Mac{Roman,CentralEurope,Iceland,Croatian,Roma-
- nia}, Mac{Cyrillic,Ukraine,Greek,Turkish}, Macin-
- tosh
-
- Semitic languages
- ISO-8859-{6,8}, CP{1255,1256}, CP862,
- Mac{Hebrew,Arabic}
-
- Japanese
- EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP,
- ISO-2022-JP-2, ISO-2022-JP-1
-
- Chinese
- EUC-CN, HZ, GBK, GB18030, EUC-TW, BIG5, CP950,
- BIG5-HKSCS, ISO-2022-CN, ISO-2022-CN-EXT
-
- Korean
- EUC-KR, CP949, ISO-2022-KR, JOHAB
-
- Armenian
- ARMSCII-8
-
- Georgian
- Georgian-Academy, Georgian-PS
-
- Tajik
- KOI8-T
-
- Thai
- TIS-620, CP874, MacThai
-
- Laotian
- MuleLao-1, CP1133
-
- Vietnamese
- VISCII, TCVN, CP1258
-
- Platform specifics
- HP-ROMAN8, NEXTSTEP
-
- Full Unicode
- UTF-8
- UCS-2, UCS-2BE, UCS-2LE
- UCS-4, UCS-4BE, UCS-4LE
- UTF-16, UTF-16BE, UTF-16LE
- UTF-32, UTF-32BE, UTF-32LE
- UTF-7
- C99, JAVA
-
- Full Unicode, in terms of uint16_t or uint32_t
- (with machine dependent endianness and alignment)
- UCS-2-INTERNAL, UCS-4-INTERNAL
-
- Locale dependent, in terms of char or wchar_t
- (with machine dependent endianness and alignment,
- and with semantics depending on the OS and the
- current LC_CTYPE locale facet)
- char, wchar_t
-
- When configured with the option --enable-extra-encod-
- ings, it also provides support for a few extra encod-
- ings:
-
- European languages
- CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125}
-
- Semitic languages
- CP864
-
- Japanese
- EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3
-
- Turkmen
- TDS565
-
- Platform specifics
- RISCOS-LATIN1
-
- The empty encoding name "" is equivalent to "char": it
- denotes the locale dependent character encoding.
-
- When the string "//TRANSLIT" is appended to tocode,
- transliteration is activated. This means that when a
- character cannot be represented in the target character
- set, it can be approximated through one or several simi-
- larly looking characters.
-
- When the string "//IGNORE" is appended to tocode, char-
- acters that cannot be represented in the target charac-
- ter set will be silently discarded.
-
- The resulting conversion descriptor can be used with
- iconv any number of times. It remains valid until deal-
- located using iconv_close.
-
- A conversion descriptor contains a conversion state.
- After creation using iconv_open, the state is in the
- initial state. Using iconv modifies the descriptor's
- conversion state. (This implies that a conversion
- descriptor can not be used in multiple threads simulta-
- neously.) To bring the state back to the initial state,
- use iconv with NULL as inbuf argument.
-
-RETURN VALUE
- The iconv_open function returns a freshly allocated con-
- version descriptor. In case of error, it sets errno and
- returns (iconv_t)(-1).
-
-ERRORS
- The following error can occur, among others:
-
- EINVAL The conversion from fromcode to tocode is not
- supported by the implementation.
-
-CONFORMING TO
- UNIX98
-
-SEE ALSO
- iconv(3), iconv_close(3)
-
-
-
-GNU May 26, 2002 ICONV_OPEN(3)
diff --git a/gnuwin32/manifest/gperf-3.0.1-bin.mft b/gnuwin32/manifest/gperf-3.0.1-bin.mft
deleted file mode 100644
index 836d20fe..00000000
--- a/gnuwin32/manifest/gperf-3.0.1-bin.mft
+++ /dev/null
@@ -1,14 +0,0 @@
-bin/gperf.exe
-contrib/gperf/3.0.1/depends-GnuWin32.lst
-contrib/gperf/3.0.1/gperf-3.0.1-GnuWin32.README
-contrib/gperf/3.0.1/gperf-3.0.1-src/AUTHORS
-contrib/gperf/3.0.1/gperf-3.0.1-src/ChangeLog
-contrib/gperf/3.0.1/gperf-3.0.1-src/COPYING
-contrib/gperf/3.0.1/gperf-3.0.1-src/INSTALL
-contrib/gperf/3.0.1/gperf-3.0.1-src/NEWS
-contrib/gperf/3.0.1/gperf-3.0.1-src/README
-contrib/gperf/3.0.1/gperf-3.0.1/check.log
-contrib/gperf/3.0.1/gperf-3.0.1/check_err.log
-man/cat1/gperf.1.txt
-manifest/gperf-3.0.1-bin.mft
-manifest/gperf-3.0.1-bin.ver
diff --git a/gnuwin32/manifest/gperf-3.0.1-bin.ver b/gnuwin32/manifest/gperf-3.0.1-bin.ver
deleted file mode 100644
index 380dbbc7..00000000
--- a/gnuwin32/manifest/gperf-3.0.1-bin.ver
+++ /dev/null
@@ -1,2 +0,0 @@
-Gperf 3.0.1: Binaries
-Gperf: generate a perfect hash function from a key set \ No newline at end of file
diff --git a/gnuwin32/manifest/libiconv-1.9.2-1-bin.mft b/gnuwin32/manifest/libiconv-1.9.2-1-bin.mft
deleted file mode 100644
index e69de29b..00000000
--- a/gnuwin32/manifest/libiconv-1.9.2-1-bin.mft
+++ /dev/null
diff --git a/gnuwin32/manifest/libiconv-1.9.2-1-bin.ver b/gnuwin32/manifest/libiconv-1.9.2-1-bin.ver
deleted file mode 100644
index 9ba63656..00000000
--- a/gnuwin32/manifest/libiconv-1.9.2-1-bin.ver
+++ /dev/null
@@ -1,2 +0,0 @@
-LibIconv 1.9.2: Binaries
-LibIconv: convert between character encodings \ No newline at end of file
diff --git a/gnuwin32/manifest/libiconv-1.9.2-1-dep.mft b/gnuwin32/manifest/libiconv-1.9.2-1-dep.mft
deleted file mode 100644
index e69de29b..00000000
--- a/gnuwin32/manifest/libiconv-1.9.2-1-dep.mft
+++ /dev/null
diff --git a/gnuwin32/manifest/libiconv-1.9.2-1-dep.ver b/gnuwin32/manifest/libiconv-1.9.2-1-dep.ver
deleted file mode 100644
index 3ca20388..00000000
--- a/gnuwin32/manifest/libiconv-1.9.2-1-dep.ver
+++ /dev/null
@@ -1,2 +0,0 @@
-LibIconv 1.9.2: Dependencies
-LibIconv: convert between character encodings \ No newline at end of file
diff --git a/gnuwin32/patches/win_flex.patch b/gnuwin32/patches/win_flex.patch
deleted file mode 100644
index 27d1e936..00000000
--- a/gnuwin32/patches/win_flex.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Index: flex/src/main.c
-===================================================================
---- flex/src/main.c (revision 24)
-+++ flex/src/main.c (working copy)
-@@ -112,7 +112,7 @@
- struct yytbl_writer tableswr;
-
- int prev_stdout = 0;
--char *flex_temp_out_main="~flex_temp_out_main";
-+char *flex_temp_out_main = 0;
-
- /* Make sure program_name is initialized so we don't crash if writing
- * out an error message before getting the program name from argv[0].
-@@ -767,6 +767,8 @@
- tblsiz);
- }
-
-+ free (flex_temp_out_main);
-+ flex_temp_out_main = 0;
- exit (exit_status);
- }
-
-@@ -779,8 +781,10 @@
- {
- int i, sawcmpflag, rv, optind;
- char *arg;
-+ char flex_temp_out_main_template[] = "~flex_temp_out_main_XXXXXX";
- scanopt_t sopt;
-
-+ flex_temp_out_main = _strdup(_mktemp(flex_temp_out_main_template));
- printstats = syntaxerror = trace = spprdflt = false;
- lex_compat = posix_compat = C_plus_plus = backing_up_report =
- ddebug = fulltbl = false;
-Index: flex/src/filter.c
-===================================================================
---- flex/src/filter.c (revision 24)
-+++ flex/src/filter.c (working copy)
-@@ -86,7 +86,8 @@
-
- /* Get some more or less random data. */
- {
-- static unsigned long long g_value = 827363;
-+ static unsigned long long g_value;
-+ g_value = _getpid();
- g_value += 100;
- random_time_bits = (((unsigned long long)234546 << 32)
- | (unsigned long long)g_value);
diff --git a/gnuwin32/share/aclocal/bison-i18n.m4 b/gnuwin32/share/aclocal/bison-i18n.m4
deleted file mode 100644
index 75717127..00000000
--- a/gnuwin32/share/aclocal/bison-i18n.m4
+++ /dev/null
@@ -1,48 +0,0 @@
-# bison-i18n.m4 serial 2
-dnl Copyright (C) 2005-2006 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-dnl Support for internationalization of bison-generated parsers.
-
-dnl BISON_I18N
-dnl should be used in configure.ac, after AM_GNU_GETTEXT. If USE_NLS is yes, it
-dnl sets BISON_LOCALEDIR to indicate where to find the bison-runtime.mo files
-dnl and defines YYENABLE_NLS if there are bison-runtime.mo files at all.
-AC_DEFUN([BISON_I18N],
-[
- if test -z "$USE_NLS"; then
- echo "The BISON-I18N macro is used without being preceded by AM-GNU-GETTEXT." 1>&2
- exit 1
- fi
- BISON_LOCALEDIR=
- BISON_USE_NLS=no
- if test "$USE_NLS" = yes; then
- dnl Determine bison's localedir.
- dnl AC_PROG_YACC sets the YACC variable; other macros set the BISON variable.
- dnl But even is YACC is called "yacc", it may be a script that invokes bison
- dnl and accepts the --print-localedir option.
- dnl YACC's default value is empty; BISON's default value is :.
- if (${YACC-${BISON-:}} --print-localedir) >/dev/null 2>&1; then
- BISON_LOCALEDIR=`${YACC-${BISON-:}} --print-localedir`
- fi
- AC_SUBST([BISON_LOCALEDIR])
- if test -n "$BISON_LOCALEDIR"; then
- dnl There is no need to enable internationalization if the user doesn't
- dnl want message catalogs. So look at the language/locale names for
- dnl which the user wants message catalogs. This is $LINGUAS. If unset
- dnl or empty, he wants all of them.
- USER_LINGUAS="${LINGUAS-%UNSET%}"
- if test -n "$USER_LINGUAS"; then
- BISON_USE_NLS=yes
- fi
- fi
- fi
- if test $BISON_USE_NLS = yes; then
- AC_DEFINE([YYENABLE_NLS], 1,
- [Define to 1 to internationalize bison runtime messages.])
- fi
-])
diff --git a/gnuwin32/share/locale/ca/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/ca/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 6ba6490e..00000000
--- a/gnuwin32/share/locale/ca/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/da/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/da/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 03bb961a..00000000
--- a/gnuwin32/share/locale/da/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/da/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/da/LC_MESSAGES/bison.mo
deleted file mode 100644
index e62a7842..00000000
--- a/gnuwin32/share/locale/da/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/da/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/da/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 244b4db4..00000000
--- a/gnuwin32/share/locale/da/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/de/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/de/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 178fc682..00000000
--- a/gnuwin32/share/locale/de/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/de/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/de/LC_MESSAGES/bison.mo
deleted file mode 100644
index c1783d00..00000000
--- a/gnuwin32/share/locale/de/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/de/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/de/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 9c037912..00000000
--- a/gnuwin32/share/locale/de/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/el/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/el/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 912b59be..00000000
--- a/gnuwin32/share/locale/el/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/el/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/el/LC_MESSAGES/bison.mo
deleted file mode 100644
index 0ba96cc4..00000000
--- a/gnuwin32/share/locale/el/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/eo/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/eo/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 5cb53e72..00000000
--- a/gnuwin32/share/locale/eo/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/es/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/es/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 5723878d..00000000
--- a/gnuwin32/share/locale/es/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/es/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/es/LC_MESSAGES/bison.mo
deleted file mode 100644
index f85ef2c7..00000000
--- a/gnuwin32/share/locale/es/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/es/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/es/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 9ddb3318..00000000
--- a/gnuwin32/share/locale/es/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/et/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/et/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index cb358763..00000000
--- a/gnuwin32/share/locale/et/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/et/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/et/LC_MESSAGES/bison.mo
deleted file mode 100644
index a3c20bad..00000000
--- a/gnuwin32/share/locale/et/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/et/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/et/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 3ffae1c8..00000000
--- a/gnuwin32/share/locale/et/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/fi/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/fi/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index c5ea804e..00000000
--- a/gnuwin32/share/locale/fi/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/fi/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/fi/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index e62add45..00000000
--- a/gnuwin32/share/locale/fi/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/fr/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/fr/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 11c009e2..00000000
--- a/gnuwin32/share/locale/fr/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/fr/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/fr/LC_MESSAGES/bison.mo
deleted file mode 100644
index 91019338..00000000
--- a/gnuwin32/share/locale/fr/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/fr/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/fr/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 487b2129..00000000
--- a/gnuwin32/share/locale/fr/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ga/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/ga/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 6b4fec2f..00000000
--- a/gnuwin32/share/locale/ga/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ga/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/ga/LC_MESSAGES/bison.mo
deleted file mode 100644
index 6d8783c2..00000000
--- a/gnuwin32/share/locale/ga/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ga/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/ga/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index d8ec0523..00000000
--- a/gnuwin32/share/locale/ga/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/gl/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/gl/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index d450db0f..00000000
--- a/gnuwin32/share/locale/gl/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/hr/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/hr/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index bf3cf01b..00000000
--- a/gnuwin32/share/locale/hr/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/hr/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/hr/LC_MESSAGES/bison.mo
deleted file mode 100644
index f01f2d78..00000000
--- a/gnuwin32/share/locale/hr/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/hr/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/hr/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 3f84da1f..00000000
--- a/gnuwin32/share/locale/hr/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/hu/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/hu/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 15648b10..00000000
--- a/gnuwin32/share/locale/hu/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/id/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/id/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 649f2d9a..00000000
--- a/gnuwin32/share/locale/id/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/id/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/id/LC_MESSAGES/bison.mo
deleted file mode 100644
index 54f14384..00000000
--- a/gnuwin32/share/locale/id/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/id/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/id/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index ee08af5d..00000000
--- a/gnuwin32/share/locale/id/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/it/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/it/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 463e2913..00000000
--- a/gnuwin32/share/locale/it/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/it/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/it/LC_MESSAGES/bison.mo
deleted file mode 100644
index 09771eb9..00000000
--- a/gnuwin32/share/locale/it/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/it/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/it/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index d2c40dc9..00000000
--- a/gnuwin32/share/locale/it/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ja/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/ja/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index d11de405..00000000
--- a/gnuwin32/share/locale/ja/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ja/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/ja/LC_MESSAGES/bison.mo
deleted file mode 100644
index c28966a8..00000000
--- a/gnuwin32/share/locale/ja/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ky/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/ky/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 4185d053..00000000
--- a/gnuwin32/share/locale/ky/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/lt/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/lt/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 16ac4d10..00000000
--- a/gnuwin32/share/locale/lt/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ms/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/ms/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 87905ba0..00000000
--- a/gnuwin32/share/locale/ms/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ms/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/ms/LC_MESSAGES/bison.mo
deleted file mode 100644
index ed59d886..00000000
--- a/gnuwin32/share/locale/ms/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/nb/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/nb/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index cff7d776..00000000
--- a/gnuwin32/share/locale/nb/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/nb/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/nb/LC_MESSAGES/bison.mo
deleted file mode 100644
index 3bcf6492..00000000
--- a/gnuwin32/share/locale/nb/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/nl/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/nl/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 7b2f24c1..00000000
--- a/gnuwin32/share/locale/nl/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/nl/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/nl/LC_MESSAGES/bison.mo
deleted file mode 100644
index da4de8ed..00000000
--- a/gnuwin32/share/locale/nl/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/nl/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/nl/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index f985ea28..00000000
--- a/gnuwin32/share/locale/nl/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/pl/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/pl/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 30822a53..00000000
--- a/gnuwin32/share/locale/pl/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/pl/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/pl/LC_MESSAGES/bison.mo
deleted file mode 100644
index 7b6fae2c..00000000
--- a/gnuwin32/share/locale/pl/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/pl/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/pl/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index bb5c4e93..00000000
--- a/gnuwin32/share/locale/pl/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/pt_BR/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/pt_BR/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 1e72485c..00000000
--- a/gnuwin32/share/locale/pt_BR/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/pt_BR/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/pt_BR/LC_MESSAGES/bison.mo
deleted file mode 100644
index b579bbb9..00000000
--- a/gnuwin32/share/locale/pt_BR/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/pt_BR/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/pt_BR/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 72b522bd..00000000
--- a/gnuwin32/share/locale/pt_BR/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ro/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/ro/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index aaff454b..00000000
--- a/gnuwin32/share/locale/ro/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ro/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/ro/LC_MESSAGES/bison.mo
deleted file mode 100644
index 76d6c871..00000000
--- a/gnuwin32/share/locale/ro/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ro/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/ro/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 7515f60c..00000000
--- a/gnuwin32/share/locale/ro/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ru/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/ru/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 189d7dd9..00000000
--- a/gnuwin32/share/locale/ru/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ru/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/ru/LC_MESSAGES/bison.mo
deleted file mode 100644
index 7e16fad6..00000000
--- a/gnuwin32/share/locale/ru/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/ru/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/ru/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 8f44eb50..00000000
--- a/gnuwin32/share/locale/ru/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/sk/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/sk/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 1cd1dbbb..00000000
--- a/gnuwin32/share/locale/sk/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/sl/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/sl/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index fd1b5d24..00000000
--- a/gnuwin32/share/locale/sl/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/sl/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/sl/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 3d79f017..00000000
--- a/gnuwin32/share/locale/sl/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/sr/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/sr/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 53da354f..00000000
--- a/gnuwin32/share/locale/sr/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/sv/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/sv/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 51d4b157..00000000
--- a/gnuwin32/share/locale/sv/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/sv/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/sv/LC_MESSAGES/bison.mo
deleted file mode 100644
index d00a9e22..00000000
--- a/gnuwin32/share/locale/sv/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/sv/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/sv/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 1ed0bfc2..00000000
--- a/gnuwin32/share/locale/sv/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/th/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/th/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 537a09b3..00000000
--- a/gnuwin32/share/locale/th/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/tr/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/tr/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index e3389128..00000000
--- a/gnuwin32/share/locale/tr/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/tr/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/tr/LC_MESSAGES/bison.mo
deleted file mode 100644
index 17e87fe3..00000000
--- a/gnuwin32/share/locale/tr/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/tr/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/tr/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 1a9c9bb9..00000000
--- a/gnuwin32/share/locale/tr/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/uk/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/uk/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index a0323a5d..00000000
--- a/gnuwin32/share/locale/uk/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/uk/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/uk/LC_MESSAGES/bison.mo
deleted file mode 100644
index b41d6f32..00000000
--- a/gnuwin32/share/locale/uk/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/uk/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/uk/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index feb85cce..00000000
--- a/gnuwin32/share/locale/uk/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/vi/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/vi/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 7e650d74..00000000
--- a/gnuwin32/share/locale/vi/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/vi/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/vi/LC_MESSAGES/bison.mo
deleted file mode 100644
index d41ee574..00000000
--- a/gnuwin32/share/locale/vi/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/wa/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/wa/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index dc26f4e6..00000000
--- a/gnuwin32/share/locale/wa/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/zh_CN/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/zh_CN/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index b0998380..00000000
--- a/gnuwin32/share/locale/zh_CN/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/zh_CN/LC_MESSAGES/libiconv.mo b/gnuwin32/share/locale/zh_CN/LC_MESSAGES/libiconv.mo
deleted file mode 100644
index 0f7080c6..00000000
--- a/gnuwin32/share/locale/zh_CN/LC_MESSAGES/libiconv.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/zh_TW/LC_MESSAGES/bison-runtime.mo b/gnuwin32/share/locale/zh_TW/LC_MESSAGES/bison-runtime.mo
deleted file mode 100644
index 243f5aa0..00000000
--- a/gnuwin32/share/locale/zh_TW/LC_MESSAGES/bison-runtime.mo
+++ /dev/null
Binary files differ
diff --git a/gnuwin32/share/locale/zh_TW/LC_MESSAGES/bison.mo b/gnuwin32/share/locale/zh_TW/LC_MESSAGES/bison.mo
deleted file mode 100644
index 9c01484c..00000000
--- a/gnuwin32/share/locale/zh_TW/LC_MESSAGES/bison.mo
+++ /dev/null
Binary files differ
diff --git a/init-repository b/init-repository
index 63972ae3..2e0ddcde 100755
--- a/init-repository
+++ b/init-repository
@@ -627,6 +627,7 @@ sub git_install_hooks
}
$self->ensure_link($hooks.'/gerrit_commit_msg_hook', $module_gitdir.'/hooks/commit-msg');
$self->ensure_link($hooks.'/git_post_commit_hook', $module_gitdir.'/hooks/post-commit');
+ $self->ensure_link($hooks.'/clang-format-pre-commit', $module_gitdir.'/hooks/pre-commit');
}
}
diff --git a/qt3d b/qt3d
-Subproject bfeba7c431fd7bebbf7163853cb2e6a327e188a
+Subproject c2ea752f684290d156c500c6a7174fe3f27fa08
diff --git a/qtactiveqt b/qtactiveqt
-Subproject 9bf8b9727e34514b129e448e390aaa4077c79c8
+Subproject 35bb7f3d233bd2016a477d3ea473c388cdd4b6a
diff --git a/qtandroidextras b/qtandroidextras
-Subproject bf9eedf055f0a23f0137058f6618cd17246f77f
+Subproject efae79e4cc95bb8fdb3ac6f3af5366913d0060f
diff --git a/qtbase b/qtbase
-Subproject 3c7df4a0ff91a833cf77e38ab8ccd65e289242e
+Subproject dff3843d98d52e2c32fea07371f91117de0667e
diff --git a/qtcharts b/qtcharts
-Subproject 4b534d99fe687c40fb9dd08de6b4f7ebadfb913
+Subproject e948e0c9f1e9bc096ada6e1d854177f5689ce1a
diff --git a/qtconnectivity b/qtconnectivity
-Subproject 797a6414bbacb9cdd0a8b4ff1b1751de0911966
+Subproject 60645c1ae0ceb6bdb81e5c4ce1c7efbf215e09e
diff --git a/qtdatavis3d b/qtdatavis3d
-Subproject 2900ec11a8100e474f3b595848314b894ecb207
+Subproject 78befdb83f801cb0c4d87a5b64b5554fc2bbb71
diff --git a/qtdeclarative b/qtdeclarative
-Subproject a428a2199f4ce75d68585cabe3471356933fa40
+Subproject 033e797aa5c58bb8f306f82292da272e60fa2fa
diff --git a/qtdoc b/qtdoc
-Subproject c9caa722c08a8b1a795b446e7f7703f4b03ad9d
+Subproject e8db0ff104b71cc53da0a7edc50e07579115c51
diff --git a/qtgamepad b/qtgamepad
-Subproject 9359fd8c0657a80ca5add1fd2ff9a5eb7b75cfa
+Subproject 5fe6fd206f4aef1cb1ee9c328ee27e25e6b44f4
diff --git a/qtgraphicaleffects b/qtgraphicaleffects
-Subproject ec61d1469d0cbfc9c8edb60fe3c78d6702aa79a
+Subproject 261f68697af0310abbfec2f9fee710d1a121d2d
diff --git a/qtimageformats b/qtimageformats
-Subproject 0d150412b607680ea6ce79baf60c2d2709d5f05
+Subproject b9b0e50aa3b7ff7c4b39bdb84e6c0b8027447fb
diff --git a/qtlocation b/qtlocation
-Subproject 741d90b31650d71d7ea7a7cc9e83b1ab36e060c
+Subproject 4331bee772dfbb846c0c447357b7d0f4cb43506
diff --git a/qtlottie b/qtlottie
-Subproject 98a7aa119107bab9026a4c45dea0e0b0e959af8
+Subproject 27bcfc703ebbe09dc753683241fad84bd6f6a9f
diff --git a/qtmacextras b/qtmacextras
-Subproject 25371ccc4fea7ac6ed05bb16a886fb7de628b58
+Subproject e8a235fb0eb6b14e8ce7d816535dec1c927e87e
diff --git a/qtmultimedia b/qtmultimedia
-Subproject 5c0cca78f410e8a89d3216aeba916d73070398f
+Subproject bb64e9df20003d705820544f55b081d22bd6287
diff --git a/qtnetworkauth b/qtnetworkauth
-Subproject 40b0dbbd02fa16396bd27c40fd51f8840d6bfbe
+Subproject 8cf875f3c495bec30622526d19dd8111d7fba6c
diff --git a/qtpurchasing b/qtpurchasing
-Subproject 5abe17167b1236f9efd3ae074dadb7cfd5e1e76
+Subproject 29b8e7a664038b40be0fd04f839e1b382db0831
diff --git a/qtqa b/qtqa
-Subproject b9a306372a17a22e1907bbd5911f819d4911bb8
+Subproject c6412a34f038310117bdb284cbfbdbca5f19067
diff --git a/qtquick3d b/qtquick3d
-Subproject 746a7653609a5cbcda6a49213aefef5c0a514f2
+Subproject 987ef729be84ac970afb768c4a3dcc37e75fbe8
diff --git a/qtquickcontrols b/qtquickcontrols
-Subproject e6182202ba0bb93fa62ce1a54159501823046c3
+Subproject d25989845394b6a9a2c103e5c70768e57083e18
diff --git a/qtquickcontrols2 b/qtquickcontrols2
-Subproject 611422b5968ceac6cfba034116a3d1e107d8e2d
+Subproject 70f881e429d19948c80387912c51da53a2309b2
diff --git a/qtquicktimeline b/qtquicktimeline
-Subproject 105fae7f56a34accad19fd8fde481c512a540f7
+Subproject 4b1c80a322bc46836e37650afceb05f90bc345d
diff --git a/qtremoteobjects b/qtremoteobjects
-Subproject 7c5e9803c0a35010e5bdea30ac05819560dd8e9
+Subproject c603dac09f0099fd9a6482fb315e2c069a7ef5a
diff --git a/qtrepotools b/qtrepotools
-Subproject 0028759fdab4f2a5d59b1ec3cfc34d2c992e9d9
+Subproject 1bf0cbf1e48bb768f50e93cf112d81d423322e3
diff --git a/qtscript b/qtscript
-Subproject 3c20a81bf02902cd57c7a188555cd33359b27f2
+Subproject 957fe147f133043cd5524323cb72da70389008d
diff --git a/qtscxml b/qtscxml
-Subproject a84f5f9d10b59606fabbe3448c8e619e6694565
+Subproject 103c52661f468733b64747c847308b2c45449dc
diff --git a/qtsensors b/qtsensors
-Subproject 1560cbe6e0935dcb900be403ed414d293739d5b
+Subproject 5403d0f8175f2e0d7e04fe6fafa2a7660908b5c
diff --git a/qtserialbus b/qtserialbus
-Subproject bdff94ba65a22cb1edf4be15459c128c5de146b
+Subproject a44ad0513f3a022f245d47ee513f1103fd06c2b
diff --git a/qtserialport b/qtserialport
-Subproject dd22f6091527902d92568f6ec2a27e8c8d52f17
+Subproject f597317dbf605ecc9391825ef27f52812fea069
diff --git a/qtspeech b/qtspeech
-Subproject 06b2d59b7fa12b8251216a73358649008afbd1a
+Subproject 25c1b5b74cc96ceaefeed6be76cda402f406a23
diff --git a/qtsvg b/qtsvg
-Subproject ab818cbbeb7acab61eee3a4694457ceba8c3598
+Subproject 2960c9d0d9feaae5fb8b2fc04da267b43d23826
diff --git a/qttools b/qttools
-Subproject 6ae18c04ceae3668536ae2016f0b3d1d7cf75b0
+Subproject a3e97fb5c0d87187d16cbb21ec2254ab2f45550
diff --git a/qttranslations b/qttranslations
-Subproject ab5af4c676b80a69e0f1b8459d4c081a43f6331
+Subproject a69268af181c412e21de88efd1d903de4457e19
diff --git a/qtvirtualkeyboard b/qtvirtualkeyboard
-Subproject dbd8eb64fb444c9a8c2658a6d514b32167beca5
+Subproject 50f1b28991b7c8207d6b999478d88ffb528ff79
diff --git a/qtwayland b/qtwayland
-Subproject 8d1fedd6781babaf130486e5c7192b0ebc9fb03
+Subproject bf014dc5ab94bdd40ad7d07e18133181b0c636e
diff --git a/qtwebchannel b/qtwebchannel
-Subproject 272ff9e83e030e7f8595da1b4850d3883165acf
+Subproject e1c7e036431aa0da365dbdd8be7ce723cd72c7d
diff --git a/qtwebengine b/qtwebengine
-Subproject 06a04f4acbde2f6ae966c450014102120b887d6
+Subproject cda76002257d56ffedbf8d28211cfd66a7226e7
diff --git a/qtwebglplugin b/qtwebglplugin
-Subproject 1714aa0211057e79d1885c5b93d82993fefe119
+Subproject 531fb30d539f09003946ab768873ef87e6117fa
diff --git a/qtwebsockets b/qtwebsockets
-Subproject 0964522a491ba3e96742594fec1eeef3a41e00a
+Subproject 9f824f8fd08642c5099c9a032628314858ce7fe
diff --git a/qtwebview b/qtwebview
-Subproject b0bfad9b87e57ef3dcec3fe68df9e89a0bda268
+Subproject dfbe1343cd7d34a5fa3c9854568cc28e265df15
diff --git a/qtwinextras b/qtwinextras
-Subproject ddcb1ef8586978cb737f741bb3cce443f0f5d24
+Subproject 18cf8f3120ab8b5522b1fe0846c3f1659bfc33f
diff --git a/qtx11extras b/qtx11extras
-Subproject e80a767b813fc1becc206def56e9a48a01f674e
+Subproject 76e206e0a30d2c6532b9b5c6cf98d83d7b97d66
diff --git a/qtxmlpatterns b/qtxmlpatterns
-Subproject be8f937b9bae96fbfe36135670997b9124b09b2
+Subproject 05ab44484453673ee813bcac287fc9052ec9164