aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author(no author) <(no author)@138bc75d-0d04-0410-961f-82ee72b054a4>2002-12-31 14:57:26 +0000
committer(no author) <(no author)@138bc75d-0d04-0410-961f-82ee72b054a4>2002-12-31 14:57:26 +0000
commit05329095607addc6db484398fa91fc8f1f1fd624 (patch)
tree370a3fb1fe5d90039dc4f0dae2070f0f1b26b1ca
parent2fc8af05937c88e1fe883bfbff7e153d85279af1 (diff)
This commit was manufactured by cvs2svn to create taghammer-3_3-merge-20023112
'hammer-3_3-merge-20023112'. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/tags/hammer-3_3-merge-20023112@60695 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog5
-rwxr-xr-xconfig.guess54
-rwxr-xr-xconfig.sub71
-rw-r--r--contrib/ChangeLog9
-rwxr-xr-xcontrib/gcc_update3
-rwxr-xr-xcontrib/texi2pod.pl4
-rw-r--r--fastjar/ChangeLog10
-rw-r--r--fastjar/Makefile.am8
-rw-r--r--fastjar/Makefile.in8
-rw-r--r--fastjar/fastjar.texi3
-rw-r--r--gcc/ChangeLog157
-rw-r--r--gcc/ada/ChangeLog17
-rw-r--r--gcc/ada/Make-lang.in20
-rw-r--r--gcc/ada/gnat_rm.texi52
-rw-r--r--gcc/ada/gnat_ug.texi71
-rw-r--r--gcc/ada/gnat_ug_unx.texi38
-rw-r--r--gcc/ada/gnat_ug_vms.texi38
-rw-r--r--gcc/ada/gnat_ug_vxw.texi38
-rw-r--r--gcc/ada/gnat_ug_wnt.texi38
-rw-r--r--gcc/config/darwin.h6
-rw-r--r--gcc/config/h8300/h8300.h2
-rw-r--r--gcc/config/h8300/h8300.md14
-rw-r--r--gcc/config/i386/scodbx.h84
-rw-r--r--gcc/config/i386/xm-dgux.h4
-rw-r--r--gcc/config/i386/xm-sun.h21
-rw-r--r--gcc/config/i386/xm-sysv3.h3
-rw-r--r--gcc/config/rs6000/altivec.h16
-rw-r--r--gcc/config/rs6000/altivec.md63
-rw-r--r--gcc/config/rs6000/darwin.h4
-rw-r--r--gcc/config/rs6000/rs6000.h3
-rw-r--r--gcc/config/s390/s390.md49
-rwxr-xr-xgcc/configure2
-rw-r--r--gcc/configure.in2
-rw-r--r--gcc/cp/ChangeLog80
-rw-r--r--gcc/cp/call.c73
-rw-r--r--gcc/cp/class.c3
-rw-r--r--gcc/cp/cp-tree.h5
-rw-r--r--gcc/cp/decl.c10
-rw-r--r--gcc/cp/decl2.c246
-rw-r--r--gcc/cp/dump.c8
-rw-r--r--gcc/cp/friend.c29
-rw-r--r--gcc/cp/method.c2
-rw-r--r--gcc/cp/parse.y68
-rw-r--r--gcc/cp/pt.c24
-rw-r--r--gcc/doc/cpp.texi18
-rw-r--r--gcc/doc/extend.texi4
-rw-r--r--gcc/doc/gcc.texi53
-rw-r--r--gcc/doc/gccint.texi52
-rw-r--r--gcc/doc/gty.texi4
-rw-r--r--gcc/doc/include/gcc-common.texi5
-rw-r--r--gcc/doc/include/texinfo.tex859
-rw-r--r--gcc/doc/install.texi35
-rw-r--r--gcc/doc/invoke.texi412
-rw-r--r--gcc/doc/md.texi65
-rw-r--r--gcc/doc/passes.texi2
-rw-r--r--gcc/doc/rtl.texi2
-rw-r--r--gcc/doc/service.texi8
-rw-r--r--gcc/doc/sourcebuild.texi2
-rw-r--r--gcc/doc/standards.texi2
-rw-r--r--gcc/doc/tm.texi6
-rw-r--r--gcc/doc/trouble.texi73
-rw-r--r--gcc/expr.c3
-rw-r--r--gcc/f/ChangeLog27
-rw-r--r--gcc/f/Make-lang.in6
-rw-r--r--gcc/f/bugs.texi5
-rw-r--r--gcc/f/g77.texi98
-rw-r--r--gcc/f/intdoc.in6
-rw-r--r--gcc/f/intdoc.texi6
-rw-r--r--gcc/f/news.texi5
-rw-r--r--gcc/f/root.texi9
-rw-r--r--gcc/java/ChangeLog34
-rw-r--r--gcc/java/Make-lang.in37
-rw-r--r--gcc/java/gcj.texi105
-rw-r--r--gcc/java/jcf-write.c8
-rw-r--r--gcc/java/parse.y6
-rw-r--r--gcc/loop.c11
-rw-r--r--gcc/po/ChangeLog4
-rw-r--r--gcc/po/gcc.pot10929
-rw-r--r--gcc/testsuite/ChangeLog58
-rw-r--r--gcc/testsuite/g++.dg/init/new1.C20
-rw-r--r--gcc/testsuite/g++.dg/lookup/decl1.C32
-rw-r--r--gcc/testsuite/g++.dg/lookup/decl2.C27
-rw-r--r--gcc/testsuite/g++.dg/lookup/scoped3.C23
-rw-r--r--gcc/testsuite/g++.dg/parse/conv_op1.C30
-rw-r--r--gcc/testsuite/g++.dg/template/access7.C18
-rw-r--r--gcc/testsuite/g++.dg/template/alignof1.C13
-rw-r--r--gcc/testsuite/g++.dg/template/conv5.C22
-rw-r--r--gcc/testsuite/g++.dg/template/friend10.C45
-rw-r--r--gcc/testsuite/g++.dg/template/friend9.C18
-rw-r--r--gcc/testsuite/g++.dg/template/ttp3.C2
-rw-r--r--gcc/testsuite/g++.dg/template/type2.C16
-rw-r--r--gcc/testsuite/g++.dg/warn/inline1.C23
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/crash64.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.jason/synth10.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/net31.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/p8786.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.robertl/eb42.C19
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20021015-1.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20021015-2.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20021123-1.c10
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20021123-2.c9
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20021123-3.c9
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20021123-4.c11
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20021024-1.c43
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20021219-1.c18
-rw-r--r--gcc/testsuite/gcc.dg/darwin-ld-5.c4
-rw-r--r--gcc/treelang/ChangeLog15
-rw-r--r--gcc/treelang/Make-lang.in18
-rw-r--r--gcc/treelang/treelang.texi89
-rw-r--r--gcc/version.c2
-rw-r--r--libjava/ChangeLog84
-rw-r--r--libjava/Makefile.am117
-rw-r--r--libjava/Makefile.in170
-rw-r--r--libjava/defineclass.cc2
-rw-r--r--libjava/gcj/javaprims.h20
-rw-r--r--libjava/include/java-interp.h4
-rw-r--r--libjava/java/lang/Class.h7
-rw-r--r--libjava/java/lang/ClassLoader.java13
-rw-r--r--libjava/java/lang/StringBuffer.java39
-rw-r--r--libjava/java/lang/natClass.cc41
-rw-r--r--libjava/java/lang/natClassLoader.cc75
-rw-r--r--libjava/java/lang/reflect/Modifier.java13
-rw-r--r--libjava/java/math/BigInteger.java6
-rw-r--r--libjava/java/net/URLStreamHandler.java2
-rw-r--r--libjava/java/util/Properties.java1
-rw-r--r--libjava/java/util/natResourceBundle.cc15
-rw-r--r--libjava/libtool-version2
-rw-r--r--libjava/org/xml/sax/AttributeList.java384
-rw-r--r--libjava/org/xml/sax/Attributes.java495
-rw-r--r--libjava/org/xml/sax/ContentHandler.java782
-rw-r--r--libjava/org/xml/sax/DTDHandler.java225
-rw-r--r--libjava/org/xml/sax/DocumentHandler.java462
-rw-r--r--libjava/org/xml/sax/EntityResolver.java229
-rw-r--r--libjava/org/xml/sax/ErrorHandler.java248
-rw-r--r--libjava/org/xml/sax/HandlerBase.java738
-rw-r--r--libjava/org/xml/sax/InputSource.java657
-rw-r--r--libjava/org/xml/sax/Locator.java262
-rw-r--r--libjava/org/xml/sax/Parser.java416
-rw-r--r--libjava/org/xml/sax/SAXException.java297
-rw-r--r--libjava/org/xml/sax/SAXNotRecognizedException.java99
-rw-r--r--libjava/org/xml/sax/SAXNotSupportedException.java99
-rw-r--r--libjava/org/xml/sax/SAXParseException.java534
-rw-r--r--libjava/org/xml/sax/XMLFilter.java132
-rw-r--r--libjava/org/xml/sax/XMLReader.java813
-rw-r--r--libjava/org/xml/sax/ext/DeclHandler.java274
-rw-r--r--libjava/org/xml/sax/ext/LexicalHandler.java373
-rw-r--r--libjava/org/xml/sax/ext/package.html49
-rw-r--r--libjava/org/xml/sax/helpers/AttributeListImpl.java622
-rw-r--r--libjava/org/xml/sax/helpers/AttributesImpl.java1226
-rw-r--r--libjava/org/xml/sax/helpers/DefaultHandler.java915
-rw-r--r--libjava/org/xml/sax/helpers/LocatorImpl.java426
-rw-r--r--libjava/org/xml/sax/helpers/NamespaceSupport.java1459
-rw-r--r--libjava/org/xml/sax/helpers/NewInstance.java80
-rw-r--r--libjava/org/xml/sax/helpers/ParserAdapter.java2034
-rw-r--r--libjava/org/xml/sax/helpers/ParserFactory.java258
-rw-r--r--libjava/org/xml/sax/helpers/XMLFilterImpl.java1483
-rw-r--r--libjava/org/xml/sax/helpers/XMLReaderAdapter.java1065
-rw-r--r--libjava/org/xml/sax/helpers/XMLReaderFactory.java339
-rw-r--r--libjava/org/xml/sax/helpers/package.html13
-rw-r--r--libjava/org/xml/sax/package.html164
-rw-r--r--libjava/resolve.cc84
-rw-r--r--libjava/testsuite/ChangeLog9
-rw-r--r--libjava/testsuite/libjava.jacks/jacks.xfail42
-rw-r--r--libjava/testsuite/libjava.lang/pr8945.java9
-rw-r--r--libjava/testsuite/libjava.lang/pr8945.out1
-rw-r--r--libstdc++-v3/ChangeLog49
-rw-r--r--libstdc++-v3/config/io/basic_file_stdio.cc6
-rw-r--r--libstdc++-v3/docs/html/17_intro/porting.html652
-rw-r--r--libstdc++-v3/docs/html/17_intro/porting.texi36
-rw-r--r--libstdc++-v3/include/bits/c++config2
-rw-r--r--libstdc++-v3/include/std/std_bitset.h51
-rw-r--r--libstdc++-v3/include/std/std_limits.h16
-rw-r--r--libstdc++-v3/testsuite/18_support/numeric_limits.cc21
-rw-r--r--libstdc++-v3/testsuite/23_containers/bitset_members.cc18
-rw-r--r--libstdc++-v3/testsuite/23_containers/bitset_shift.cc16
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector_capacity.cc21
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector_resize.cc57
-rw-r--r--libstdc++-v3/testsuite/27_io/ios_base_storage.cc6
178 files changed, 18203 insertions, 16149 deletions
diff --git a/ChangeLog b/ChangeLog
index a67a388084c..edb323301d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-12-25 Svein E. Seldal <Svein.Seldal@solidas.com>
+
+ * config.sub: Import from master repository
+ * config.guess: Ditto
+
2002-12-13 Jason Merrill <jason@redhat.com>
* Makefile.in (check-gcc-c++): Renamed from check-c++. Don't run
diff --git a/config.guess b/config.guess
index 9b1384be4b1..3775fa5d520 100755
--- a/config.guess
+++ b/config.guess
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002 Free Software Foundation, Inc.
-timestamp='2002-11-30'
+timestamp='2002-12-23'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -98,14 +98,17 @@ trap 'exit 1' 1 2 15
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.
-# This shell variable is my proudest work .. or something. --bje
+# Portable tmp directory creation inspired by the Autoconf team.
-set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ;
-(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old)
- || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ;
-dummy=$tmpdir/dummy ;
-files="$dummy.c $dummy.o $dummy.rel $dummy" ;
-trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ;
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
case $CC_FOR_BUILD,$HOST_CC,$CC in
,,) echo "int x;" > $dummy.c ;
for c in cc gcc c89 c99 ; do
@@ -113,15 +116,13 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
- rm -f $files ;
if test x"$CC_FOR_BUILD" = x ; then
CC_FOR_BUILD=no_compiler_found ;
fi
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ;
-unset files'
+esac ;'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
@@ -297,7 +298,6 @@ EOF
;;
esac
fi
- rm -f $dummy.s $dummy && rmdir $tmpdir
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
exit 0 ;;
Alpha\ *:Windows_NT*:*)
@@ -450,8 +450,7 @@ EOF
EOF
$CC_FOR_BUILD -o $dummy $dummy.c \
&& $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
- rm -f $dummy.c $dummy && rmdir $tmpdir
+ && exit 0
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Motorola:PowerMAX_OS:*:*)
@@ -535,8 +534,7 @@ EOF
exit(0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
- rm -f $dummy.c $dummy && rmdir $tmpdir
+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
@@ -635,10 +633,20 @@ EOF
}
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
- rm -f $dummy.c $dummy && rmdir $tmpdir
+ test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ # avoid double evaluation of $set_cc_for_build
+ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
ia64:HP-UX:*:*)
@@ -672,8 +680,7 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
- rm -f $dummy.c $dummy && rmdir $tmpdir
+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
@@ -767,7 +774,6 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- rm -f $dummy.c && rmdir $tmpdir
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
exit 0 ;;
i*:CYGWIN*:*)
@@ -832,7 +838,6 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- rm -f $dummy.c && rmdir $tmpdir
test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
;;
mips64:Linux:*:*)
@@ -852,7 +857,6 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- rm -f $dummy.c && rmdir $tmpdir
test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
;;
ppc:Linux:*:*)
@@ -948,7 +952,6 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- rm -f $dummy.c && rmdir $tmpdir
test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
;;
@@ -1320,8 +1323,7 @@ main ()
}
EOF
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
-rm -f $dummy.c $dummy && rmdir $tmpdir
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
# Apollos put the system type in the environment.
diff --git a/config.sub b/config.sub
index 60338429828..f0675aa6b78 100755
--- a/config.sub
+++ b/config.sub
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002 Free Software Foundation, Inc.
-timestamp='2002-08-20'
+timestamp='2002-11-30'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -118,7 +118,7 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
+ nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -229,7 +229,7 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | c4x | clipper \
+ | clipper \
| d10v | d30v | dlx | dsp16xx \
| fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
@@ -239,7 +239,7 @@ case $basic_machine in
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
- | mips64vr | mips64vrel \
+ | mips64vr | mips64vrel \
| mips64orion | mips64orionel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
@@ -294,7 +294,7 @@ case $basic_machine in
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \
| bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c54x-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \
| clipper-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
@@ -309,7 +309,7 @@ case $basic_machine in
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
+ | mips64vr-* | mips64vrel-* \
| mips64orion-* | mips64orionel-* \
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
@@ -329,7 +329,7 @@ case $basic_machine in
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
+ | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
@@ -749,7 +749,7 @@ case $basic_machine in
pbb)
basic_machine=m68k-tti
;;
- pc532 | pc532-*)
+ pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pentium | p5 | k5 | k6 | nexgen | viac3)
@@ -776,22 +776,22 @@ case $basic_machine in
power) basic_machine=power-ibm
;;
ppc) basic_machine=powerpc-unknown
- ;;
+ ;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
- ;;
+ ;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64) basic_machine=powerpc64-unknown
- ;;
+ ;;
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
- ;;
+ ;;
ppc64le-* | powerpc64little-*)
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
@@ -893,7 +893,7 @@ case $basic_machine in
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
- sv1)
+ sv1)
basic_machine=sv1-cray
os=-unicos
;;
@@ -913,6 +913,10 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
+ tic4x | c4x*)
+ basic_machine=tic4x-unknown
+ os=-coff
+ ;;
tic54x | c54x*)
basic_machine=tic54x-unknown
os=-coff
@@ -951,8 +955,8 @@ case $basic_machine in
os=-vms
;;
vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
+ basic_machine=f301-fujitsu
+ ;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
@@ -973,11 +977,7 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
- windows32)
- basic_machine=i386-pc
- os=-windows32-msvcrt
- ;;
- xps | xps100)
+ xps | xps100)
basic_machine=xps100-honeywell
;;
ymp)
@@ -1032,7 +1032,7 @@ case $basic_machine in
sparc | sparcv9 | sparcv9b)
basic_machine=sparc-sun
;;
- cydra)
+ cydra)
basic_machine=cydra-cydrome
;;
orion)
@@ -1047,10 +1047,6 @@ case $basic_machine in
pmac | pmac-mpw)
basic_machine=powerpc-apple
;;
- c4x*)
- basic_machine=c4x-none
- os=-coff
- ;;
*-unknown)
# Make sure to match an already-canonicalized machine name.
;;
@@ -1113,11 +1109,12 @@ case $os in
| -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*)
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1129,8 +1126,10 @@ case $os in
;;
esac
;;
+ -nto-qnx*)
+ ;;
-nto*)
- os=-nto-qnx
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
@@ -1182,7 +1181,7 @@ case $os in
os=-rtmk-nova
;;
-ns2 )
- os=-nextstep2
+ os=-nextstep2
;;
-nsk*)
os=-nsk
@@ -1221,8 +1220,8 @@ case $os in
-xenix)
os=-xenix
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
;;
-none)
;;
@@ -1259,7 +1258,7 @@ case $basic_machine in
pdp10-*)
os=-tops20
;;
- pdp11-*)
+ pdp11-*)
os=-none
;;
*-dec | vax-*)
@@ -1352,19 +1351,19 @@ case $basic_machine in
*-next)
os=-nextstep3
;;
- *-gould)
+ *-gould)
os=-sysv
;;
- *-highlevel)
+ *-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
- *-sgi)
+ *-sgi)
os=-irix
;;
- *-siemens)
+ *-siemens)
os=-sysv4
;;
*-masscomp)
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index a8adeb3439a..be43cc9e9d3 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,12 @@
+2002-12-29 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * gcc_update (files_and_dependencies): Add gcc/intl/plural.c as
+ depending on gcc/intl/plural.y.
+
+2002-12-28 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * texi2pod.pl: Skip contents of @copying.
+
2002-10-21 Richard Henderson <rth@redhat.com>
* paranoia.cc (real_c_float::image): Accomodate size of
diff --git a/contrib/gcc_update b/contrib/gcc_update
index d00fd43c6b6..4572329ff39 100755
--- a/contrib/gcc_update
+++ b/contrib/gcc_update
@@ -29,7 +29,7 @@
# contrib/gcc_update --list
#
#
-# (C) 1998, 1999, 2000, 2001 Free Software Foundation
+# (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation
# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, August 1998.
#
# This script is Free Software, and it can be copied, distributed and
@@ -69,6 +69,7 @@ gcc/configure: gcc/configure.in
gcc/cstamp-h.in: gcc/configure.in gcc/acconfig.h
gcc/config.in: gcc/cstamp-h.in
gcc/fixinc/fixincl.x: gcc/fixinc/fixincl.tpl gcc/fixinc/inclhack.def
+gcc/intl/plural.c: gcc/intl/plural.y
# And then, language-specific files
gcc/f/intdoc.texi: gcc/f/intdoc.in gcc/f/intdoc.c gcc/f/intrin.h gcc/f/intrin.def
gcc/ada/treeprs.ads: gcc/ada/treeprs.adt gcc/ada/sinfo.ads gcc/ada/xtreeprs.adb
diff --git a/contrib/texi2pod.pl b/contrib/texi2pod.pl
index e5560f303de..d3839458896 100755
--- a/contrib/texi2pod.pl
+++ b/contrib/texi2pod.pl
@@ -138,7 +138,7 @@ while(<$inf>) {
# Ignore @end foo, where foo is not an operation which may
# cause us to skip, if we are presently skipping.
my $ended = $1;
- next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex)$/;
+ next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex|copying)$/;
die "\@end $ended without \@$ended at line $.\n" unless defined $endw;
die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw;
@@ -178,7 +178,7 @@ while(<$inf>) {
next;
};
- /^\@(ignore|menu|iftex)\b/ and do {
+ /^\@(ignore|menu|iftex|copying)\b/ and do {
push @endwstack, $endw;
push @skstack, $skipping;
$endw = $1;
diff --git a/fastjar/ChangeLog b/fastjar/ChangeLog
index 34a5bdcccbf..b9d1bcb195a 100644
--- a/fastjar/ChangeLog
+++ b/fastjar/ChangeLog
@@ -1,3 +1,13 @@
+2002-12-30 DJ Delorie <dj@redhat.com>
+
+ * Makefile.am (jar.1, grepjar.1): Protect against
+ texi2pod/pod2man failing.
+ * Makefile.in: Regenerated.
+
+2002-12-23 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * fastjar.texi: Include Cover Texts in man page.
+
2002-12-04 Jakub Jelinek <jakub@redhat.com>
* fastjar.texi (jar @direntry, grepjar @direntry): Add (fastjar).
diff --git a/fastjar/Makefile.am b/fastjar/Makefile.am
index 39a57c40d22..74f491e850c 100644
--- a/fastjar/Makefile.am
+++ b/fastjar/Makefile.am
@@ -85,14 +85,14 @@ POD2MAN = pod2man --center="GNU" --release="gcc-@gcc_version@"
$(srcdir)/jar.1: $(srcdir)/fastjar.texi
-$(TEXI2POD) -D jar < $(srcdir)/fastjar.texi > fastjar.pod
- ($(POD2MAN) --section=1 fastjar.pod > jar.1.T$$$$ && \
+ -($(POD2MAN) --section=1 fastjar.pod > jar.1.T$$$$ && \
mv -f jar.1.T$$$$ $(srcdir)/jar.1) || \
(rm -f jar.1.T$$$$ && exit 1)
- rm -f fastjar.pod
+ -rm -f fastjar.pod
$(srcdir)/grepjar.1: $(srcdir)/fastjar.texi
-$(TEXI2POD) -D grepjar < $(srcdir)/fastjar.texi > grepjar.pod
- ($(POD2MAN) --section=1 grepjar.pod > grepjar.1.T$$$$ && \
+ -($(POD2MAN) --section=1 grepjar.pod > grepjar.1.T$$$$ && \
mv -f grepjar.1.T$$$$ $(srcdir)/grepjar.1) || \
(rm -f grepjar.1.T$$$$ && exit 1)
- rm -f grepjar.pod
+ -rm -f grepjar.pod
diff --git a/fastjar/Makefile.in b/fastjar/Makefile.in
index 4b6675000fe..fe294dcd42f 100644
--- a/fastjar/Makefile.in
+++ b/fastjar/Makefile.in
@@ -614,17 +614,17 @@ fastjar.info: fastjar.texi $(fastjar_TEXINFOS)
$(srcdir)/jar.1: $(srcdir)/fastjar.texi
-$(TEXI2POD) -D jar < $(srcdir)/fastjar.texi > fastjar.pod
- ($(POD2MAN) --section=1 fastjar.pod > jar.1.T$$$$ && \
+ -($(POD2MAN) --section=1 fastjar.pod > jar.1.T$$$$ && \
mv -f jar.1.T$$$$ $(srcdir)/jar.1) || \
(rm -f jar.1.T$$$$ && exit 1)
- rm -f fastjar.pod
+ -rm -f fastjar.pod
$(srcdir)/grepjar.1: $(srcdir)/fastjar.texi
-$(TEXI2POD) -D grepjar < $(srcdir)/fastjar.texi > grepjar.pod
- ($(POD2MAN) --section=1 grepjar.pod > grepjar.1.T$$$$ && \
+ -($(POD2MAN) --section=1 grepjar.pod > grepjar.1.T$$$$ && \
mv -f grepjar.1.T$$$$ $(srcdir)/grepjar.1) || \
(rm -f grepjar.1.T$$$$ && exit 1)
- rm -f grepjar.pod
+ -rm -f grepjar.pod
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/fastjar/fastjar.texi b/fastjar/fastjar.texi
index f51cb99e730..e072e3949c7 100644
--- a/fastjar/fastjar.texi
+++ b/fastjar/fastjar.texi
@@ -49,6 +49,8 @@ man page gfdl(7).
@c man end
@end ignore
+@c man begin COPYRIGHT
+
(a) The FSF's Front-Cover Text is:
A GNU Manual
@@ -58,6 +60,7 @@ man page gfdl(7).
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+@c man end
@end ifinfo
@titlepage
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 71233fb1081..41775f3d482 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,160 @@
+2002-12-31 Jerry Quinn <jlquinn@optonline.net>
+
+ * gcc/doc/invoke.texi (Optimization Options): Clean up -O flag
+ descriptions.
+
+2002-12-31 Jerry Quinn <jlquinn@optonline.net>
+
+ * gcc/doc/invoke.texi (Optimization Options): List the options
+ enabled by each -O flag.
+
+2002-12-31 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.h (WIDEST_HARDWARE_FP_SIZE): Define.
+
+2002-12-31 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * doc/install.texi (Configuration): Explicitly refer
+ gcc/config.gcc for a list of cpu models.
+
+2002-12-30 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/gcc.texi, doc/gccint.texi: Update last modification dates.
+
+2002-12-30 Tom Tromey <tromey@redhat.com>
+
+ * doc/install.texi (Testing): Mention Jacks.
+
+2002-12-30 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/service.texi: Uncomment and update FAQ link.
+
+2002-12-28 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/cpp.texi, doc/gcc.texi, doc/gccint.texi, doc/install.texi:
+ Use @copying.
+
+2002-12-28 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * configure.in: Increase makeinfo version requirement to 4.[2-9].
+ * configure: Regenerate.
+ * doc/install.texi: Update Texinfo version requirement.
+
+2002-12-27 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/include/texinfo.tex: Update to version 2002-12-26.16.
+
+2002-12-26 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/standards.texi, doc/invoke.texi: Point to 3.3 version of
+ c99status.html.
+
+2002-12-26 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.h (IDENT_ASM_OP): End with a tab.
+
+2002-12-23 Larin Hennessy <larin@science.oregonstate.edu>
+
+ * doc/install.texi: Remove i386-*-isc, i860-*-bsd,
+ m68k-altos-sysv, m68k-isi-bsd, m68k-sony-bsd entries.
+ * doc/invoke.texi: Remove AMD 29K, ARM RISC/iX, Clipper, Convex,
+ DG/UX entries.
+ * doc/md.texi: Remove AMD 29K entries.
+ * doc/trouble.texi: Remove Alliant, DG/UX, Iris 4.0.5F, GAS
+ 1.38.1, NewsOS, RT PC, WE32K entries.
+
+2002-12-23 Aldy Hernandez <aldyh@redhat.com>
+
+ PR/8763
+ * config/rs6000/altivec.md (mulv4sf3): Rewrite to add -0.0 vector.
+ (altivec_vspltisw_v4sf): Name pattern.
+ (altivec_vslw_v4sf): New pattern.
+
+2002-12-23 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/include/gcc-common.texi: Clear DEVELOPMENT.
+
+2002-12-23 David Edelsohn <edelsohn@gnu.org>
+
+ PR middle-end/8784
+ * expr.c (expand_assignment): Apply special treatment to
+ ARRAY_TYPE.
+
+2002-12-21 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md (zero_extendqisi2): Correct the
+ length.
+
+2002-12-19 Devang Patel <dpatel@apple.com>
+
+ * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Add support for -dynamic.
+ (CPP_SPEC): Define __STATIC__ and __DYNAMIC__ depending on -dynamic.
+ (LINK_SPEC): Pass -dynamic to linker.
+ * config/rs6000/darwin.h: Reject conflicting -static and -dynamic.
+
+2002-12-19 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md (pushqi_h8300): Don't push the stack
+ pointer.
+ (pushqi_h8300hs): Likewise.
+ (pushhi_h8300): Likewise.
+ (pushhi_h8300hs): Likewise.
+
+2002-12-19 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR optimization/8988
+ * loop.c (maybe_eliminate_biv): Kill REG_EQUAL notes mentioning
+ the biv when eliminating.
+
+2002-12-19 Aldy Hernandez <aldyh@redhat.com>
+
+ PR 8553
+ * config/rs6000/altivec.md ("absv8hi2"): Add & to clobbered
+ registers.
+ ("absv16qi2"): Same.
+ ("absv4si2"): Same.
+ ("absv4sf2"): Same.
+ ("altivec_abss_v16qi"): Same.
+ ("altivec_abss_v8hi"): Same.
+ ("altivec_abss_v4si"): Same.
+
+2002-12-19 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.md ("*tsthiCCT", "*tsthiCCT_cconly",
+ "*tstqiCCT", "*tstqiCCT_cconly"): New insns.
+
+2002-12-18 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/altivec.h (vec_cmplt macro): Reverse arguments in
+ macro.
+ (vec_cmplt C++ functions): Reverse arguments.
+
+2002-12-17 Kazu Hirata <kazu@cs.umass.edu>
+
+ * doc/c-tree.texi: Restore deliberate spelling mistakes.
+
+2002-12-17 Kazu Hirata <kazu@cs.umass.edu>
+
+ * doc/c-tree.texi: Fix typos and follow spelling conventions.
+ * doc/cpp.texi: Likewise.
+ * doc/extend.texi: Likewise.
+ * doc/gty.texi: Likewise.
+ * doc/install.texi: Likewise.
+ * doc/invoke.texi: Likewise.
+ * doc/md.texi: Likewise.
+ * doc/passes.texi: Likewise.
+ * doc/rtl.texi: Likewise.
+ * doc/sourcebuild.texi: Likewise.
+ * doc/tm.texi: Likewise.
+
+2002-12-17 Jerry Quinn <jlquinn@optonline.net>
+
+ * doc/invoke.texi: Minor spelling and grammar fixes.
+
+2002-12-16 Mark Mitchell <mark@codesourcery.com>
+
+ * version.c (version_string): Mark as prerelease.
+
2002-12-13 John David Anglin <dave@hiauly1.hia.nrc.ca>
* pa.c (output_millicode_call): Correct typo.
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index e5d0586de54..6aa86290189 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,20 @@
+2002-12-28 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gnat_rm.texi, gnat_ug.texi: Use @copying.
+ * gnat_ug_unx.texi, gnat_ug_vms.texi, gnat_ug_vxw.texi,
+ gnat_ug_wnt.texi: Regenerate.
+
+2002-12-23 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gnat_rm.texi: Include gcc-common.texi. Use GCC version number
+ only.
+ * Make-lang.in ($(srcdir)/ada/gnat_ug_unx.info,
+ $(srcdir)/ada/gnat_ug_vms.info, $(srcdir)/ada/gnat_ug_vxw.info,
+ $(srcdir)/ada/gnat_ug_wnt.info, $(srcdir)/ada/gnat_rm.info,
+ ada/gnat_ug_unx.dvi, ada/gnat_ug_vms.dvi, ada/gnat_ug_vxw.dvi,
+ ada/gnat_ug_wnt.dvi, ada/gnat_rm.dvi): Depend on
+ $(srcdir)/doc/include/gcc-common.texi.
+
2002-11-18 Nathanael Nerode <neroden@gcc.gnu.org>
* adaint.c (__gnat_tmp_name): Better, but good enough for now,
solution to buffer overflow bug on GNU/Linux.
diff --git a/gcc/ada/Make-lang.in b/gcc/ada/Make-lang.in
index 6669eb4c64f..9c4e0c4cd6d 100644
--- a/gcc/ada/Make-lang.in
+++ b/gcc/ada/Make-lang.in
@@ -366,23 +366,23 @@ $(srcdir)/ada/gnat_ug_wnt.texi : ada/doctools/xgnatug \
ada/doctools/xgnatug wnt $(srcdir)/ada/gnat_ug.texi $(srcdir)/ada/ug_words $(srcdir)/ada/gnat_ug_wnt.texi
$(srcdir)/ada/gnat_ug_unx.info : $(srcdir)/ada/gnat_ug_unx.texi \
- $(srcdir)/doc/include/fdl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi
cd $(srcdir) && $(MAKEINFO) -I doc/include -I ada -o ada/gnat_ug_unx.info ada/gnat_ug_unx.texi
$(srcdir)/ada/gnat_ug_vms.info : $(srcdir)/ada/gnat_ug_vms.texi \
- $(srcdir)/doc/include/fdl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi
cd $(srcdir) && $(MAKEINFO) -I doc/include -I ada -o ada/gnat_ug_vms.info ada/gnat_ug_vms.texi
$(srcdir)/ada/gnat_ug_vxw.info : $(srcdir)/ada/gnat_ug_vxw.texi \
- $(srcdir)/doc/include/fdl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi
cd $(srcdir) && $(MAKEINFO) -I doc/include -I ada -o ada/gnat_ug_vxw.info ada/gnat_ug_vxw.texi
$(srcdir)/ada/gnat_ug_wnt.info : $(srcdir)/ada/gnat_ug_wnt.texi \
- $(srcdir)/doc/include/fdl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi
cd $(srcdir) && $(MAKEINFO) -I doc/include -I ada -o ada/gnat_ug_wnt.info ada/gnat_ug_wnt.texi
$(srcdir)/ada/gnat_rm.info : $(srcdir)/ada/gnat_rm.texi \
- $(srcdir)/doc/include/fdl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi
cd $(srcdir) && $(MAKEINFO) -I doc/include -I ada -o ada/gnat_rm.info ada/gnat_rm.texi
$(srcdir)/ada/gnat-style.info : $(srcdir)/ada/gnat-style.texi \
@@ -420,27 +420,27 @@ ada.install-info:
-chmod a-x $(infodir)/gnat_rm.info* $(infodir)/gnat-style.info*
ada/gnat_ug_unx.dvi : $(srcdir)/ada/gnat_ug_unx.texi \
- $(srcdir)/doc/include/fdl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi
s=`cd $(srcdir); ${PWD}`; \
cd ada && $(TEXI2DVI) -c -I $$s/doc/include -o gnat_ug_unx.dvi $$s/ada/gnat_ug_unx.texi
ada/gnat_ug_vms.dvi : $(srcdir)/ada/gnat_ug_vms.texi \
- $(srcdir)/doc/include/fdl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi
s=`cd $(srcdir); ${PWD}`; \
cd ada && $(TEXI2DVI) -c -I $$s/doc/include -o gnat_ug_vms.dvi $$s/ada/gnat_ug_vms.texi
ada/gnat_ug_vxw.dvi : $(srcdir)/ada/gnat_ug_vxw.texi \
- $(srcdir)/doc/include/fdl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi
s=`cd $(srcdir); ${PWD}`; \
cd ada && $(TEXI2DVI) -c -I $$s/doc/include -o gnat_ug_vxw.dvi $$s/ada/gnat_ug_vxw.texi
ada/gnat_ug_wnt.dvi : $(srcdir)/ada/gnat_ug_wnt.texi \
- $(srcdir)/doc/include/fdl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi
s=`cd $(srcdir); ${PWD}`; \
cd ada && $(TEXI2DVI) -c -I $$s/doc/include -o gnat_ug_wnt.dvi $$s/ada/gnat_ug_wnt.texi
ada/gnat_rm.dvi : $(srcdir)/ada/gnat_rm.texi \
- $(srcdir)/doc/include/fdl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi
s=`cd $(srcdir); ${PWD}`; \
cd ada && $(TEXI2DVI) -c -I $$s/doc/include -o gnat_rm.dvi $$s/ada/gnat_rm.texi
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
index d1df13cc409..71e5256e3b1 100644
--- a/gcc/ada/gnat_rm.texi
+++ b/gcc/ada/gnat_rm.texi
@@ -8,7 +8,7 @@
@c o
@c G N A T _ RM o
@c o
-@c $Revision: 1.3.8.1 $
+@c $Revision: 1.8.18.1 $
@c o
@c Copyright (C) 1995-2002 Free Software Foundation o
@c o
@@ -22,27 +22,14 @@
@setchapternewpage odd
@syncodeindex fn cp
+@include gcc-common.texi
+
@dircategory GNU Ada tools
@direntry
* GNAT Reference Manual: (gnat_rm). Reference Manual for GNU Ada tools.
@end direntry
-@titlepage
-
-
-@title GNAT Reference Manual
-@subtitle GNAT, The GNU Ada 95 Compiler
-@ifset vxworks
-@title Version 3.16w
-@end ifset
-@ifclear vxworks
-@subtitle Version 3.16w
-@end ifclear
-@author Ada Core Technologies, Inc.
-
-@page
-@vskip 0pt plus 1filll
-
+@copying
Copyright @copyright{} 1995-2001, Free Software Foundation
Permission is granted to copy, distribute and/or modify this document
@@ -52,8 +39,21 @@ with the Invariant Sections being ``GNU Free Documentation License'', with the
Front-Cover Texts being ``GNAT Reference Manual'', and with no Back-Cover Texts.
A copy of the license is included in the section entitled ``GNU
Free Documentation License''.
+@end copying
+
+@titlepage
+@title GNAT Reference Manual
+@subtitle GNAT, The GNU Ada 95 Compiler
+@subtitle GNAT Version for GCC @value{version-GCC}
+@author Ada Core Technologies, Inc.
+
+@page
+@vskip 0pt plus 1filll
+
+@insertcopying
+
@end titlepage
@ifnottex
@node Top, About This Guide, (dir), (dir)
@@ -64,25 +64,11 @@ GNAT Reference Manual
GNAT, The GNU Ada 95 Compiler
-@ifset vxworks
-Version 3.16w
-@end ifset
-@ifclear vxworks
-Version 3.16w
-@end ifclear
+GNAT Version for GCC @value{version-GCC}
Ada Core Technologies, Inc.
-
-Copyright @copyright{} 1995-2001, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being ``GNAT Reference Manual'', and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@menu
diff --git a/gcc/ada/gnat_ug.texi b/gcc/ada/gnat_ug.texi
index 784adb45dd1..8faa273706a 100644
--- a/gcc/ada/gnat_ug.texi
+++ b/gcc/ada/gnat_ug.texi
@@ -78,6 +78,31 @@
@syncodeindex fn cp
@c %**end of header
+@copying
+Copyright @copyright{} 1995-2002, Free Software Foundation
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with the Invariant Sections being ``GNU Free Documentation License'', with the
+Front-Cover Texts being
+@ifset vms
+``GNAT User's Guide for OpenVMS Alpha'',
+@end ifset
+@ifset wnt
+``GNAT User's Guide for Windows NT'',
+@end ifset
+@ifset unx
+``GNAT User's Guide for Unix Platforms'',
+@end ifset
+@ifset vxworks
+``GNAT User's Guide for Cross Platforms'',
+@end ifset
+and with no Back-Cover Texts.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end copying
+
@titlepage
@ifset vms
@@ -108,28 +133,7 @@
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995-2002, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being
-@ifset vms
-``GNAT User's Guide for OpenVMS Alpha'',
-@end ifset
-@ifset wnt
-``GNAT User's Guide for Windows NT'',
-@end ifset
-@ifset unx
-``GNAT User's Guide for Unix Platforms'',
-@end ifset
-@ifset vxworks
-``GNAT User's Guide for Cross Platforms'',
-@end ifset
-and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@end titlepage
@@ -159,28 +163,7 @@ GNAT Version for GCC @value{version-GCC}
Ada Core Technologies, Inc.
-Copyright @copyright{} 1995-2002, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being
-@ifset vms
-``GNAT User's Guide for OpenVMS Alpha'',
-@end ifset
-@ifset wnt
-``GNAT User's Guide for Windows NT'',
-@end ifset
-@ifset unx
-``GNAT User's Guide for Unix Platforms'',
-@end ifset
-@ifset vxworks
-``GNAT User's Guide for Cross Platforms'',
-@end ifset
-and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@menu
* About This Guide::
diff --git a/gcc/ada/gnat_ug_unx.texi b/gcc/ada/gnat_ug_unx.texi
index 2aae3d87ea6..b567e31b101 100644
--- a/gcc/ada/gnat_ug_unx.texi
+++ b/gcc/ada/gnat_ug_unx.texi
@@ -64,6 +64,20 @@
@syncodeindex fn cp
@c %**end of header
+@copying
+Copyright @copyright{} 1995-2002, Free Software Foundation
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with the Invariant Sections being ``GNU Free Documentation License'', with the
+Front-Cover Texts being
+``GNAT User's Guide for Unix Platforms'',
+and with no Back-Cover Texts.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end copying
+
@titlepage
@@ -80,17 +94,7 @@
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995-2002, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being
-``GNAT User's Guide for Unix Platforms'',
-and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@end titlepage
@@ -109,17 +113,7 @@ GNAT Version for GCC @value{version-GCC}
Ada Core Technologies, Inc.
-Copyright @copyright{} 1995-2002, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being
-``GNAT User's Guide for Unix Platforms'',
-and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@menu
* About This Guide::
diff --git a/gcc/ada/gnat_ug_vms.texi b/gcc/ada/gnat_ug_vms.texi
index 647e0e30aed..5c6834fc3a7 100644
--- a/gcc/ada/gnat_ug_vms.texi
+++ b/gcc/ada/gnat_ug_vms.texi
@@ -64,6 +64,20 @@
@syncodeindex fn cp
@c %**end of header
+@copying
+Copyright @copyright{} 1995-2002, Free Software Foundation
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with the Invariant Sections being ``GNU Free Documentation License'', with the
+Front-Cover Texts being
+``GNAT User's Guide for OpenVMS Alpha'',
+and with no Back-Cover Texts.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end copying
+
@titlepage
@title GNAT User's Guide
@@ -80,17 +94,7 @@
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995-2002, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being
-``GNAT User's Guide for OpenVMS Alpha'',
-and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@end titlepage
@@ -109,17 +113,7 @@ GNAT Version for GCC @value{version-GCC}
Ada Core Technologies, Inc.
-Copyright @copyright{} 1995-2002, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being
-``GNAT User's Guide for OpenVMS Alpha'',
-and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@menu
* About This Guide::
diff --git a/gcc/ada/gnat_ug_vxw.texi b/gcc/ada/gnat_ug_vxw.texi
index 5c7ac9300e6..6ea120e46ec 100644
--- a/gcc/ada/gnat_ug_vxw.texi
+++ b/gcc/ada/gnat_ug_vxw.texi
@@ -64,6 +64,20 @@
@syncodeindex fn cp
@c %**end of header
+@copying
+Copyright @copyright{} 1995-2002, Free Software Foundation
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with the Invariant Sections being ``GNU Free Documentation License'', with the
+Front-Cover Texts being
+``GNAT User's Guide for Cross Platforms'',
+and with no Back-Cover Texts.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end copying
+
@titlepage
@@ -80,17 +94,7 @@
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995-2002, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being
-``GNAT User's Guide for Cross Platforms'',
-and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@end titlepage
@@ -109,17 +113,7 @@ GNAT Version for GCC @value{version-GCC}
Ada Core Technologies, Inc.
-Copyright @copyright{} 1995-2002, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being
-``GNAT User's Guide for Cross Platforms'',
-and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@menu
* About This Guide::
diff --git a/gcc/ada/gnat_ug_wnt.texi b/gcc/ada/gnat_ug_wnt.texi
index 102823d5377..7a3faa56a54 100644
--- a/gcc/ada/gnat_ug_wnt.texi
+++ b/gcc/ada/gnat_ug_wnt.texi
@@ -64,6 +64,20 @@
@syncodeindex fn cp
@c %**end of header
+@copying
+Copyright @copyright{} 1995-2002, Free Software Foundation
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with the Invariant Sections being ``GNU Free Documentation License'', with the
+Front-Cover Texts being
+``GNAT User's Guide for Windows NT'',
+and with no Back-Cover Texts.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end copying
+
@titlepage
@@ -80,17 +94,7 @@
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1995-2002, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being
-``GNAT User's Guide for Windows NT'',
-and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@end titlepage
@@ -109,17 +113,7 @@ GNAT Version for GCC @value{version-GCC}
Ada Core Technologies, Inc.
-Copyright @copyright{} 1995-2002, Free Software Foundation
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with the Invariant Sections being ``GNU Free Documentation License'', with the
-Front-Cover Texts being
-``GNAT User's Guide for Windows NT'',
-and with no Back-Cover Texts.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
+@insertcopying
@menu
* About This Guide::
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 7997a46e7a5..90d959c0f7e 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -100,7 +100,6 @@ Boston, MA 02111-1307, USA. */
name, that also takes an argument, needs to be modified so the
prefix is different, otherwise a '*' after the shorter option will
match with the longer one. */
-/* Ignore -dynamic for now */
#define TARGET_OPTION_TRANSLATE_TABLE \
{ "-all_load", "-Zall_load" }, \
{ "-allowable_client", "-Zallowable_client" }, \
@@ -111,7 +110,7 @@ Boston, MA 02111-1307, USA. */
{ "-weak_reference_mismatches", "-Zweak_reference_mismatches" }, \
{ "-dependency-file", "-MF" }, \
{ "-dylib_file", "-Zdylib_file" }, \
- { "-dynamic", " " }, \
+ { "-dynamic", "-Zdynamic" }, \
{ "-dynamiclib", "-Zdynamiclib" }, \
{ "-exported_symbols_list", "-Zexported_symbols_list" }, \
{ "-seg_addr_table_filename", "-Zseg_addr_table_filename" }, \
@@ -174,7 +173,7 @@ Boston, MA 02111-1307, USA. */
/* Machine dependent cpp options. */
#undef CPP_SPEC
-#define CPP_SPEC "%{static:-D__STATIC__}%{!static:-D__DYNAMIC__}"
+#define CPP_SPEC "%{static:%{!dynamic:-D__STATIC__}}%{!static:-D__DYNAMIC__}"
/* This is mostly a clone of the standard LINK_COMMAND_SPEC, plus
precomp, libtool, and fat build additions. Also we
@@ -234,6 +233,7 @@ Boston, MA 02111-1307, USA. */
%{Zbind_at_load:-bind_at_load} \
%{Zarch_errors_fatal:-arch_errors_fatal} \
%{Zdylib_file*:-dylib_file %*} \
+ %{Zdynamic:-dynamic}\
%{Zexported_symbols_list*:-exported_symbols_list %*} \
%{Zflat_namespace:-flat_namespace} \
%{headerpad_max_install_names*} \
diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h
index 21f3eeb689b..232038df080 100644
--- a/gcc/config/h8300/h8300.h
+++ b/gcc/config/h8300/h8300.h
@@ -1074,7 +1074,7 @@ struct cum_arg
#define ASM_APP_OFF "; #NO_APP\n"
#define FILE_ASM_OP "\t.file\n"
-#define IDENT_ASM_OP "\t.ident\n"
+#define IDENT_ASM_OP "\t.ident\t"
/* The assembler op to get a word, 2 bytes for the H8/300, 4 for H8/300H. */
#define ASM_WORD_OP \
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index de6edc9b4d2..2501c982283 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -117,7 +117,8 @@
(plus:HI (reg:HI SP_REG) (const_int -2)))
(set (mem:QI (plus:HI (reg:HI SP_REG) (const_int -1)))
(match_operand:QI 0 "register_operand" "r"))])]
- "TARGET_H8300"
+ "TARGET_H8300
+ && REGNO (operands[0]) != SP_REG"
"mov.w\\t%T0,@-r7"
[(set_attr "length" "2")
(set_attr "cc" "clobber")])
@@ -127,7 +128,8 @@
(plus:SI (reg:SI SP_REG) (const_int -4)))
(set (mem:QI (plus:SI (reg:SI SP_REG) (const_int -3)))
(match_operand:QI 0 "register_operand" "r"))])]
- "TARGET_H8300H || TARGET_H8300S"
+ "(TARGET_H8300H || TARGET_H8300S)
+ && REGNO (operands[0]) != SP_REG"
"mov.l\\t%S0,@-er7"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
@@ -209,7 +211,8 @@
(define_expand "pushhi1_h8300"
[(set (mem:HI (pre_dec:HI (reg:HI SP_REG)))
(match_operand:HI 0 "register_operand" ""))]
- "TARGET_H8300"
+ "TARGET_H8300
+ && REGNO (operands[0]) != SP_REG"
"")
(define_insn "pushhi1_h8300hs"
@@ -217,7 +220,8 @@
(plus:SI (reg:SI SP_REG) (const_int -4)))
(set (mem:HI (plus:SI (reg:SI SP_REG) (const_int -2)))
(match_operand:HI 0 "register_operand" "r"))])]
- "TARGET_H8300H || TARGET_H8300S"
+ "(TARGET_H8300H || TARGET_H8300S)
+ && REGNO (operands[0]) != SP_REG"
"mov.l\\t%S0,@-er7"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
@@ -1800,7 +1804,7 @@
"@
mov.b #0,%x0\;sub.w %e0,%e0
mov.b %R1,%w0\;mov.b #0,%x0\;sub.w %e0,%e0"
- [(set_attr "length" "4,6")
+ [(set_attr "length" "4,8")
(set_attr "cc" "clobber,clobber")])
(define_expand "zero_extendhisi2"
diff --git a/gcc/config/i386/scodbx.h b/gcc/config/i386/scodbx.h
deleted file mode 100644
index 7da93053256..00000000000
--- a/gcc/config/i386/scodbx.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Definitions for Intel 386 running SCO Unix System V,
- using dbx-in-coff encapsulation.
- Copyright (C) 1992, 1995, 1996, 1999 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 GNU CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#include "i386/svr3dbx.h"
-
-/* Overridden defines for SCO systems from sco.h. */
-
-/* By default, target has a 80387, uses IEEE compatible arithmetic,
- and returns float values in the 387, ie,
- (TARGET_80387 | TARGET_FLOAT_RETURNS_IN_80387)
-
- SCO's software emulation of a 387 fails to handle the `fucomp'
- opcode. fucomp is only used when generating IEEE compliant code.
- So don't make TARGET_IEEE_FP default for SCO. */
-
-#undef TARGET_SUBTARGET_DEFAULT
-#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
-
-/* Use crt1.o as a startup file and crtn.o as a closing file. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
- "%{!r:%{!z:svr3.ifile%s}%{z:svr3z.ifile%s}}\
- %{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}"
-
-/* Library spec, including SCO international language support. */
-
-#undef LIB_SPEC
-#define LIB_SPEC \
- "%{p:-L/usr/lib/libp}%{pg:-L/usr/lib/libp} %{scointl:libintl.a%s} -lc"
-
-/* Specify predefined symbols in preprocessor. */
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem=svr3"
-
-#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu) %{scointl:-DM_INTERNAT}"
-
-/* This spec is used for telling cpp whether char is signed or not. */
-
-#undef SIGNED_CHAR_SPEC
-#if DEFAULT_SIGNED_CHAR
-#define SIGNED_CHAR_SPEC \
- "%{funsigned-char:-D__CHAR_UNSIGNED__ -D_CHAR_UNSIGNED}"
-#else
-#define SIGNED_CHAR_SPEC \
- "%{!fsigned-char:-D__CHAR_UNSIGNED__ -D_CHAR_UNSIGNED}"
-#endif
-
-/* caller has to pop the extra argument passed to functions that return
- structures. */
-
-#undef RETURN_POPS_ARGS
-#define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) \
- ((FUNDECL) && TREE_CODE (FUNDECL) == IDENTIFIER_NODE ? 0 \
- : (TARGET_RTD \
- && (TYPE_ARG_TYPES (FUNTYPE) == 0 \
- || (TREE_VALUE (tree_last (TYPE_ARG_TYPES (FUNTYPE))) \
- == void_type_node))) ? (SIZE) \
- : 0)
-/* On other 386 systems, the last line looks like this:
- : (aggregate_value_p (TREE_TYPE (FUNTYPE))) ? GET_MODE_SIZE (Pmode) : 0) */
-
-/* Handle #pragma pack. */
-#define HANDLE_SYSV_PRAGMA
diff --git a/gcc/config/i386/xm-dgux.h b/gcc/config/i386/xm-dgux.h
deleted file mode 100644
index 881c5c7be9d..00000000000
--- a/gcc/config/i386/xm-dgux.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Configuration for GCC for Intel i386 running DG/ux */
-
-/* looks just like sysv4 for now */
-#include "xm-svr4.h"
diff --git a/gcc/config/i386/xm-sun.h b/gcc/config/i386/xm-sun.h
deleted file mode 100644
index 6c0f0a25630..00000000000
--- a/gcc/config/i386/xm-sun.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Configuration for GNU C-compiler for Intel 80386 running SunOS 4.0.
- Copyright (C) 1988, 1997 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 GNU CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#define USG
diff --git a/gcc/config/i386/xm-sysv3.h b/gcc/config/i386/xm-sysv3.h
deleted file mode 100644
index 9a655443ff5..00000000000
--- a/gcc/config/i386/xm-sysv3.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Configuration for GCC for Intel i386 running System V Release 3. */
-
-#include "xm-svr3.h"
diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h
index f1387c0c898..1e2d8c8d408 100644
--- a/gcc/config/rs6000/altivec.h
+++ b/gcc/config/rs6000/altivec.h
@@ -1102,43 +1102,43 @@ vec_cmple (vector float a1, vector float a2)
inline vector signed char
vec_cmplt (vector unsigned char a1, vector unsigned char a2)
{
- return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
+ return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a2, (vector signed char) a1);
}
inline vector signed char
vec_cmplt (vector signed char a1, vector signed char a2)
{
- return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
+ return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a2, (vector signed char) a1);
}
inline vector signed short
vec_cmplt (vector unsigned short a1, vector unsigned short a2)
{
- return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
+ return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a2, (vector signed short) a1);
}
inline vector signed short
vec_cmplt (vector signed short a1, vector signed short a2)
{
- return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
+ return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a2, (vector signed short) a1);
}
inline vector signed int
vec_cmplt (vector unsigned int a1, vector unsigned int a2)
{
- return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
+ return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a2, (vector signed int) a1);
}
inline vector signed int
vec_cmplt (vector signed int a1, vector signed int a2)
{
- return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
+ return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a2, (vector signed int) a1);
}
inline vector signed int
vec_cmplt (vector float a1, vector float a2)
{
- return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
+ return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a2, (vector float) a1);
}
/* vec_ctf */
@@ -6523,7 +6523,7 @@ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
-#define vec_cmplt(a1, a2) \
+#define vec_cmplt(a2, a1) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index 3d20ff48e23..25e4b084433 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -490,18 +490,27 @@
"vmaddfp %0,%1,%2,%3"
[(set_attr "type" "vecfloat")])
-;; The unspec here is a vec splat of 0. We do multiply as a fused
-;; multiply-add with an add of a 0 vector.
+;; We do multiply as a fused multiply-add with an add of a -0.0 vector.
(define_expand "mulv4sf3"
- [(set (match_dup 3) (unspec:V4SF [(const_int 0)] 142))
- (set (match_operand:V4SF 0 "register_operand" "=v")
- (plus:V4SF (mult:V4SF (match_operand:V4SF 1 "register_operand" "v")
- (match_operand:V4SF 2 "register_operand" "v"))
- (match_dup 3)))]
+ [(use (match_operand:V4SF 0 "register_operand" ""))
+ (use (match_operand:V4SF 1 "register_operand" ""))
+ (use (match_operand:V4SF 2 "register_operand" ""))]
"TARGET_ALTIVEC && TARGET_FUSED_MADD"
"
-{ operands[3] = gen_reg_rtx (V4SFmode); }")
+{
+ rtx neg0;
+
+ /* Generate [-0.0, -0.0, -0.0, -0.0]. */
+ neg0 = gen_reg_rtx (V4SFmode);
+ emit_insn (gen_altivec_vspltisw_v4sf (neg0, GEN_INT (-1)));
+ emit_insn (gen_altivec_vslw_v4sf (neg0, neg0, neg0));
+
+ /* Use the multiply-add. */
+ emit_insn (gen_altivec_vmaddfp (operands[0], operands[1], operands[2],
+ neg0));
+ DONE;
+}")
;; Fused multiply subtract
(define_insn "altivec_vnmsubfp"
@@ -1043,6 +1052,14 @@
"vslw %0,%1,%2"
[(set_attr "type" "vecsimple")])
+(define_insn "altivec_vslw_v4sf"
+ [(set (match_operand:V4SF 0 "register_operand" "=v")
+ (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "v")
+ (match_operand:V4SF 2 "register_operand" "v")] 109))]
+ "TARGET_ALTIVEC"
+ "vslw %0,%1,%2"
+ [(set_attr "type" "vecsimple")])
+
(define_insn "altivec_vsl"
[(set (match_operand:V4SI 0 "register_operand" "=v")
(unspec:V4SI [(match_operand:V4SI 1 "register_operand" "v")
@@ -1316,7 +1333,7 @@
"vspltisw %0, %1"
[(set_attr "type" "vecsimple")])
-(define_insn ""
+(define_insn "altivec_vspltisw_v4sf"
[(set (match_operand:V4SF 0 "register_operand" "=v")
(unspec:V4SF [(match_operand:QI 1 "immediate_operand" "i")] 142))]
"TARGET_ALTIVEC"
@@ -1830,8 +1847,8 @@
(define_insn "absv16qi2"
[(set (match_operand:V16QI 0 "register_operand" "=v")
(abs:V16QI (match_operand:V16QI 1 "register_operand" "v")))
- (clobber (match_scratch:V16QI 2 "=v"))
- (clobber (match_scratch:V16QI 3 "=v"))]
+ (clobber (match_scratch:V16QI 2 "=&v"))
+ (clobber (match_scratch:V16QI 3 "=&v"))]
"TARGET_ALTIVEC"
"vspltisb %2,0\;vsububm %3,%2,%1\;vmaxsb %0,%1,%3"
[(set_attr "type" "altivec")
@@ -1840,8 +1857,8 @@
(define_insn "absv8hi2"
[(set (match_operand:V8HI 0 "register_operand" "=v")
(abs:V8HI (match_operand:V8HI 1 "register_operand" "v")))
- (clobber (match_scratch:V8HI 2 "=v"))
- (clobber (match_scratch:V8HI 3 "=v"))]
+ (clobber (match_scratch:V8HI 2 "=&v"))
+ (clobber (match_scratch:V8HI 3 "=&v"))]
"TARGET_ALTIVEC"
"vspltisb %2,0\;vsubuhm %3,%2,%1\;vmaxsh %0,%1,%3"
[(set_attr "type" "altivec")
@@ -1850,8 +1867,8 @@
(define_insn "absv4si2"
[(set (match_operand:V4SI 0 "register_operand" "=v")
(abs:V4SI (match_operand:V4SI 1 "register_operand" "v")))
- (clobber (match_scratch:V4SI 2 "=v"))
- (clobber (match_scratch:V4SI 3 "=v"))]
+ (clobber (match_scratch:V4SI 2 "=&v"))
+ (clobber (match_scratch:V4SI 3 "=&v"))]
"TARGET_ALTIVEC"
"vspltisb %2,0\;vsubuwm %3,%2,%1\;vmaxsw %0,%1,%3"
[(set_attr "type" "altivec")
@@ -1860,8 +1877,8 @@
(define_insn "absv4sf2"
[(set (match_operand:V4SF 0 "register_operand" "=v")
(abs:V4SF (match_operand:V4SF 1 "register_operand" "v")))
- (clobber (match_scratch:V4SF 2 "=v"))
- (clobber (match_scratch:V4SF 3 "=v"))]
+ (clobber (match_scratch:V4SF 2 "=&v"))
+ (clobber (match_scratch:V4SF 3 "=&v"))]
"TARGET_ALTIVEC"
"vspltisw %2, -1\;vslw %3,%2,%2\;vandc %0,%1,%3"
[(set_attr "type" "altivec")
@@ -1870,8 +1887,8 @@
(define_insn "altivec_abss_v16qi"
[(set (match_operand:V16QI 0 "register_operand" "=v")
(unspec:V16QI [(match_operand:V16QI 1 "register_operand" "v")] 210))
- (clobber (match_scratch:V16QI 2 "=v"))
- (clobber (match_scratch:V16QI 3 "=v"))]
+ (clobber (match_scratch:V16QI 2 "=&v"))
+ (clobber (match_scratch:V16QI 3 "=&v"))]
"TARGET_ALTIVEC"
"vspltisb %2,0\;vsubsbs %3,%2,%1\;vmaxsb %0,%1,%3"
[(set_attr "type" "altivec")
@@ -1880,8 +1897,8 @@
(define_insn "altivec_abss_v8hi"
[(set (match_operand:V8HI 0 "register_operand" "=v")
(unspec:V8HI [(match_operand:V8HI 1 "register_operand" "v")] 211))
- (clobber (match_scratch:V8HI 2 "=v"))
- (clobber (match_scratch:V8HI 3 "=v"))]
+ (clobber (match_scratch:V8HI 2 "=&v"))
+ (clobber (match_scratch:V8HI 3 "=&v"))]
"TARGET_ALTIVEC"
"vspltisb %2,0\;vsubshs %3,%2,%1\;vmaxsh %0,%1,%3"
[(set_attr "type" "altivec")
@@ -1890,8 +1907,8 @@
(define_insn "altivec_abss_v4si"
[(set (match_operand:V4SI 0 "register_operand" "=v")
(unspec:V4SI [(match_operand:V4SI 1 "register_operand" "v")] 212))
- (clobber (match_scratch:V4SI 2 "=v"))
- (clobber (match_scratch:V4SI 3 "=v"))]
+ (clobber (match_scratch:V4SI 2 "=&v"))
+ (clobber (match_scratch:V4SI 3 "=&v"))]
"TARGET_ALTIVEC"
"vspltisb %2,0\;vsubsws %3,%2,%1\;vmaxsw %0,%1,%3"
[(set_attr "type" "altivec")
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index 73041a28775..b3468f2b66b 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -58,7 +58,9 @@ Boston, MA 02111-1307, USA. */
/* We want -fPIC by default, unless we're using -static to compile for
the kernel or some such. */
-#define CC1_SPEC "%{!static:-fPIC}"
+#define CC1_SPEC "\
+%{static: %{Zdynamic: %e conflicting code gen style switches are used}}\
+%{!static:-fPIC}"
/* Make both r2 and r3 available for allocation. */
#define FIXED_R2 0
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index e5e9e27cce9..42138e7c40c 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -611,6 +611,9 @@ extern int rs6000_default_long_calls;
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64
#endif
+/* Work around rs6000_long_double_type_size dependency in ada/targtyps.c. */
+#define WIDEST_HARDWARE_FP_SIZE 64
+
/* Width in bits of a pointer.
See also the macro `Pmode' defined below. */
#define POINTER_SIZE (TARGET_32BIT ? 32 : 64)
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 197aa67ebcb..8c4cb6cec14 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -500,6 +500,31 @@
"ltr\\t%0,%0"
[(set_attr "op_type" "RR")])
+(define_insn "*tsthiCCT"
+ [(set (reg 33)
+ (compare (match_operand:HI 0 "nonimmediate_operand" "?Q,d")
+ (match_operand:HI 1 "const0_operand" "")))
+ (set (match_operand:HI 2 "register_operand" "=d,0")
+ (match_dup 0))]
+ "s390_match_ccmode(insn, CCTmode)"
+ "@
+ icm\\t%2,3,%0
+ tml\\t%0,65535"
+ [(set_attr "op_type" "RS,RI")
+ (set_attr "atype" "mem,reg")])
+
+(define_insn "*tsthiCCT_cconly"
+ [(set (reg 33)
+ (compare (match_operand:HI 0 "nonimmediate_operand" "?Q,d")
+ (match_operand:HI 1 "const0_operand" "")))
+ (clobber (match_scratch:HI 2 "=d,X"))]
+ "s390_match_ccmode(insn, CCTmode)"
+ "@
+ icm\\t%2,3,%0
+ tml\\t%0,65535"
+ [(set_attr "op_type" "RS,RI")
+ (set_attr "atype" "mem,reg")])
+
(define_insn "*tsthi"
[(set (reg 33)
(compare (match_operand:HI 0 "s_operand" "Q")
@@ -521,6 +546,30 @@
[(set_attr "op_type" "RS")
(set_attr "atype" "mem")])
+(define_insn "*tstqiCCT"
+ [(set (reg 33)
+ (compare (match_operand:QI 0 "nonimmediate_operand" "?Q,d")
+ (match_operand:QI 1 "const0_operand" "")))
+ (set (match_operand:QI 2 "register_operand" "=d,0")
+ (match_dup 0))]
+ "s390_match_ccmode(insn, CCTmode)"
+ "@
+ icm\\t%2,1,%0
+ tml\\t%0,255"
+ [(set_attr "op_type" "RS,RI")
+ (set_attr "atype" "mem,reg")])
+
+(define_insn "*tstqiCCT_cconly"
+ [(set (reg 33)
+ (compare (match_operand:QI 0 "nonimmediate_operand" "?Q,d")
+ (match_operand:QI 1 "const0_operand" "")))]
+ "s390_match_ccmode(insn, CCTmode)"
+ "@
+ cli\\t%0,0
+ tml\\t%0,255"
+ [(set_attr "op_type" "SI,RI")
+ (set_attr "atype" "mem,reg")])
+
(define_insn "*tstqi"
[(set (reg 33)
(compare (match_operand:QI 0 "s_operand" "Q")
diff --git a/gcc/configure b/gcc/configure
index 7c20fad4b86..74c7c166196 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -3262,7 +3262,7 @@ else
echo "configure:3263: version of makeinfo is $ac_prog_version" >&5
case $ac_prog_version in
'') gcc_cv_prog_makeinfo_modern=no;;
- 4.[1-9]*)
+ 4.[2-9]*)
gcc_cv_prog_makeinfo_modern=yes;;
*) gcc_cv_prog_makeinfo_modern=no;;
esac
diff --git a/gcc/configure.in b/gcc/configure.in
index c0afb232296..1591d59b2c5 100644
--- a/gcc/configure.in
+++ b/gcc/configure.in
@@ -573,7 +573,7 @@ else
# that we can use it.
gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
[GNU texinfo.* \([0-9][0-9.]*\)],
- [4.[1-9]*])
+ [4.[2-9]*])
fi
if test $gcc_cv_prog_makeinfo_modern = no; then
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 096b906a633..7492944d3d0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,83 @@
+2002-12-30 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/9054
+ * class.c (layout_class_type): Set DECL_CONTEXT of type for base.
+ * dump.c (cp_dump_tree, RECORD_TYPE): Deal with type for base types.
+
+2002-12-26 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/4803
+ * decl2.c (mark_used): Defer inline functions.
+ (finish_file): Merge deferred_fns loops. Check all used
+ inline functions have a definition.
+ * method.c (make_thunk): Thunks are not inline.
+
+ PR c++/5116, c++/764
+ * call.c (build_new_op): Make sure template class operands are
+ instantiated.
+
+2002-12-24 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR C++/7964
+ * cp-tree.h (resolve_scoped_fn_name): Prototype.
+ * call.c (resolve_scoped_fn_name): New function. Deal with
+ more template expansion. Broken out of ...
+ * parse.y (parse_finish_call_expr): ... here. Call it.
+ * decl2.c (build_expr_from_tree, CALL_EXPR): Use
+ resolve_scoped_fn_name and build_call_from_tree.
+
+ PR c++/9053
+ * decl.c (duplicate_decls): Templates may be disambiguated by
+ return type.
+
+ PR c++/8702
+ * decl2.c (check_classfn): Use lookup_fnfield_1. List all
+ conversion operators on failure.
+
+2002-12-22 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/8572
+ * cp-tree.h (grokoptypename): Add SCOPE parameter.
+ * decl2.c (grokoptypename): Add SCOPE parameter. tsubst the type
+ if in a template scope.
+ * parse.y (unoperator): Return the scope.
+ (operator_name): Adjust grokoptypename call.
+
+2002-12-22 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ * cp-tree.h (make_unbound_class_template): Use tsubst_flags_t.
+ * decl.c (make_unbound_class_template): Adjust. Check for tf_error.
+ * pt.c (tsubst) [OFFSET_TYPE]: Check for tf_error.
+
+2002-12-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/8099
+ * friend.c (make_friend_class): Allow partial specialization
+ when declaration is not a template friend.
+
+2002-12-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/3663
+ * pt.c (lookup_template_class): Copy TREE_PRIVATE and
+ TREE_PROTECTED to created decl nodes.
+
+2002-12-18 Mark Mitchell <mark@codesourcery.com>
+
+ * class.c (build_base_field): Do not set DECL_PACKED on the
+ FIELD_DECL.
+
+2002-12-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ * parse.y (bad_parm): Add missing argument to error function call.
+
+2002-12-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/8442
+ * decl2.c (handle_class_head): Verify if the looked up name is a
+ type or template.
+ * pt.c (convert_template_argument): Fix type or template template
+ parameter decision logic.
+
2002-12-13 Gabriel Dos Reis <gdr@integrable-solutions.net>
PR C++/8031
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 072fbe64515..b4c5d0a790e 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -2659,6 +2659,69 @@ build_user_type_conversion (totype, expr, flags)
return NULL_TREE;
}
+/* Find the possibly overloaded set of functions corresponding to a
+ call of the form SCOPE::NAME (...). NAME might be a
+ TEMPLATE_ID_EXPR, OVERLOAD, _DECL, IDENTIFIER_NODE or LOOKUP_EXPR. */
+
+tree
+resolve_scoped_fn_name (tree scope, tree name)
+{
+ tree fn;
+ tree template_args = NULL_TREE;
+ bool is_template_id = TREE_CODE (name) == TEMPLATE_ID_EXPR;
+
+ if (is_template_id)
+ {
+ template_args = TREE_OPERAND (name, 1);
+ name = TREE_OPERAND (name, 0);
+ }
+ if (TREE_CODE (name) == OVERLOAD)
+ name = DECL_NAME (get_first_fn (name));
+ else if (TREE_CODE (name) == LOOKUP_EXPR)
+ name = TREE_OPERAND (name, 0);
+
+ if (TREE_CODE (scope) == NAMESPACE_DECL)
+ fn = lookup_namespace_name (scope, name);
+ else
+ {
+ if (!TYPE_BEING_DEFINED (scope)
+ && !COMPLETE_TYPE_P (complete_type (scope)))
+ {
+ error ("incomplete type '%T' cannot be used to name a scope",
+ scope);
+ return error_mark_node;
+ }
+
+ if (BASELINK_P (name))
+ fn = name;
+ else
+ fn = lookup_member (scope, name, /*protect=*/1, /*prefer_type=*/0);
+ if (fn && current_class_type)
+ fn = (adjust_result_of_qualified_name_lookup
+ (fn, scope, current_class_type));
+ }
+
+ if (!fn)
+ {
+ error ("'%D' has no member named '%E'", scope, name);
+ return error_mark_node;
+ }
+ if (is_template_id)
+ {
+ tree fns = fn;
+
+ if (BASELINK_P (fn))
+ fns = BASELINK_FUNCTIONS (fns);
+ fns = build_nt (TEMPLATE_ID_EXPR, fns, template_args);
+ if (BASELINK_P (fn))
+ BASELINK_FUNCTIONS (fn) = fns;
+ else
+ fn = fns;
+ }
+
+ return fn;
+}
+
/* Do any initial processing on the arguments to a function call. */
static tree
@@ -3355,6 +3418,10 @@ build_new_op (code, flags, arg1, arg2, arg3)
if (TREE_CODE (arg1) == OFFSET_REF)
arg1 = resolve_offset_ref (arg1);
arg1 = convert_from_reference (arg1);
+ if (CLASS_TYPE_P (TREE_TYPE (arg1))
+ && CLASSTYPE_TEMPLATE_INSTANTIATION (TREE_TYPE (arg1)))
+ /* Make sure the template type is instantiated now. */
+ instantiate_class_template (TYPE_MAIN_VARIANT (TREE_TYPE (arg1)));
switch (code)
{
@@ -3377,12 +3444,18 @@ build_new_op (code, flags, arg1, arg2, arg3)
if (TREE_CODE (arg2) == OFFSET_REF)
arg2 = resolve_offset_ref (arg2);
arg2 = convert_from_reference (arg2);
+ if (CLASS_TYPE_P (TREE_TYPE (arg2))
+ && CLASSTYPE_TEMPLATE_INSTANTIATION (TREE_TYPE (arg2)))
+ instantiate_class_template (TYPE_MAIN_VARIANT (TREE_TYPE (arg2)));
}
if (arg3)
{
if (TREE_CODE (arg3) == OFFSET_REF)
arg3 = resolve_offset_ref (arg3);
arg3 = convert_from_reference (arg3);
+ if (CLASS_TYPE_P (TREE_TYPE (arg3))
+ && CLASSTYPE_TEMPLATE_INSTANTIATION (TREE_TYPE (arg3)))
+ instantiate_class_template (TYPE_MAIN_VARIANT (TREE_TYPE (arg3)));
}
if (code == COND_EXPR)
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 06d09681e6f..cb392dec7cd 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -3841,8 +3841,6 @@ build_base_field (record_layout_info rli, tree binfo,
DECL_SIZE_UNIT (decl) = CLASSTYPE_SIZE_UNIT (basetype);
DECL_ALIGN (decl) = CLASSTYPE_ALIGN (basetype);
DECL_USER_ALIGN (decl) = CLASSTYPE_USER_ALIGN (basetype);
- /* Tell the backend not to round up to TYPE_ALIGN. */
- DECL_PACKED (decl) = 1;
/* Try to place the field. It may take more than one try if we
have a hard time placing the field without putting two
@@ -5116,6 +5114,7 @@ layout_class_type (tree t, tree *virtuals_p)
/* Record the base version of the type. */
CLASSTYPE_AS_BASE (t) = base_t;
+ TYPE_CONTEXT (base_t) = t;
}
else
CLASSTYPE_AS_BASE (t) = t;
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 3b50ffec48a..9b93d52d96c 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -3528,6 +3528,7 @@ extern tree build_method_call PARAMS ((tree, tree, tree, tree, int));
extern int null_ptr_cst_p PARAMS ((tree));
extern int sufficient_parms_p PARAMS ((tree));
extern tree type_decays_to PARAMS ((tree));
+extern tree resolve_scoped_fn_name PARAMS ((tree, tree));
extern tree build_user_type_conversion PARAMS ((tree, tree, int));
extern tree build_new_function_call PARAMS ((tree, tree));
extern tree build_new_method_call (tree, tree, tree, tree, int);
@@ -3680,7 +3681,7 @@ extern void set_namespace_binding PARAMS ((tree, tree, tree));
extern tree lookup_namespace_name PARAMS ((tree, tree));
extern tree build_typename_type PARAMS ((tree, tree, tree, tree));
extern tree make_typename_type PARAMS ((tree, tree, tsubst_flags_t));
-extern tree make_unbound_class_template PARAMS ((tree, tree, int));
+extern tree make_unbound_class_template PARAMS ((tree, tree, tsubst_flags_t));
extern tree lookup_name_nonclass PARAMS ((tree));
extern tree lookup_function_nonclass PARAMS ((tree, tree));
extern tree lookup_name PARAMS ((tree, int));
@@ -3787,7 +3788,7 @@ extern void check_member_template PARAMS ((tree));
extern tree grokfield PARAMS ((tree, tree, tree, tree, tree));
extern tree grokbitfield PARAMS ((tree, tree, tree));
extern tree groktypefield PARAMS ((tree, tree));
-extern tree grokoptypename PARAMS ((tree, tree));
+extern tree grokoptypename PARAMS ((tree, tree, tree));
extern void cplus_decl_attributes PARAMS ((tree *, tree, int));
extern tree constructor_name_full PARAMS ((tree));
extern tree constructor_name PARAMS ((tree));
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index e68c06447e1..0ea2154d4f7 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -3210,7 +3210,11 @@ duplicate_decls (newdecl, olddecl)
&& compparms (TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl))),
TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (newdecl))))
&& comp_template_parms (DECL_TEMPLATE_PARMS (newdecl),
- DECL_TEMPLATE_PARMS (olddecl)))
+ DECL_TEMPLATE_PARMS (olddecl))
+ /* Template functions can be disambiguated by
+ return type. */
+ && same_type_p (TREE_TYPE (TREE_TYPE (newdecl)),
+ TREE_TYPE (TREE_TYPE (olddecl))))
{
error ("new declaration `%#D'", newdecl);
cp_error_at ("ambiguates old declaration `%#D'", olddecl);
@@ -5753,7 +5757,7 @@ make_typename_type (context, name, complain)
tree
make_unbound_class_template (context, name, complain)
tree context, name;
- int complain;
+ tsubst_flags_t complain;
{
tree t;
tree d;
@@ -5775,7 +5779,7 @@ make_unbound_class_template (context, name, complain)
if (!tmpl || !DECL_CLASS_TEMPLATE_P (tmpl))
{
- if (complain)
+ if (complain & tf_error)
error ("no class template named `%#T' in `%#T'", name, context);
return error_mark_node;
}
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 248fa2d6725..9b51b64c139 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -674,11 +674,7 @@ tree
check_classfn (ctype, function)
tree ctype, function;
{
- tree fn_name = DECL_NAME (function);
- tree fndecl, fndecls;
- tree method_vec = CLASSTYPE_METHOD_VEC (complete_type (ctype));
- tree *methods = 0;
- tree *end = 0;
+ int ix;
if (DECL_USE_TEMPLATE (function)
&& !(TREE_CODE (function) == TEMPLATE_DECL
@@ -695,81 +691,90 @@ check_classfn (ctype, function)
reason we should, either. We let our callers know we didn't
find the method, but we don't complain. */
return NULL_TREE;
-
- if (method_vec != 0)
+
+ ix = lookup_fnfields_1 (complete_type (ctype),
+ DECL_CONSTRUCTOR_P (function) ? ctor_identifier :
+ DECL_DESTRUCTOR_P (function) ? dtor_identifier :
+ DECL_NAME (function));
+
+ if (ix >= 0)
{
- methods = &TREE_VEC_ELT (method_vec, 0);
- end = TREE_VEC_END (method_vec);
-
- /* First suss out ctors and dtors. */
- if (*methods && fn_name == DECL_NAME (OVL_CURRENT (*methods))
- && DECL_CONSTRUCTOR_P (function))
- goto got_it;
- if (*++methods && fn_name == DECL_NAME (OVL_CURRENT (*methods))
- && DECL_DESTRUCTOR_P (function))
- goto got_it;
-
- while (++methods != end && *methods)
+ tree methods = CLASSTYPE_METHOD_VEC (ctype);
+ tree fndecls, fndecl;
+ bool is_conv_op;
+ const char *format = NULL;
+
+ for (fndecls = TREE_VEC_ELT (methods, ix);
+ fndecls; fndecls = OVL_NEXT (fndecls))
{
- fndecl = *methods;
- if (fn_name == DECL_NAME (OVL_CURRENT (*methods)))
+ tree p1, p2;
+
+ fndecl = OVL_CURRENT (fndecls);
+ p1 = TYPE_ARG_TYPES (TREE_TYPE (function));
+ p2 = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
+
+ /* We cannot simply call decls_match because this doesn't
+ work for static member functions that are pretending to
+ be methods, and because the name may have been changed by
+ asm("new_name"). */
+
+ /* Get rid of the this parameter on functions that become
+ static. */
+ if (DECL_STATIC_FUNCTION_P (fndecl)
+ && TREE_CODE (TREE_TYPE (function)) == METHOD_TYPE)
+ p1 = TREE_CHAIN (p1);
+
+ if (same_type_p (TREE_TYPE (TREE_TYPE (function)),
+ TREE_TYPE (TREE_TYPE (fndecl)))
+ && compparms (p1, p2)
+ && (DECL_TEMPLATE_SPECIALIZATION (function)
+ == DECL_TEMPLATE_SPECIALIZATION (fndecl))
+ && (!DECL_TEMPLATE_SPECIALIZATION (function)
+ || (DECL_TI_TEMPLATE (function)
+ == DECL_TI_TEMPLATE (fndecl))))
+ return fndecl;
+ }
+ error ("prototype for `%#D' does not match any in class `%T'",
+ function, ctype);
+ is_conv_op = DECL_CONV_FN_P (fndecl);
+
+ if (is_conv_op)
+ ix = CLASSTYPE_FIRST_CONVERSION_SLOT;
+ fndecls = TREE_VEC_ELT (methods, ix);
+ while (fndecls)
+ {
+ fndecl = OVL_CURRENT (fndecls);
+ fndecls = OVL_NEXT (fndecls);
+
+ if (!fndecls && is_conv_op)
{
- got_it:
- for (fndecls = *methods; fndecls != NULL_TREE;
- fndecls = OVL_NEXT (fndecls))
+ if (TREE_VEC_LENGTH (methods) > ix)
{
- fndecl = OVL_CURRENT (fndecls);
-
- /* We cannot simply call decls_match because this
- doesn't work for static member functions that are
- pretending to be methods, and because the name
- may have been changed by asm("new_name"). */
- if (DECL_NAME (function) == DECL_NAME (fndecl))
+ ix++;
+ fndecls = TREE_VEC_ELT (methods, ix);
+ if (!DECL_CONV_FN_P (OVL_CURRENT (fndecls)))
{
- tree p1 = TYPE_ARG_TYPES (TREE_TYPE (function));
- tree p2 = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
-
- /* Get rid of the this parameter on functions that become
- static. */
- if (DECL_STATIC_FUNCTION_P (fndecl)
- && TREE_CODE (TREE_TYPE (function)) == METHOD_TYPE)
- p1 = TREE_CHAIN (p1);
-
- if (same_type_p (TREE_TYPE (TREE_TYPE (function)),
- TREE_TYPE (TREE_TYPE (fndecl)))
- && compparms (p1, p2)
- && (DECL_TEMPLATE_SPECIALIZATION (function)
- == DECL_TEMPLATE_SPECIALIZATION (fndecl))
- && (!DECL_TEMPLATE_SPECIALIZATION (function)
- || (DECL_TI_TEMPLATE (function)
- == DECL_TI_TEMPLATE (fndecl))))
- return fndecl;
+ fndecls = NULL_TREE;
+ is_conv_op = false;
}
}
- break; /* loser */
+ else
+ is_conv_op = false;
}
+ if (format)
+ format = " %#D";
+ else if (fndecls)
+ format = "candidates are: %#D";
+ else
+ format = "candidate is: %#D";
+ cp_error_at (format, fndecl);
}
}
-
- if (methods != end && *methods)
- {
- tree fndecl = *methods;
- error ("prototype for `%#D' does not match any in class `%T'",
- function, ctype);
- cp_error_at ("candidate%s: %+#D", OVL_NEXT (fndecl) ? "s are" : " is",
- OVL_CURRENT (fndecl));
- while (fndecl = OVL_NEXT (fndecl), fndecl)
- cp_error_at (" %#D", OVL_CURRENT(fndecl));
- }
+ else if (!COMPLETE_TYPE_P (ctype))
+ cxx_incomplete_type_error (function, ctype);
else
- {
- methods = 0;
- if (!COMPLETE_TYPE_P (ctype))
- cxx_incomplete_type_error (function, ctype);
- else
- error ("no `%#D' member function declared in class `%T'",
- function, ctype);
- }
+ error ("no `%#D' member function declared in class `%T'",
+ function, ctype);
/* If we did not find the method in the class, add it to avoid
spurious errors (unless the CTYPE is not yet defined, in which
@@ -1118,11 +1123,29 @@ grokbitfield (declarator, declspecs, width)
return value;
}
+/* Convert a conversion operator name to an identifier. SCOPE is the
+ scope of the conversion operator, if explicit. */
+
tree
-grokoptypename (declspecs, declarator)
+grokoptypename (declspecs, declarator, scope)
tree declspecs, declarator;
+ tree scope;
{
tree t = grokdeclarator (declarator, declspecs, TYPENAME, 0, NULL);
+
+ /* Resolve any TYPENAME_TYPEs that refer to SCOPE, before mangling
+ the name, so that we mangle the right thing. */
+ if (scope && current_template_parms
+ && uses_template_parms (t)
+ && uses_template_parms (scope))
+ {
+ tree args = current_template_args ();
+
+ push_scope (scope);
+ t = tsubst (t, args, tf_error | tf_warning, NULL_TREE);
+ pop_scope (scope);
+ }
+
return mangle_conv_op_name_for_type (t);
}
@@ -2842,12 +2865,13 @@ finish_file ()
reconsider = 1;
}
- /* Go through the various inline functions, and see if any need
- synthesizing. */
for (i = 0; i < deferred_fns_used; ++i)
{
tree decl = VARRAY_TREE (deferred_fns, i);
+
import_export_decl (decl);
+
+ /* Does it need synthesizing? */
if (DECL_ARTIFICIAL (decl) && ! DECL_INITIAL (decl)
&& TREE_USED (decl)
&& (! DECL_REALLY_EXTERN (decl) || DECL_INLINE (decl)))
@@ -2862,30 +2886,21 @@ finish_file ()
pop_from_top_level ();
reconsider = 1;
}
- }
- /* We lie to the back-end, pretending that some functions are
- not defined when they really are. This keeps these functions
- from being put out unnecessarily. But, we must stop lying
- when the functions are referenced, or if they are not comdat
- since they need to be put out now.
- This is done in a separate for cycle, because if some deferred
- function is contained in another deferred function later in
- deferred_fns varray, rest_of_compilation would skip this
- function and we really cannot expand the same function twice. */
- for (i = 0; i < deferred_fns_used; ++i)
- {
- tree decl = VARRAY_TREE (deferred_fns, i);
-
+ /* We lie to the back-end, pretending that some functions
+ are not defined when they really are. This keeps these
+ functions from being put out unnecessarily. But, we must
+ stop lying when the functions are referenced, or if they
+ are not comdat since they need to be put out now. This
+ is done in a separate for cycle, because if some deferred
+ function is contained in another deferred function later
+ in deferred_fns varray, rest_of_compilation would skip
+ this function and we really cannot expand the same
+ function twice. */
if (DECL_NOT_REALLY_EXTERN (decl)
&& DECL_INITIAL (decl)
&& DECL_NEEDED_P (decl))
DECL_EXTERNAL (decl) = 0;
- }
-
- for (i = 0; i < deferred_fns_used; ++i)
- {
- tree decl = VARRAY_TREE (deferred_fns, i);
/* If we're going to need to write this function out, and
there's already a body for it, create RTL for it now.
@@ -2941,6 +2956,16 @@ finish_file ()
}
while (reconsider);
+ /* All used inline functions must have a definition at this point. */
+ for (i = 0; i < deferred_fns_used; ++i)
+ {
+ tree decl = VARRAY_TREE (deferred_fns, i);
+
+ if (TREE_USED (decl) && DECL_DECLARED_INLINE_P (decl)
+ && !(TREE_ASM_WRITTEN (decl) || DECL_SAVED_TREE (decl)))
+ cp_warning_at ("inline function `%D' used but never defined", decl);
+ }
+
/* We give C linkage to static constructors and destructors. */
push_lang_context (lang_name_c);
@@ -3292,16 +3317,18 @@ build_expr_from_tree (t)
{
tree ref = TREE_OPERAND (t, 0);
tree name = TREE_OPERAND (ref, 1);
+ tree fn, scope, args;
if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
name = build_nt (TEMPLATE_ID_EXPR,
TREE_OPERAND (name, 0),
build_expr_from_tree (TREE_OPERAND (name, 1)));
-
- return build_member_call
- (build_expr_from_tree (TREE_OPERAND (ref, 0)),
- name,
- build_expr_from_tree (TREE_OPERAND (t, 1)));
+
+ scope = build_expr_from_tree (TREE_OPERAND (ref, 0));
+ args = build_expr_from_tree (TREE_OPERAND (t, 1));
+ fn = resolve_scoped_fn_name (scope, name);
+
+ return build_call_from_tree (fn, args, 1);
}
else
{
@@ -4714,6 +4741,12 @@ mark_used (decl)
TREE_USED (decl) = 1;
if (processing_template_decl)
return;
+
+ if (TREE_CODE (decl) == FUNCTION_DECL && DECL_DECLARED_INLINE_P (decl)
+ && !TREE_ASM_WRITTEN (decl))
+ /* Remember it, so we can check it was defined. */
+ defer_fn (decl);
+
if (!skip_evaluation)
assemble_external (decl);
@@ -4759,6 +4792,7 @@ handle_class_head (tag_kind, scope, id, attributes, defn_p, new_type_p)
int *new_type_p;
{
tree decl = NULL_TREE;
+ tree type;
tree current = current_scope ();
bool xrefd_p = false;
@@ -4807,12 +4841,28 @@ handle_class_head (tag_kind, scope, id, attributes, defn_p, new_type_p)
xrefd_p = true;
}
- if (!TYPE_BINFO (TREE_TYPE (decl)))
+ type = TREE_TYPE (decl);
+
+ if (!TYPE_BINFO (type))
{
error ("`%T' is not a class or union type", decl);
return error_mark_node;
}
-
+
+ /* When `A' is a template class, using `class A' without template
+ argument is invalid unless
+ - we are inside the scope of the template class `A' or one of its
+ specialization.
+ - we are declaring the template class `A' itself. */
+ if (TREE_CODE (type) == RECORD_TYPE
+ && CLASSTYPE_IS_TEMPLATE (type)
+ && processing_template_decl <= template_class_depth (current)
+ && ! is_base_of_enclosing_class (type, current_class_type))
+ {
+ error ("template argument is required for `%T'", type);
+ return error_mark_node;
+ }
+
if (defn_p)
{
/* For a definition, we want to enter the containing scope
diff --git a/gcc/cp/dump.c b/gcc/cp/dump.c
index c4472b07359..39e72dcd983 100644
--- a/gcc/cp/dump.c
+++ b/gcc/cp/dump.c
@@ -263,6 +263,14 @@ cp_dump_tree (dump_info, t)
return 1;
}
+ /* Is it a type used as a base? */
+ if (TYPE_CONTEXT (t) && TREE_CODE (TYPE_CONTEXT (t)) == TREE_CODE (t)
+ && CLASSTYPE_AS_BASE (TYPE_CONTEXT (t)) == t)
+ {
+ dump_child ("bfld", TYPE_CONTEXT (t));
+ return 1;
+ }
+
dump_child ("vfld", TYPE_VFIELD (t));
if (CLASSTYPE_TEMPLATE_SPECIALIZATION(t))
dump_string(di, "spec");
diff --git a/gcc/cp/friend.c b/gcc/cp/friend.c
index 7b718ace0df..32e20d64f49 100644
--- a/gcc/cp/friend.c
+++ b/gcc/cp/friend.c
@@ -203,24 +203,25 @@ make_friend_class (type, friend_type)
return;
}
- if (CLASS_TYPE_P (friend_type)
- && CLASSTYPE_TEMPLATE_SPECIALIZATION (friend_type)
- && uses_template_parms (friend_type))
- {
- /* [temp.friend]
-
- Friend declarations shall not declare partial
- specializations. */
- error ("partial specialization `%T' declared `friend'",
- friend_type);
- return;
- }
-
if (processing_template_decl > template_class_depth (type))
/* If the TYPE is a template then it makes sense for it to be
friends with itself; this means that each instantiation is
friends with all other instantiations. */
- is_template_friend = 1;
+ {
+ if (CLASS_TYPE_P (friend_type)
+ && CLASSTYPE_TEMPLATE_SPECIALIZATION (friend_type)
+ && uses_template_parms (friend_type))
+ {
+ /* [temp.friend]
+ Friend declarations shall not declare partial
+ specializations. */
+ error ("partial specialization `%T' declared `friend'",
+ friend_type);
+ return;
+ }
+
+ is_template_friend = 1;
+ }
else if (same_type_p (type, friend_type))
{
pedwarn ("class `%T' is implicitly friends with itself",
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 8a905b21b75..c942d327219 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -342,6 +342,8 @@ make_thunk (function, delta, vcall_index)
DECL_NO_STATIC_CHAIN (thunk) = 1;
/* The THUNK is not a pending inline, even if the FUNCTION is. */
DECL_PENDING_INLINE_P (thunk) = 0;
+ DECL_INLINE (thunk) = 0;
+ DECL_DECLARED_INLINE_P (thunk) = 0;
/* Nor has it been deferred. */
DECL_DEFERRED_FN (thunk) = 0;
/* Add it to the list of thunks associated with FUNCTION. */
diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y
index 0be461eada5..635944a83ed 100644
--- a/gcc/cp/parse.y
+++ b/gcc/cp/parse.y
@@ -386,7 +386,7 @@ check_class_key (key, aggr)
%type <ttype> init initlist maybeasm maybe_init defarg defarg1
%type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
%type <ttype> maybe_attribute attributes attribute attribute_list attrib
-%type <ttype> any_word
+%type <ttype> any_word unoperator
%type <itype> save_lineno
%type <ttype> simple_stmt simple_if
@@ -3830,7 +3830,7 @@ bad_parm:
{
if (TREE_CODE (TREE_OPERAND ($$, 0)) == TEMPLATE_TYPE_PARM
|| TREE_CODE (TREE_OPERAND ($$, 0)) == BOUND_TEMPLATE_TEMPLATE_PARM)
- error ("`%E' is not a type, use `typename %E' to make it one", $$);
+ error ("`%E' is not a type, use `typename %E' to make it one", $$, $$);
else
error ("no type `%D' in `%T'", TREE_OPERAND ($$, 1), TREE_OPERAND ($$, 0));
}
@@ -3917,6 +3917,7 @@ unoperator:
got_object = TREE_VALUE (saved_scopes);
looking_for_typename = TREE_LANG_FLAG_0 (saved_scopes);
saved_scopes = TREE_CHAIN (saved_scopes);
+ $$ = got_scope;
}
;
@@ -3988,7 +3989,7 @@ operator_name:
| operator DELETE '[' ']' unoperator
{ $$ = frob_opname (ansi_opname (VEC_DELETE_EXPR)); }
| operator type_specifier_seq conversion_declarator unoperator
- { $$ = frob_opname (grokoptypename ($2.t, $3)); }
+ { $$ = frob_opname (grokoptypename ($2.t, $3, $4)); }
| operator error unoperator
{ $$ = frob_opname (ansi_opname (ERROR_MARK)); }
;
@@ -4117,72 +4118,19 @@ static tree
parse_finish_call_expr (tree fn, tree args, int koenig)
{
bool disallow_virtual;
- tree template_args;
- tree template_id;
- tree f;
if (TREE_CODE (fn) == OFFSET_REF)
return build_offset_ref_call_from_tree (fn, args);
if (TREE_CODE (fn) == SCOPE_REF)
{
- tree scope;
- tree name;
-
- scope = TREE_OPERAND (fn, 0);
- name = TREE_OPERAND (fn, 1);
+ tree scope = TREE_OPERAND (fn, 0);
+ tree name = TREE_OPERAND (fn, 1);
if (scope == error_mark_node || name == error_mark_node)
return error_mark_node;
if (!processing_template_decl)
- {
- if (TREE_CODE (scope) == NAMESPACE_DECL)
- fn = lookup_namespace_name (scope, name);
- else
- {
- if (!COMPLETE_TYPE_P (scope) && !TYPE_BEING_DEFINED (scope))
- {
- error ("incomplete type '%T' cannot be used to name a scope",
- scope);
- return error_mark_node;
- }
- else if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
- {
- template_id = name;
- template_args = TREE_OPERAND (name, 1);
- name = TREE_OPERAND (name, 0);
- }
- else
- {
- template_id = NULL_TREE;
- template_args = NULL_TREE;
- }
-
- if (BASELINK_P (name))
- fn = name;
- else
- {
- if (TREE_CODE (name) == OVERLOAD)
- name = DECL_NAME (get_first_fn (name));
- fn = lookup_member (scope, name, /*protect=*/1,
- /*prefer_type=*/0);
- if (!fn)
- {
- error ("'%D' has no member named '%E'", scope, name);
- return error_mark_node;
- }
-
- if (BASELINK_P (fn) && template_id)
- BASELINK_FUNCTIONS (fn)
- = build_nt (TEMPLATE_ID_EXPR,
- BASELINK_FUNCTIONS (fn),
- template_args);
- }
- if (current_class_type)
- fn = (adjust_result_of_qualified_name_lookup
- (fn, scope, current_class_type));
- }
- }
+ fn = resolve_scoped_fn_name (scope, name);
disallow_virtual = true;
}
else
@@ -4190,6 +4138,8 @@ parse_finish_call_expr (tree fn, tree args, int koenig)
if (koenig && TREE_CODE (fn) == IDENTIFIER_NODE)
{
+ tree f;
+
/* Do the Koenig lookup. */
fn = do_identifier (fn, 2, args);
/* If name lookup didn't find any matching declarations, we've
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index fa3caac01dc..082be100151 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -3341,17 +3341,12 @@ convert_template_argument (parm, arg, args, complain, i, in_decl)
&& TREE_CODE (DECL_TEMPLATE_RESULT (arg)) == TYPE_DECL)
|| TREE_CODE (arg) == TEMPLATE_TEMPLATE_PARM
|| TREE_CODE (arg) == UNBOUND_CLASS_TEMPLATE);
- else if (CLASSTYPE_TEMPLATE_INFO (arg) && !CLASSTYPE_USE_TEMPLATE (arg)
- && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (arg)))
- {
- if (is_base_of_enclosing_class (arg, current_class_type))
- /* This is a template name used within the scope of the
- template. It could be the template, or it could be the
- instantiation. Choose whichever makes sense. */
- is_tmpl_type = requires_tmpl_type;
- else
- is_tmpl_type = 1;
- }
+ else if (CLASSTYPE_IS_TEMPLATE (arg)
+ && is_base_of_enclosing_class (arg, current_class_type))
+ /* This is a template name used within the scope of the
+ template. It could be the template, or it could be the
+ instantiation. Choose whichever makes sense. */
+ is_tmpl_type = requires_tmpl_type;
else
/* It is a non-template class, or a specialization of a template
class, or a non-template member of a template class. */
@@ -4233,6 +4228,11 @@ lookup_template_class (d1, arglist, in_decl, context, entering_scope, complain)
else
type_decl = TYPE_NAME (t);
+ TREE_PRIVATE (type_decl)
+ = TREE_PRIVATE (TYPE_STUB_DECL (template_type));
+ TREE_PROTECTED (type_decl)
+ = TREE_PROTECTED (TYPE_STUB_DECL (template_type));
+
/* Set up the template information. We have to figure out which
template is the immediate parent if this is a full
instantiation. */
@@ -6793,7 +6793,7 @@ tsubst (t, args, complain, in_decl)
}
if (TREE_CODE (type) == REFERENCE_TYPE)
{
- if (complain)
+ if (complain & tf_error)
error ("creating pointer to member reference type `%T'", type);
return error_mark_node;
diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi
index bc237c7729d..a6cf3a1f224 100644
--- a/gcc/doc/cpp.texi
+++ b/gcc/doc/cpp.texi
@@ -6,7 +6,7 @@
@c @cropmarks
@c @finalout
-@macro copyrightnotice
+@copying
@c man begin COPYRIGHT
Copyright @copyright{} 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2001, 2002
@@ -23,9 +23,7 @@ section entitled ``GNU Free Documentation License''.
man page gfdl(7).
@c man end
@end ignore
-@end macro
-@macro covertexts
@c man begin COPYRIGHT
This manual contains no Invariant Sections. The Front-Cover Texts are
(a) (see below), and the Back-Cover Texts are (b) (see below).
@@ -40,7 +38,7 @@ This manual contains no Invariant Sections. The Front-Cover Texts are
software. Copies published by the Free Software Foundation raise
funds for GNU development.
@c man end
-@end macro
+@end copying
@macro gcctabopt{body}
@code{\body\}
@@ -70,8 +68,7 @@ This manual contains no Invariant Sections. The Front-Cover Texts are
@c There is a fill at the bottom of the page, so we need a filll to
@c override it.
@vskip 0pt plus 1filll
-@copyrightnotice{}
-@covertexts{}
+@insertcopying
@end titlepage
@contents
@page
@@ -180,8 +177,7 @@ Obsolete Features
@end detailmenu
@end menu
-@copyrightnotice{}
-@covertexts{}
+@insertcopying
@end ifnottex
@node Overview
@@ -3779,7 +3775,7 @@ The standard requires at least 15 levels.
The C standard mandates this be at least 63. CPP is limited only by
available memory.
-@item Levels of parenthesised expressions within a full expression.
+@item Levels of parenthesized expressions within a full expression.
The C standard requires this to be at least 63. In preprocessor
conditional expressions, it is limited only by available memory.
@@ -3892,9 +3888,9 @@ answers. Subsequent assertions do not override previous ones for the
same predicate. All the answers for any given predicate are
simultaneously true.
-@cindex assertions, cancelling
+@cindex assertions, canceling
@findex #unassert
-Assertions can be cancelled with the @samp{#unassert} directive. It
+Assertions can be canceled with the @samp{#unassert} directive. It
has the same syntax as @samp{#assert}. In that form it cancels only the
answer which was specified on the @samp{#unassert} line; other answers
for that predicate remain true. You can cancel an entire predicate by
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 9a0f04cb0af..33607a0c4cf 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -4888,7 +4888,7 @@ type is @code{long double}.
This is an implementation of the ISO C99 function @code{nan}.
Since ISO C99 defines this function in terms of @code{strtod}, which we
-do not implement, a desription of the parsing is in order. The string
+do not implement, a description of the parsing is in order. The string
is parsed as by @code{strtol}; that is, the base is recognized by
leading @samp{0} or @samp{0x} prefixes. The number parsed is placed
in the significand such that the least significant bit of the number
@@ -6682,7 +6682,7 @@ Add after paragraph 4
@quotation
The storage for an object of thread storage duration shall be
-staticly initialized before the first statement of the thread startup
+statically initialized before the first statement of the thread startup
function. An object of thread storage duration shall not require
dynamic initialization.
@end quotation
diff --git a/gcc/doc/gcc.texi b/gcc/doc/gcc.texi
index 1e9fcf48e18..f54d25a5c98 100644
--- a/gcc/doc/gcc.texi
+++ b/gcc/doc/gcc.texi
@@ -60,23 +60,10 @@
\global\setfont\defbf\ttbshape{10}{\magstep1}
@end tex
-@macro copyrightnotice
+@copying
Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-@end macro
-@ifnottex
-@dircategory Programming
-@direntry
-* gcc: (gcc). The GNU Compiler Collection.
-@end direntry
-This file documents the use of the GNU compilers.
-@sp 1
-Published by the Free Software Foundation@*
-59 Temple Place - Suite 330@*
-Boston, MA 02111-1307 USA
-@sp 1
-@copyrightnotice{}
-@sp 1
+
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with the
@@ -94,6 +81,20 @@ included in the section entitled ``GNU Free Documentation License''.
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+@end copying
+@ifnottex
+@dircategory Programming
+@direntry
+* gcc: (gcc). The GNU Compiler Collection.
+@end direntry
+This file documents the use of the GNU compilers.
+@sp 1
+Published by the Free Software Foundation@*
+59 Temple Place - Suite 330@*
+Boston, MA 02111-1307 USA
+@sp 1
+@insertcopying
+@sp 1
@end ifnottex
@setchapternewpage odd
@@ -102,14 +103,12 @@ included in the section entitled ``GNU Free Documentation License''.
@sp 2
@center Richard M. Stallman
@sp 3
-@center Last updated 20 April 2002
+@center Last updated 30 December 2002
@sp 1
@center for GCC @value{version-GCC}
@page
@vskip 0pt plus 1filll
-@copyrightnotice{}
-@sp 2
For GCC Version @value{version-GCC}@*
@sp 1
Published by the Free Software Foundation @*
@@ -122,23 +121,7 @@ Printed copies are available for $50 each.@*
ISBN 1-882114-37-X
@end ifset
@sp 1
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being ``GNU General Public License'', the Front-Cover
-texts being (a) (see below), and with the Back-Cover Texts being (b)
-(see below). A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-(a) The FSF's Front-Cover Text is:
-
- A GNU Manual
-
-(b) The FSF's Back-Cover Text is:
-
- You have freedom to copy and modify this GNU Manual, like GNU
- software. Copies published by the Free Software Foundation raise
- funds for GNU development.
+@insertcopying
@end titlepage
@summarycontents
@contents
diff --git a/gcc/doc/gccint.texi b/gcc/doc/gccint.texi
index 35bd02cc21a..918566ab04e 100644
--- a/gcc/doc/gccint.texi
+++ b/gcc/doc/gccint.texi
@@ -46,23 +46,10 @@
\global\setfont\defbf\ttbshape{10}{\magstep1}
@end tex
-@macro copyrightnotice
+@copying
Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-@end macro
-@ifnottex
-@dircategory Programming
-@direntry
-* gccint: (gccint). Internals of the GNU Compiler Collection.
-@end direntry
-This file documents the internals of the GNU compilers.
-@sp 1
-Published by the Free Software Foundation@*
-59 Temple Place - Suite 330@*
-Boston, MA 02111-1307 USA
-@sp 1
-@copyrightnotice{}
-@sp 1
+
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with the
@@ -80,6 +67,19 @@ included in the section entitled ``GNU Free Documentation License''.
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+@end copying
+@ifnottex
+@dircategory Programming
+@direntry
+* gccint: (gccint). Internals of the GNU Compiler Collection.
+@end direntry
+This file documents the internals of the GNU compilers.
+@sp 1
+Published by the Free Software Foundation@*
+59 Temple Place - Suite 330@*
+Boston, MA 02111-1307 USA
+@sp 1
+@insertcopying
@end ifnottex
@setchapternewpage odd
@@ -88,14 +88,12 @@ included in the section entitled ``GNU Free Documentation License''.
@sp 2
@center Richard M. Stallman
@sp 3
-@center Last updated 10 January 2002
+@center Last updated 28 December 2002
@sp 1
@center for GCC @value{version-GCC}
@page
@vskip 0pt plus 1filll
-@copyrightnotice{}
-@sp 2
For GCC Version @value{version-GCC}@*
@sp 1
Published by the Free Software Foundation @*
@@ -108,23 +106,7 @@ Printed copies are available for $50 each.@*
ISBN 1-882114-37-X
@end ifset
@sp 1
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being ``GNU General Public License'', the Front-Cover
-texts being (a) (see below), and with the Back-Cover Texts being (b)
-(see below). A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-(a) The FSF's Front-Cover Text is:
-
- A GNU Manual
-
-(b) The FSF's Back-Cover Text is:
-
- You have freedom to copy and modify this GNU Manual, like GNU
- software. Copies published by the Free Software Foundation raise
- funds for GNU development.
+@insertcopying
@end titlepage
@summarycontents
@contents
diff --git a/gcc/doc/gty.texi b/gcc/doc/gty.texi
index e0d9a33cde6..55deef24f69 100644
--- a/gcc/doc/gty.texi
+++ b/gcc/doc/gty.texi
@@ -184,10 +184,10 @@ specify the real type of a field identified by @code{use_param1} through
@findex use_params
@item use_params
-When a structure contains another structure that is parameterised,
+When a structure contains another structure that is parameterized,
there's no need to do anything special, the inner stucture inherits the
parameters of the outer one. When a structure contains a pointer to a
-parameterised structure, the type machinery won't automatically detect
+parameterized structure, the type machinery won't automatically detect
this (it could, it just doesn't yet), so it's necessary to tell it that
the pointed-to structure should use the same parameters as the outer
structure. This is done by marking the pointer with the
diff --git a/gcc/doc/include/gcc-common.texi b/gcc/doc/include/gcc-common.texi
index 800dfefe402..c2ff561ef34 100644
--- a/gcc/doc/include/gcc-common.texi
+++ b/gcc/doc/include/gcc-common.texi
@@ -6,6 +6,11 @@
@set version-GCC 3.3
+@c DEVELOPMENT is set to indicate an in-development version,
+@c as compared to a release version. When making a release
+@c branch, clear this.
+@clear DEVELOPMENT
+
@c Common macros to support generating man pages:
@macro gcctabopt{body}
diff --git a/gcc/doc/include/texinfo.tex b/gcc/doc/include/texinfo.tex
index 99113dd71ba..a8541dca605 100644
--- a/gcc/doc/include/texinfo.tex
+++ b/gcc/doc/include/texinfo.tex
@@ -3,10 +3,10 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2002-03-01.06}
+\def\texinfoversion{2002-12-26.16}
%
-% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
-% 2000, 01, 02 Free Software Foundation, Inc.
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@@ -29,19 +29,17 @@
%
% Please try the latest version of texinfo.tex before submitting bug
% reports; you can get the latest version from:
-% ftp://ftp.gnu.org/gnu/texinfo.tex
+% ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex
% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
-% ftp://texinfo.org/texinfo/texinfo.tex
% ftp://tug.org/tex/texinfo.tex
% (and all CTAN mirrors, see http://www.ctan.org),
% and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+%
% The texinfo.tex in any given Texinfo distribution could well be out
% of date, so if that's what you're using, please check.
%
-% Texinfo has a small home page at http://texinfo.org/ and also
-% http://www.gnu.org/software/texinfo.
-%
% Send bug reports to bug-texinfo@gnu.org. Please include including a
% complete document in each bug report with which we can reproduce the
% problem. Patches are, of course, greatly appreciated.
@@ -53,7 +51,7 @@
% texindex foo.??
% tex foo.texi
% tex foo.texi
-% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
+% dvips foo.dvi -o # or whatever; this makes foo.ps.
% The extra TeX runs get the cross-reference information correct.
% Sometimes one run after texindex suffices, and sometimes you need more
% than two; texi2dvi does it as many times as necessary.
@@ -69,6 +67,13 @@
\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
+\message{Basics,}
+\chardef\other=12
+
+% We never want plain's outer \+ definition in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
% Save some parts of plain tex whose names we will redefine.
\let\ptexb=\b
\let\ptexbullet=\bullet
@@ -79,19 +84,16 @@
\let\ptexend=\end
\let\ptexequiv=\equiv
\let\ptexexclam=\!
+\let\ptexgtr=>
+\let\ptexhat=^
\let\ptexi=\i
\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexplus=+
\let\ptexrbrace=\}
\let\ptexstar=\*
\let\ptext=\t
-% We never want plain's outer \+ definition in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-\message{Basics,}
-\chardef\other=12
-
% If this character appears in an error message or help string, it
% starts a new line in the output.
\newlinechar = `^^J
@@ -142,36 +144,48 @@
%
\def\gobble#1{}
+% True if #1 is the empty string, i.e., called like `\ifempty{}'.
+%
+\def\ifempty#1{\ifemptyx #1\emptymarkA\emptymarkB}%
+\def\ifemptyx#1#2\emptymarkB{\ifx #1\emptymarkA}%
+
+% Hyphenation fixes.
\hyphenation{ap-pen-dix}
\hyphenation{mini-buf-fer mini-buf-fers}
\hyphenation{eshell}
\hyphenation{white-space}
% Margin to add to right of even pages, to left of odd pages.
-\newdimen \bindingoffset
-\newdimen \normaloffset
+\newdimen\bindingoffset
+\newdimen\normaloffset
\newdimen\pagewidth \newdimen\pageheight
% Sometimes it is convenient to have everything in the transcript file
% and nothing on the terminal. We don't just call \tracingall here,
-% since that produces some useless output on the terminal.
+% since that produces some useless output on the terminal. We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
%
\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\ifx\eTeXversion\undefined
-\def\loggingall{\tracingcommands2 \tracingstats2
- \tracingpages1 \tracingoutput1 \tracinglostchars1
- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
-}%
-\else
-\def\loggingall{\tracingcommands3 \tracingstats2
- \tracingpages1 \tracingoutput1 \tracinglostchars1
- \tracingmacros2 \tracingparagraphs1 \tracingrestores1
- \tracingscantokens1 \tracingassigns1 \tracingifs1
- \tracinggroups1 \tracingnesting2
- \showboxbreadth\maxdimen\showboxdepth\maxdimen
+\def\loggingall{%
+ \tracingstats2
+ \tracingpages1
+ \tracinglostchars2 % 2 gives us more in etex
+ \tracingparagraphs1
+ \tracingoutput1
+ \tracingmacros2
+ \tracingrestores1
+ \showboxbreadth\maxdimen \showboxdepth\maxdimen
+ \ifx\eTeXversion\undefined\else % etex gives us more logging
+ \tracingscantokens1
+ \tracingifs1
+ \tracinggroups1
+ \tracingnesting2
+ \tracingassigns1
+ \fi
+ \tracingcommands3 % 3 gives us more in etex
+ \errorcontextlines\maxdimen
}%
-\fi
% add check for \lastpenalty to plain's definitions. If the last thing
% we did was a \nobreak, we don't want to insert more space.
@@ -436,17 +450,6 @@
}
-% Single-spacing is done by various environments (specifically, in
-% \nonfillstart and \quotations).
-\newskip\singlespaceskip \singlespaceskip = 12.5pt
-\def\singlespace{%
- % Why was this kern here? It messes up equalizing space above and below
- % environments. --karl, 6may93
- %{\advance \baselineskip by -\singlespaceskip
- %\kern \baselineskip}%
- \setleading\singlespaceskip
-}
-
%% Simple single-character @ commands
% @@ prints an @
@@ -841,12 +844,6 @@ where each line of input produces a line of output.}
% to set catcodes according to plain TeX first, to allow for subscripts,
% superscripts, special math chars, etc.
%
-% @math does not do math typesetting in section titles, index
-% entries, and other such contexts where the catcodes are set before
-% @math gets a chance to work. This could perhaps be fixed, but for now
-% at least we can have real math in the main text, where it's needed most.
-%
-%
\let\implicitmath = $%$ font-lock fix
%
% One complication: _ usually means subscripts, but it could also mean
@@ -857,12 +854,42 @@ where each line of input produces a line of output.}
{\catcode95 = \active % 95 = _
\gdef\mathunderscore{%
\catcode95=\active
- \def_{\ifnum\fam=\slfam\_\else\sb\fi}%
+ \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
}}
%
-\def\math{\tex\mathcode`\_="8000\mathunderscore \implicitmath\finishmath}
+% Another complication: we want \\ (and @\) to output a \ character.
+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
+% this is not advertised and we don't care. Texinfo does not
+% otherwise define @\.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+ \tex
+ \mathcode`\_="8000 \mathunderscore
+ \let\\ = \mathbackslash
+ \mathactive
+ \implicitmath\finishmath}
\def\finishmath#1{#1\implicitmath\Etex}
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an
+% argument to a command which set the catcodes (such as @item or @section).
+%
+{
+ \catcode`^ = \active
+ \catcode`< = \active
+ \catcode`> = \active
+ \catcode`+ = \active
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ }
+}
+
% @bullet and @minus need the same treatment as @math, just above.
\def\bullet{\implicitmath\ptexbullet\implicitmath}
\def\minus{\implicitmath-\implicitmath}
@@ -954,7 +981,7 @@ where each line of input produces a line of output.}
\ifx\empty\imagewidth\else width \imagewidth \fi
\ifx\empty\imageheight\else height \imageheight \fi
\ifnum\pdftexversion<13
- #1.pdf%
+ #1.pdf%
\else
{#1.pdf}%
\fi
@@ -976,40 +1003,39 @@ where each line of input produces a line of output.}
\openin 1 \jobname.toc
\ifeof 1\else\begingroup
\closein 1
- \indexnofonts
- \def\tt{}
- \let\_ = \normalunderscore
% Thanh's hack / proper braces in bookmarks
\edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
%
\def\chapentry ##1##2##3{}
- \let\appendixentry = \chapentry
- \def\unnumbchapentry ##1##2{}
\def\secentry ##1##2##3##4{\advancenumber{chap##2}}
- \def\unnumbsecentry ##1##2{}
\def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
- \def\unnumbsubsecentry ##1##2{}
\def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
- \def\unnumbsubsubsecentry ##1##2{}
+ \let\appendixentry = \chapentry
+ \let\unnumbchapentry = \chapentry
+ \let\unnumbsecentry = \secentry
+ \let\unnumbsubsecentry = \subsecentry
+ \let\unnumbsubsubsecentry = \subsubsecentry
\input \jobname.toc
\def\chapentry ##1##2##3{%
\pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
- \let\appendixentry = \chapentry
- \def\unnumbchapentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
\def\secentry ##1##2##3##4{%
\pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
- \def\unnumbsecentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
\def\subsecentry ##1##2##3##4##5{%
\pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
- \def\unnumbsubsecentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
\def\subsubsecentry ##1##2##3##4##5##6{%
\pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
- \def\unnumbsubsubsecentry ##1##2{%
- \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+ \let\appendixentry = \chapentry
+ \let\unnumbchapentry = \chapentry
+ \let\unnumbsecentry = \secentry
+ \let\unnumbsubsecentry = \subsecentry
+ \let\unnumbsubsubsecentry = \subsubsecentry
+ %
+ % Make special characters normal for writing to the pdf file.
+ %
+ \indexnofonts
+ \let\tt=\relax
+ \turnoffactive
\input \jobname.toc
\endgroup\fi
}}
@@ -1159,7 +1185,7 @@ where each line of input produces a line of output.}
\newcount\mainmagstep
\ifx\bigger\relax
% not really supported.
- \let\mainmagstep=\magstep1
+ \mainmagstep=\magstep1
\setfont\textrm\rmshape{12}{1000}
\setfont\texttt\ttshape{12}{1000}
\else
@@ -1220,6 +1246,7 @@ where each line of input produces a line of output.}
\font\titlei=cmmi12 scaled \magstep3
\font\titlesy=cmsy10 scaled \magstep4
\def\authorrm{\secrm}
+\def\authortt{\sectt}
% Chapter (and unnumbered) fonts (17.28pt).
\setfont\chaprm\rmbshape{12}{\magstep2}
@@ -1334,6 +1361,7 @@ where each line of input produces a line of output.}
\setfont\shortcontrm\rmshape{12}{1000}
\setfont\shortcontbf\bxshape{12}{1000}
\setfont\shortcontsl\slshape{12}{1000}
+\setfont\shortconttt\ttshape{12}{1000}
%% Add scribe-like font environments, plus @l for inline lisp (usually sans
%% serif) and @ii for TeX italic
@@ -1341,8 +1369,8 @@ where each line of input produces a line of output.}
% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
% unless the following character is such as not to need one.
\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
-\def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
\let\i=\smartitalic
\let\var=\smartslanted
@@ -1431,11 +1459,19 @@ where each line of input produces a line of output.}
\def\realdash{-}
\def\codedash{-\discretionary{}{}{}}
-\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}}
+\def\codeunder{%
+ % this is all so @math{@code{var_name}+1} can work. In math mode, _
+ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+ % will therefore expand the active definition of _, which is us
+ % (inside @code that is), therefore an endless loop.
+ \ifusingtt{\ifmmode
+ \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+ \else\normalunderscore \fi
+ \discretionary{}{}{}}%
+ {\_}%
+}
\def\codex #1{\tclose{#1}\endgroup}
-%\let\exp=\tclose %Was temporary
-
% @kbd is like @code, except that if the argument is just one @key command,
% then @kbd has no effect.
@@ -1573,7 +1609,8 @@ where each line of input produces a line of output.}
\let\subtitlerm=\tenrm
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
%
- \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
+ \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
+ \let\tt=\authortt}%
%
% Leave some space at the very top of the page.
\vglue\titlepagetopglue
@@ -1637,8 +1674,6 @@ where each line of input produces a line of output.}
\global\let\contents = \relax
\global\let\shortcontents = \relax
\fi
- %
- \ifpdf \pdfmakepagedesttrue \fi
}
\def\finishtitlepage{%
@@ -1856,10 +1891,18 @@ where each line of input produces a line of output.}
% \parskip glue -- logically it's part of the @item we just started.
\nobreak \vskip-\parskip
%
- % Stop a page break at the \parskip glue coming up. Unfortunately
+ % Stop a page break at the \parskip glue coming up. (Unfortunately
% we can't prevent a possible page break at the following
- % \baselineskip glue.
- \nobreak
+ % \baselineskip glue.) However, if what follows is an environment
+ % such as @example, there will be no \parskip glue; then
+ % the negative vskip we just would cause the example and the item to
+ % crash together. So we use this bizarre value of 10001 as a signal
+ % to \aboveenvbreak to insert \parskip glue after all.
+ % (Possibly there are other commands that could be followed by
+ % @example which need the same treatment, but not section titles; or
+ % maybe section titles are the only special case and they should be
+ % penalty 10001...)
+ \penalty 10001
\endgroup
\itemxneedsnegativevskipfalse
\else
@@ -2396,20 +2439,20 @@ width0pt\relax} \fi
\let\item = \relax
}
-% Ignore @ignore ... @end ignore.
-%
-\def\ignore{\doignore{ignore}}
-
-% Also ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu,
-% @documentdescription, and @direntry text.
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
%
-\def\ifinfo{\doignore{ifinfo}}
+\def\direntry{\doignore{direntry}}
+\def\documentdescriptionword{documentdescription}
+\def\documentdescription{\doignore{documentdescription}}
+\def\html{\doignore{html}}
\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
\def\ifnottex{\doignore{ifnottex}}
-\def\html{\doignore{html}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
\def\menu{\doignore{menu}}
-\def\documentdescription{\doignore{documentdescription}}
-\def\direntry{\doignore{direntry}}
+\def\xml{\doignore{xml}}
% @dircategory CATEGORY -- specify a category of the dir file
% which this file should belong to. Ignore this in TeX.
@@ -2436,14 +2479,21 @@ width0pt\relax} \fi
% We must not have @c interpreted as a control sequence.
\catcode`\@ = 12
%
- % Make the letter c a comment character so that the rest of the line
- % will be ignored. This way, the document can have (for example)
- % @c @end ifinfo
- % and the @end ifinfo will be properly ignored.
- % (We've just changed @ to catcode 12.)
- \catcode`\c = 14
+ \def\ignoreword{#1}%
+ \ifx\ignoreword\documentdescriptionword
+ % The c kludge breaks documentdescription, since
+ % `documentdescription' contains a `c'. Means not everything will
+ % be ignored inside @documentdescription, but oh well...
+ \else
+ % Make the letter c a comment character so that the rest of the line
+ % will be ignored. This way, the document can have (for example)
+ % @c @end ifinfo
+ % and the @end ifinfo will be properly ignored.
+ % (We've just changed @ to catcode 12.)
+ \catcode`\c = 14
+ \fi
%
- % And now expand that command.
+ % And now expand the command defined above.
\doignoretext
}
@@ -2462,7 +2512,7 @@ width0pt\relax} \fi
\immediate\write16{If you are running another version of TeX, relax.}
\immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
\immediate\write16{ Then upgrade your TeX installation if you can.}
- \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)}
+ \immediate\write16{ (See ftp://ftp.gnu.org/non-gnu/TeX.README.)}
\immediate\write16{If you are stuck with version 3.0, run the}
\immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
\immediate\write16{ to use a workaround.}
@@ -2484,7 +2534,7 @@ width0pt\relax} \fi
% We must actually expand the ignored text to look for the @end
% command, so that nested ignore constructs work. Thus, we put the
% text into a \vbox and then do nothing with the result. To minimize
- % the change of memory overflow, we follow the approach outlined on
+ % the chance of memory overflow, we follow the approach outlined on
% page 401 of the TeXbook: make the current font be a dummy font.
%
\setbox0 = \vbox\bgroup
@@ -2536,7 +2586,7 @@ width0pt\relax} \fi
% Do minimal line-breaking.
\pretolerance = 10000
%
- % Do not execute instructions in @tex
+ % Do not execute instructions in @tex.
\def\tex{\doignore{tex}}%
% Do not execute macro definitions.
% `c' is a comment character, so the word `macro' will get cut off.
@@ -2634,19 +2684,21 @@ width0pt\relax} \fi
\def\ifclearfail{\nestedignore{ifclear}}
\defineunmatchedend{ifclear}
-% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
-% following, through the first @end iftex (etc.). Make `@end iftex'
-% (etc.) valid only after an @iftex.
+% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
+% read the text following, through the first @end iftex (etc.). Make
+% `@end iftex' (etc.) valid only after an @iftex.
%
\def\iftex{\conditionalsucceed{iftex}}
\def\ifnothtml{\conditionalsucceed{ifnothtml}}
\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
+\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
\defineunmatchedend{iftex}
\defineunmatchedend{ifnothtml}
\defineunmatchedend{ifnotinfo}
+\defineunmatchedend{ifnotplaintext}
-% We can't just want to start a group at @iftex (for example) and end it
-% at @end iftex, since then @set commands inside the conditional have no
+% We can't just want to start a group at @iftex (etc.) and end it at
+% @end iftex, since then @set commands inside the conditional have no
% effect (they'd get reverted at the end of the group). So we must
% define \Eiftex to redefine itself to be its previous value. (We can't
% just define it to fail again with an ``unmatched end'' error, since
@@ -2861,7 +2913,7 @@ width0pt\relax} \fi
% If an index command is used in an @example environment, any spaces
% therein should become regular spaces in the raw index file, not the
-% expansion of \tie (\\leavevmode \penalty \@M \ ).
+% expansion of \tie (\leavevmode \penalty \@M \ ).
{\obeyspaces
\gdef\unsepspaces{\obeyspaces\let =\space}}
@@ -3524,13 +3576,18 @@ width0pt\relax} \fi
\global\let\subsubsection = \numberedsubsubsec
}
+% we use \chapno to avoid indenting back
+\def\appendixbox#1{%
+ \setbox0 = \hbox{\putwordAppendix{} \the\chapno}%
+ \hbox to \wd0{#1\hss}}
+
\outer\def\appendix{\parsearg\appendixyyy}
\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
\def\appendixzzz #1{%
\secno=0 \subsecno=0 \subsubsecno=0
\global\advance \appendixno by 1
\message{\putwordAppendix\space \appendixletter}%
-\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
+\chapmacro {#1}{\appendixbox{\putwordAppendix{} \appendixletter}}%
\gdef\thissection{#1}%
\gdef\thischaptername{#1}%
\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
@@ -3572,7 +3629,7 @@ width0pt\relax} \fi
\unnumbchapmacro {#1}%
\gdef\thischapter{#1}\gdef\thissection{#1}%
\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}%
+\edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}{\the\chapno}}}%
\temp
\unnumbnoderef
\global\let\section = \unnumberedsec
@@ -3613,7 +3670,8 @@ width0pt\relax} \fi
\def\unnumberedseczzz #1{%
\plainsecheading {#1}\gdef\thissection{#1}%
\toks0 = {#1}%
-\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}%
+\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry%
+ {\the\toks0}{\the\chapno}{\the\secno}}}%
\temp
\unnumbnoderef
\nobreak
@@ -3652,7 +3710,7 @@ width0pt\relax} \fi
\plainsubsecheading {#1}\gdef\thissection{#1}%
\toks0 = {#1}%
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
- {\the\toks0}}}%
+ {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}%
\temp
\unnumbnoderef
\nobreak
@@ -3693,7 +3751,7 @@ width0pt\relax} \fi
\plainsubsubsecheading {#1}\gdef\thissection{#1}%
\toks0 = {#1}%
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
- {\the\toks0}}}%
+ {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}%
\temp
\unnumbnoderef
\nobreak
@@ -3892,7 +3950,16 @@ width0pt\relax} \fi
\hangindent = \wd0 % zero if no section number
\unhbox0 #3}%
}%
- \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak
+ % Add extra space after the heading -- either a line space or a
+ % paragraph space, whichever is more. (Some people like to set
+ % \parskip to large values for some reason.)
+ \nobreak
+ \ifdim\parskip>\normalbaselineskip
+ \kern\parskip
+ \else
+ \kern\normalbaselineskip
+ \fi
+ \nobreak
}
@@ -3905,7 +3972,7 @@ width0pt\relax} \fi
% argument, which will end up as the last argument to the \...entry macro.
%
% We open the .toc file here instead of at @setfilename or any other
-% given time so that @contents can be put in the document anywhere.
+% fixed time so that @contents can be put in the document anywhere.
%
\newif\iftocfileopened
\def\writetocentry#1{%
@@ -3914,6 +3981,14 @@ width0pt\relax} \fi
\global\tocfileopenedtrue
\fi
\iflinks \write\tocfile{#1{\folio}}\fi
+ %
+ % Tell \shipout to create a page destination if we're doing pdf, which
+ % will be the target of the links in the table of contents. We can't
+ % just do it on every page because the title pages are numbered 1 and
+ % 2 (the page numbers aren't printed), and so are the first two pages
+ % of the document. Thus, we'd have two destinations named `1', and
+ % two named `2'.
+ \ifpdf \pdfmakepagedesttrue \fi
}
\newskip\contentsrightmargin \contentsrightmargin=1in
@@ -3973,16 +4048,17 @@ width0pt\relax} \fi
\let\unnumbchapentry = \shortunnumberedentry
% We want a true roman here for the page numbers.
\secfonts
- \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
+ \let\rm=\shortcontrm \let\bf=\shortcontbf
+ \let\sl=\shortcontsl \let\tt=\shortconttt
\rm
\hyphenpenalty = 10000
\advance\baselineskip by 1pt % Open it up a little.
\def\secentry ##1##2##3##4{}
- \def\unnumbsecentry ##1##2{}
\def\subsecentry ##1##2##3##4##5{}
- \def\unnumbsubsecentry ##1##2{}
\def\subsubsecentry ##1##2##3##4##5##6{}
- \def\unnumbsubsubsecentry ##1##2{}
+ \let\unnumbsecentry = \secentry
+ \let\unnumbsubsecentry = \subsecentry
+ \let\unnumbsubsubsecentry = \subsubsecentry
\openin 1 \jobname.toc
\ifeof 1 \else
\closein 1
@@ -4015,7 +4091,8 @@ width0pt\relax} \fi
}
% Appendices, in the main contents.
-\def\appendixentry#1#2#3{\dochapentry{\putwordAppendix{} #2\labelspace#1}{#3}}
+\def\appendixentry#1#2#3{%
+ \dochapentry{\appendixbox{\putwordAppendix{} #2}\labelspace#1}{#3}}
%
% Appendices, in the short toc.
\let\shortappendixentry = \shortchapentry
@@ -4039,21 +4116,21 @@ width0pt\relax} \fi
}
% Unnumbered chapters.
-\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
-\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
+\def\unnumbchapentry#1#2#3{\dochapentry{#1}{#3}}
+\def\shortunnumberedentry#1#2#3{\tocentry{#1}{\doshortpageno\bgroup#3\egroup}}
% Sections.
\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
-\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
+\def\unnumbsecentry#1#2#3#4{\dosecentry{#1}{#4}}
% Subsections.
\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
-\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
+\def\unnumbsubsecentry#1#2#3#4#5{\dosubsecentry{#1}{#5}}
% And subsubsections.
\def\subsubsecentry#1#2#3#4#5#6{%
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
-\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
+\def\unnumbsubsubsecentry#1#2#3#4#5#6{\dosubsubsecentry{#1}{#6}}
% This parameter controls the indentation of the various levels.
\newdimen\tocindent \tocindent = 3pc
@@ -4114,36 +4191,27 @@ width0pt\relax} \fi
\message{environments,}
% @foo ... @end foo.
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
% Since these characters are used in examples, it should be an even number of
% \tt widths. Each \tt character is 1en, so two makes it 1em.
-% Furthermore, these definitions must come after we define our fonts.
-\newbox\dblarrowbox \newbox\longdblarrowbox
-\newbox\pushcharbox \newbox\bullbox
-\newbox\equivbox \newbox\errorbox
-
-%{\tentt
-%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
-%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
-%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
-%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
-% Adapted from the manmac format (p.420 of TeXbook)
-%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
-% depth .1ex\hfil}
-%}
-
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
\def\point{$\star$}
\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+% The @error{} command.
% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
{\tentt \global\dimen0 = 3em}% Width of the box.
\dimen2 = .55pt % Thickness of rules
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
-
+%
\global\setbox\errorbox=\hbox to \dimen0{\hfil
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
\advance\hsize by -2\dimen2 % Rules.
@@ -4154,8 +4222,7 @@ width0pt\relax} \fi
\kern3pt\vrule width\dimen2}% Space to right.
\hrule height\dimen2}
\hfil}
-
-% The @error{} command.
+%
\def\error{\leavevmode\lower.7ex\copy\errorbox}
% @tex ... @end tex escapes into raw Tex temporarily.
@@ -4195,9 +4262,9 @@ width0pt\relax} \fi
\def\@{@}%
\let\Etex=\endgroup}
-% Define @lisp ... @endlisp.
+% Define @lisp ... @end lisp.
% @lisp does a \begingroup so it can rebind things,
-% including the definition of @endlisp (which normally is erroneous).
+% including the definition of @end lisp (which normally is erroneous).
% Amount to narrow the margins by for @lisp.
\newskip\lispnarrowing \lispnarrowing=0.4in
@@ -4226,15 +4293,18 @@ width0pt\relax} \fi
% Make spacing and below environment symmetrical. We use \parskip here
% to help in doing that, since in @example-like environments \parskip
% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip
+% start of the next paragraph will insert \parskip.
%
\def\aboveenvbreak{{%
- \ifnum\lastpenalty < 10000
+ % =10000 instead of <10000 because of a special case in \itemzzz, q.v.
+ \ifnum \lastpenalty=10000 \else
\advance\envskipamount by \parskip
\endgraf
\ifdim\lastskip<\envskipamount
\removelastskip
- \penalty-50
+ % it's not a good place to break if the last penalty was \nobreak
+ % or better ...
+ \ifnum\lastpenalty>10000 \else \penalty-50 \fi
\vskip\envskipamount
\fi
\fi
@@ -4313,7 +4383,6 @@ width0pt\relax} \fi
\inENV % This group ends at the end of the body
\hfuzz = 12pt % Don't be fussy
\sepspaces % Make spaces be word-separators rather than space tokens.
- \singlespace
\let\par = \lisppar % don't ignore blank lines
\obeylines % each line of input is a line of output
\parskip = 0pt
@@ -4428,7 +4497,6 @@ width0pt\relax} \fi
\def\quotation{%
\begingroup\inENV %This group ends at the end of the @quotation body
{\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
- \singlespace
\parindent=0pt
% We have retained a nonzero parskip for the environment, since we're
% doing normal filling. So to avoid extra space below the environment...
@@ -4451,10 +4519,14 @@ width0pt\relax} \fi
%
% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
%
-% [Knuth] p. 344; only we need to do '@' too
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too. Otherwise, they get lost as the first character on a
+% verbatim line.
\def\dospecials{%
- \do\ \do\\\do\@\do\{\do\}\do\$\do\&%
- \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}
+ \do\ \do\\\do\{\do\}\do\$\do\&%
+ \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+ \do\<\do\>\do\|\do\@\do+\do\"%
+}
%
% [Knuth] p. 380
\def\uncatcodespecials{%
@@ -4541,7 +4613,7 @@ width0pt\relax} \fi
%
% For Texinfo it's a lot easier than for LaTeX,
% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
-% we need not redefine '\', '{' and '}'
+% we need not redefine '\', '{' and '}'.
%
% Inspired by LaTeX's verbatim command set [latex.ltx]
%% Include LaTeX hack for completeness -- never know
@@ -4551,9 +4623,14 @@ width0pt\relax} \fi
%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[
%% #1|endgroup|def|Everbatim[]|end[verbatim]]
%% |endgroup
+%
\begingroup
\catcode`\ =\active
- \gdef\doverbatim#1@end verbatim{#1\end{verbatim}}
+ \obeylines %
+ % ignore everything up to the first ^^M, that's the newline at the end
+ % of the @verbatim input line itself. Otherwise we get an extra blank
+ % line in the output.
+ \gdef\doverbatim#1^^M#2@end verbatim{#2\end{verbatim}}%
\endgroup
%
\def\verbatim{%
@@ -4595,24 +4672,94 @@ width0pt\relax} \fi
\endgroup\nonfillfinish\endgroup
}
+% @copying ... @end copying.
+% Save the text away for @insertcopying later. Many commands won't be
+% allowed in this context, but that's ok.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\begingroup
+ % Define a command to swallow text until we reach `@end copying'.
+ % \ is the escape char in this texinfo.tex file, so it is the
+ % delimiter for the command; @ will be the escape char when we read
+ % it, but that doesn't matter.
+ \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}%
+ %
+ % We must preserve ^^M's in the input file; see \insertcopying below.
+ \catcode`\^^M = \active
+ \docopying
+}
+
+% What we do to finish off the copying text.
+%
+\def\enddocopying{\endgroup\ignorespaces}
+
+% @insertcopying. Here we must play games with ^^M's. On the one hand,
+% we need them to delimit commands such as `@end quotation', so they
+% must be active. On the other hand, we certainly don't want every
+% end-of-line to be a \par, as would happen with the normal active
+% definition of ^^M. On the third hand, two ^^M's in a row should still
+% generate a \par.
+%
+% Our approach is to make ^^M insert a space and a penalty1 normally;
+% then it can also check if \lastpenalty=1. If it does, then manually
+% do \par.
+%
+% This messes up the normal definitions of @c[omment], so we redefine
+% it. Similarly for @ignore. (These commands are used in the gcc
+% manual for man page generation.)
+%
+% Seems pretty fragile, most line-oriented commands will presumably
+% fail, but for the limited use of getting the copying text (which
+% should be quite simple) inserted, we can hope it's ok.
+%
+{\catcode`\^^M=\active %
+\gdef\insertcopying{\begingroup %
+ \parindent = 0pt % looks wrong on title page
+ \def^^M{%
+ \ifnum \lastpenalty=1 %
+ \par %
+ \else %
+ \space \penalty 1 %
+ \fi %
+ }%
+ %
+ % Fix @c[omment] for catcode 13 ^^M's.
+ \def\c##1^^M{\ignorespaces}%
+ \let\comment = \c %
+ %
+ % Don't bother jumping through all the hoops that \doignore does, it
+ % would be very hard since the catcodes are already set.
+ \long\def\ignore##1\end ignore{\ignorespaces}%
+ %
+ \copyingtext %
+\endgroup}%
+}
\message{defuns,}
% @defun etc.
% Allow user to change definition object font (\df) internally
-\def\setdeffont #1 {\csname DEF#1\endcsname}
+\def\setdeffont#1 {\csname DEF#1\endcsname}
\newskip\defbodyindent \defbodyindent=.4in
\newskip\defargsindent \defargsindent=50pt
-\newskip\deftypemargin \deftypemargin=12pt
\newskip\deflastargmargin \deflastargmargin=18pt
\newcount\parencount
-% define \functionparens, which makes ( and ) and & do special things.
-% \functionparens affects the group it is contained in.
+
+% We want ()&[] to print specially on the defun line.
+%
\def\activeparens{%
-\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active
-\catcode`\[=\active \catcode`\]=\active}
+ \catcode`\(=\active \catcode`\)=\active
+ \catcode`\&=\active
+ \catcode`\[=\active \catcode`\]=\active
+}
% Make control sequences which act like normal parenthesis chars.
\let\lparen = ( \let\rparen = )
@@ -4663,84 +4810,117 @@ width0pt\relax} \fi
\global\let& = \ampnr
}
-% First, defname, which formats the header line itself.
-% #1 should be the function name.
-% #2 should be the type of definition, such as "Function".
-
-\def\defname #1#2{%
-% Get the values of \leftskip and \rightskip as they were
-% outside the @def...
-\dimen2=\leftskip
-\advance\dimen2 by -\defbodyindent
-\noindent
-\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
-\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
-\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
-\parshape 2 0in \dimen0 \defargsindent \dimen1
-% Now output arg 2 ("Function" or some such)
-% ending at \deftypemargin from the right margin,
-% but stuck inside a box of width 0 so it does not interfere with linebreaking
-{% Adjust \hsize to exclude the ambient margins,
-% so that \rightline will obey them.
-\advance \hsize by -\dimen2
-\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}%
-% Make all lines underfull and no complaints:
-\tolerance=10000 \hbadness=10000
-\advance\leftskip by -\defbodyindent
-\exdentamount=\defbodyindent
-{\df #1}\enskip % Generate function name
-}
-
-% Actually process the body of a definition
-% #1 should be the terminating control sequence, such as \Edefun.
-% #2 should be the "another name" control sequence, such as \defunx.
-% #3 should be the control sequence that actually processes the header,
-% such as \defunheader.
-
-\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active % 61 is `='
-\obeylines\activeparens\spacesplit#3}
+% \defname, which formats the name of the @def (not the args).
+% #1 is the function name.
+% #2 is the type of definition, such as "Function".
+%
+\def\defname#1#2{%
+ % How we'll output the type name. Putting it in brackets helps
+ % distinguish it from the body text that may end up on the next line
+ % just below it.
+ \ifempty{#2}%
+ \def\defnametype{}%
+ \else
+ \def\defnametype{[\rm #2]}%
+ \fi
+ %
+ % Get the values of \leftskip and \rightskip as they were outside the @def...
+ \dimen2=\leftskip
+ \advance\dimen2 by -\defbodyindent
+ %
+ % Figure out values for the paragraph shape.
+ \setbox0=\hbox{\hskip \deflastargmargin{\defnametype}}%
+ \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
+ \dimen1=\hsize \advance \dimen1 by -\defargsindent % size for continuations
+ \parshape 2 0in \dimen0 \defargsindent \dimen1
+ %
+ % Output arg 2 ("Function" or some such) but stuck inside a box of
+ % width 0 so it does not interfere with linebreaking.
+ \noindent
+ %
+ {% Adjust \hsize to exclude the ambient margins,
+ % so that \rightline will obey them.
+ \advance \hsize by -\dimen2
+ \dimen3 = 0pt % was -1.25pc
+ \rlap{\rightline{\defnametype\kern\dimen3}}%
+ }%
+ %
+ % Allow all lines to be underfull without complaint:
+ \tolerance=10000 \hbadness=10000
+ \advance\leftskip by -\defbodyindent
+ \exdentamount=\defbodyindent
+ {\df #1}\enskip % output function name
+ % \defunargs will be called next to output the arguments, if any.
+}
+% Common pieces to start any @def...
% #1 is the \E... control sequence to end the definition (which we define).
-% #2 is the \...x control sequence for consecutive fns (which we define).
-% #3 is the control sequence to call to resume processing.
+% #2 is the \...x control sequence (which our caller defines).
+% #3 is the control sequence to process the header, such as \defunheader.
+%
+\def\parsebodycommon#1#2#3{%
+ \begingroup\inENV
+ % If there are two @def commands in a row, we'll have a \nobreak,
+ % which is there to keep the function description together with its
+ % header. But if there's nothing but headers, we want to allow a
+ % break after all.
+ \ifnum\lastpenalty=10000 \penalty0 \fi
+ \medbreak
+ %
+ % Define the \E... end token that this defining construct specifies
+ % so that it will exit this group.
+ \def#1{\endgraf\endgroup\medbreak}%
+ %
+ \parindent=0in
+ \advance\leftskip by \defbodyindent
+ \exdentamount=\defbodyindent
+}
+
+% Common part of the \...x definitions.
+%
+\def\defxbodycommon{%
+ % As with \parsebodycommon above, allow line break if we have multiple
+ % x headers in a row. It's not a great place, though.
+ \ifnum\lastpenalty=10000 \penalty1000 \fi
+ %
+ \begingroup\obeylines
+}
+
+% Process body of @defun, @deffn, @defmac, etc.
+%
+\def\defparsebody#1#2#3{%
+ \parsebodycommon{#1}{#2}{#3}%
+ \def#2{\defxbodycommon \activeparens \spacesplit#3}%
+ \catcode61=\active % 61 is `='
+ \begingroup\obeylines\activeparens
+ \spacesplit#3%
+}
+
+% #1, #2, #3 are the common arguments (see \parsebodycommon above).
% #4, delimited by the space, is the class name.
%
-\def\defmethparsebody#1#2#3#4 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
+\def\defmethparsebody#1#2#3#4 {%
+ \parsebodycommon{#1}{#2}{#3}%
+ \def#2##1 {\defxbodycommon \activeparens \spacesplit{#3{##1}}}%
+ \begingroup\obeylines\activeparens
+ % The \empty here prevents misinterpretation of a construct such as
+ % @deffn {whatever} {Enharmonic comma}
+ % See comments at \deftpparsebody, although in our case we don't have
+ % to remove the \empty afterwards, since it is empty.
+ \spacesplit{#3{#4}}\empty
+}
% Used for @deftypemethod and @deftypeivar.
-% #1 is the \E... control sequence to end the definition (which we define).
-% #2 is the \...x control sequence for consecutive fns (which we define).
-% #3 is the control sequence to call to resume processing.
+% #1, #2, #3 are the common arguments (see \defparsebody).
% #4, delimited by a space, is the class name.
% #5 is the method's return type.
%
-\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV
- \medbreak
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
- \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
+\def\deftypemethparsebody#1#2#3#4 #5 {%
+ \parsebodycommon{#1}{#2}{#3}%
+ \def#2##1 ##2 {\defxbodycommon \activeparens \spacesplit{#3{##1}{##2}}}%
+ \begingroup\obeylines\activeparens
+ \spacesplit{#3{#4}{#5}}%
+}
% Used for @deftypeop. The change from \deftypemethparsebody is an
% extra argument at the beginning which is the `category', instead of it
@@ -4749,64 +4929,48 @@ width0pt\relax} \fi
% input at hand. Thus also need a control sequence (passed as #5) for
% the \E... definition to assign the category name to.
%
-\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV
- \medbreak
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 ##2 ##3 {%
- \def#4{##1}%
- \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
- \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}}
-
-\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
+\def\deftypeopparsebody#1#2#3#4#5 #6 {%
+ \parsebodycommon{#1}{#2}{#3}%
+ \def#2##1 ##2 ##3 {\def#4{##1}%
+ \defxbodycommon \activeparens \spacesplit{#3{##2}{##3}}}%
+ \begingroup\obeylines\activeparens
+ \spacesplit{#3{#5}{#6}}%
+}
+
+% For @defop.
+\def\defopparsebody #1#2#3#4#5 {%
+ \parsebodycommon{#1}{#2}{#3}%
+ \def#2##1 ##2 {\def#4{##1}%
+ \defxbodycommon \activeparens \spacesplit{#3{##2}}}%
+ \begingroup\obeylines\activeparens
+ \spacesplit{#3{#5}}%
+}
% These parsing functions are similar to the preceding ones
% except that they do not make parens into active characters.
% These are used for "variables" since they have no arguments.
-
-\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2{\begingroup\obeylines\spacesplit#3}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup %
-\catcode 61=\active %
-\obeylines\spacesplit#3}
-
-% This is used for \def{tp,vr}parsebody. It could probably be used for
-% some of the others, too, with some judicious conditionals.
%
-\def\parsebodycommon#1#2#3{%
- \begingroup\inENV %
- \medbreak %
- % Define the end token that this defining construct specifies
- % so that it will exit this group.
- \def#1{\endgraf\endgroup\medbreak}%
- \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
+\def\defvarparsebody #1#2#3{%
+ \parsebodycommon{#1}{#2}{#3}%
+ \def#2{\defxbodycommon \spacesplit#3}%
+ \catcode61=\active %
+ \begingroup\obeylines
+ \spacesplit#3%
+}
+
+% @defopvar.
+\def\defopvarparsebody #1#2#3#4#5 {%
+ \parsebodycommon{#1}{#2}{#3}%
+ \def#2##1 ##2 {\def#4{##1}%
+ \defxbodycommon \spacesplit{#3{##2}}}%
\begingroup\obeylines
+ \spacesplit{#3{#5}}%
}
\def\defvrparsebody#1#2#3#4 {%
\parsebodycommon{#1}{#2}{#3}%
+ \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
+ \begingroup\obeylines
\spacesplit{#3{#4}}%
}
@@ -4821,6 +4985,8 @@ width0pt\relax} \fi
%
\def\deftpparsebody #1#2#3#4 {%
\parsebodycommon{#1}{#2}{#3}%
+ \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
+ \begingroup\obeylines
\spacesplit{\parsetpheaderline{#3{#4}}}\empty
}
@@ -4837,32 +5003,22 @@ width0pt\relax} \fi
#1{\removeemptybraces#2\relax}{#3}%
}%
-\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\def#4{##1}%
-\begingroup\obeylines\spacesplit{#3{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\spacesplit{#3{#5}}}
-
-% Split up #2 at the first space token.
+% Split up #2 (the rest of the input line) at the first space token.
% call #1 with two arguments:
% the first is all of #2 before the space token,
% the second is all of #2 after that space token.
% If #2 contains no space token, all of it is passed as the first arg
% and the second is passed as empty.
-
-{\obeylines
-\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
-\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
-\ifx\relax #3%
-#1{#2}{}\else #1{#2}{#3#4}\fi}}
-
-% So much for the things common to all kinds of definitions.
+%
+{\obeylines %
+ \gdef\spacesplit#1#2^^M{\endgroup\spacesplitx{#1}#2 \relax\spacesplitx}%
+ \long\gdef\spacesplitx#1#2 #3#4\spacesplitx{%
+ \ifx\relax #3%
+ #1{#2}{}%
+ \else %
+ #1{#2}{#3#4}%
+ \fi}%
+}
% Define @defun.
@@ -5273,7 +5429,7 @@ width0pt\relax} \fi
\message{Warning: redefining \the\macname}%
\else
\expandafter\ifx\csname \the\macname\endcsname \relax
- \else \errmessage{The name \the\macname\space is reserved}\fi
+ \else \errmessage{Macro name \the\macname\space already defined}\fi
\global\cslet{macsave.\the\macname}{\the\macname}%
\global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
% Add the macroname to \macrolist
@@ -6019,11 +6175,13 @@ should work if nowhere else does.}
}
% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
-% 4) hoffset; 5) binding offset; 6) topskip. We also call
-% \setleading{\textleading}, so the caller should define \textleading.
-% The caller should also set \parskip.
+% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
+% physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading. The caller should also set \parskip.
%
-\def\internalpagesizes#1#2#3#4#5#6{%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
\voffset = #3\relax
\topskip = #6\relax
\splittopskip = \topskip
@@ -6042,6 +6200,11 @@ should work if nowhere else does.}
\normaloffset = #4\relax
\bindingoffset = #5\relax
%
+ \ifpdf
+ \pdfpageheight #7\relax
+ \pdfpagewidth #8\relax
+ \fi
+ %
\setleading{\textleading}
%
\parindent = \defaultparindent
@@ -6063,7 +6226,10 @@ should work if nowhere else does.}
\textleading = 13.2pt
%
% If page is nothing but text, make it come out even.
- \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}%
+ \internalpagesizes{46\baselineskip}{6in}%
+ {\voffset}{.25in}%
+ {\bindingoffset}{36pt}%
+ {11in}{8.5in}%
}}
% Use @smallbook to reset parameters for 7x9.5 (or so) format.
@@ -6071,13 +6237,15 @@ should work if nowhere else does.}
\parskip = 2pt plus 1pt
\textleading = 12pt
%
- \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%
+ \internalpagesizes{7.5in}{5in}%
+ {\voffset}{.25in}%
+ {\bindingoffset}{16pt}%
+ {9.25in}{7in}%
%
\lispnarrowing = 0.3in
\tolerance = 700
\hfuzz = 1pt
\contentsrightmargin = 0pt
- \deftypemargin = 0pt
\defbodyindent = .5cm
\smallenvironments
}}
@@ -6085,12 +6253,27 @@ should work if nowhere else does.}
% Use @afourpaper to print on European A4 paper.
\def\afourpaper{{\globaldefs = 1
\parskip = 3pt plus 2pt minus 1pt
- \textleading = 12pt
+ \textleading = 13.2pt
%
- \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%
+ % Double-side printing via postscript on Laserjet 4050
+ % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+ % To change the settings for a different printer or situation, adjust
+ % \normaloffset until the front-side and back-side texts align. Then
+ % do the same for \bindingoffset. You can set these for testing in
+ % your texinfo source file like this:
+ % @tex
+ % \global\normaloffset = -6mm
+ % \global\bindingoffset = 10mm
+ % @end tex
+ \internalpagesizes{51\baselineskip}{160mm}
+ {\voffset}{\hoffset}%
+ {\bindingoffset}{44pt}%
+ {297mm}{210mm}%
%
\tolerance = 700
\hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = 5mm
}}
% Use @afivepaper to print on European A5 paper.
@@ -6100,37 +6283,42 @@ should work if nowhere else does.}
\parskip = 2pt plus 1pt minus 0.1pt
\textleading = 12.5pt
%
- \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}%
+ \internalpagesizes{160mm}{120mm}%
+ {\voffset}{\hoffset}%
+ {\bindingoffset}{8pt}%
+ {210mm}{148mm}%
%
\lispnarrowing = 0.2in
\tolerance = 800
\hfuzz = 1.2pt
- \contentsrightmargin = 0mm
- \deftypemargin = 0pt
+ \contentsrightmargin = 0pt
\defbodyindent = 2mm
\tableindent = 12mm
%
\smallenvironments
}}
-% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin
-% 29mm, hence bottom margin 28mm, nominal side margin 3cm.
+% A specific text layout, 24x15cm overall, intended for A4 paper.
\def\afourlatex{{\globaldefs = 1
- \textleading = 13.6pt
- %
\afourpaper
- \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%
+ \internalpagesizes{237mm}{150mm}%
+ {\voffset}{4.6mm}%
+ {\bindingoffset}{7mm}%
+ {297mm}{210mm}%
%
- % Must explicitly reset to 0 because we call \afourpaper, apparently,
- % although this does not entirely make sense.
+ % Must explicitly reset to 0 because we call \afourpaper.
\globaldefs = 0
}}
-% Use @afourwide to print on European A4 paper in wide format.
-\def\afourwide{%
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
\afourpaper
- \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
-}
+ \internalpagesizes{241mm}{165mm}%
+ {\voffset}{-2.95mm}%
+ {\bindingoffset}{7mm}%
+ {297mm}{210mm}%
+ \globaldefs = 0
+}}
% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
% Perhaps we should allow setting the margins, \topskip, \parskip,
@@ -6145,7 +6333,16 @@ should work if nowhere else does.}
\parskip = 3pt plus 2pt minus 1pt
\setleading{\textleading}%
%
- \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%
+ \dimen0 = #1
+ \advance\dimen0 by \voffset
+ %
+ \dimen2 = \hsize
+ \advance\dimen2 by \normaloffset
+ %
+ \internalpagesizes{#1}{\hsize}%
+ {\voffset}{\normaloffset}%
+ {\bindingoffset}{44pt}%
+ {\dimen0}{\dimen2}%
}}
% Set default to letter.
@@ -6269,16 +6466,8 @@ should work if nowhere else does.}
@let+=@normalplus
@let$=@normaldollar}%$ font-lock fix
-@def@normalturnoffactive{@let"=@normaldoublequote
-@let\=@normalbackslash
-@let~=@normaltilde
-@let^=@normalcaret
-@let_=@normalunderscore
-@let|=@normalverticalbar
-@let<=@normalless
-@let>=@normalgreater
-@let+=@normalplus
-@let$=@normaldollar}%$ font-lock fix
+% Same as @turnoffactive except for \.
+@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
% Make _ and + \other characters, temporarily.
% This is canceled by @fixbackslash.
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index fd518693f5a..a3f45ab217d 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -58,7 +58,7 @@
@end ifnothtml
@c Part 2 Summary Description and Copyright
-@macro copyrightnotice
+@copying
Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002 Free Software Foundation, Inc.
@sp 1
@@ -79,9 +79,9 @@ Free Documentation License}''.
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
-@end macro
+@end copying
@ifinfo
-@copyrightnotice{}
+@insertcopying
@end ifinfo
@c Part 3 Titlepage and Copyright
@@ -93,7 +93,7 @@ Free Documentation License}''.
@c The following two commands start the copyright page.
@page
@vskip 0pt plus 1filll
-@copyrightnotice{}
+@insertcopying
@end titlepage
@c Part 4 Top node and Master Menu
@@ -197,7 +197,7 @@ not yet been merged into the main part of this manual.
@ifhtml
@uref{./index.html,,Return to the GCC Installation page}
-@copyrightnotice{}
+@insertcopying
@end ifhtml
@end ifset
@@ -559,12 +559,8 @@ whether you use the GNU assembler. On any other system,
@item @samp{hppa1.0-@var{any}-@var{any}}
@item @samp{hppa1.1-@var{any}-@var{any}}
@item @samp{i386-@var{any}-sysv}
-@item @samp{i386-@var{any}-isc}
-@item @samp{i860-@var{any}-bsd}
@item @samp{m68k-bull-sysv}
@item @samp{m68k-hp-hpux}
-@item @samp{m68k-sony-bsd}
-@item @samp{m68k-altos-sysv}
@item @samp{m68000-hp-hpux}
@item @samp{m68000-att-sysv}
@item @samp{@var{any}-lynx-lynxos}
@@ -720,8 +716,8 @@ Specify which cpu variant the
compiler should generate code for by default. This is currently
only supported on some ports, specifically arm, powerpc, and
SPARC@. If configure does not recognize the model name (e.g.@: arm700,
-603e, or ultrasparc) you provide, please check the configure script
-for a complete list of supported models.
+603e, or ultrasparc) you provide, please check the
+@command{gcc/config.gcc} script for a complete list of supported models.
@item --enable-altivec
Specify that the target supports AltiVec vector enhancements. This
@@ -822,8 +818,8 @@ option. This option has no effect on the other hosts.
@item --nfp
Specify that the machine does not have a floating point unit. This
-option only applies to @samp{m68k-sun-sunos@var{n}} and
-@samp{m68k-isi-bsd}. On any other system, @option{--nfp} has no effect.
+option only applies to @samp{m68k-sun-sunos@var{n}}. On any other
+system, @option{--nfp} has no effect.
@item --enable-checking
@itemx --enable-checking=@var{list}
@@ -983,7 +979,7 @@ parser sources, releases contain the Bison-generated files and you do
not need Bison installed to build them.
When building from CVS or snapshots, or if you modify Texinfo
-documentation, you need version 4.1 or later of Texinfo installed if you
+documentation, you need version 4.2 or later of Texinfo installed if you
want Info documentation to be regenerated. Releases contain Info
documentation pre-built for the unmodified documentation in the release.
@@ -1277,6 +1273,11 @@ testsuite at @file{libjava/testsuite/libjava.mauve/mauve}, or by
specifying the location of that tree when invoking @samp{make}, as in
@samp{make MAUVEDIR=~/mauve check}.
+@uref{http://www-124.ibm.com/developerworks/oss/cvs/jikes/~checkout~/jacks/jacks.html,,Jacks}
+is a free test suite that tests Java compiler front ends. This suite
+can be run as part of libgcj testing by placing the Jacks tree withing
+the libjava testsuite at @file{libjava/testsuite/libjava.jacks/jacks}.
+
@section How to interpret test results
After the testsuite has run you'll find various @file{*.sum} and @file{*.log}
@@ -1434,7 +1435,7 @@ If you find a bug, please report it following our
@uref{../bugs.html,,bug reporting guidelines}.
If you want to print the GCC manuals, do @samp{cd @var{objdir}; make
-dvi}. You will need to have @command{texi2dvi} (version at least 4.1)
+dvi}. You will need to have @command{texi2dvi} (version at least 4.2)
and @TeX{} installed. This creates a number of @file{.dvi} files in
subdirectories of @file{@var{objdir}}; these may be converted for
printing with programs such as @command{dvips}. You can also
@@ -2039,7 +2040,7 @@ and tested on @samp{i386-*-freebsd4.5} and @samp{alpha-*-freebsd5.0}.
The static
library may be incorrectly built (symbols are missing at link time).
There is a rare timing-based startup hang (probably involves an
-assupmtion about the thread library). Multi-threaded boehm-gc (required for
+assumption about the thread library). Multi-threaded boehm-gc (required for
libjava) exposes severe threaded signal-handling bugs on FreeBSD before
4.5-RELEASE. The alpha port may not fully bootstrap without some manual
intervention: @command{gcjh} will crash with a floating-point exception while
@@ -2909,7 +2910,7 @@ or newer for a working GCC@.
@end html
@heading @anchor{powerpc-*-netbsd*}powerpc-*-netbsd*
PowerPC system in big endian mode running NetBSD@. To build the
-documentation you will need Texinfo version 4.1 (NetBSD 1.5.1 included
+documentation you will need Texinfo version 4.2 (NetBSD 1.5.1 included
Texinfo version 3.12).
@html
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index fe214602a1e..25f7164149c 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -367,22 +367,6 @@ in the following sections.
-msoft-float -msoft-quad-float -msparclite -mstack-bias @gol
-msupersparc -munaligned-doubles -mv8}
-@emph{Convex Options}
-@gccoptlist{
--mc1 -mc2 -mc32 -mc34 -mc38 @gol
--margcount -mnoargcount @gol
--mlong32 -mlong64 @gol
--mvolatile-cache -mvolatile-nocache}
-
-@emph{AMD29K Options}
-@gccoptlist{
--m29000 -m29050 -mbw -mnbw -mdw -mndw @gol
--mlarge -mnormal -msmall @gol
--mkernel-registers -mno-reuse-arg-regs @gol
--mno-stack-check -mno-storem-bug @gol
--mreuse-arg-regs -msoft-float -mstack-check @gol
--mstorem-bug -muser-registers}
-
@emph{ARM Options}
@gccoptlist{
-mapcs-frame -mno-apcs-frame @gol
@@ -397,7 +381,6 @@ in the following sections.
-mthumb-interwork -mno-thumb-interwork @gol
-mcpu=@var{name} -march=@var{name} -mfpe=@var{name} @gol
-mstructure-size-boundary=@var{n} @gol
--mbsd -mxopen -mno-symrename @gol
-mabort-on-noreturn @gol
-mlong-calls -mno-long-calls @gol
-msingle-pic-base -mno-single-pic-base @gol
@@ -566,10 +549,6 @@ in the following sections.
@gccoptlist{
-mvms-return-codes}
-@emph{Clipper Options}
-@gccoptlist{
--mc300 -mc400}
-
@emph{H8/300 Options}
@gccoptlist{
-mrelax -mh -ms -mn -mint32 -malign-300}
@@ -1079,7 +1058,7 @@ ISO C90 as modified in amendment 1.
@itemx iso9899:1999
@itemx iso9899:199x
ISO C99. Note that this standard is not yet fully supported; see
-@w{@uref{http://gcc.gnu.org/c99status.html}} for more information. The
+@w{@uref{http://gcc.gnu.org/gcc-3.3/c99status.html}} for more information. The
names @samp{c9x} and @samp{iso9899:199x} are deprecated.
@item gnu89
@@ -1543,7 +1522,7 @@ You should rewrite your code to avoid these warnings if you are
concerned about the fact that code generated by G++ may not be binary
compatible with code generated by other compilers.
-The known incompatibilites at this point include:
+The known incompatibilities at this point include:
@itemize @bullet
@@ -1608,7 +1587,7 @@ struct C : public B, public A @{@};
@end smallexample
@noindent
-G++ will place the @code{A} base class of @code{C} at a non-zero offset;
+G++ will place the @code{A} base class of @code{C} at a nonzero offset;
it should be placed at offset zero. G++ mistakenly believes that the
@code{A} data member of @code{B} is already at offset zero.
@@ -1625,7 +1604,7 @@ void f(typename Q<int>::X) @{@}
@end smallexample
@noindent
-Instantions of these templates may be mangled incorrectly.
+Instantiations of these templates may be mangled incorrectly.
@end itemize
@@ -2518,7 +2497,7 @@ Warn if floating point values are used in equality comparisons.
The idea behind this is that sometimes it is convenient (for the
programmer) to consider floating-point values as approximations to
infinitely precise real numbers. If you are doing this, then you need
-to compute (by analysing the code, or in some other way) the maximum or
+to compute (by analyzing the code, or in some other way) the maximum or
likely maximum error that the computation introduces, and allow for it
when performing comparisons (and when producing output, but that's a
different problem). In particular, instead of testing for equality, you
@@ -3150,7 +3129,7 @@ Dump after local register allocation, to @file{@var{file}.23.lreg}.
Dump after loop optimization, to @file{@var{file}.12.loop}.
@item M
@opindex dM
-Dump after performing the machine dependent reorganisation pass, to
+Dump after performing the machine dependent reorganization pass, to
@file{@var{file}.33.mach}.
@item n
@opindex dn
@@ -3177,7 +3156,7 @@ Dump after the second CSE pass (including the jump optimization that
sometimes follows CSE), to @file{@var{file}.17.cse2}.
@item u
@opindex du
-Dump after null pointer ellimination pass ti @file{@var{file}.08.null}.
+Dump after null pointer elimination pass to @file{@var{file}.08.null}.
@item w
@opindex dw
Dump after the second flow pass, to @file{@var{file}.26.flow2}.
@@ -3388,7 +3367,22 @@ is used when GCC itself is being built.) @xref{Spec Files}.
@cindex optimize options
@cindex options, optimization
-These options control various sorts of optimizations:
+These options control various sorts of optimizations.
+
+Without any optimization option, the compiler's goal is to reduce the
+cost of compilation and to make debugging produce the expected
+results. Statements are independent: if you stop the program with a
+breakpoint between statements, you can then assign a new value to any
+variable or change the program counter to any other statement in the
+function and get exactly the results you would expect from the source
+code.
+
+Turning on optimization flags makes the compiler attempt to improve
+the performance and/or code size at the expense of compilation time
+and possibly the ability to debug the program.
+
+Not all optimizations are controlled directly by a flag. Only
+optimizations that have a flag are listed.
@table @gcctabopt
@item -O
@@ -3398,17 +3392,25 @@ These options control various sorts of optimizations:
Optimize. Optimizing compilation takes somewhat more time, and a lot
more memory for a large function.
-Without @option{-O}, the compiler's goal is to reduce the cost of
-compilation and to make debugging produce the expected results.
-Statements are independent: if you stop the program with a breakpoint
-between statements, you can then assign a new value to any variable or
-change the program counter to any other statement in the function and
-get exactly the results you would expect from the source code.
-
With @option{-O}, the compiler tries to reduce code size and execution
time, without performing any optimizations that take a great deal of
compilation time.
+@option{-O} turns on the following optimization flags:
+@gccoptlist{-fdefer-pop
+-fmerge-constants
+-fthread-jumps
+-floop-optimize
+-fcrossjumping
+-fif-conversion
+-fif-conversion2
+-fdelayed-branch
+-fguess-branch-probability
+-fcprop-registers}
+
+@option{-O} also turns on @option{-fomit-frame-pointer} on machines
+where doing so does not interfere with debugging.
+
@item -O2
@opindex O2
Optimize even more. GCC performs nearly all supported optimizations
@@ -3417,11 +3419,25 @@ perform loop unrolling or function inlining when you specify @option{-O2}.
As compared to @option{-O}, this option increases both compilation time
and the performance of the generated code.
-@option{-O2} turns on all optional optimizations except for loop
-unrolling, function inlining, and register renaming. It also turns on
-the @option{-fforce-mem} and @option{-fstrict-aliasing} option on all
-machines and frame pointer elimination on machines where doing so does
-not interfere with debugging.
+@option{-O2} turns on all optimization flags specified by @option{-O}. It
+also turns on the following optimization flags:
+@gccoptlist{-fforce-mem
+-foptimize-sibling-calls
+-fstrength-reduce
+-fcse-follow-jumps -fcse-skip-blocks
+-frerun-cse-after-loop -frerun-loop-opt
+-fgcse -fgcse-lm -fgcse-sm
+-fdelete-null-pointer-checks
+-fexpensive-optimizations
+-fregmove
+-fschedule-insns -fschedule-insns2
+-fsched-interblock -fsched-spec
+-fcaller-saves
+-fpeephole2
+-freorder-blocks -freorder-functions
+-fstrict-aliasing
+-falign-functions -falign-jumps
+-falign-loops -falign-labels}
Please note the warning under @option{-fgcse} about
invoking @option{-O2} on programs that use computed gotos.
@@ -3434,7 +3450,7 @@ Optimize yet more. @option{-O3} turns on all optimizations specified by
@item -O0
@opindex O0
-Do not optimize.
+Do not optimize. This is the default.
@item -Os
@opindex Os
@@ -3442,16 +3458,25 @@ Optimize for size. @option{-Os} enables all @option{-O2} optimizations that
do not typically increase code size. It also performs further
optimizations designed to reduce code size.
+@option{-Os} disables the following optimization flags:
+@gccoptlist{-falign-functions -falign-jumps -falign-loops
+-falign-labels -freorder-blocks -fprefetch-loop-arrays}
+
If you use multiple @option{-O} options, with or without level numbers,
the last such option is the one that is effective.
@end table
Options of the form @option{-f@var{flag}} specify machine-independent
flags. Most flags have both positive and negative forms; the negative
-form of @option{-ffoo} would be @option{-fno-foo}. In the table below,
-only one of the forms is listed---the one which is not the default.
-You can figure out the other form by either removing @samp{no-} or
-adding it.
+form of @option{-ffoo} would be @option{-fno-foo}. In the table
+below, only one of the forms is listed---the one you typically will
+use. You can figure out the other form by either removing @samp{no-}
+or adding it.
+
+The following options control specific optimizations. They are either
+activated by @option{-O} options or are related to ones that are. You
+can use the following flags in the rare cases when ``fine-tuning'' of
+optimizations to be performed is desired.
@table @gcctabopt
@item -ffloat-store
@@ -3542,7 +3567,7 @@ assembler code in its own right.
@opindex finline-limit
By default, gcc limits the size of functions that can be inlined. This flag
allows the control of this limit for functions that are explicitly marked as
-inline (ie marked with the inline keyword or defined within the class
+inline (i.e., marked with the inline keyword or defined within the class
definition in c++). @var{n} is the size of functions that can be inlined in
number of pseudo instructions (not counting parameter handling). The default
value of @var{n} is 600.
@@ -3575,10 +3600,11 @@ optimization is turned on, use the @option{-fno-keep-static-consts} option.
@item -fmerge-constants
Attempt to merge identical constants (string constants and floating point
-constants) accross compilation units.
+constants) across compilation units.
-This option is default for optimized compilation if assembler and linker
-support it. Use @option{-fno-merge-constants} to inhibit this behavior.
+This option is the default for optimized compilation if the assembler and
+linker support it. Use @option{-fno-merge-constants} to inhibit this
+behavior.
@item -fmerge-all-constants
Attempt to merge identical constants and identical variables.
@@ -3713,24 +3739,9 @@ The default is @option{-fzero-initialized-in-bss}.
@opindex fbounds-check
For front-ends that support it, generate additional code to check that
indices used to access arrays are within the declared range. This is
-currenly only supported by the Java and Fortran 77 front-ends, where
+currently only supported by the Java and Fortran 77 front-ends, where
this option defaults to true and false respectively.
-@end table
-
-The following options control specific optimizations. The @option{-O2}
-option turns on all of these optimizations except @option{-funroll-loops}
-and @option{-funroll-all-loops}. On most machines, the @option{-O} option
-turns on the @option{-fthread-jumps} and @option{-fdelayed-branch} options,
-but specific machines may handle it differently.
-
-You can use the following flags in the rare cases when ``fine-tuning''
-of optimizations to be performed is desired.
-
-Not all of the optimizations performed by GCC have @option{-f} options
-to control them.
-
-@table @gcctabopt
@item -fstrength-reduce
@opindex fstrength-reduce
Perform the optimizations of loop strength reduction and
@@ -3776,7 +3787,7 @@ This pass also performs global constant and copy propagation.
@emph{Note:} When compiling a program using computed gotos, a GCC
extension, you may get better runtime performance if you disable
-the global common subexpression elmination pass by adding
+the global common subexpression elimination pass by adding
@option{-fno-gcse} to the command line.
@item -fgcse-lm
@@ -4035,7 +4046,7 @@ taken branches and improve code locality. This is implemented by using special
subsections @code{text.hot} for most frequently executed functions and
@code{text.unlikely} for unlikely executed functions. Reordering is done by
the linker so object file format must support named sections and linker must
-place them in resonable way.
+place them in a reasonable way.
Also profile feedback must be available in to make this option effective. See
@option{-fprofile-arcs} for details.
@@ -4239,8 +4250,9 @@ function given basic block needs to have to be considered hot
@item tracer-dynamic-coverage
@itemx tracer-dynamic-coverage-feedback
-This value is used to limit superblock formation once given percentage of
-executed instructions is covered. This limits unnecesary code size expansion.
+This value is used to limit superblock formation once the given percentage of
+executed instructions is covered. This limits unnecessary code size
+expansion.
The @option{tracer-dynamic-coverage-feedback} is used only when profile
feedback is available. The real profiles (as opposed to statically estimated
@@ -4248,7 +4260,7 @@ ones) are much less balanced allowing the threshold to be larger value.
@item tracer-max-code-growth
Stop tail duplication once code growth has reached given percentage. This is
-rather hokey argument, as most of the duplicates will be elliminated later in
+rather hokey argument, as most of the duplicates will be eliminated later in
cross jumping, so it may be set to much higher values than is the desired code
growth.
@@ -4263,7 +4275,7 @@ threshold (in percent).
Stop forward growth if the best edge do have probability lower than this
threshold.
-Similary to @option{tracer-dynamic-coverage} two values are present, one for
+Similarly to @option{tracer-dynamic-coverage} two values are present, one for
compilation for profile feedback and one for compilation without. The value
for compilation with profile feedback needs to be more conservative (higher) in
order to make tracer effective.
@@ -4564,7 +4576,7 @@ If a standard system include directory, or a directory specified with
option will be ignored. The directory will still be searched but as a
system directory at its normal position in the system include chain.
This is to ensure that GCC's procedure to fix buggy system headers and
-the ordering for the include_next directive are not inadvertantly changed.
+the ordering for the include_next directive are not inadvertently changed.
If you really need to change the search order for system directories,
use the @option{-nostdinc} and/or @option{-isystem} options.
@@ -5216,8 +5228,6 @@ that macro, which enables you to change the defaults.
* M68hc1x Options::
* VAX Options::
* SPARC Options::
-* Convex Options::
-* AMD29K Options::
* ARM Options::
* MN10200 Options::
* MN10300 Options::
@@ -5232,7 +5242,6 @@ that macro, which enables you to change the defaults.
* Intel 960 Options::
* DEC Alpha Options::
* DEC Alpha/VMS Options::
-* Clipper Options::
* H8/300 Options::
* SH Options::
* System V Options::
@@ -5763,195 +5772,6 @@ when making stack frame references.
Otherwise, assume no such offset is present.
@end table
-@node Convex Options
-@subsection Convex Options
-@cindex Convex options
-
-These @samp{-m} options are defined for Convex:
-
-@table @gcctabopt
-@item -mc1
-@opindex mc1
-Generate output for C1. The code will run on any Convex machine.
-The preprocessor symbol @code{__convex__c1__} is defined.
-
-@item -mc2
-@opindex mc2
-Generate output for C2. Uses instructions not available on C1.
-Scheduling and other optimizations are chosen for max performance on C2.
-The preprocessor symbol @code{__convex_c2__} is defined.
-
-@item -mc32
-@opindex mc32
-Generate output for C32xx. Uses instructions not available on C1.
-Scheduling and other optimizations are chosen for max performance on C32.
-The preprocessor symbol @code{__convex_c32__} is defined.
-
-@item -mc34
-@opindex mc34
-Generate output for C34xx. Uses instructions not available on C1.
-Scheduling and other optimizations are chosen for max performance on C34.
-The preprocessor symbol @code{__convex_c34__} is defined.
-
-@item -mc38
-@opindex mc38
-Generate output for C38xx. Uses instructions not available on C1.
-Scheduling and other optimizations are chosen for max performance on C38.
-The preprocessor symbol @code{__convex_c38__} is defined.
-
-@item -margcount
-@opindex margcount
-Generate code which puts an argument count in the word preceding each
-argument list. This is compatible with regular CC, and a few programs
-may need the argument count word. GDB and other source-level debuggers
-do not need it; this info is in the symbol table.
-
-@item -mnoargcount
-@opindex mnoargcount
-Omit the argument count word. This is the default.
-
-@item -mvolatile-cache
-@opindex mvolatile-cache
-Allow volatile references to be cached. This is the default.
-
-@item -mvolatile-nocache
-@opindex mvolatile-nocache
-Volatile references bypass the data cache, going all the way to memory.
-This is only needed for multi-processor code that does not use standard
-synchronization instructions. Making non-volatile references to volatile
-locations will not necessarily work.
-
-@item -mlong32
-@opindex mlong32
-Type long is 32 bits, the same as type int. This is the default.
-
-@item -mlong64
-@opindex mlong64
-Type long is 64 bits, the same as type long long. This option is useless,
-because no library support exists for it.
-@end table
-
-@node AMD29K Options
-@subsection AMD29K Options
-@cindex AMD29K options
-
-These @samp{-m} options are defined for the AMD Am29000:
-
-@table @gcctabopt
-@item -mdw
-@opindex mdw
-@cindex DW bit (29k)
-Generate code that assumes the @code{DW} bit is set, i.e., that byte and
-halfword operations are directly supported by the hardware. This is the
-default.
-
-@item -mndw
-@opindex mndw
-Generate code that assumes the @code{DW} bit is not set.
-
-@item -mbw
-@opindex mbw
-@cindex byte writes (29k)
-Generate code that assumes the system supports byte and halfword write
-operations. This is the default.
-
-@item -mnbw
-@opindex mnbw
-Generate code that assumes the systems does not support byte and
-halfword write operations. @option{-mnbw} implies @option{-mndw}.
-
-@item -msmall
-@opindex msmall
-@cindex memory model (29k)
-Use a small memory model that assumes that all function addresses are
-either within a single 256 KB segment or at an absolute address of less
-than 256k. This allows the @code{call} instruction to be used instead
-of a @code{const}, @code{consth}, @code{calli} sequence.
-
-@item -mnormal
-@opindex mnormal
-Use the normal memory model: Generate @code{call} instructions only when
-calling functions in the same file and @code{calli} instructions
-otherwise. This works if each file occupies less than 256 KB but allows
-the entire executable to be larger than 256 KB@. This is the default.
-
-@item -mlarge
-@opindex mlarge
-Always use @code{calli} instructions. Specify this option if you expect
-a single file to compile into more than 256 KB of code.
-
-@item -m29050
-@opindex m29050
-@cindex processor selection (29k)
-Generate code for the Am29050.
-
-@item -m29000
-@opindex m29000
-Generate code for the Am29000. This is the default.
-
-@item -mkernel-registers
-@opindex mkernel-registers
-@cindex kernel and user registers (29k)
-Generate references to registers @code{gr64-gr95} instead of to
-registers @code{gr96-gr127}. This option can be used when compiling
-kernel code that wants a set of global registers disjoint from that used
-by user-mode code.
-
-Note that when this option is used, register names in @samp{-f} flags
-must use the normal, user-mode, names.
-
-@item -muser-registers
-@opindex muser-registers
-Use the normal set of global registers, @code{gr96-gr127}. This is the
-default.
-
-@item -mstack-check
-@itemx -mno-stack-check
-@opindex mstack-check
-@opindex mno-stack-check
-@cindex stack checks (29k)
-Insert (or do not insert) a call to @code{__msp_check} after each stack
-adjustment. This is often used for kernel code.
-
-@item -mstorem-bug
-@itemx -mno-storem-bug
-@opindex mstorem-bug
-@opindex mno-storem-bug
-@cindex storem bug (29k)
-@option{-mstorem-bug} handles 29k processors which cannot handle the
-separation of a mtsrim insn and a storem instruction (most 29000 chips
-to date, but not the 29050).
-
-@item -mno-reuse-arg-regs
-@itemx -mreuse-arg-regs
-@opindex mno-reuse-arg-regs
-@opindex mreuse-arg-regs
-@option{-mno-reuse-arg-regs} tells the compiler to only use incoming argument
-registers for copying out arguments. This helps detect calling a function
-with fewer arguments than it was declared with.
-
-@item -mno-impure-text
-@itemx -mimpure-text
-@opindex mno-impure-text
-@opindex mimpure-text
-@option{-mimpure-text}, used in addition to @option{-shared}, tells the compiler to
-not pass @option{-assert pure-text} to the linker when linking a shared object.
-
-@item -msoft-float
-@opindex msoft-float
-Generate output containing library calls for floating point.
-@strong{Warning:} the requisite libraries are not part of GCC@.
-Normally the facilities of the machine's usual C compiler are used, but
-this can't be done directly in cross-compilation. You must make your
-own arrangements to provide suitable library functions for
-cross-compilation.
-
-@item -mno-multm
-@opindex mno-multm
-Do not generate multm or multmu instructions. This is useful for some embedded
-systems which do not have trap handlers for these instructions.
-@end table
-
@node ARM Options
@subsection ARM Options
@cindex ARM options
@@ -6116,25 +5936,6 @@ These are deprecated aliases for @option{-malignment-traps}.
@opindex mshort-load-words
This are deprecated aliases for @option{-mno-alignment-traps}.
-@item -mbsd
-@opindex mbsd
-This option only applies to RISC iX@. Emulate the native BSD-mode
-compiler. This is the default if @option{-ansi} is not specified.
-
-@item -mxopen
-@opindex mxopen
-This option only applies to RISC iX@. Emulate the native X/Open-mode
-compiler.
-
-@item -mno-symrename
-@opindex mno-symrename
-This option only applies to RISC iX@. Do not run the assembler
-post-processor, @samp{symrename}, after code has been assembled.
-Normally it is necessary to modify some of the standard symbols in
-preparation for linking with the RISC iX C library; this option
-suppresses this pass. The post-processor is never run when the
-compiler is built for cross-compilation.
-
@item -mcpu=@var{name}
@opindex mcpu
This specifies the name of the target ARM processor. GCC uses this name
@@ -6476,9 +6277,9 @@ underscore as prefix on each name.
Include (or omit) additional debugging information (about registers used
in each stack frame) as specified in the 88open Object Compatibility
Standard, ``OCS''@. This extra information allows debugging of code that
-has had the frame pointer eliminated. The default for DG/UX, SVr4, and
-Delta 88 SVr3.2 is to include this information; other 88k configurations
-omit this information by default.
+has had the frame pointer eliminated. The default for SVr4 and Delta 88
+SVr3.2 is to include this information; other 88k configurations omit this
+information by default.
@item -mocs-frame-position
@opindex mocs-frame-position
@@ -6486,7 +6287,7 @@ omit this information by default.
When emitting COFF debugging information for automatic variables and
parameters stored on the stack, use the offset from the canonical frame
address, which is the stack pointer (register 31) on entry to the
-function. The DG/UX, SVr4, Delta88 SVr3.2, and BCS configurations use
+function. The SVr4 and Delta88 SVr3.2, and BCS configurations use
@option{-mocs-frame-position}; other 88k configurations have the default
@option{-mno-ocs-frame-position}.
@@ -6573,9 +6374,8 @@ that is used on System V release 4.
SVr4.
@end enumerate
-@option{-msvr4} is the default for the m88k-motorola-sysv4 and
-m88k-dg-dgux m88k configurations. @option{-msvr3} is the default for all
-other m88k configurations.
+@option{-msvr4} is the default for the m88k-motorola-sysv4 configuration.
+@option{-msvr3} is the default for all other m88k configurations.
@item -mversion-03.00
@opindex mversion-03.00
@@ -6781,7 +6581,7 @@ The @option{-mcpu} options automatically enable or disable other
@table @samp
@item common
-@option{-mno-power}, @option{-mno-powerc}
+@option{-mno-power}, @option{-mno-powerpc}
@item power
@itemx power2
@@ -7481,7 +7281,7 @@ In processor names, a final @samp{000} can be abbreviated as @samp{k}
GCC defines two macros based on the value of this option. The first
is @samp{_MIPS_ARCH}, which gives the name of target architecture, as
a string. The second has the form @samp{_MIPS_ARCH_@var{foo}},
-where @var{foo} is the capitialized value of @samp{_MIPS_ARCH}@.
+where @var{foo} is the capitalized value of @samp{_MIPS_ARCH}@.
For example, @samp{-march=r2000} will set @samp{_MIPS_ARCH}
to @samp{"r2000"} and define the macro @samp{_MIPS_ARCH_R2000}.
@@ -7892,7 +7692,7 @@ for @var{unit} are:
@item 387
Use the standard 387 floating point coprocessor present majority of chips and
emulated otherwise. Code compiled with this option will run almost everywhere.
-The temporary results are computed in 80bit precesion instead of precision
+The temporary results are computed in 80bit precision instead of precision
specified by the type resulting in slightly different results compared to most
of other chips. See @option{-ffloat-store} for more detailed description.
@@ -7918,7 +7718,7 @@ code that expects temporaries to be 80bit.
This is the default choice for x86-64 compiler.
@item sse,387
-Attempt to utilize both instruction sets at once. This effectivly double the
+Attempt to utilize both instruction sets at once. This effectively double the
amount of available registers and on chips with separate execution units for
387 and SSE the execution resources too. Use this option with care, as it is
still experimental, because gcc register allocator does not model separate
@@ -8687,7 +8487,7 @@ arithmetic instead of IEEE single and double precision.
@opindex mno-explicit-relocs
Older Alpha assemblers provided no way to generate symbol relocations
except via assembler macros. Use of these macros does not allow
-optimial instruction scheduling. GNU binutils as of version 2.12
+optimal instruction scheduling. GNU binutils as of version 2.12
supports a new syntax that allows the compiler to explicitly mark
which relocations should apply to which instructions. This option
is mostly useful for debugging, as GCC detects the capabilities of
@@ -8795,22 +8595,6 @@ Return VMS condition codes from main. The default is to return POSIX
style condition (e.g.@ error) codes.
@end table
-@node Clipper Options
-@subsection Clipper Options
-
-These @samp{-m} options are defined for the Clipper implementations:
-
-@table @gcctabopt
-@item -mc300
-@opindex mc300
-Produce code for a C300 Clipper processor. This is the default.
-
-@item -mc400
-@opindex mc400
-Produce code for a C400 Clipper processor, i.e.@: use floating point
-registers f8--f15.
-@end table
-
@node H8/300 Options
@subsection H8/300 Options
@@ -9773,7 +9557,7 @@ targets default to @option{-m64}.
@opindex mmvcle
@opindex mno-mvcle
Generate (or do not generate) code using the @code{mvcle} instruction
-to perform block moves. When @option{-mno-mvcle} is specifed,
+to perform block moves. When @option{-mno-mvcle} is specified,
use a @code{mvc} loop instead. This is the default.
@item -mdebug
@@ -10787,7 +10571,7 @@ Pack all structure members together without holes.
@strong{Warning:} the @option{-fpack-struct} switch causes GCC to generate
code that is not binary compatible with code generated without that switch.
-Additionally, it makes the code suboptimial.
+Additionally, it makes the code suboptimal.
Use it to conform to a non-default application binary interface.
@item -finstrument-functions
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index 3ed88d02729..453741e6958 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -898,7 +898,7 @@ digit is used together with letters within the same alternative, the
digit should come last.
This number is allowed to be more than a single digit. If multiple
-digits are encountered consecutavely, they are interpreted as a single
+digits are encountered consecutively, they are interpreted as a single
decimal integer. There is scant chance for ambiguity, since to-date
it has never been desirable that @samp{10} be interpreted as matching
either operand 1 @emph{or} operand 0. Should this be desired, one
@@ -965,7 +965,7 @@ The machine description macro @code{REG_CLASS_FROM_LETTER} has first
cut at the otherwise unused letters. If it evaluates to @code{NO_REGS},
then @code{EXTRA_CONSTRAINT} is evaluated.
-A typical use for @code{EXTRA_CONSTRANT} would be to distinguish certain
+A typical use for @code{EXTRA_CONSTRAINT} would be to distinguish certain
types of memory references that affect other insn operands.
@end ifset
@end table
@@ -1376,60 +1376,6 @@ An item in the constant pool
A symbol in the text segment of the current file
@end table
-@item AMD 29000 family---@file{a29k.h}
-@table @code
-@item l
-Local register 0
-
-@item b
-Byte Pointer (@samp{BP}) register
-
-@item q
-@samp{Q} register
-
-@item h
-Special purpose register
-
-@item A
-First accumulator register
-
-@item a
-Other accumulator register
-
-@item f
-Floating point register
-
-@item I
-Constant greater than 0, less than 0x100
-
-@item J
-Constant greater than 0, less than 0x10000
-
-@item K
-Constant whose high 24 bits are on (1)
-
-@item L
-16-bit constant whose high 8 bits are on (1)
-
-@item M
-32-bit constant whose high 16 bits are on (1)
-
-@item N
-32-bit negative constant that fits in 8 bits
-
-@item O
-The constant 0x80000000 or, on the 29050, any 32-bit constant
-whose low 16 bits are 0.
-
-@item P
-16-bit negative constant that fits in 8 bits
-
-@item G
-@itemx H
-A floating point constant (in @code{asm} statements, use the machine
-independent @samp{E} or @samp{F} instead)
-@end table
-
@item AVR family---@file{avr.h}
@table @code
@item l
@@ -1609,7 +1555,7 @@ Second floating point register
@samp{c} register
@item C
-Specifies constant that can be easilly constructed in SSE register without
+Specifies constant that can be easily constructed in SSE register without
loading it from memory.
@item d
@@ -2494,8 +2440,7 @@ Write the generated insn as a @code{parallel} with elements being a
@code{set} of one register from the appropriate memory location (you may
also need @code{use} or @code{clobber} elements). Use a
@code{match_parallel} (@pxref{RTL Template}) to recognize the insn. See
-@file{a29k.md} and @file{rs6000.md} for examples of the use of this insn
-pattern.
+@file{rs6000.md} for examples of the use of this insn pattern.
@cindex @samp{store_multiple} instruction pattern
@item @samp{store_multiple}
@@ -5368,7 +5313,7 @@ The first one is a data dependence delay determining @dfn{instruction
latency time}. The instruction execution is not started until all
source data have been evaluated by prior instructions (there are more
complex cases when the instruction execution starts even when the data
-are not availaible but will be ready in given time after the
+are not available but will be ready in given time after the
instruction execution start). Taking the data dependence delays into
account is simple. The data dependence (true, output, and
anti-dependence) delay between two instructions is given by a
diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi
index 423434d3c52..51d3722dc15 100644
--- a/gcc/doc/passes.texi
+++ b/gcc/doc/passes.texi
@@ -289,7 +289,7 @@ SSA Conditional Constant Propagation. Turned on by the @option{-fssa-ccp}
SSA Aggressive Dead Code Elimination. Turned on by the @option{-fssa-dce}
option. This pass performs conditional constant propagation to simplify
instructions including conditional branches. This pass is more aggressive
-than the constant propgation done by the CSE and GCSE pases, but operates
+than the constant propagation done by the CSE and GCSE pases, but operates
in linear time.
@opindex dW
diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi
index 1c9a4e49230..7b4ad23cada 100644
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -2841,7 +2841,7 @@ labels: @code{LABEL_NORMAL}, @code{LABEL_STATIC_ENTRY},
that do not have type @code{LABEL_NORMAL} are @dfn{alternate entry
points} to the current function. These may be static (visible only in
the containing translation unit), global (exposed to all translation
-units), or weak (global, but can be overriden by another symbol with the
+units), or weak (global, but can be overridden by another symbol with the
same name).
Much of the compiler treats all four kinds of label identically. Some
diff --git a/gcc/doc/service.texi b/gcc/doc/service.texi
index 863774483c8..4cc2b70888c 100644
--- a/gcc/doc/service.texi
+++ b/gcc/doc/service.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -24,7 +24,5 @@ The service directory is found at
@uref{http://www.gnu.org/prep/service.html}.
@end itemize
-@c For further information, see
-@c @uref{http://gcc.gnu.org/cgi-bin/fom.cgi?file=12}.
-@c FIXME: this URL may be too volatile, this FAQ entry needs to move to
-@c the regular web pages before we can uncomment the reference.
+For further information, see
+@uref{http://gcc.gnu.org/faq.html#support}.
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index e337a50ac51..f10a800862b 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -867,7 +867,7 @@ the compiler with optimization.
FIXME: describe this.
@item gcc.c-torture
-This contains particlar code fragments which have historically broken easily.
+This contains particular code fragments which have historically broken easily.
These tests are run with multiple optimization options, so tests for features
which only break at some optimization levels belong here. This also contains
tests to check that certain optimizations occur. It might be worthwhile to
diff --git a/gcc/doc/standards.texi b/gcc/doc/standards.texi
index 8c37fccd440..a68a38a79c9 100644
--- a/gcc/doc/standards.texi
+++ b/gcc/doc/standards.texi
@@ -79,7 +79,7 @@ as @dfn{AMD1}; the amended standard is sometimes known as @dfn{C94} or
A new edition of the ISO C standard was published in 1999 as ISO/IEC
9899:1999, and is commonly known as @dfn{C99}. GCC has incomplete
support for this standard version; see
-@uref{http://gcc.gnu.org/c99status.html} for details. To select this
+@uref{http://gcc.gnu.org/gcc-3.3/c99status.html} for details. To select this
standard, use @option{-std=c99} or @option{-std=iso9899:1999}. (While in
development, drafts of this standard version were referred to as
@dfn{C9X}.)
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 4b885113797..932a5b52448 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -2304,7 +2304,7 @@ which is the register value plus a displacement.
@findex MODE_BASE_REG_CLASS
@item MODE_BASE_REG_CLASS (@var{mode})
This is a variation of the @code{BASE_REG_CLASS} macro which allows
-the selection of a base register in a mode depenedent manner. If
+the selection of a base register in a mode dependent manner. If
@var{mode} is VOIDmode then it should return the same value as
@code{BASE_REG_CLASS}.
@@ -4179,7 +4179,7 @@ not support varargs.
@findex TARGET_ASM_OUTPUT_MI_VCALL_THUNK
@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_MI_VCALL_THUNK (FILE *@var{file}, tree @var{thunk_fndecl}, HOST_WIDE_INT @var{delta}, int @var{vcall_offset}, tree @var{function})
A function like @code{TARGET_ASM_OUTPUT_MI_THUNK}, except that if
-@var{vcall_offset} is non-zero, an additional adjustment should be made
+@var{vcall_offset} is nonzero, an additional adjustment should be made
after adding @code{delta}. In particular, if @var{p} is the
adjusted pointer, the following adjustment should be made:
@@ -9044,7 +9044,7 @@ structure, which are defined by the @code{IFCVT_EXTRA_FIELDS} macro.
@findex IFCVT_EXTRA_FIELDS
@item IFCVT_EXTRA_FIELDS
If defined, it should expand to a set of field declarations that will be
-added to the @code{struct ce_if_block} structure. These should be intialized
+added to the @code{struct ce_if_block} structure. These should be initialized
by the @code{IFCVT_INIT_EXTRA_FIELDS} macro.
@end table
diff --git a/gcc/doc/trouble.texi b/gcc/doc/trouble.texi
index d6ba63259d6..a3ef96e2dfe 100644
--- a/gcc/doc/trouble.texi
+++ b/gcc/doc/trouble.texi
@@ -338,47 +338,6 @@ you cannot successfully use @samp{$} in identifiers on the RS/6000 due
to a restriction in the IBM assembler. GAS supports these
identifiers.
-@item
-@opindex mno-serialize-volatile
-There is an assembler bug in versions of DG/UX prior to 5.4.2.01 that
-occurs when the @samp{fldcr} instruction is used. GCC uses
-@samp{fldcr} on the 88100 to serialize volatile memory references. Use
-the option @option{-mno-serialize-volatile} if your version of the
-assembler has this bug.
-
-@item
-On VMS, GAS versions 1.38.1 and earlier may cause spurious warning
-messages from the linker. These warning messages complain of mismatched
-psect attributes. You can ignore them.
-
-@item
-On NewsOS version 3, if you include both of the files @file{stddef.h}
-and @file{sys/types.h}, you get an error because there are two typedefs
-of @code{size_t}. You should change @file{sys/types.h} by adding these
-lines around the definition of @code{size_t}:
-
-@smallexample
-#ifndef _SIZE_T
-#define _SIZE_T
-@var{actual-typedef-here}
-#endif
-@end smallexample
-
-@cindex Alliant
-@item
-On the Alliant, the system's own convention for returning structures
-and unions is unusual, and is not compatible with GCC no matter
-what options are used.
-
-@cindex RT PC
-@cindex IBM RT PC
-@item
-@opindex mhc-struct-return
-On the IBM RT PC, the MetaWare HighC compiler (hc) uses a different
-convention for structure and union returning. Use the option
-@option{-mhc-struct-return} to tell GCC to use a convention compatible
-with it.
-
@cindex VAX calling convention
@cindex Ultrix calling convention
@item
@@ -395,42 +354,10 @@ these options to produce code compatible with the Fortran compiler:
@end smallexample
@item
-On the WE32k, you may find that programs compiled with GCC do not
-work with the standard shared C library. You may need to link with
-the ordinary C compiler. If you do so, you must specify the following
-options:
-
-@smallexample
--L/usr/local/lib/gcc-lib/we32k-att-sysv/2.8.1 -lgcc -lc_s
-@end smallexample
-
-The first specifies where to find the library @file{libgcc.a}
-specified with the @option{-lgcc} option.
-
-GCC does linking by invoking @command{ld}, just as @command{cc} does, and
-there is no reason why it @emph{should} matter which compilation program
-you use to invoke @command{ld}. If someone tracks this problem down,
-it can probably be fixed easily.
-
-@item
On the Alpha, you may get assembler errors about invalid syntax as a
result of floating point constants. This is due to a bug in the C
library functions @code{ecvt}, @code{fcvt} and @code{gcvt}. Given valid
floating point numbers, they sometimes print @samp{NaN}.
-
-@item
-On Irix 4.0.5F (and perhaps in some other versions), an assembler bug
-sometimes reorders instructions incorrectly when optimization is turned
-on. If you think this may be happening to you, try using the GNU
-assembler; GAS version 2.1 supports ECOFF on Irix.
-
-@opindex noasmopt
-Or use the @option{-noasmopt} option when you compile GCC with itself,
-and then again when you compile your program. (This is a temporary
-kludge to turn off assembler optimization on Irix.) If this proves to
-be what you need, edit the assembler spec in the file @file{specs} so
-that it unconditionally passes @option{-O0} to the assembler, and never
-passes @option{-O2} or @option{-O3}.
@end itemize
@node External Bugs
diff --git a/gcc/expr.c b/gcc/expr.c
index e5f7ae51783..a85d8c14be4 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4020,7 +4020,8 @@ expand_assignment (to, from, want_value, suggest_reg)
problem. */
if (TREE_CODE (to) == COMPONENT_REF || TREE_CODE (to) == BIT_FIELD_REF
- || TREE_CODE (to) == ARRAY_REF || TREE_CODE (to) == ARRAY_RANGE_REF)
+ || TREE_CODE (to) == ARRAY_REF || TREE_CODE (to) == ARRAY_RANGE_REF
+ || TREE_CODE (TREE_TYPE (to)) == ARRAY_TYPE)
{
enum machine_mode mode1;
HOST_WIDE_INT bitsize, bitpos;
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index 8b378cf0f1a..3af6511e20b 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -1,3 +1,30 @@
+2002-12-28 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * g77.texi: Use @copying.
+
+2002-12-23 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * root.texi: Include gcc-common.texi.
+ * bugs.texi, news.texi: Don't include root.texi as part of full
+ manual.
+ * g77.texi: Update for use of gcc-common.texi.
+ * Make-lang.in ($(srcdir)/f/g77.info, f/g77.dvi): Depend on
+ $(srcdir)/doc/include/gcc-common.texi.
+
+2002-12-19 Kazu Hirata <kazu@cs.umass.edu>
+
+ * intdoc.in: Fix typos.
+
+2002-12-18 Kazu Hirata <kazu@cs.umass.edu>
+
+ * g77.texi: Fix typos.
+ * intdoc.texi: Likewise.
+ * news.texi: Follow spelling conventions.
+
+Mon Dec 16 13:55:24 2002 Mark Mitchell <mark@codesourcery.com>
+
+ * root.texi (DEVELOPMENT): @clear it.
+
2002-11-20 Toon Moene <toon@moene.indiv.nluug.nl>
* invoke.texi: Explain the purpose of -fmove-all-movables,
diff --git a/gcc/f/Make-lang.in b/gcc/f/Make-lang.in
index df31b1a6168..d70b22c2db6 100644
--- a/gcc/f/Make-lang.in
+++ b/gcc/f/Make-lang.in
@@ -153,7 +153,8 @@ $(srcdir)/f/g77.info: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \
$(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \
$(srcdir)/f/root.texi $(srcdir)/doc/include/fdl.texi \
$(srcdir)/doc/include/gpl.texi \
- $(srcdir)/doc/include/funding.texi
+ $(srcdir)/doc/include/funding.texi \
+ $(srcdir)/doc/include/gcc-common.texi
if [ x$(BUILD_INFO) = xinfo ]; then \
rm -f $(srcdir)/f/g77.info-*; \
cd $(srcdir)/f && $(MAKEINFO) -I../doc/include -o g77.info g77.texi; \
@@ -164,7 +165,8 @@ f/g77.dvi: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \
$(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \
$(srcdir)/f/root.texi $(srcdir)/doc/include/fdl.texi \
$(srcdir)/doc/include/gpl.texi \
- $(srcdir)/doc/include/funding.texi
+ $(srcdir)/doc/include/funding.texi \
+ $(srcdir)/doc/include/gcc-common.texi
s=`cd $(srcdir); ${PWD}`; export s; \
cd f && $(TEXI2DVI) -I $$s/doc/include $$s/f/g77.texi
diff --git a/gcc/f/bugs.texi b/gcc/f/bugs.texi
index f82d1bda2a6..176072c0d21 100644
--- a/gcc/f/bugs.texi
+++ b/gcc/f/bugs.texi
@@ -1,4 +1,4 @@
-@c Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+@c Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
@c This is part of the G77 manual.
@c For copying conditions, see the file g77.texi.
@@ -11,9 +11,8 @@
@set last-update-bugs 2002-02-01
-@include root.texi
-
@ifset DOC-BUGS
+@include root.texi
@c The immediately following lines apply to the BUGS file
@c which is derived from this file.
@emph{Note:} This file is automatically generated from the files
diff --git a/gcc/f/g77.texi b/gcc/f/g77.texi
index 9ab2527795a..1ae25e44d30 100644
--- a/gcc/f/g77.texi
+++ b/gcc/f/g77.texi
@@ -24,33 +24,6 @@
@c and make sure the following does NOT begin with '@c':
@c @clear USING
-@c 6/27/96 FSF DO wants smallbook fmt for 1st bound edition. (from gcc.texi)
-@c @smallbook
-
-@c i also commented out the finalout command, so if there *are* any
-@c overfulls, you'll (hopefully) see the rectangle in the right hand
-@c margin. -- burley 1999-03-13 (from mew's comment in gcc.texi).
-@c @finalout
-
-@macro gcctabopt{body}
-@code{\body\}
-@end macro
-@macro gccoptlist{body}
-@smallexample
-\body\
-@end smallexample
-@end macro
-@c Makeinfo handles the above macro OK, TeX needs manual line breaks;
-@c they get lost at some point in handling the macro. But if @macro is
-@c used here rather than @alias, it produces double line breaks.
-@iftex
-@alias gol = *
-@end iftex
-@ifnottex
-@macro gol
-@end macro
-@end ifnottex
-
@ifset INTERNALS
@ifset USING
@settitle Using and Porting GNU Fortran
@@ -89,6 +62,29 @@
@c \global\normaloffset =0.75in
@c @end tex
+@copying
+Copyright @copyright{} @value{copyrights-g77} Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'' and ``Funding
+Free Software'', the Front-Cover
+texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+``GNU Free Documentation License''.
+
+(a) The FSF's Front-Cover Text is:
+
+ A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+ You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development.
+@end copying
+
@ifinfo
@dircategory Programming
@direntry
@@ -114,27 +110,7 @@ Published by the Free Software Foundation
59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
-Copyright (C) @value{copyrights-g77} Free Software Foundation, Inc.
-
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being ``GNU General Public License'' and ``Funding
-Free Software'', the Front-Cover
-texts being (a) (see below), and with the Back-Cover Texts being (b)
-(see below). A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-(a) The FSF's Front-Cover Text is:
-
- A GNU Manual
-
-(b) The FSF's Back-Cover Text is:
-
- You have freedom to copy and modify this GNU Manual, like GNU
- software. Copies published by the Free Software Foundation raise
- funds for GNU development.
+@insertcopying
@end ifinfo
Contributed by James Craig Burley (@email{@value{email-burley}}).
@@ -142,7 +118,6 @@ Inspired by a first pass at translating @file{g77-0.5.16/f/DOC} that
was contributed to Craig by David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
@setchapternewpage odd
-@c @finalout
@titlepage
@ifset INTERNALS
@ifset USING
@@ -164,8 +139,6 @@ was contributed to Craig by David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
@center for version @value{which-g77}
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} @value{copyrights-g77} Free Software Foundation, Inc.
-@sp 2
For the @value{which-g77} Version*
@sp 1
Published by the Free Software Foundation @*
@@ -175,24 +148,7 @@ Boston, MA 02111-1307, USA@*
@c Printed copies are available for $? each.@*
@c ISBN ???
@sp 1
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being ``GNU General Public License'' and ``Funding
-Free Software'', the Front-Cover
-texts being (a) (see below), and with the Back-Cover Texts being (b)
-(see below). A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-(a) The FSF's Front-Cover Text is:
-
- A GNU Manual
-
-(b) The FSF's Back-Cover Text is:
-
- You have freedom to copy and modify this GNU Manual, like GNU
- software. Copies published by the Free Software Foundation raise
- funds for GNU development.
+@insertcopying
@end titlepage
@summarycontents
@contents
@@ -1045,7 +1001,7 @@ As such, GNU users rarely need consider just what kind of underlying
hardware (or, in many cases, operating system) they are using at any
particular time.
They can use and write software designed for a general-purpose,
-widely portable, heterogenous environment---the GNU environment.
+widely portable, heterogeneous environment---the GNU environment.
In line with this philosophy, GNU Fortran must evolve into a product
that is widely ported and portable not only in the sense that it can
@@ -7512,7 +7468,7 @@ set up this kind of aliasing.
(The FORTRAN 77 standard's prohibition of this sort of
overlap, generally referred to therein as ``storage
-assocation'', appears in Sections 15.9.3.6.
+association'', appears in Sections 15.9.3.6.
This prohibition allows implementations, such as @command{g77},
to, for example, implement the passing of procedures and
even values in @code{COMMON} via copy operations into local,
diff --git a/gcc/f/intdoc.in b/gcc/f/intdoc.in
index 3ed3e10e408..9d00bc761a6 100644
--- a/gcc/f/intdoc.in
+++ b/gcc/f/intdoc.in
@@ -646,7 +646,7 @@ magnitude truncated and its sign preserved, converted
to type @code{INTEGER(KIND=6)}.
If @var{@1@} is type @code{COMPLEX}, its real part
-is truncated and converted, and its imaginary part is disgregarded.
+is truncated and converted, and its imaginary part is disregarded.
@xref{Int Intrinsic}.
@@ -661,7 +661,7 @@ magnitude truncated and its sign preserved, converted
to type @code{INTEGER(KIND=6)}.
If @var{@1@} is type @code{COMPLEX}, its real part
-is truncated and converted, and its imaginary part is disgregarded.
+is truncated and converted, and its imaginary part is disregarded.
@xref{Int Intrinsic}.
@@ -676,7 +676,7 @@ magnitude truncated and its sign preserved, converted
to type @code{INTEGER(KIND=2)}.
If @var{@1@} is type @code{COMPLEX}, its real part
-is truncated and converted, and its imaginary part is disgregarded.
+is truncated and converted, and its imaginary part is disregarded.
@xref{Int Intrinsic}.
diff --git a/gcc/f/intdoc.texi b/gcc/f/intdoc.texi
index e4706267e53..b86cb1b975b 100644
--- a/gcc/f/intdoc.texi
+++ b/gcc/f/intdoc.texi
@@ -6543,7 +6543,7 @@ magnitude truncated and its sign preserved, converted
to type @code{INTEGER(KIND=6)}.
If @var{A} is type @code{COMPLEX}, its real part
-is truncated and converted, and its imaginary part is disgregarded.
+is truncated and converted, and its imaginary part is disregarded.
@xref{Int Intrinsic}.
@@ -6578,7 +6578,7 @@ magnitude truncated and its sign preserved, converted
to type @code{INTEGER(KIND=2)}.
If @var{A} is type @code{COMPLEX}, its real part
-is truncated and converted, and its imaginary part is disgregarded.
+is truncated and converted, and its imaginary part is disregarded.
@xref{Int Intrinsic}.
@@ -9418,7 +9418,7 @@ magnitude truncated and its sign preserved, converted
to type @code{INTEGER(KIND=6)}.
If @var{A} is type @code{COMPLEX}, its real part
-is truncated and converted, and its imaginary part is disgregarded.
+is truncated and converted, and its imaginary part is disregarded.
@xref{Int Intrinsic}.
diff --git a/gcc/f/news.texi b/gcc/f/news.texi
index 2d0dc0f49ef..e3e6fcb7614 100644
--- a/gcc/f/news.texi
+++ b/gcc/f/news.texi
@@ -12,9 +12,8 @@
@set last-update-news 2002-11-19
-@include root.texi
-
@ifset DOC-NEWS
+@include root.texi
@c The immediately following lines apply to the NEWS file
@c which is derived from this file.
@emph{Note:} This file is automatically generated from the files
@@ -185,7 +184,7 @@ Incorrect output with 0-based array of characters
Double complex zero ** double precision number -> NaN instead of zero
@end table
@item
-Richard Henderson (@email{rth@@redhat.com}) analysed and improved the handling
+Richard Henderson (@email{rth@@redhat.com}) analyzed and improved the handling
of (no-)aliasing information for dummy arguments and improved the optimization
of induction variables in unrolled loops.
@end itemize
diff --git a/gcc/f/root.texi b/gcc/f/root.texi
index 45a36c209d4..d8619cc376d 100644
--- a/gcc/f/root.texi
+++ b/gcc/f/root.texi
@@ -1,9 +1,4 @@
-@c DEVELOPMENT is set to indicate an in-development version,
-@c as compared to a release version. When making a release
-@c (e.g. a release branch in the CVS repository for gcc),
-@c clear this and set the version information correctly.
-@set DEVELOPMENT
-@set version-gcc 3.3
+@include gcc-common.texi
@set email-general gcc@@gcc.gnu.org
@set email-help gcc-help@@gcc.gnu.org
@@ -12,7 +7,7 @@
@set path-g77 gcc/gcc/f
@set path-libf2c gcc/libf2c
-@set which-g77 GCC-@value{version-gcc}
+@set which-g77 GCC-@value{version-GCC}
@set which-gcc GCC
@set email-burley craig@@jcb-sc.com
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index c6d0de1c1e3..1d2760d95e2 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,37 @@
+2002-12-30 DJ Delorie <dj@redhat.com>
+
+ * Make-lang.in: Protect against texi2pod/pod2man failing.
+
+2002-12-28 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gcj.texi: Use @copying.
+
+2002-12-23 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gcj.texi: Include Cover Texts in man page.
+
+2002-12-23 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gcj.texi: Include gcc-common.texi.
+ * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on
+ $(srcdir)/doc/include/gcc-common.texi.
+
+2002-12-22 Anthony Green <green@redhat.com>
+
+ * gcj.texi (Limitations): Add note about org.xml.sax and
+ org.w3c.dom.
+
+2002-12-20 Tom Tromey <tromey@redhat.com>
+
+ * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case
+ where minimum case value is Integer.MIN_VALUE.
+ Fixes PR java/8955.
+
+2002-12-18 Andrew Haley <aph@redhat.com>
+
+ * parse.y (patch_invoke): Force evaluation order when `check' is
+ set. For PR libgcj/8945.
+
2002-12-05 Ranjit Mathew <rmathew@hotmail.com>
Andrew Haley <aph@redhat.com>
diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in
index fc0e40b5161..440a9da316c 100644
--- a/gcc/java/Make-lang.in
+++ b/gcc/java/Make-lang.in
@@ -336,72 +336,73 @@ java/jcf-path.o: java/jcf-path.c $(CONFIG_H) $(SYSTEM_H) java/jcf.h
# Documentation
$(srcdir)/java/gcj.info: $(srcdir)/java/gcj.texi \
- $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gpl.texi
+ $(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gpl.texi \
+ $(srcdir)/doc/include/gcc-common.texi
if test "x$(BUILD_INFO)" = xinfo; then \
rm -f $(srcdir)/java/gcc.info*; \
cd $(srcdir)/java && $(MAKEINFO) -I../doc/include -o gcj.info gcj.texi; \
else true; fi
java/gcj.dvi: $(srcdir)/java/gcj.texi $(srcdir)/doc/include/fdl.texi \
- $(srcdir)/doc/include/gpl.texi
+ $(srcdir)/doc/include/gpl.texi $(srcdir)/doc/include/gcc-common.texi
s=`cd $(srcdir); ${PWD}`; export s; \
cd java && $(TEXI2DVI) -I $$s/doc/include $$s/java/gcj.texi
$(srcdir)/java/gcj.1: $(srcdir)/java/gcj.texi
-$(TEXI2POD) -D gcj < $(srcdir)/java/gcj.texi > java/gcj.pod
- ($(POD2MAN) --section=1 java/gcj.pod > java/gcj.1.T$$$$ && \
+ -($(POD2MAN) --section=1 java/gcj.pod > java/gcj.1.T$$$$ && \
mv -f java/gcj.1.T$$$$ $(srcdir)/java/gcj.1) || \
(rm -f java/gcj.1.T$$$$ && exit 1)
- rm -f java/gcj.pod
+ -rm -f java/gcj.pod
$(srcdir)/java/gcjh.1: $(srcdir)/java/gcj.texi
-$(TEXI2POD) -D gcjh < $(srcdir)/java/gcj.texi > java/gcjh.pod
- ($(POD2MAN) --section=1 java/gcjh.pod > java/gcjh.1.T$$$$ && \
+ -($(POD2MAN) --section=1 java/gcjh.pod > java/gcjh.1.T$$$$ && \
mv -f java/gcjh.1.T$$$$ $(srcdir)/java/gcjh.1) || \
(rm -f java/gcjh.1.T$$$$ && exit 1)
- rm -f java/gcjh.pod
+ -rm -f java/gcjh.pod
$(srcdir)/java/jv-scan.1: $(srcdir)/java/gcj.texi
-$(TEXI2POD) -D jv-scan < $(srcdir)/java/gcj.texi > java/jv-scan.pod
- ($(POD2MAN) --section=1 java/jv-scan.pod > java/jv-scan.1.T$$$$ && \
+ -($(POD2MAN) --section=1 java/jv-scan.pod > java/jv-scan.1.T$$$$ && \
mv -f java/jv-scan.1.T$$$$ $(srcdir)/java/jv-scan.1) || \
(rm -f java/jv-scan.1.T$$$$ && exit 1)
- rm -f java/jv-scan.pod
+ -rm -f java/jv-scan.pod
$(srcdir)/java/jcf-dump.1: $(srcdir)/java/gcj.texi
-$(TEXI2POD) -D jcf-dump < $(srcdir)/java/gcj.texi > java/jcf-dump.pod
- ($(POD2MAN) --section=1 java/jcf-dump.pod > java/jcf-dump.1.T$$$$ && \
+ -($(POD2MAN) --section=1 java/jcf-dump.pod > java/jcf-dump.1.T$$$$ && \
mv -f java/jcf-dump.1.T$$$$ $(srcdir)/java/jcf-dump.1) || \
(rm -f java/jcf-dump.1.T$$$$ && exit 1)
- rm -f java/jcf-dump.pod
+ -rm -f java/jcf-dump.pod
$(srcdir)/java/gij.1: $(srcdir)/java/gcj.texi
-$(TEXI2POD) -D gij < $(srcdir)/java/gcj.texi > java/gij.pod
- ($(POD2MAN) --section=1 java/gij.pod > java/gij.1.T$$$$ && \
+ -($(POD2MAN) --section=1 java/gij.pod > java/gij.1.T$$$$ && \
mv -f java/gij.1.T$$$$ $(srcdir)/java/gij.1) || \
(rm -f java/gij.1.T$$$$ && exit 1)
- rm -f java/gij.pod
+ -rm -f java/gij.pod
$(srcdir)/java/jv-convert.1: $(srcdir)/java/gcj.texi
-$(TEXI2POD) -D jv-convert < $(srcdir)/java/gcj.texi > java/jv-convert.pod
- ($(POD2MAN) --section=1 java/jv-convert.pod > java/jv-convert.1.T$$$$ && \
+ -($(POD2MAN) --section=1 java/jv-convert.pod > java/jv-convert.1.T$$$$ && \
mv -f java/jv-convert.1.T$$$$ $(srcdir)/java/jv-convert.1) || \
(rm -f java/jv-convert.1.T$$$$ && exit 1)
- rm -f java/jv-convert.pod
+ -rm -f java/jv-convert.pod
$(srcdir)/java/rmic.1: $(srcdir)/java/gcj.texi
-$(TEXI2POD) -D rmic < $(srcdir)/java/gcj.texi > java/rmic.pod
- ($(POD2MAN) --section=1 java/rmic.pod > java/rmic.1.T$$$$ && \
+ -($(POD2MAN) --section=1 java/rmic.pod > java/rmic.1.T$$$$ && \
mv -f java/rmic.1.T$$$$ $(srcdir)/java/rmic.1) || \
(rm -f java/rmic.1.T$$$$ && exit 1)
- rm -f java/rmic.pod
+ -rm -f java/rmic.pod
$(srcdir)/java/rmiregistry.1: $(srcdir)/java/gcj.texi
-$(TEXI2POD) -D rmiregistry < $(srcdir)/java/gcj.texi > java/rmiregistry.pod
- ($(POD2MAN) --section=1 java/rmiregistry.pod > java/rmiregistry.1.T$$$$ && \
+ -($(POD2MAN) --section=1 java/rmiregistry.pod > java/rmiregistry.1.T$$$$ && \
mv -f java/rmiregistry.1.T$$$$ $(srcdir)/java/rmiregistry.1) || \
(rm -f java/rmiregistry.1.T$$$$ && exit 1)
- rm -f java/rmiregistry.pod
+ -rm -f java/rmiregistry.pod
# Install the man pages.
java.install-man: installdirs $(GENERATED_JAVA_MANPAGES)
diff --git a/gcc/java/gcj.texi b/gcc/java/gcj.texi
index 3397a423a87..fe80d6afe50 100644
--- a/gcc/java/gcj.texi
+++ b/gcc/java/gcj.texi
@@ -2,6 +2,8 @@
@setfilename gcj.info
@settitle Guide to GNU gcj
+@include gcc-common.texi
+
@c Note: When reading this manual you'll find lots of strange
@c circumlocutions like ``compiler for the Java language''.
@c This is necessary due to Sun's restrictions on the use of
@@ -11,40 +13,11 @@
@set copyrights-gcj 2001, 2002
@c Versions
-@set version-gcc 3.3
-@set which-gcj GCC-@value{version-gcc}
-
-@macro gcctabopt{body}
-@code{\body\}
-@end macro
-
-@ifinfo
-@format
-@dircategory Programming
-@direntry
-* Gcj: (gcj). Ahead-of-time compiler for the Java language
-@end direntry
-
-@dircategory Individual utilities
-@direntry
-* gcjh: (gcj)Invoking gcjh.
- Generate header files from Java class files
-* jv-scan: (gcj)Invoking jv-scan.
- Print information about Java source files
-* jcf-dump: (gcj)Invoking jcf-dump.
- Print information about Java class files
-* gij: (gcj)Invoking gij. GNU interpreter for Java bytecode
-* jv-convert: (gcj)Invoking jv-convert.
- Convert file from one encoding to another
-* rmic: (gcj)Invoking rmic.
- Generate stubs for Remote Method Invocation.
-* rmiregistry: (gcj)Invoking rmiregistry.
- The remote object registry.
-@end direntry
-@end format
+@set which-gcj GCC-@value{version-GCC}
+@copying
@c man begin COPYRIGHT
-Copyright (C) @value{copyrights-gcj} Free Software Foundation, Inc.
+Copyright @copyright{} @value{copyrights-gcj} Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -61,6 +34,8 @@ man page gfdl(7).
@c man end
@end ignore
+@c man begin COPYRIGHT
+
(a) The FSF's Front-Cover Text is:
A GNU Manual
@@ -70,6 +45,35 @@ man page gfdl(7).
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+@c man end
+@end copying
+
+@ifinfo
+@format
+@dircategory Programming
+@direntry
+* Gcj: (gcj). Ahead-of-time compiler for the Java language
+@end direntry
+
+@dircategory Individual utilities
+@direntry
+* gcjh: (gcj)Invoking gcjh.
+ Generate header files from Java class files
+* jv-scan: (gcj)Invoking jv-scan.
+ Print information about Java source files
+* jcf-dump: (gcj)Invoking jcf-dump.
+ Print information about Java class files
+* gij: (gcj)Invoking gij. GNU interpreter for Java bytecode
+* jv-convert: (gcj)Invoking jv-convert.
+ Convert file from one encoding to another
+* rmic: (gcj)Invoking rmic.
+ Generate stubs for Remote Method Invocation.
+* rmiregistry: (gcj)Invoking rmiregistry.
+ The remote object registry.
+@end direntry
+@end format
+
+@insertcopying
@end ifinfo
@titlepage
@@ -78,31 +82,13 @@ man page gfdl(7).
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} @value{copyrights-gcj} Free Software Foundation, Inc.
-@sp 2
For the @value{which-gcj} Version*
@sp 1
Published by the Free Software Foundation @*
59 Temple Place - Suite 330@*
Boston, MA 02111-1307, USA@*
@sp 1
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being ``GNU General Public License'', the Front-Cover
-texts being (a) (see below), and with the Back-Cover Texts being (b)
-(see below). A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-(a) The FSF's Front-Cover Text is:
-
- A GNU Manual
-
-(b) The FSF's Back-Cover Text is:
-
- You have freedom to copy and modify this GNU Manual, like GNU
- software. Copies published by the Free Software Foundation raise
- funds for GNU development.
+@insertcopying
@end titlepage
@contents
@page
@@ -515,14 +501,25 @@ Sometimes the @code{libgcj} implementation of a method or class differs
from the JDK implementation. This is not always a bug. Still, if it
affects you, it probably makes sense to report it so that we can discuss
the appropriate response.
+
+@item
+@command{gcj} does not currently allow for piecemeal replacement of
+components within @code{libgcj}. Unfortunately, programmers often want
+to use newer versions of certain packages, such as those provided by
+the Apache Software Foundation's Jakarta project. This has forced us
+to place the @code{org.w3c.dom} and @code{org.xml.sax} packages into
+their own libraries, separate from @code{libgcj}. If you intend to
+use these classes, you must link them explicitly with
+@code{-l-org-w3c-dom} and @code{-l-org-xml-sax}. Future versions of
+@command{gcj} may not have this restriction.
@end itemize
@node Extensions
@section Extra features unique to gcj
-The main feature of @command{gcj} is that it can compile programs written in
-the Java programming language to native code. Most extensions that have been
-added are to facilitate this functionality.
+The main feature of @command{gcj} is that it can compile programs
+written in the Java programming language to native code. Most
+extensions that have been added are to facilitate this functionality.
@itemize @bullet
@item
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c
index 47cfd11be8a..fca47433912 100644
--- a/gcc/java/jcf-write.c
+++ b/gcc/java/jcf-write.c
@@ -1744,6 +1744,7 @@ generate_bytecode_insns (exp, target, state)
else
{
HOST_WIDE_INT i;
+ unsigned HOST_WIDE_INT delta;
/* Copy the chain of relocs into a sorted array. */
struct jcf_relocation **relocs = (struct jcf_relocation **)
xmalloc (sw_state.num_cases * sizeof (struct jcf_relocation *));
@@ -1776,8 +1777,11 @@ generate_bytecode_insns (exp, target, state)
handled by the parser. */
}
- if (2 * sw_state.num_cases
- >= sw_state.max_case - sw_state.min_case)
+ /* We could have DELTA < 0 if sw_state.min_case is
+ something like Integer.MIN_VALUE. That is why delta is
+ unsigned. */
+ delta = sw_state.max_case - sw_state.min_case;
+ if (2 * sw_state.num_cases >= delta)
{ /* Use tableswitch. */
int index = 0;
RESERVE (13 + 4 * (sw_state.max_case - sw_state.min_case + 1));
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index d457f1a046d..819737fefda 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -10789,7 +10789,11 @@ patch_invoke (patch, method, args)
is NULL. */
if (check != NULL_TREE)
{
- patch = build (COMPOUND_EXPR, TREE_TYPE (patch), check, patch);
+ /* We have to call force_evaluation_order now because creating a
+ COMPOUND_EXPR wraps the arg list in a way that makes it
+ unrecognizable by force_evaluation_order later. Yuk. */
+ patch = build (COMPOUND_EXPR, TREE_TYPE (patch), check,
+ force_evaluation_order (patch));
TREE_SIDE_EFFECTS (patch) = 1;
}
diff --git a/gcc/loop.c b/gcc/loop.c
index d7abe5ff654..eea944e1bde 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -8624,11 +8624,12 @@ maybe_eliminate_biv (loop, bl, eliminate_p, threshold, insn_count)
enum rtx_code code = GET_CODE (p);
basic_block where_bb = 0;
rtx where_insn = threshold >= insn_count ? 0 : p;
+ rtx note;
/* If this is a libcall that sets a giv, skip ahead to its end. */
if (GET_RTX_CLASS (code) == 'i')
{
- rtx note = find_reg_note (p, REG_LIBCALL, NULL_RTX);
+ note = find_reg_note (p, REG_LIBCALL, NULL_RTX);
if (note)
{
@@ -8646,6 +8647,8 @@ maybe_eliminate_biv (loop, bl, eliminate_p, threshold, insn_count)
}
}
}
+
+ /* Closely examine the insn if the biv is mentioned. */
if ((code == INSN || code == JUMP_INSN || code == CALL_INSN)
&& reg_mentioned_p (reg, PATTERN (p))
&& ! maybe_eliminate_biv_1 (loop, PATTERN (p), p, bl,
@@ -8657,6 +8660,12 @@ maybe_eliminate_biv (loop, bl, eliminate_p, threshold, insn_count)
bl->regno, INSN_UID (p));
break;
}
+
+ /* If we are eliminating, kill REG_EQUAL notes mentioning the biv. */
+ if (eliminate_p
+ && (note = find_reg_note (p, REG_EQUAL, NULL_RTX)) != NULL_RTX
+ && reg_mentioned_p (reg, XEXP (note, 0)))
+ remove_note (p, note);
}
if (p == loop->end)
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 9c901b49cc0..edaf5520be0 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2002-12-30 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gcc.pot: Regenerate.
+
2002-05-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* exgettext: Allow for PWDCMD to override hardcoded pwd.
diff --git a/gcc/po/gcc.pot b/gcc/po/gcc.pot
index fd7713d79c6..81002a2cfd9 100644
--- a/gcc/po/gcc.pot
+++ b/gcc/po/gcc.pot
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-04-23 14:22+0200\n"
+"POT-Creation-Date: 2002-12-30 18:56+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,140 +15,55 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: attribs.c:307
+#: attribs.c:185
#, c-format
msgid "`%s' attribute directive ignored"
msgstr ""
-#: attribs.c:315
+#: attribs.c:193
#, c-format
msgid "wrong number of arguments specified for `%s' attribute"
msgstr ""
-#: attribs.c:332
+#: attribs.c:210
#, c-format
msgid "`%s' attribute does not apply to types"
msgstr ""
-#: attribs.c:369
+#: attribs.c:247
#, c-format
msgid "`%s' attribute only applies to function types"
msgstr ""
-#: attribs.c:461 attribs.c:483 attribs.c:505 attribs.c:536 attribs.c:558
-#: attribs.c:583 attribs.c:606 attribs.c:636 attribs.c:674 attribs.c:721
-#: attribs.c:751 attribs.c:781 attribs.c:804 attribs.c:1049 attribs.c:1071
-#: attribs.c:1147 attribs.c:1203 attribs.c:1264 attribs.c:1298 attribs.c:1549
-#: config/arm/arm.c:2007 config/arm/arm.c:2034 config/avr/avr.c:4683
-#: config/h8300/h8300.c:3407 config/h8300/h8300.c:3432 config/i386/i386.c:1268
-#: config/i386/winnt.c:74
+#: attribs.c:404 c-common.c:5253 c-common.c:5275 c-common.c:5297
+#: c-common.c:5328 c-common.c:5350 c-common.c:5375 c-common.c:5398
+#: c-common.c:5428 c-common.c:5466 c-common.c:5513 c-common.c:5543
+#: c-common.c:5573 c-common.c:5596 c-common.c:5853 c-common.c:5875
+#: c-common.c:5918 c-common.c:5995 c-common.c:6051 c-common.c:6112
+#: c-common.c:6146 c-common.c:6500 config/arm/arm.c:2098 config/arm/arm.c:2125
+#: config/avr/avr.c:4774 config/h8300/h8300.c:3649 config/h8300/h8300.c:3674
+#: config/i386/i386.c:1396 config/i386/winnt.c:76
#, c-format
msgid "`%s' attribute ignored"
msgstr ""
-#: attribs.c:837
-#, c-format
-msgid "unknown machine mode `%s'"
-msgstr ""
-
-#: attribs.c:840
-#, c-format
-msgid "no data type for mode `%s'"
-msgstr ""
-
-#: attribs.c:873
-msgid "section attribute cannot be specified for local variables"
-msgstr ""
-
-#: attribs.c:884
-#, c-format
-msgid "section of `%s' conflicts with previous declaration"
-msgstr ""
-
-#: attribs.c:893
-#, c-format
-msgid "section attribute not allowed for `%s'"
-msgstr ""
-
-#: attribs.c:900
-msgid "section attributes are not supported for this target"
-msgstr ""
-
-#: attribs.c:942
-msgid "requested alignment is not a constant"
-msgstr ""
-
-#: attribs.c:947
-msgid "requested alignment is not a power of 2"
-msgstr ""
-
-#: attribs.c:952
-msgid "requested alignment is too large"
-msgstr ""
-
-#: attribs.c:979
-#, c-format
-msgid "alignment may not be specified for `%s'"
-msgstr ""
-
-#: attribs.c:1024
-#, c-format
-msgid "`%s' defined both normally and as an alias"
-msgstr ""
-
-#: attribs.c:1034
-msgid "alias arg not a string"
-msgstr ""
-
-#: attribs.c:1081
-msgid "visibility arg not a string"
-msgstr ""
-
-#: attribs.c:1089
-msgid "visibility arg must be one of \"hidden\", \"protected\" or \"internal\""
-msgstr ""
-
-#: attribs.c:1114 attribs.c:1170
-#, c-format
-msgid "`%s' attribute applies only to functions"
-msgstr ""
-
-#: attribs.c:1121 attribs.c:1177
-#, c-format
-msgid "can't set `%s' attribute after definition"
-msgstr ""
-
-#: attribs.c:1261
-#, c-format
-msgid "`%s' attribute ignored for `%s'"
-msgstr ""
-
-#: attribs.c:1326
-#, c-format
-msgid "invalid vector type for attribute `%s'"
-msgstr ""
-
-#: attribs.c:1350 attribs.c:1382
-msgid "no vector mode with the size and type specified could be found"
-msgstr ""
-
-#: builtins.c:281
+#: builtins.c:285
msgid "offset outside bounds of constant string"
msgstr ""
-#: builtins.c:761
+#: builtins.c:765
msgid "second arg to `__builtin_prefetch' must be a constant"
msgstr ""
-#: builtins.c:768
+#: builtins.c:772
msgid "invalid second arg to __builtin_prefetch; using zero"
msgstr ""
-#: builtins.c:775
+#: builtins.c:779
msgid "third arg to `__builtin_prefetch' must be a constant"
msgstr ""
-#: builtins.c:782
+#: builtins.c:786
msgid "invalid third arg to __builtin_prefetch; using zero"
msgstr ""
@@ -159,1297 +74,1449 @@ msgstr ""
#. port (i860) that used this code, and I'm unconvinced it could actually
#. handle the general case. So we no longer try to handle anything
#. weird and make the backend absorb the evil.
-#: builtins.c:2764
+#: builtins.c:2864
msgid "__builtin_saveregs not supported by this target"
msgstr ""
-#: builtins.c:2806
+#: builtins.c:2906
msgid "argument of `__builtin_args_info' must be constant"
msgstr ""
-#: builtins.c:2812
+#: builtins.c:2912
msgid "argument of `__builtin_args_info' out of range"
msgstr ""
-#: builtins.c:2818
+#: builtins.c:2918
msgid "missing argument in `__builtin_args_info'"
msgstr ""
-#: builtins.c:2850
+#: builtins.c:2949
msgid "`va_start' used in function with fixed args"
msgstr ""
-#: builtins.c:2869
+#: builtins.c:2968
msgid "second parameter of `va_start' not last named argument"
msgstr ""
#. Evidently an out of date version of <stdarg.h>; can't validate
#. va_start's second argument, but can still work as intended.
-#: builtins.c:2874
+#: builtins.c:2973
msgid "`__builtin_next_arg' called without an argument"
msgstr ""
-#: builtins.c:2978
+#: builtins.c:3059
msgid "too many arguments to function `va_start'"
msgstr ""
-#: builtins.c:3079
+#: builtins.c:3161
msgid "first argument to `va_arg' not of type `va_list'"
msgstr ""
#. Unfortunately, this is merely undefined, rather than a constraint
#. violation, so we cannot make this an error. If this call is never
#. executed, the program is still strictly conforming.
-#: builtins.c:3111
+#: builtins.c:3193
#, c-format
msgid "`%s' is promoted to `%s' when passed through `...'"
msgstr ""
-#: builtins.c:3116
+#: builtins.c:3198
#, c-format
msgid "(so you should pass `%s' not `%s' to `va_arg')"
msgstr ""
-#: builtins.c:3247
+#: builtins.c:3329
msgid "invalid arg to `__builtin_frame_address'"
msgstr ""
-#: builtins.c:3249
+#: builtins.c:3331
msgid "invalid arg to `__builtin_return_address'"
msgstr ""
-#: builtins.c:3263
+#: builtins.c:3345
msgid "unsupported arg to `__builtin_frame_address'"
msgstr ""
-#: builtins.c:3265
+#: builtins.c:3347
msgid "unsupported arg to `__builtin_return_address'"
msgstr ""
-#: builtins.c:3433
+#: builtins.c:3515
msgid "second arg to `__builtin_expect' must be a constant"
msgstr ""
-#: builtins.c:3914
+#: builtins.c:4010
msgid "__builtin_longjmp second argument must be 1"
msgstr ""
#. just do library call, if unknown builtin
-#: builtins.c:3987 c-common.c:3829
+#: builtins.c:4074 c-common.c:4437
#, c-format
msgid "built-in function `%s' not currently supported"
msgstr ""
-#: c-common.c:554
-#, c-format
-msgid "`%s' is not defined outside of function scope"
+#: builtins.c:4147
+msgid "target format does not support infinity"
msgstr ""
-#: c-common.c:594
-msgid ""
-"concatenation of string literals with __FUNCTION__ is deprecated. This "
-"feature will be removed in future"
+#: c-common.c:1163
+#, c-format
+msgid "`%s' is not defined outside of function scope"
msgstr ""
-#: c-common.c:663
+#: c-common.c:1184
#, c-format
msgid ""
"string length `%d' is greater than the length `%d' ISO C%d compilers are "
"required to support"
msgstr ""
-#: c-common.c:711
+#: c-common.c:1242
+msgid "concatenation of string literals with __FUNCTION__ is deprecated"
+msgstr ""
+
+#: c-common.c:1338
msgid "overflow in constant expression"
msgstr ""
-#: c-common.c:732
+#: c-common.c:1359
msgid "integer overflow in expression"
msgstr ""
-#: c-common.c:741
+#: c-common.c:1368
msgid "floating point overflow in expression"
msgstr ""
-#: c-common.c:747
+#: c-common.c:1374
msgid "vector overflow in expression"
msgstr ""
#. This detects cases like converting -129 or 256 to unsigned char.
-#: c-common.c:770
+#: c-common.c:1397
msgid "large integer implicitly truncated to unsigned type"
msgstr ""
-#: c-common.c:772
+#: c-common.c:1399
msgid "negative integer implicitly converted to unsigned type"
msgstr ""
-#: c-common.c:820
+#: c-common.c:1447
msgid "overflow in implicit constant conversion"
msgstr ""
-#: c-common.c:968
+#: c-common.c:1595
#, c-format
msgid "operation on `%s' may be undefined"
msgstr ""
-#: c-common.c:1259
+#: c-common.c:1886
msgid "expression statement has incomplete type"
msgstr ""
-#: c-common.c:1292
+#: c-common.c:1919
msgid "case label does not reduce to an integer constant"
msgstr ""
-#: c-common.c:1593
+#: c-common.c:2223
msgid "invalid truth-value expression"
msgstr ""
-#: c-common.c:1644
+#: c-common.c:2274
#, c-format
msgid "invalid operands to binary %s"
msgstr ""
-#: c-common.c:1880 c-common.c:1889
+#: c-common.c:2508
msgid "comparison is always false due to limited range of data type"
msgstr ""
-#: c-common.c:1882 c-common.c:1891
+#: c-common.c:2510
msgid "comparison is always true due to limited range of data type"
msgstr ""
-#: c-common.c:1961
+#: c-common.c:2580
msgid "comparison of unsigned expression >= 0 is always true"
msgstr ""
-#: c-common.c:1970
+#: c-common.c:2589
msgid "comparison of unsigned expression < 0 is always false"
msgstr ""
-#: c-common.c:2017
+#: c-common.c:2636
msgid "pointer of type `void *' used in arithmetic"
msgstr ""
-#: c-common.c:2023
+#: c-common.c:2642
msgid "pointer to a function used in arithmetic"
msgstr ""
-#: c-common.c:2029
+#: c-common.c:2648
msgid "pointer to member function used in arithmetic"
msgstr ""
-#: c-common.c:2035
+#: c-common.c:2654
msgid "pointer to a member used in arithmetic"
msgstr ""
-#: c-common.c:2122 f/com.c:14845
+#: c-common.c:2741 f/com.c:14690
msgid "struct type value used where scalar is required"
msgstr ""
-#: c-common.c:2126 f/com.c:14849
+#: c-common.c:2745 f/com.c:14694
msgid "union type value used where scalar is required"
msgstr ""
-#: c-common.c:2130 f/com.c:14853
+#: c-common.c:2749 f/com.c:14698
msgid "array type value used where scalar is required"
msgstr ""
-#: c-common.c:2250 f/com.c:14979
+#: c-common.c:2869 f/com.c:14831
msgid "suggest parentheses around assignment used as truth value"
msgstr ""
-#: c-common.c:2294 c-common.c:2326
+#: c-common.c:2913 c-common.c:2945
msgid "invalid use of `restrict'"
msgstr ""
-#: c-common.c:2441
-msgid "__alignof__ applied to an incomplete type"
+#: c-common.c:3059
+msgid "invalid application of `sizeof' to a function type"
+msgstr ""
+
+#: c-common.c:3069
+#, c-format
+msgid "invalid application of `%s' to a void type"
+msgstr ""
+
+#: c-common.c:3075
+#, c-format
+msgid "invalid application of `%s' to an incomplete type"
msgstr ""
-#: c-common.c:2467
+#: c-common.c:3116
msgid "`__alignof' applied to a bit-field"
msgstr ""
-#: c-common.c:2960
+#: c-common.c:3596
#, c-format
msgid "cannot disable built-in function `%s'"
msgstr ""
-#: c-common.c:3137 c-typeck.c:1794
+#: c-common.c:3765 c-typeck.c:1734
#, c-format
msgid "too few arguments to function `%s'"
msgstr ""
-#: c-common.c:3143 c-typeck.c:1647
+#: c-common.c:3771 c-typeck.c:1587
#, c-format
msgid "too many arguments to function `%s'"
msgstr ""
-#: c-common.c:3162
+#: c-common.c:3790
#, c-format
msgid "non-floating-point argument to function `%s'"
msgstr ""
-#: c-common.c:3431
+#: c-common.c:4059
msgid "pointers are not permitted as case values"
msgstr ""
-#: c-common.c:3437
+#: c-common.c:4065
msgid "ISO C++ forbids range expressions in switch statements"
msgstr ""
-#: c-common.c:3439
+#: c-common.c:4067
msgid "ISO C forbids range expressions in switch statements"
msgstr ""
-#: c-common.c:3469
+#: c-common.c:4097
msgid "empty range specified"
msgstr ""
-#: c-common.c:3520
+#: c-common.c:4148
msgid "duplicate (or overlapping) case value"
msgstr ""
-#: c-common.c:3522
+#: c-common.c:4150
msgid "this is the first entry overlapping that value"
msgstr ""
-#: c-common.c:3526
+#: c-common.c:4154
msgid "duplicate case value"
msgstr ""
-#: c-common.c:3527
+#: c-common.c:4155
msgid "previously used here"
msgstr ""
-#: c-common.c:3531
+#: c-common.c:4159
msgid "multiple default labels in one switch"
msgstr ""
-#: c-common.c:3532
+#: c-common.c:4160
msgid "this is the first default label"
msgstr ""
-#: c-common.c:3560
+#: c-common.c:4188
msgid "ISO C++ forbids taking the address of a label"
msgstr ""
-#: c-common.c:3562
+#: c-common.c:4190
msgid "ISO C forbids taking the address of a label"
msgstr ""
-#: c-common.c:4166
-msgid "-Wformat-y2k ignored without -Wformat"
+#: c-common.c:5213
+#, c-format
+msgid "declaration of `%s' shadows %s"
msgstr ""
-#: c-common.c:4168
-msgid "-Wformat-extra-args ignored without -Wformat"
+#: c-common.c:5629
+#, c-format
+msgid "unknown machine mode `%s'"
msgstr ""
-#: c-common.c:4170
-msgid "-Wformat-nonliteral ignored without -Wformat"
+#: c-common.c:5632
+#, c-format
+msgid "no data type for mode `%s'"
msgstr ""
-#: c-common.c:4172
-msgid "-Wformat-security ignored without -Wformat"
+#: c-common.c:5641 c-common.c:6242
+#, c-format
+msgid "unable to emulate '%s'"
msgstr ""
-#: c-common.c:4174
-msgid "-Wmissing-format-attribute ignored without -Wformat"
+#: c-common.c:5677
+msgid "section attribute cannot be specified for local variables"
msgstr ""
-#: c-common.c:4272
+#: c-common.c:5688
#, c-format
-msgid "declaration of `%s' shadows %s"
+msgid "section of `%s' conflicts with previous declaration"
msgstr ""
-#: c-convert.c:80 c-typeck.c:1048 c-typeck.c:4049 cp/typeck.c:1675
-#: cp/typeck.c:6176
-msgid "void value not ignored as it ought to be"
+#: c-common.c:5697
+#, c-format
+msgid "section attribute not allowed for `%s'"
msgstr ""
-#: c-convert.c:112 java/typeck.c:150
-msgid "conversion to non-scalar type requested"
+#: c-common.c:5704
+msgid "section attributes are not supported for this target"
+msgstr ""
+
+#: c-common.c:5746
+msgid "requested alignment is not a constant"
+msgstr ""
+
+#: c-common.c:5751
+msgid "requested alignment is not a power of 2"
msgstr ""
-#: c-decl.c:587
+#: c-common.c:5756
+msgid "requested alignment is too large"
+msgstr ""
+
+#: c-common.c:5783
#, c-format
-msgid "unknown C standard `%s'"
+msgid "alignment may not be specified for `%s'"
+msgstr ""
+
+#: c-common.c:5828
+#, c-format
+msgid "`%s' defined both normally and as an alias"
+msgstr ""
+
+#: c-common.c:5838
+msgid "alias arg not a string"
+msgstr ""
+
+#: c-common.c:5885
+msgid "visibility arg not a string"
+msgstr ""
+
+#: c-common.c:5894
+msgid ""
+"visibility arg must be one of \"default\", \"hidden\", \"protected\" or "
+"\"internal\""
+msgstr ""
+
+#: c-common.c:5928
+msgid "tls_model arg not a string"
+msgstr ""
+
+#: c-common.c:5937
+msgid ""
+"tls_model arg must be one of \"local-exec\", \"initial-exec\", \"local-"
+"dynamic\" or \"global-dynamic\""
+msgstr ""
+
+#: c-common.c:5962 c-common.c:6018
+#, c-format
+msgid "`%s' attribute applies only to functions"
+msgstr ""
+
+#: c-common.c:5969 c-common.c:6025
+#, c-format
+msgid "can't set `%s' attribute after definition"
+msgstr ""
+
+#: c-common.c:6109
+#, c-format
+msgid "`%s' attribute ignored for `%s'"
msgstr ""
-#: c-decl.c:748
+#: c-common.c:6174
+#, c-format
+msgid "invalid vector type for attribute `%s'"
+msgstr ""
+
+#: c-common.c:6198 c-common.c:6230
+msgid "no vector mode with the size and type specified could be found"
+msgstr ""
+
+#: c-common.c:6329
+msgid "nonnull attribute without arguments on a non-prototype"
+msgstr ""
+
+#: c-common.c:6344
+#, c-format
+msgid "nonnull argument has invalid operand number (arg %lu)"
+msgstr ""
+
+#: c-common.c:6363
+#, c-format
+msgid ""
+"nonnull argument with out-of-range operand number (arg %lu, operand %lu)"
+msgstr ""
+
+#: c-common.c:6371
+#, c-format
+msgid "nonnull argument references non-pointer operand (arg %lu, operand %lu)"
+msgstr ""
+
+#: c-common.c:6457
+#, c-format
+msgid "null argument where non-null required (arg %lu)"
+msgstr ""
+
+#: c-convert.c:80 c-typeck.c:988 c-typeck.c:4045 cp/typeck.c:1617
+#: cp/typeck.c:5855
+msgid "void value not ignored as it ought to be"
+msgstr ""
+
+#: c-convert.c:112 java/typeck.c:150
+msgid "conversion to non-scalar type requested"
+msgstr ""
+
+#: c-decl.c:336
#, c-format
msgid "array `%s' assumed to have one element"
msgstr ""
-#: c-decl.c:924
+#: c-decl.c:522
#, c-format
msgid "`struct %s' incomplete in scope ending here"
msgstr ""
-#: c-decl.c:927
+#: c-decl.c:525
#, c-format
msgid "`union %s' incomplete in scope ending here"
msgstr ""
-#: c-decl.c:930
+#: c-decl.c:528
#, c-format
msgid "`enum %s' incomplete in scope ending here"
msgstr ""
-#: c-decl.c:1044 c-decl.c:1185 java/decl.c:1371
+#: c-decl.c:642 c-decl.c:767 java/decl.c:1399
#, c-format
msgid "label `%s' used but not defined"
msgstr ""
-#: c-decl.c:1050 c-decl.c:1192 java/decl.c:1377
+#: c-decl.c:648 c-decl.c:774 java/decl.c:1405
#, c-format
msgid "label `%s' defined but not used"
msgstr ""
-#: c-decl.c:1309 cp/decl.c:3125
+#: c-decl.c:889 cp/decl.c:3058
#, c-format
msgid "function `%s' redeclared as inline"
msgstr ""
-#: c-decl.c:1311 cp/decl.c:3127
+#: c-decl.c:891 cp/decl.c:3060
#, c-format
msgid "previous declaration of function `%s' with attribute noinline"
msgstr ""
-#: c-decl.c:1318 cp/decl.c:3134
+#: c-decl.c:898 cp/decl.c:3067
#, c-format
msgid "function `%s' redeclared with attribute noinline"
msgstr ""
-#: c-decl.c:1320 cp/decl.c:3136
+#: c-decl.c:900 cp/decl.c:3069
#, c-format
msgid "previous declaration of function `%s' was inline"
msgstr ""
-#: c-decl.c:1349 c-decl.c:1395
+#: c-decl.c:929 c-decl.c:975
#, c-format
msgid "shadowing built-in function `%s'"
msgstr ""
-#: c-decl.c:1351
+#: c-decl.c:931
#, c-format
msgid "shadowing library function `%s'"
msgstr ""
-#: c-decl.c:1357
+#: c-decl.c:937
#, c-format
msgid "library function `%s' declared as non-function"
msgstr ""
-#: c-decl.c:1361 c-decl.c:1364
+#: c-decl.c:941 c-decl.c:944
#, c-format
msgid "built-in function `%s' declared as non-function"
msgstr ""
-#: c-decl.c:1368 objc/objc-act.c:2292 objc/objc-act.c:5994
+#: c-decl.c:948 objc/objc-act.c:2384 objc/objc-act.c:6154
#, c-format
msgid "`%s' redeclared as different kind of symbol"
msgstr ""
-#: c-decl.c:1369 c-decl.c:1560 c-decl.c:1705 objc/objc-act.c:2294
-#: objc/objc-act.c:5996 objc/objc-act.c:6051
+#: c-decl.c:949 c-decl.c:1140 c-decl.c:1147 c-decl.c:1154 c-decl.c:1299
+#: objc/objc-act.c:2386 objc/objc-act.c:6156 objc/objc-act.c:6211
#, c-format
msgid "previous declaration of `%s'"
msgstr ""
#. If types don't match for a built-in, throw away the built-in.
-#: c-decl.c:1464
+#: c-decl.c:1044
#, c-format
msgid "conflicting types for built-in function `%s'"
msgstr ""
-#: c-decl.c:1507 c-decl.c:1526
+#: c-decl.c:1087 c-decl.c:1106
#, c-format
msgid "conflicting types for `%s'"
msgstr ""
-#: c-decl.c:1549
+#: c-decl.c:1129
msgid ""
"a parameter list with an ellipsis can't match an empty parameter name list "
"declaration"
msgstr ""
-#: c-decl.c:1555
+#: c-decl.c:1135
msgid ""
"an argument type that has a default promotion can't match an empty parameter "
"name list declaration"
msgstr ""
-#: c-decl.c:1570 c-decl.c:1593
+#: c-decl.c:1146
+#, c-format
+msgid "thread-local declaration of `%s' follows non thread-local declaration"
+msgstr ""
+
+#: c-decl.c:1153
+#, c-format
+msgid "non thread-local declaration of `%s' follows thread-local declaration"
+msgstr ""
+
+#: c-decl.c:1164 c-decl.c:1187
#, c-format
msgid "redefinition of `%s'"
msgstr ""
-#: c-decl.c:1573
+#: c-decl.c:1167
#, c-format
msgid "redeclaration of `%s'"
msgstr ""
-#: c-decl.c:1576
+#: c-decl.c:1170
#, c-format
msgid "conflicting declarations of `%s'"
msgstr ""
-#: c-decl.c:1620
+#: c-decl.c:1214
#, c-format
msgid "prototype for `%s' follows"
msgstr ""
-#: c-decl.c:1621 c-decl.c:1629 c-decl.c:1640
+#: c-decl.c:1215 c-decl.c:1223 c-decl.c:1234
msgid "non-prototype definition here"
msgstr ""
-#: c-decl.c:1628
+#: c-decl.c:1222
#, c-format
msgid "prototype for `%s' follows and number of arguments doesn't match"
msgstr ""
-#: c-decl.c:1638
+#: c-decl.c:1232
#, c-format
msgid "prototype for `%s' follows and argument %d doesn't match"
msgstr ""
-#: c-decl.c:1656
+#: c-decl.c:1250
#, c-format
msgid "`%s' declared inline after being called"
msgstr ""
-#: c-decl.c:1662
+#: c-decl.c:1256
#, c-format
msgid "`%s' declared inline after its definition"
msgstr ""
-#: c-decl.c:1669
+#: c-decl.c:1263
#, c-format
msgid "static declaration for `%s' follows non-static"
msgstr ""
-#: c-decl.c:1677
+#: c-decl.c:1271
#, c-format
msgid "non-static declaration for `%s' follows static"
msgstr ""
-#: c-decl.c:1684
+#: c-decl.c:1278
#, c-format
msgid "const declaration for `%s' follows non-const"
msgstr ""
-#: c-decl.c:1691
+#: c-decl.c:1285
#, c-format
msgid "type qualifiers for `%s' conflict with previous decl"
msgstr ""
-#: c-decl.c:1704
+#: c-decl.c:1298
#, c-format
msgid "redundant redeclaration of `%s' in same scope"
msgstr ""
-#: c-decl.c:2008 java/decl.c:1070
+#: c-decl.c:1599 java/decl.c:1098
#, c-format
msgid "declaration of `%s' shadows a parameter"
msgstr ""
-#: c-decl.c:2011 java/decl.c:1073
+#: c-decl.c:1602 java/decl.c:1101
#, c-format
msgid "declaration of `%s' shadows a symbol from the parameter list"
msgstr ""
-#: c-decl.c:2032 cp/decl.c:4233
+#: c-decl.c:1623 cp/decl.c:4176
msgid "a parameter"
msgstr ""
-#: c-decl.c:2034 cp/decl.c:4250
+#: c-decl.c:1625 cp/decl.c:4193
msgid "a previous local"
msgstr ""
#. XXX shadow warnings in outer-more namespaces
-#: c-decl.c:2038 cp/decl.c:4254
+#: c-decl.c:1629 cp/decl.c:4197
msgid "a global declaration"
msgstr ""
-#: c-decl.c:2082
+#: c-decl.c:1673
#, c-format
msgid "nested extern declaration of `%s'"
msgstr ""
-#: c-decl.c:2101 java/decl.c:1023
+#: c-decl.c:1692 java/decl.c:1051
#, c-format
msgid "`%s' used prior to declaration"
msgstr ""
-#: c-decl.c:2115 c-decl.c:2290
+#: c-decl.c:1706 c-decl.c:1881
#, c-format
msgid "`%s' was declared implicitly `extern' and later `static'"
msgstr ""
-#: c-decl.c:2218 cp/decl.c:4092
+#: c-decl.c:1809 cp/decl.c:4035
msgid "type mismatch with previous external decl"
msgstr ""
-#: c-decl.c:2219
+#: c-decl.c:1810
#, c-format
msgid "previous external decl of `%s'"
msgstr ""
-#: c-decl.c:2232
+#: c-decl.c:1823
msgid "type mismatch with previous implicit declaration"
msgstr ""
-#: c-decl.c:2234
+#: c-decl.c:1825
#, c-format
msgid "previous implicit declaration of `%s'"
msgstr ""
-#: c-decl.c:2269
+#: c-decl.c:1860
#, c-format
msgid "`%s' was previously implicitly declared to return `int'"
msgstr ""
-#: c-decl.c:2294
+#: c-decl.c:1885
#, c-format
msgid "`%s' was declared `extern' and later `static'"
msgstr ""
-#: c-decl.c:2318
+#: c-decl.c:1909
#, c-format
msgid "extern declaration of `%s' doesn't match global one"
msgstr ""
-#: c-decl.c:2360
+#: c-decl.c:1951
#, c-format
msgid "`%s' locally external but globally static"
msgstr ""
-#: c-decl.c:2481
+#: c-decl.c:2073
#, c-format
msgid "function `%s' was previously declared within a block"
msgstr ""
-#: c-decl.c:2501 c-decl.c:2503
+#: c-decl.c:2093 c-decl.c:2095
#, c-format
msgid "implicit declaration of function `%s'"
msgstr ""
-#: c-decl.c:2582
+#: c-decl.c:2174
#, c-format
msgid "label %s referenced outside of any function"
msgstr ""
-#: c-decl.c:2639
+#: c-decl.c:2231
#, c-format
msgid "duplicate label declaration `%s'"
msgstr ""
-#: c-decl.c:2642
+#: c-decl.c:2234
msgid "this is a previous declaration"
msgstr ""
-#: c-decl.c:3098
+#: c-decl.c:2657
msgid "unnamed struct/union that defines no instances"
msgstr ""
-#: c-decl.c:3117
+#: c-decl.c:2676
msgid "useless keyword or type name in empty declaration"
msgstr ""
-#: c-decl.c:3124
+#: c-decl.c:2683
msgid "two types specified in one empty declaration"
msgstr ""
-#: c-decl.c:3129 c-parse.y:731 c-parse.y:733 parse.y:739 parse.y:1824
-#: objc-parse.y:768 objc-parse.y:770 objc-parse.y:3002
+#: c-decl.c:2688 c-parse.y:753 c-parse.y:755 parse.y:765 parse.y:1835
+#: objc-parse.y:800 objc-parse.y:802 objc-parse.y:3043
msgid "empty declaration"
msgstr ""
-#: c-decl.c:3159
+#: c-decl.c:2718
msgid ""
-"ISO C89 does not support `static' or type qualifiers in parameter array "
+"ISO C90 does not support `static' or type qualifiers in parameter array "
"declarators"
msgstr ""
-#: c-decl.c:3161
-msgid "ISO C89 does not support `[*]' array declarators"
+#: c-decl.c:2720
+msgid "ISO C90 does not support `[*]' array declarators"
msgstr ""
-#: c-decl.c:3164
+#: c-decl.c:2723
msgid "GCC does not yet properly implement `[*]' array declarators"
msgstr ""
-#: c-decl.c:3183
+#: c-decl.c:2742
msgid "static or type qualifiers in abstract declarator"
msgstr ""
-#: c-decl.c:3257
+#: c-decl.c:2816
#, c-format
msgid "`%s' is usually a function"
msgstr ""
-#: c-decl.c:3271
+#: c-decl.c:2825
#, c-format
-msgid "typedef `%s' is initialized"
+msgid "typedef `%s' is initialized (use __typeof__ instead)"
msgstr ""
-#: c-decl.c:3278
+#: c-decl.c:2831
#, c-format
msgid "function `%s' is initialized like a variable"
msgstr ""
#. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
-#: c-decl.c:3285
+#: c-decl.c:2838
#, c-format
msgid "parameter `%s' is initialized"
msgstr ""
-#: c-decl.c:3305 c-typeck.c:4846
+#: c-decl.c:2858 c-typeck.c:4854
msgid "variable-sized object may not be initialized"
msgstr ""
-#: c-decl.c:3311
+#: c-decl.c:2864
#, c-format
msgid "variable `%s' has initializer but incomplete type"
msgstr ""
-#: c-decl.c:3317
+#: c-decl.c:2870
#, c-format
msgid "elements of array `%s' have incomplete type"
msgstr ""
-#: c-decl.c:3330
+#: c-decl.c:2883
#, c-format
msgid "declaration of `%s' has `extern' and is initialized"
msgstr ""
-#: c-decl.c:3369 c-decl.c:5999 cp/decl.c:7359 cp/decl.c:13616
+#: c-decl.c:2932 c-decl.c:5694 cp/decl.c:7353 cp/decl.c:13860
#, c-format
msgid "inline function `%s' given attribute noinline"
msgstr ""
-#: c-decl.c:3452
+#: c-decl.c:3006
#, c-format
msgid "initializer fails to determine size of `%s'"
msgstr ""
-#: c-decl.c:3457
+#: c-decl.c:3011
#, c-format
msgid "array size missing in `%s'"
msgstr ""
-#: c-decl.c:3473
+#: c-decl.c:3027
#, c-format
msgid "zero or negative size array `%s'"
msgstr ""
-#: c-decl.c:3501
+#: c-decl.c:3055
#, c-format
msgid "storage size of `%s' isn't known"
msgstr ""
-#: c-decl.c:3511
+#: c-decl.c:3065
#, c-format
msgid "storage size of `%s' isn't constant"
msgstr ""
-#: c-decl.c:3570
+#: c-decl.c:3125
#, c-format
msgid "ignoring asm-specifier for non-static local variable `%s'"
msgstr ""
-#: c-decl.c:3634
+#: c-decl.c:3190
#, c-format
msgid "ISO C forbids parameter `%s' shadowing typedef"
msgstr ""
-#: c-decl.c:3938 cp/decl.c:10164
+#: c-decl.c:3535 cp/decl.c:10433
msgid "`long long long' is too long for GCC"
msgstr ""
-#: c-decl.c:3943
-msgid "ISO C89 does not support `long long'"
+#: c-decl.c:3540
+msgid "ISO C90 does not support `long long'"
msgstr ""
-#: c-decl.c:3948 cp/decl.c:10169
+#: c-decl.c:3549 c-decl.c:3552 cp/decl.c:10438
#, c-format
msgid "duplicate `%s'"
msgstr ""
-#: c-decl.c:3954 cp/decl.c:10193
+#: c-decl.c:3562 cp/decl.c:10445
+msgid "`__thread' before `extern'"
+msgstr ""
+
+#: c-decl.c:3564 cp/decl.c:10447
+msgid "`__thread' before `static'"
+msgstr ""
+
+#: c-decl.c:3572 cp/decl.c:10474
#, c-format
msgid "two or more data types in declaration of `%s'"
msgstr ""
-#: c-decl.c:3974 cp/decl.c:10198
+#: c-decl.c:3592 cp/decl.c:10479
#, c-format
msgid "`%s' fails to be a typedef or built in type"
msgstr ""
-#: c-decl.c:4013
+#: c-decl.c:3631
#, c-format
msgid "type defaults to `int' in declaration of `%s'"
msgstr ""
-#: c-decl.c:4042
+#: c-decl.c:3660
#, c-format
msgid "both long and short specified for `%s'"
msgstr ""
-#: c-decl.c:4046 cp/decl.c:10313
+#: c-decl.c:3664 cp/decl.c:10594
#, c-format
msgid "long or short specified with char for `%s'"
msgstr ""
-#: c-decl.c:4053 cp/decl.c:10317
+#: c-decl.c:3671 cp/decl.c:10598
#, c-format
msgid "long or short specified with floating type for `%s'"
msgstr ""
-#: c-decl.c:4056
+#: c-decl.c:3674
msgid "the only valid combination is `long double'"
msgstr ""
-#: c-decl.c:4062
+#: c-decl.c:3680
#, c-format
msgid "both signed and unsigned specified for `%s'"
msgstr ""
-#: c-decl.c:4064 cp/decl.c:10306
+#: c-decl.c:3682 cp/decl.c:10587
#, c-format
msgid "long, short, signed or unsigned invalid for `%s'"
msgstr ""
-#: c-decl.c:4070 cp/decl.c:10326
+#: c-decl.c:3688 cp/decl.c:10607
#, c-format
msgid "long, short, signed or unsigned used invalidly for `%s'"
msgstr ""
-#: c-decl.c:4089 cp/decl.c:10347
+#: c-decl.c:3706 cp/decl.c:10628
#, c-format
msgid "complex invalid for `%s'"
msgstr ""
-#: c-decl.c:4131
-msgid "ISO C89 does not support complex types"
+#: c-decl.c:3748
+msgid "ISO C90 does not support complex types"
msgstr ""
-#: c-decl.c:4143
+#: c-decl.c:3760
msgid "ISO C does not support plain `complex' meaning `double complex'"
msgstr ""
-#: c-decl.c:4149 c-decl.c:4161
+#: c-decl.c:3766 c-decl.c:3778
msgid "ISO C does not support complex integer types"
msgstr ""
-#: c-decl.c:4176 c-decl.c:4608 cp/decl.c:10962
+#: c-decl.c:3793 c-decl.c:4246 cp/decl.c:11241
msgid "duplicate `const'"
msgstr ""
-#: c-decl.c:4178 c-decl.c:4612 cp/decl.c:10966
+#: c-decl.c:3795 c-decl.c:4250 cp/decl.c:11245
msgid "duplicate `restrict'"
msgstr ""
-#: c-decl.c:4180 c-decl.c:4610 cp/decl.c:10964
+#: c-decl.c:3797 c-decl.c:4248 cp/decl.c:11243
msgid "duplicate `volatile'"
msgstr ""
-#: c-decl.c:4202 cp/decl.c:10502
+#: c-decl.c:3825 cp/decl.c:10791
#, c-format
msgid "multiple storage classes in declaration of `%s'"
msgstr ""
-#: c-decl.c:4211
+#: c-decl.c:3835
msgid "function definition declared `auto'"
msgstr ""
-#: c-decl.c:4213
+#: c-decl.c:3837
msgid "function definition declared `register'"
msgstr ""
-#: c-decl.c:4215
+#: c-decl.c:3839
msgid "function definition declared `typedef'"
msgstr ""
-#: c-decl.c:4228
+#: c-decl.c:3841
+msgid "function definition declared `__thread'"
+msgstr ""
+
+#: c-decl.c:3854
#, c-format
msgid "storage class specified for structure field `%s'"
msgstr ""
-#: c-decl.c:4232 cp/decl.c:10549
+#: c-decl.c:3858 cp/decl.c:10838
#, c-format
msgid "storage class specified for parameter `%s'"
msgstr ""
-#: c-decl.c:4235 cp/decl.c:10551
+#: c-decl.c:3861 cp/decl.c:10840
msgid "storage class specified for typename"
msgstr ""
-#: c-decl.c:4247 cp/decl.c:10565
+#: c-decl.c:3873 cp/decl.c:10855
#, c-format
msgid "`%s' initialized and declared `extern'"
msgstr ""
-#: c-decl.c:4249 cp/decl.c:10568
+#: c-decl.c:3875 cp/decl.c:10858
#, c-format
msgid "`%s' has both `extern' and initializer"
msgstr ""
-#: c-decl.c:4253 cp/decl.c:10572
+#: c-decl.c:3880 cp/decl.c:10866
+#, c-format
+msgid "top-level declaration of `%s' specifies `auto'"
+msgstr ""
+
+#: c-decl.c:3885 cp/decl.c:10862
#, c-format
msgid "nested function `%s' declared `extern'"
msgstr ""
-#: c-decl.c:4256 cp/decl.c:10576
+#: c-decl.c:3891 cp/decl.c:10872
#, c-format
-msgid "top-level declaration of `%s' specifies `auto'"
+msgid "function-scope `%s' implicitly auto and declared `__thread'"
msgstr ""
#. Only the innermost declarator (making a parameter be of
#. array type which is converted to pointer type)
#. may have static or type qualifiers.
-#: c-decl.c:4291 c-decl.c:4480
+#: c-decl.c:3930 c-decl.c:4118
msgid "static or type qualifiers in non-parameter array declarator"
msgstr ""
-#: c-decl.c:4335
+#: c-decl.c:3974
#, c-format
msgid "declaration of `%s' as array of voids"
msgstr ""
-#: c-decl.c:4341
+#: c-decl.c:3980
#, c-format
msgid "declaration of `%s' as array of functions"
msgstr ""
-#: c-decl.c:4362
+#: c-decl.c:3985 c-decl.c:5250
+msgid "invalid use of structure with flexible array member"
+msgstr ""
+
+#: c-decl.c:4004
#, c-format
msgid "size of array `%s' has non-integer type"
msgstr ""
-#: c-decl.c:4367
+#: c-decl.c:4009
#, c-format
msgid "ISO C forbids zero-size array `%s'"
msgstr ""
-#: c-decl.c:4374
+#: c-decl.c:4016
#, c-format
msgid "size of array `%s' is negative"
msgstr ""
-#: c-decl.c:4387
+#: c-decl.c:4029
#, c-format
-msgid "ISO C89 forbids array `%s' whose size can't be evaluated"
+msgid "ISO C90 forbids array `%s' whose size can't be evaluated"
msgstr ""
-#: c-decl.c:4390
+#: c-decl.c:4032
#, c-format
-msgid "ISO C89 forbids variable-size array `%s'"
+msgid "ISO C90 forbids variable-size array `%s'"
msgstr ""
-#: c-decl.c:4420 c-decl.c:4634 cp/decl.c:11172
+#: c-decl.c:4062 c-decl.c:4272 cp/decl.c:11450
#, c-format
msgid "size of array `%s' is too large"
msgstr ""
-#: c-decl.c:4437
-msgid "ISO C89 does not support flexible array members"
+#: c-decl.c:4075
+msgid "ISO C90 does not support flexible array members"
msgstr ""
-#: c-decl.c:4447
+#: c-decl.c:4085
msgid "array type has incomplete element type"
msgstr ""
-#: c-decl.c:4454 c-decl.c:4684
+#: c-decl.c:4092 c-decl.c:4322
msgid "ISO C forbids const or volatile function types"
msgstr ""
-#: c-decl.c:4500 cp/decl.c:10713
+#: c-decl.c:4138 cp/decl.c:10998
#, c-format
msgid "`%s' declared as function returning a function"
msgstr ""
-#: c-decl.c:4505 cp/decl.c:10718
+#: c-decl.c:4143 cp/decl.c:11003
#, c-format
msgid "`%s' declared as function returning an array"
msgstr ""
-#: c-decl.c:4533
+#: c-decl.c:4171
msgid "ISO C forbids qualified void function return type"
msgstr ""
-#: c-decl.c:4537
+#: c-decl.c:4175
msgid "type qualifiers ignored on function return type"
msgstr ""
-#: c-decl.c:4566 c-decl.c:4649 c-decl.c:4773 c-decl.c:4863
+#: c-decl.c:4204 c-decl.c:4287 c-decl.c:4411 c-decl.c:4503
msgid "ISO C forbids qualified function types"
msgstr ""
-#: c-decl.c:4606 cp/decl.c:10958
+#: c-decl.c:4244 cp/decl.c:11237
msgid "invalid type modifier within pointer declarator"
msgstr ""
-#: c-decl.c:4704 cp/decl.c:11450
+#: c-decl.c:4342 cp/decl.c:11732
#, c-format
msgid "variable or field `%s' declared void"
msgstr ""
-#: c-decl.c:4737
+#: c-decl.c:4375
msgid "attributes in parameter array declarator ignored"
msgstr ""
-#: c-decl.c:4762
+#: c-decl.c:4400
msgid "invalid type modifier within array declarator"
msgstr ""
-#: c-decl.c:4807
+#: c-decl.c:4445
#, c-format
msgid "field `%s' declared as a function"
msgstr ""
-#: c-decl.c:4813
+#: c-decl.c:4451
#, c-format
msgid "field `%s' has incomplete type"
msgstr ""
-#: c-decl.c:4845 c-decl.c:4847 c-decl.c:4854
+#: c-decl.c:4483 c-decl.c:4485 c-decl.c:4487 c-decl.c:4494
#, c-format
msgid "invalid storage class for function `%s'"
msgstr ""
-#: c-decl.c:4869
+#: c-decl.c:4509
msgid "`noreturn' function returns non-void value"
msgstr ""
-#: c-decl.c:4884
+#: c-decl.c:4524
msgid "cannot inline function `main'"
msgstr ""
-#: c-decl.c:4937
+#: c-decl.c:4577
#, c-format
msgid "variable `%s' declared `inline'"
msgstr ""
-#: c-decl.c:5010 c-decl.c:6051
+#. A mere warning is sure to result in improper semantics
+#. at runtime. Don't bother to allow this to compile.
+#: c-decl.c:4605 cp/decl.c:9511
+msgid "thread-local storage not supported for this target"
+msgstr ""
+
+#: c-decl.c:4660 c-decl.c:5746
msgid "function declaration isn't a prototype"
msgstr ""
-#: c-decl.c:5016
+#: c-decl.c:4666
msgid "parameter names (without types) in function declaration"
msgstr ""
-#: c-decl.c:5048 c-decl.c:6431
+#: c-decl.c:4698 c-decl.c:6116
#, c-format
msgid "parameter `%s' has incomplete type"
msgstr ""
-#: c-decl.c:5051
+#: c-decl.c:4701
msgid "parameter has incomplete type"
msgstr ""
-#: c-decl.c:5072
+#: c-decl.c:4722
#, c-format
msgid "parameter `%s' points to incomplete type"
msgstr ""
-#: c-decl.c:5075
+#: c-decl.c:4725
msgid "parameter points to incomplete type"
msgstr ""
-#: c-decl.c:5140
+#: c-decl.c:4790
#, c-format
msgid "parameter `%s' has just a forward declaration"
msgstr ""
-#: c-decl.c:5181
+#: c-decl.c:4831
msgid "`void' in parameter list must be the entire list"
msgstr ""
-#: c-decl.c:5212
+#: c-decl.c:4862
#, c-format
msgid "`struct %s' declared inside parameter list"
msgstr ""
-#: c-decl.c:5215
+#: c-decl.c:4865
#, c-format
msgid "`union %s' declared inside parameter list"
msgstr ""
-#: c-decl.c:5218
+#: c-decl.c:4868
#, c-format
msgid "`enum %s' declared inside parameter list"
msgstr ""
-#: c-decl.c:5225
+#: c-decl.c:4875
msgid "anonymous struct declared inside parameter list"
msgstr ""
-#: c-decl.c:5227
+#: c-decl.c:4877
msgid "anonymous union declared inside parameter list"
msgstr ""
-#: c-decl.c:5229
+#: c-decl.c:4879
msgid "anonymous enum declared inside parameter list"
msgstr ""
-#: c-decl.c:5233
+#: c-decl.c:4883
msgid ""
"its scope is only this definition or declaration, which is probably not what "
"you want"
msgstr ""
-#: c-decl.c:5312
+#: c-decl.c:4960
#, c-format
msgid "redefinition of `union %s'"
msgstr ""
-#: c-decl.c:5315
+#: c-decl.c:4962
#, c-format
msgid "redefinition of `struct %s'"
msgstr ""
-#: c-decl.c:5354
-msgid "unnamed fields of type other than struct or union are not allowed"
+#: c-decl.c:5033 cp/decl.c:7125
+msgid "declaration does not declare anything"
msgstr ""
-#: c-decl.c:5395 c-decl.c:5398
+#: c-decl.c:5075 c-decl.c:5078
#, c-format
msgid "%s defined inside parms"
msgstr ""
-#: c-decl.c:5396 c-decl.c:5399 c-decl.c:5410
+#: c-decl.c:5076 c-decl.c:5079 c-decl.c:5090
msgid "union"
msgstr ""
-#: c-decl.c:5396 c-decl.c:5399
+#: c-decl.c:5076 c-decl.c:5079
msgid "structure"
msgstr ""
-#: c-decl.c:5409
+#: c-decl.c:5089
#, c-format
msgid "%s has no %s"
msgstr ""
-#: c-decl.c:5410
+#: c-decl.c:5090
msgid "struct"
msgstr ""
-#: c-decl.c:5411
+#: c-decl.c:5091
msgid "named members"
msgstr ""
-#: c-decl.c:5411
+#: c-decl.c:5091
msgid "members"
msgstr ""
-#: c-decl.c:5450
+#: c-decl.c:5130
#, c-format
msgid "nested redefinition of `%s'"
msgstr ""
-#: c-decl.c:5463
+#: c-decl.c:5143
#, c-format
msgid "bit-field `%s' width not an integer constant"
msgstr ""
-#: c-decl.c:5474
+#: c-decl.c:5154
#, c-format
msgid "bit-field `%s' has invalid type"
msgstr ""
-#: c-decl.c:5486
+#: c-decl.c:5166
#, c-format
msgid "bit-field `%s' type invalid in ISO C"
msgstr ""
-#: c-decl.c:5497
+#: c-decl.c:5177
#, c-format
msgid "negative width in bit-field `%s'"
msgstr ""
-#: c-decl.c:5499
+#: c-decl.c:5179
#, c-format
msgid "width of `%s' exceeds its type"
msgstr ""
-#: c-decl.c:5501
+#: c-decl.c:5181
#, c-format
msgid "zero width for bit-field `%s'"
msgstr ""
-#: c-decl.c:5515
+#: c-decl.c:5195
#, c-format
msgid "`%s' is narrower than values of its type"
msgstr ""
-#: c-decl.c:5561
+#: c-decl.c:5241
msgid "flexible array member in union"
msgstr ""
-#: c-decl.c:5563
+#: c-decl.c:5243
msgid "flexible array member not at end of struct"
msgstr ""
-#: c-decl.c:5565
+#: c-decl.c:5245
msgid "flexible array member in otherwise empty struct"
msgstr ""
-#: c-decl.c:5590
+#: c-decl.c:5275
#, c-format
msgid "duplicate member `%s'"
msgstr ""
-#: c-decl.c:5634
+#: c-decl.c:5319
msgid "union cannot be made transparent"
msgstr ""
#. This enum is a named one that has been declared already.
-#: c-decl.c:5728
+#: c-decl.c:5424
#, c-format
msgid "redeclaration of `enum %s'"
msgstr ""
-#: c-decl.c:5762
+#: c-decl.c:5458
msgid "enum defined inside parms"
msgstr ""
-#: c-decl.c:5795
+#: c-decl.c:5491
msgid "enumeration values exceed range of largest integer"
msgstr ""
-#: c-decl.c:5904
+#: c-decl.c:5600
#, c-format
msgid "enumerator value for `%s' not integer constant"
msgstr ""
-#: c-decl.c:5917
+#: c-decl.c:5613
msgid "overflow in enumeration values"
msgstr ""
-#: c-decl.c:5922
+#: c-decl.c:5618
msgid "ISO C restricts enumerator values to range of `int'"
msgstr ""
-#: c-decl.c:6005
+#: c-decl.c:5700
msgid "return type is an incomplete type"
msgstr ""
-#: c-decl.c:6013
+#: c-decl.c:5708
msgid "return type defaults to `int'"
msgstr ""
-#: c-decl.c:6060
+#: c-decl.c:5755
#, c-format
msgid "no previous prototype for `%s'"
msgstr ""
-#: c-decl.c:6067
+#: c-decl.c:5762
#, c-format
msgid "`%s' was used with no prototype before its definition"
msgstr ""
-#: c-decl.c:6073
+#: c-decl.c:5768
#, c-format
msgid "no previous declaration for `%s'"
msgstr ""
-#: c-decl.c:6080
+#: c-decl.c:5775
#, c-format
msgid "`%s' was used with no declaration before its definition"
msgstr ""
-#: c-decl.c:6104 c-decl.c:6667
+#: c-decl.c:5799 c-decl.c:6352
#, c-format
msgid "return type of `%s' is not `int'"
msgstr ""
-#: c-decl.c:6120
+#: c-decl.c:5815
#, c-format
msgid "first argument of `%s' should be `int'"
msgstr ""
-#: c-decl.c:6129
+#: c-decl.c:5824
#, c-format
msgid "second argument of `%s' should be `char **'"
msgstr ""
-#: c-decl.c:6138
+#: c-decl.c:5833
#, c-format
msgid "third argument of `%s' should probably be `char **'"
msgstr ""
-#: c-decl.c:6147
+#: c-decl.c:5842
#, c-format
msgid "`%s' takes only zero or two arguments"
msgstr ""
-#: c-decl.c:6150
+#: c-decl.c:5845
#, c-format
msgid "`%s' is normally a non-static function"
msgstr ""
-#: c-decl.c:6258
+#: c-decl.c:5943
msgid "parm types given both in parmlist and separately"
msgstr ""
-#: c-decl.c:6279
+#: c-decl.c:5964
msgid "parameter name omitted"
msgstr ""
-#: c-decl.c:6283 c-decl.c:6385
+#: c-decl.c:5968 c-decl.c:6070
#, c-format
msgid "parameter `%s' declared void"
msgstr ""
-#: c-decl.c:6359
+#: c-decl.c:6044
msgid "parameter name missing from parameter list"
msgstr ""
-#: c-decl.c:6378
+#: c-decl.c:6063
#, c-format
msgid "multiple parameters named `%s'"
msgstr ""
-#: c-decl.c:6400 c-decl.c:6402
+#: c-decl.c:6085 c-decl.c:6087
#, c-format
msgid "type of `%s' defaults to `int'"
msgstr ""
-#: c-decl.c:6438
+#: c-decl.c:6123
#, c-format
msgid "declaration for parameter `%s' but no such parameter"
msgstr ""
-#: c-decl.c:6486
+#: c-decl.c:6171
msgid "number of arguments doesn't match prototype"
msgstr ""
-#: c-decl.c:6516
+#: c-decl.c:6201
#, c-format
msgid "promoted argument `%s' doesn't match prototype"
msgstr ""
-#: c-decl.c:6526
+#: c-decl.c:6211
#, c-format
msgid "argument `%s' doesn't match prototype"
msgstr ""
-#: c-decl.c:6699 cp/decl.c:14311
+#: c-decl.c:6384 cp/decl.c:14547
msgid "no return statement in function returning non-void"
msgstr ""
-#: c-decl.c:6855
+#: c-decl.c:6536
msgid "this function may return with or without a value"
msgstr ""
-#: c-decl.c:6875
+#: c-decl.c:6556
#, c-format
msgid "size of return value of `%s' is %u bytes"
msgstr ""
-#: c-decl.c:6879
+#: c-decl.c:6560
#, c-format
msgid "size of return value of `%s' is larger than %d bytes"
msgstr ""
@@ -1457,889 +1524,946 @@ msgstr ""
#. If we get here, declarations have been used in a for loop without
#. the C99 for loop scope. This doesn't make much sense, so don't
#. allow it.
-#: c-decl.c:6934
+#: c-decl.c:6615
msgid "`for' loop initial declaration used outside C99 mode"
msgstr ""
-#: c-decl.c:6958
+#: c-decl.c:6639
#, c-format
msgid "`struct %s' declared in `for' loop initial declaration"
msgstr ""
-#: c-decl.c:6961
+#: c-decl.c:6642
#, c-format
msgid "`union %s' declared in `for' loop initial declaration"
msgstr ""
-#: c-decl.c:6964
+#: c-decl.c:6645
#, c-format
msgid "`enum %s' declared in `for' loop initial declaration"
msgstr ""
-#: c-decl.c:6972
+#: c-decl.c:6653
#, c-format
msgid "declaration of non-variable `%s' in `for' loop initial declaration"
msgstr ""
-#: c-decl.c:6974
+#: c-decl.c:6655
#, c-format
msgid "declaration of static variable `%s' in `for' loop initial declaration"
msgstr ""
-#: c-decl.c:6976
+#: c-decl.c:6657
#, c-format
msgid "declaration of `extern' variable `%s' in `for' loop initial declaration"
msgstr ""
-#: c-format.c:128 c-format.c:210
+#: c-format.c:109 c-format.c:191
msgid "format string arg not a string type"
msgstr ""
-#: c-format.c:143
+#: c-format.c:124
msgid "args to be formatted is not '...'"
msgstr ""
-#: c-format.c:152
+#: c-format.c:133
msgid "strftime formats cannot format arguments"
msgstr ""
-#: c-format.c:187 c-format.c:289
+#: c-format.c:168 c-format.c:270
msgid "format string has invalid operand number"
msgstr ""
-#: c-format.c:221
+#: c-format.c:202
msgid "function does not return string type"
msgstr ""
-#: c-format.c:252
+#: c-format.c:233
msgid "unrecognized format specifier"
msgstr ""
-#: c-format.c:265
+#: c-format.c:246
#, c-format
msgid "`%s' is an unrecognized format function type"
msgstr ""
-#: c-format.c:299
+#: c-format.c:280
msgid "format string arg follows the args to be formatted"
msgstr ""
-#: c-format.c:620
+#: c-format.c:601
msgid "` ' flag"
msgstr ""
-#: c-format.c:620
+#: c-format.c:601
msgid "the ` ' printf flag"
msgstr ""
-#: c-format.c:621 c-format.c:692
+#: c-format.c:602 c-format.c:673
msgid "`+' flag"
msgstr ""
-#: c-format.c:621
+#: c-format.c:602
msgid "the `+' printf flag"
msgstr ""
-#: c-format.c:622 c-format.c:668
+#: c-format.c:603 c-format.c:649
msgid "`#' flag"
msgstr ""
-#: c-format.c:622
+#: c-format.c:603
msgid "the `#' printf flag"
msgstr ""
-#: c-format.c:623 c-format.c:666
+#: c-format.c:604 c-format.c:647
msgid "`0' flag"
msgstr ""
-#: c-format.c:623
+#: c-format.c:604
msgid "the `0' printf flag"
msgstr ""
-#: c-format.c:624 c-format.c:665 c-format.c:695
+#: c-format.c:605 c-format.c:646 c-format.c:676
msgid "`-' flag"
msgstr ""
-#: c-format.c:624
+#: c-format.c:605
msgid "the `-' printf flag"
msgstr ""
-#: c-format.c:625 c-format.c:649
+#: c-format.c:606 c-format.c:630
msgid "`'' flag"
msgstr ""
-#: c-format.c:625
+#: c-format.c:606
msgid "the `'' printf flag"
msgstr ""
-#: c-format.c:626 c-format.c:650
+#: c-format.c:607 c-format.c:631
msgid "`I' flag"
msgstr ""
-#: c-format.c:626
+#: c-format.c:607
msgid "the `I' printf flag"
msgstr ""
-#: c-format.c:627 c-format.c:647 c-format.c:669 c-format.c:696 c-format.c:1790
+#: c-format.c:608 c-format.c:628 c-format.c:650 c-format.c:677 c-format.c:1702
msgid "field width"
msgstr ""
-#: c-format.c:627
+#: c-format.c:608
msgid "field width in printf format"
msgstr ""
-#: c-format.c:628
+#: c-format.c:609
msgid "precision"
msgstr ""
-#: c-format.c:628
+#: c-format.c:609
msgid "precision in printf format"
msgstr ""
-#: c-format.c:629 c-format.c:648 c-format.c:699
+#: c-format.c:610 c-format.c:629 c-format.c:680
msgid "length modifier"
msgstr ""
-#: c-format.c:629
+#: c-format.c:610
msgid "length modifier in printf format"
msgstr ""
-#: c-format.c:645
+#: c-format.c:626
msgid "assignment suppression"
msgstr ""
-#: c-format.c:645
+#: c-format.c:626
msgid "the assignment suppression scanf feature"
msgstr ""
-#: c-format.c:646
+#: c-format.c:627
msgid "`a' flag"
msgstr ""
-#: c-format.c:646
+#: c-format.c:627
msgid "the `a' scanf flag"
msgstr ""
-#: c-format.c:647
+#: c-format.c:628
msgid "field width in scanf format"
msgstr ""
-#: c-format.c:648
+#: c-format.c:629
msgid "length modifier in scanf format"
msgstr ""
-#: c-format.c:649
+#: c-format.c:630
msgid "the `'' scanf flag"
msgstr ""
-#: c-format.c:650
+#: c-format.c:631
msgid "the `I' scanf flag"
msgstr ""
-#: c-format.c:664
+#: c-format.c:645
msgid "`_' flag"
msgstr ""
-#: c-format.c:664
+#: c-format.c:645
msgid "the `_' strftime flag"
msgstr ""
-#: c-format.c:665
+#: c-format.c:646
msgid "the `-' strftime flag"
msgstr ""
-#: c-format.c:666
+#: c-format.c:647
msgid "the `0' strftime flag"
msgstr ""
-#: c-format.c:667 c-format.c:691
+#: c-format.c:648 c-format.c:672
msgid "`^' flag"
msgstr ""
-#: c-format.c:667
+#: c-format.c:648
msgid "the `^' strftime flag"
msgstr ""
-#: c-format.c:668
+#: c-format.c:649
msgid "the `#' strftime flag"
msgstr ""
-#: c-format.c:669
+#: c-format.c:650
msgid "field width in strftime format"
msgstr ""
-#: c-format.c:670
+#: c-format.c:651
msgid "`E' modifier"
msgstr ""
-#: c-format.c:670
+#: c-format.c:651
msgid "the `E' strftime modifier"
msgstr ""
-#: c-format.c:671
+#: c-format.c:652
msgid "`O' modifier"
msgstr ""
-#: c-format.c:671
+#: c-format.c:652
msgid "the `O' strftime modifier"
msgstr ""
-#: c-format.c:672
+#: c-format.c:653
msgid "the `O' modifier"
msgstr ""
-#: c-format.c:690
+#: c-format.c:671
msgid "fill character"
msgstr ""
-#: c-format.c:690
+#: c-format.c:671
msgid "fill character in strfmon format"
msgstr ""
-#: c-format.c:691
+#: c-format.c:672
msgid "the `^' strfmon flag"
msgstr ""
-#: c-format.c:692
+#: c-format.c:673
msgid "the `+' strfmon flag"
msgstr ""
-#: c-format.c:693
+#: c-format.c:674
msgid "`(' flag"
msgstr ""
-#: c-format.c:693
+#: c-format.c:674
msgid "the `(' strfmon flag"
msgstr ""
-#: c-format.c:694
+#: c-format.c:675
msgid "`!' flag"
msgstr ""
-#: c-format.c:694
+#: c-format.c:675
msgid "the `!' strfmon flag"
msgstr ""
-#: c-format.c:695
+#: c-format.c:676
msgid "the `-' strfmon flag"
msgstr ""
-#: c-format.c:696
+#: c-format.c:677
msgid "field width in strfmon format"
msgstr ""
-#: c-format.c:697
+#: c-format.c:678
msgid "left precision"
msgstr ""
-#: c-format.c:697
+#: c-format.c:678
msgid "left precision in strfmon format"
msgstr ""
-#: c-format.c:698
+#: c-format.c:679
msgid "right precision"
msgstr ""
-#: c-format.c:698
+#: c-format.c:679
msgid "right precision in strfmon format"
msgstr ""
-#: c-format.c:699
+#: c-format.c:680
msgid "length modifier in strfmon format"
msgstr ""
-#: c-format.c:998
+#: c-format.c:983
#, c-format
msgid "function might be possible candidate for `%s' format attribute"
msgstr ""
-#: c-format.c:1122 c-format.c:1143 c-format.c:2200
+#: c-format.c:1107 c-format.c:1128 c-format.c:2112
msgid "missing $ operand number in format"
msgstr ""
-#: c-format.c:1153
+#: c-format.c:1138
#, c-format
msgid "%s does not support %%n$ operand number formats"
msgstr ""
-#: c-format.c:1160
+#: c-format.c:1145
msgid "operand number out of range in format"
msgstr ""
-#: c-format.c:1183
+#: c-format.c:1168
#, c-format
msgid "format argument %d used more than once in %s format"
msgstr ""
-#: c-format.c:1233
+#: c-format.c:1218
#, c-format
msgid "format argument %d unused before used argument %d in $-style format"
msgstr ""
-#: c-format.c:1330
+#: c-format.c:1322
msgid "format not a string literal, format string not checked"
msgstr ""
-#: c-format.c:1344
+#: c-format.c:1336
msgid "format not a string literal and no format arguments"
msgstr ""
-#: c-format.c:1346
+#: c-format.c:1338
msgid "format not a string literal, argument types not checked"
msgstr ""
-#: c-format.c:1359
+#: c-format.c:1351
msgid "too many arguments for format"
msgstr ""
-#: c-format.c:1362
+#: c-format.c:1354
msgid "unused arguments in $-style format"
msgstr ""
-#: c-format.c:1365
-msgid "zero-length format string"
+#: c-format.c:1357
+#, c-format
+msgid "zero-length %s format string"
msgstr ""
-#: c-format.c:1368
+#: c-format.c:1361
msgid "format is a wide character string"
msgstr ""
-#: c-format.c:1371
+#: c-format.c:1364
msgid "unterminated format string"
msgstr ""
-#. FIXME: this warning should go away once Marc Espie's
-#. __attribute__((nonnull)) patch is in. Instead, checking for
-#. nonnull attributes should probably change this function to act
-#. specially if info == NULL and add a res->number_null entry for
-#. that case, or maybe add a function pointer to be called at
-#. the end instead of hardcoding check_format_info_main.
-#: c-format.c:1478
-msgid "null format string"
-msgstr ""
-
-#: c-format.c:1669
+#: c-format.c:1581
msgid "embedded `\\0' in format"
msgstr ""
-#: c-format.c:1684
+#: c-format.c:1596
#, c-format
msgid "spurious trailing `%%' in format"
msgstr ""
-#: c-format.c:1723 c-format.c:1960
+#: c-format.c:1635 c-format.c:1872
#, c-format
msgid "repeated %s in format"
msgstr ""
-#: c-format.c:1736
+#: c-format.c:1648
msgid "missing fill character at end of strfmon format"
msgstr ""
-#: c-format.c:1756 c-format.c:1874 c-format.c:2154 c-format.c:2207
+#: c-format.c:1687 c-format.c:1786 c-format.c:2066 c-format.c:2119
msgid "too few arguments for format"
msgstr ""
-#: c-format.c:1816
+#: c-format.c:1728
#, c-format
msgid "zero width in %s format"
msgstr ""
-#: c-format.c:1835
+#: c-format.c:1747
#, c-format
msgid "empty left precision in %s format"
msgstr ""
-#: c-format.c:1889
+#: c-format.c:1801
msgid "field precision"
msgstr ""
-#: c-format.c:1904
+#: c-format.c:1816
#, c-format
msgid "empty precision in %s format"
msgstr ""
-#: c-format.c:1944
+#: c-format.c:1856
#, c-format
msgid "%s does not support the `%s' %s length modifier"
msgstr ""
-#: c-format.c:1994
+#: c-format.c:1906
msgid "conversion lacks type at end of format"
msgstr ""
-#: c-format.c:2005
+#: c-format.c:1917
#, c-format
msgid "unknown conversion type character `%c' in format"
msgstr ""
-#: c-format.c:2008
+#: c-format.c:1920
#, c-format
msgid "unknown conversion type character 0x%x in format"
msgstr ""
-#: c-format.c:2015
+#: c-format.c:1927
#, c-format
msgid "%s does not support the `%%%c' %s format"
msgstr ""
-#: c-format.c:2031
+#: c-format.c:1943
#, c-format
msgid "%s used with `%%%c' %s format"
msgstr ""
-#: c-format.c:2040
+#: c-format.c:1952
#, c-format
msgid "%s does not support %s"
msgstr ""
-#: c-format.c:2049
+#: c-format.c:1961
#, c-format
msgid "%s does not support %s with the `%%%c' %s format"
msgstr ""
-#: c-format.c:2082
+#: c-format.c:1994
#, c-format
msgid "%s ignored with %s and `%%%c' %s format"
msgstr ""
-#: c-format.c:2086
+#: c-format.c:1998
#, c-format
msgid "%s ignored with %s in %s format"
msgstr ""
-#: c-format.c:2092
+#: c-format.c:2004
#, c-format
msgid "use of %s and %s together with `%%%c' %s format"
msgstr ""
-#: c-format.c:2096
+#: c-format.c:2008
#, c-format
msgid "use of %s and %s together in %s format"
msgstr ""
-#: c-format.c:2115
+#: c-format.c:2027
#, c-format
msgid "`%%%c' yields only last 2 digits of year in some locales"
msgstr ""
-#: c-format.c:2118
+#: c-format.c:2030
#, c-format
msgid "`%%%c' yields only last 2 digits of year"
msgstr ""
#. The end of the format string was reached.
-#: c-format.c:2134
+#: c-format.c:2046
#, c-format
msgid "no closing `]' for `%%[' format"
msgstr ""
-#: c-format.c:2147
+#: c-format.c:2059
#, c-format
msgid "use of `%s' length modifier with `%c' type character"
msgstr ""
-#: c-format.c:2168
+#: c-format.c:2080
#, c-format
msgid "%s does not support the `%%%s%c' %s format"
msgstr ""
-#: c-format.c:2183
+#: c-format.c:2095
msgid "operand number specified with suppressed assignment"
msgstr ""
-#: c-format.c:2185
+#: c-format.c:2097
msgid "operand number specified for format taking no argument"
msgstr ""
-#: c-format.c:2299
+#: c-format.c:2211
#, c-format
msgid "writing through null pointer (arg %d)"
msgstr ""
-#: c-format.c:2308
+#: c-format.c:2220
#, c-format
msgid "reading through null pointer (arg %d)"
msgstr ""
-#: c-format.c:2328
+#: c-format.c:2240
#, c-format
msgid "writing into constant object (arg %d)"
msgstr ""
-#: c-format.c:2338
+#: c-format.c:2250
#, c-format
msgid "extra type qualifiers in format argument (arg %d)"
msgstr ""
-#: c-format.c:2345
+#: c-format.c:2257
#, c-format
msgid "format argument is not a pointer (arg %d)"
msgstr ""
-#: c-format.c:2347
+#: c-format.c:2259
#, c-format
msgid "format argument is not a pointer to a pointer (arg %d)"
msgstr ""
-#: c-format.c:2418
+#: c-format.c:2330
msgid "pointer"
msgstr ""
-#: c-format.c:2420
+#: c-format.c:2332
msgid "different type"
msgstr ""
-#: c-format.c:2441
+#: c-format.c:2353
#, c-format
msgid "%s is not type %s (arg %d)"
msgstr ""
-#: c-format.c:2444
+#: c-format.c:2356
#, c-format
msgid "%s format, %s arg (arg %d)"
msgstr ""
-#: c-lex.c:298
-msgid "badly nested C headers from preprocessor"
+#: c-lex.c:153
+msgid "YYDEBUG not defined"
msgstr ""
-#: c-lex.c:348
-#, c-format
-msgid "ignoring #pragma %s %s"
+#: c-lex.c:290
+msgid "badly nested C headers from preprocessor"
msgstr ""
-#: c-lex.c:350
+#: c-lex.c:333
#, c-format
-msgid "ignoring #pragma %s"
+msgid "ignoring #pragma %s %s"
msgstr ""
-#: c-lex.c:400
+#: c-lex.c:383
#, c-format
msgid "universal-character-name '\\U%08x' not valid in identifier"
msgstr ""
-#: c-lex.c:646
+#: c-lex.c:629
#, c-format
msgid "universal-character-name '\\u%04x' not valid in identifier"
msgstr ""
-#: c-lex.c:732
+#: c-lex.c:692
#, c-format
msgid "stray '%c' in program"
msgstr ""
-#: c-lex.c:734
+#: c-lex.c:694
#, c-format
msgid "stray '\\%o' in program"
msgstr ""
-#: c-lex.c:832
-msgid "too many decimal points in floating constant"
+#: c-lex.c:850
+msgid "this decimal constant is unsigned only in ISO C90"
msgstr ""
-#: c-lex.c:834
-msgid "decimal point in exponent - impossible!"
+#: c-lex.c:853
+msgid "this decimal constant would be unsigned in ISO C90"
msgstr ""
-#. Possible future extension: silently ignore _ in numbers,
-#. permitting cosmetic grouping - e.g. 0x8000_0000 == 0x80000000
-#. but somewhat easier to read. Ada has this?
-#: c-lex.c:845
-msgid "underscore in number"
+#: c-lex.c:869
+#, c-format
+msgid "integer constant is too large for \"%s\" type"
msgstr ""
-#: c-lex.c:907
-msgid "numeric constant with no digits"
+#: c-lex.c:937
+#, c-format
+msgid "floating constant exceeds range of \"%s\""
msgstr ""
-#: c-lex.c:910
-msgid "numeric constant contains digits beyond the radix"
+#: c-lex.c:973 cpplex.c:330 cpplex.c:668 cpplex.c:1942
+msgid "ignoring invalid multibyte character"
msgstr ""
-#: c-lex.c:921
-msgid "hexadecimal floating constant has no exponent"
+#: c-opts.c:353
+#, c-format
+msgid "missing argument to \"-%s\""
msgstr ""
-#: c-lex.c:933
-msgid "floating constant exponent has no digits"
+#: c-opts.c:357
+#, c-format
+msgid "no class name specified with \"-%s\""
msgstr ""
-#: c-lex.c:953
-msgid "more than one 'f' suffix on floating constant"
+#: c-opts.c:364
+#, c-format
+msgid "missing filename after \"-%s\""
msgstr ""
-#: c-lex.c:956
-msgid "traditional C rejects the 'f' suffix"
+#: c-opts.c:369
+#, c-format
+msgid "missing target after \"-%s\""
msgstr ""
-#: c-lex.c:963
-msgid "more than one 'l' suffix on floating constant"
+#: c-opts.c:503
+#, c-format
+msgid "options array incorrectly sorted: %s is before %s"
msgstr ""
-#: c-lex.c:966
-msgid "traditional C rejects the 'l' suffix"
+#: c-opts.c:548
+#, c-format
+msgid "too many filenames given. Type %s --help for usage"
msgstr ""
-#: c-lex.c:974
-msgid "more than one 'i' or 'j' suffix on floating constant"
+#: c-opts.c:934
+msgid "-Wno-strict-prototypes is not supported in C++"
msgstr ""
-#: c-lex.c:976 c-lex.c:1081
-msgid "ISO C forbids imaginary numeric constants"
+#: c-opts.c:1014
+#, c-format
+msgid "switch \"%s\" is no longer supported"
msgstr ""
-#: c-lex.c:981
-msgid "invalid suffix on floating constant"
+#: c-opts.c:1030
+#, c-format
+msgid "switch \"%s\" is deprecated, please see documentation for details"
msgstr ""
-#: c-lex.c:990
-msgid "both 'f' and 'l' suffixes on floating constant"
+#: c-opts.c:1143
+msgid ""
+"-fhandle-exceptions has been renamed to -fexceptions (and is now on by "
+"default)"
msgstr ""
-#: c-lex.c:1008
-msgid "hexadecimal floating constants are only valid in C99"
+#: c-opts.c:1263
+msgid "output filename specified twice"
msgstr ""
-#: c-lex.c:1022
-msgid "floating point number exceeds range of 'double'"
+#: c-opts.c:1377
+msgid "-Wformat-y2k ignored without -Wformat"
msgstr ""
-#: c-lex.c:1050
-msgid "two 'u' suffixes on integer constant"
+#: c-opts.c:1379
+msgid "-Wformat-extra-args ignored without -Wformat"
msgstr ""
-#: c-lex.c:1053
-msgid "traditional C rejects the 'u' suffix"
+#: c-opts.c:1381
+msgid "-Wformat-zero-length ignored without -Wformat"
msgstr ""
-#: c-lex.c:1064
-msgid "three 'l' suffixes on integer constant"
+#: c-opts.c:1383
+msgid "-Wformat-nonliteral ignored without -Wformat"
msgstr ""
-#: c-lex.c:1066
-msgid "'lul' is not a valid integer suffix"
+#: c-opts.c:1385
+msgid "-Wformat-security ignored without -Wformat"
msgstr ""
-#: c-lex.c:1068
-msgid "'Ll' and 'lL' are not valid integer suffixes"
+#: c-opts.c:1387
+msgid "-Wmissing-format-attribute ignored without -Wformat"
msgstr ""
-#: c-lex.c:1071
-msgid "ISO C89 forbids long long integer constants"
+#: c-opts.c:1409
+#, c-format
+msgid "opening output file %s"
msgstr ""
-#: c-lex.c:1079
-msgid "more than one 'i' or 'j' suffix on integer constant"
+#: c-opts.c:1464
+#, c-format
+msgid "opening dependency file %s"
msgstr ""
-#: c-lex.c:1086
-msgid "invalid suffix on integer constant"
+#: c-opts.c:1474
+#, c-format
+msgid "closing dependency file %s"
msgstr ""
-#: c-lex.c:1094
+#: c-opts.c:1477
#, c-format
-msgid ""
-"integer constant is too large for this configuration of the compiler - "
-"truncated to %d bits"
+msgid "when writing output to %s"
msgstr ""
-#: c-lex.c:1178
-msgid "width of integer constant is different in traditional C"
+#: c-opts.c:1557
+msgid "to generate dependencies you must specify either -M or -MM"
msgstr ""
-#: c-lex.c:1180
-msgid "integer constant is unsigned in ISO C, signed in traditional C"
+#: c-opts.c:1704
+#, c-format
+msgid "\"-%s\" is valid for %s but not for %s"
msgstr ""
-#: c-lex.c:1182
-msgid "width of integer constant may change on other systems in traditional C"
+#. To keep the lines from getting too long for some compilers, limit
+#. to about 500 characters (6 lines) per chunk.
+#: c-opts.c:1714
+msgid ""
+"Switches:\n"
+" -include <file> Include the contents of <file> before other "
+"files\n"
+" -imacros <file> Accept definition of macros in <file>\n"
+" -iprefix <path> Specify <path> as a prefix for next two options\n"
+" -iwithprefix <dir> Add <dir> to the end of the system include path\n"
+" -iwithprefixbefore <dir> Add <dir> to the end of the main include path\n"
+" -isystem <dir> Add <dir> to the start of the system include "
+"path\n"
msgstr ""
-#: c-lex.c:1192
-#, c-format
-msgid "integer constant larger than the maximum value of %s"
+#: c-opts.c:1723
+msgid ""
+" -idirafter <dir> Add <dir> to the end of the system include path\n"
+" -I <dir> Add <dir> to the end of the main include path\n"
+" -I- Fine-grained include path control; see info "
+"docs\n"
+" -nostdinc Do not search system include directories\n"
+" (dirs specified with -isystem will still be "
+"used)\n"
+" -nostdinc++ Do not search system include directories for C+"
+"+\n"
+" -o <file> Put output into <file>\n"
msgstr ""
-#: c-lex.c:1195
-msgid "an unsigned long long int"
+#: c-opts.c:1732
+msgid ""
+" -trigraphs Support ISO C trigraphs\n"
+" -std=<std name> Specify the conformance standard; one of:\n"
+" gnu89, gnu99, c89, c99, iso9899:1990,\n"
+" iso9899:199409, iso9899:1999, c++98\n"
+" -w Inhibit warning messages\n"
+" -W[no-]trigraphs Warn if trigraphs are encountered\n"
+" -W[no-]comment{s} Warn if one comment starts inside another\n"
msgstr ""
-#: c-lex.c:1196
-msgid "a long long int"
+#: c-opts.c:1741
+msgid ""
+" -W[no-]traditional Warn about features not present in traditional "
+"C\n"
+" -W[no-]undef Warn if an undefined macro is used by #if\n"
+" -W[no-]import Warn about the use of the #import directive\n"
msgstr ""
-#: c-lex.c:1197
-msgid "an unsigned long int"
+#: c-opts.c:1746
+msgid ""
+" -W[no-]error Treat all warnings as errors\n"
+" -W[no-]system-headers Do not suppress warnings from system headers\n"
+" -W[no-]all Enable most preprocessor warnings\n"
msgstr ""
-#: c-lex.c:1201
-msgid "decimal constant is so large that it is unsigned"
+#: c-opts.c:1751
+msgid ""
+" -M Generate make dependencies\n"
+" -MM As -M, but ignore system header files\n"
+" -MD Generate make dependencies and compile\n"
+" -MMD As -MD, but ignore system header files\n"
+" -MF <file> Write dependency output to the given file\n"
+" -MG Treat missing header file as generated files\n"
msgstr ""
-#: c-lex.c:1210
-msgid "complex integer constant is too wide for 'complex int'"
+#: c-opts.c:1759
+msgid ""
+" -MP\t\t\t Generate phony targets for all headers\n"
+" -MQ <target> Add a MAKE-quoted target\n"
+" -MT <target> Add an unquoted target\n"
msgstr ""
-#: c-lex.c:1221
-msgid "integer constant is larger than the maximum value for its type"
+#: c-opts.c:1764
+msgid ""
+" -D<macro> Define a <macro> with string '1' as its value\n"
+" -D<macro>=<val> Define a <macro> with <val> as its value\n"
+" -A<question>=<answer> Assert the <answer> to <question>\n"
+" -A-<question>=<answer> Disable the <answer> to <question>\n"
+" -U<macro> Undefine <macro> \n"
+" -v Display the version number\n"
msgstr ""
-#: c-lex.c:1225
-#, c-format
-msgid "missing white space after number '%.*s'"
+#: c-opts.c:1772
+msgid ""
+" -H Print the name of header files as they are used\n"
+" -C Do not discard comments\n"
+" -dM Display a list of macro definitions active at "
+"end\n"
+" -dD Preserve macro definitions in output\n"
+" -dN As -dD except that only the names are preserved\n"
+" -dI Include #include directives in the output\n"
msgstr ""
-#: c-lex.c:1261 cpplex.c:1850
-msgid "ignoring invalid multibyte character"
+#: c-opts.c:1780
+msgid ""
+" -f[no-]preprocessed Treat the input file as already preprocessed\n"
+" -ftabstop=<number> Distance between tab stops for column reporting\n"
+" -P Do not generate #line directives\n"
+" -remap Remap file names when including files\n"
+" --help Display this information\n"
msgstr ""
#. Like YYERROR but do call yyerror.
-#: c-parse.y:56 parse.y:51 objc-parse.y:57
+#: c-parse.y:55 parse.y:48 objc-parse.y:56
msgid "syntax error"
msgstr ""
-#: /usr/share/bison/bison.simple:176 /usr/share/bison.simple:112
+#: /usr/share/bison/bison.simple:179
msgid "syntax error: cannot back up"
msgstr ""
-#: c-parse.y:286 objc-parse.y:308
+#: c-parse.y:325 objc-parse.y:347
msgid "ISO C forbids an empty source file"
msgstr ""
-#: c-parse.y:322 c-typeck.c:6861 objc-parse.y:345
+#: c-parse.y:366 c-typeck.c:6867 objc-parse.y:389
msgid "argument of `asm' is not a constant string"
msgstr ""
-#: c-parse.y:330 objc-parse.y:353
+#: c-parse.y:374 objc-parse.y:397
msgid "ISO C forbids data definition with no type or storage class"
msgstr ""
-#: c-parse.y:332 objc-parse.y:355
+#: c-parse.y:376 objc-parse.y:399
msgid "data definition has no type or storage class"
msgstr ""
-#: c-parse.y:345 objc-parse.y:368
+#: c-parse.y:389 objc-parse.y:412
msgid "ISO C does not allow extra `;' outside of a function"
msgstr ""
-#: c-parse.y:405 cppexp.c:697
+#: c-parse.y:449 cppexp.c:1312
msgid "traditional C rejects the unary plus operator"
msgstr ""
-#: c-parse.y:467 objc-parse.y:490
+#: c-parse.y:496 objc-parse.y:519
msgid "`sizeof' applied to a bit-field"
msgstr ""
-#: c-parse.y:550 objc-parse.y:573
+#: c-parse.y:583 objc-parse.y:606
msgid "ISO C forbids omitting the middle term of a ?: expression"
msgstr ""
-#: c-parse.y:599 objc-parse.y:622
+#: c-parse.y:632 objc-parse.y:655
msgid "ISO C89 forbids compound literals"
msgstr ""
-#: c-parse.y:613 objc-parse.y:636
+#: c-parse.y:646 objc-parse.y:669
msgid "ISO C forbids braced-groups within expressions"
msgstr ""
-#: c-parse.y:644 objc-parse.y:667
+#: c-parse.y:677 objc-parse.y:700
msgid "first argument to __builtin_choose_expr not a constant"
msgstr ""
-#: c-parse.y:687
-msgid "traditional C rejects string concatenation"
-msgstr ""
-
-#: c-parse.y:702 objc-parse.y:739
-msgid "ISO C does not permit use of `varargs.h'"
+#: c-parse.y:721 objc-parse.y:768
+msgid "traditional C rejects ISO C style function definitions"
msgstr ""
-#: c-parse.y:963 c-parse.y:969 c-parse.y:975 c-parse.y:981 c-parse.y:1002
-#: c-parse.y:1008 c-parse.y:1014 c-parse.y:1020 c-parse.y:1053 c-parse.y:1059
-#: c-parse.y:1065 c-parse.y:1071 c-parse.y:1116 c-parse.y:1122 c-parse.y:1128
-#: c-parse.y:1134 parse.y:1904 parse.y:1911 parse.y:1946 objc-parse.y:1000
-#: objc-parse.y:1006 objc-parse.y:1012 objc-parse.y:1018 objc-parse.y:1039
-#: objc-parse.y:1045 objc-parse.y:1051 objc-parse.y:1057 objc-parse.y:1090
-#: objc-parse.y:1096 objc-parse.y:1102 objc-parse.y:1108 objc-parse.y:1153
-#: objc-parse.y:1159 objc-parse.y:1165 objc-parse.y:1171
+#: c-parse.y:985 c-parse.y:991 c-parse.y:997 c-parse.y:1003 c-parse.y:1024
+#: c-parse.y:1030 c-parse.y:1036 c-parse.y:1042 c-parse.y:1075 c-parse.y:1081
+#: c-parse.y:1087 c-parse.y:1093 c-parse.y:1138 c-parse.y:1144 c-parse.y:1150
+#: c-parse.y:1156 parse.y:1915 parse.y:1922 parse.y:1957 objc-parse.y:1032
+#: objc-parse.y:1038 objc-parse.y:1044 objc-parse.y:1050 objc-parse.y:1071
+#: objc-parse.y:1077 objc-parse.y:1083 objc-parse.y:1089 objc-parse.y:1122
+#: objc-parse.y:1128 objc-parse.y:1134 objc-parse.y:1140 objc-parse.y:1185
+#: objc-parse.y:1191 objc-parse.y:1197 objc-parse.y:1203
#, c-format
msgid "`%s' is not at beginning of declaration"
msgstr ""
-#: c-parse.y:1421 objc-parse.y:1467
+#: c-parse.y:1441 objc-parse.y:1497
msgid "ISO C forbids empty initializer braces"
msgstr ""
-#: c-parse.y:1435 objc-parse.y:1481
+#: c-parse.y:1455 objc-parse.y:1511
msgid "ISO C89 forbids specifying subobject to initialize"
msgstr ""
-#: c-parse.y:1438 objc-parse.y:1484
+#: c-parse.y:1458 objc-parse.y:1514
msgid "obsolete use of designated initializer without `='"
msgstr ""
-#: c-parse.y:1442 objc-parse.y:1488
+#: c-parse.y:1462 objc-parse.y:1518
msgid "obsolete use of designated initializer with `:'"
msgstr ""
-#: c-parse.y:1471
+#: c-parse.y:1489 objc-parse.y:1545
msgid "ISO C forbids specifying range of elements to initialize"
msgstr ""
-#: c-parse.y:1479 c-parse.y:1509 objc-parse.y:1519 objc-parse.y:1549
+#: c-parse.y:1497 c-parse.y:1528 objc-parse.y:1553 objc-parse.y:1584
msgid "ISO C forbids nested functions"
msgstr ""
-#: c-parse.y:1683 objc-parse.y:1725
+#: c-parse.y:1703 objc-parse.y:1761
msgid "ISO C forbids forward references to `enum' types"
msgstr ""
-#: c-parse.y:1695 parse.y:2361 objc-parse.y:1737
+#: c-parse.y:1715 parse.y:2385 objc-parse.y:1773
msgid "comma at end of enumerator list"
msgstr ""
-#: c-parse.y:1703 objc-parse.y:1745
+#: c-parse.y:1723 objc-parse.y:1781
msgid "no semicolon at end of struct or union"
msgstr ""
-#: c-parse.y:1712 objc-parse.y:1754 objc-parse.y:2824
+#: c-parse.y:1732 objc-parse.y:1790 objc-parse.y:2865
msgid "extra semicolon in struct or union specified"
msgstr ""
-#: c-parse.y:1725 objc-parse.y:1781
+#: c-parse.y:1745 objc-parse.y:1817
msgid "ISO C doesn't support unnamed structs/unions"
msgstr ""
-#: c-parse.y:1734 objc-parse.y:1790
+#: c-parse.y:1754 objc-parse.y:1826
msgid "ISO C forbids member declarations with no members"
msgstr ""
-#: c-parse.y:1893 objc-parse.y:1949
+#: c-parse.y:1913 objc-parse.y:1985
msgid "deprecated use of label at end of compound statement"
msgstr ""
-#: c-parse.y:1910 objc-parse.y:1966
+#: c-parse.y:1930 objc-parse.y:2002
msgid "ISO C89 forbids mixed declarations and code"
msgstr ""
-#: c-parse.y:1985 objc-parse.y:2045
+#: c-parse.y:2005 objc-parse.y:2081
msgid "ISO C forbids label declarations"
msgstr ""
-#: c-parse.y:2035 parse.y:1604 objc-parse.y:2095
+#: c-parse.y:2055 parse.y:1627 objc-parse.y:2131
msgid "braced-group within expression allowed only inside a function"
msgstr ""
-#: c-parse.y:2162 objc-parse.y:2222
+#: c-parse.y:2182 objc-parse.y:2258
msgid "empty body in an else-statement"
msgstr ""
-#: c-parse.y:2283 objc-parse.y:2343
+#: c-parse.y:2303 objc-parse.y:2379
msgid "ISO C forbids `goto *expr;'"
msgstr ""
-#: c-parse.y:2383 objc-parse.y:2443
+#: c-parse.y:2403 objc-parse.y:2479
msgid "ISO C forbids forward parameter declarations"
msgstr ""
@@ -2349,175 +2473,181 @@ msgstr ""
#. it caused problems with the code in expand_builtin which
#. tries to verify that BUILT_IN_NEXT_ARG is being used
#. correctly.
-#: c-parse.y:2409 objc-parse.y:2469
+#: c-parse.y:2429 objc-parse.y:2505
msgid "ISO C requires a named argument before `...'"
msgstr ""
-#: c-parse.y:2504 objc-parse.y:2564
+#: c-parse.y:2526 objc-parse.y:2602
msgid "`...' in old-style identifier list"
msgstr ""
-#: /usr/share/bison/bison.simple:821
+#: /usr/share/bison/bison.simple:795
msgid "parse error; also virtual memory exhausted"
msgstr ""
-#: /usr/share/bison/bison.simple:825 /usr/share/bison.simple:654 cp/spew.c:343
+#: /usr/share/bison/bison.simple:799 cp/spew.c:364
msgid "parse error"
msgstr ""
-#: /usr/share/bison/bison.simple:950 /usr/share/bison.simple:367
+#: /usr/share/bison/bison.simple:924
msgid "parser stack overflow"
msgstr ""
-#: c-parse.y:2826 cp/spew.c:1477 objc-parse.y:3514
+#: c-parse.y:2838 cp/spew.c:1521 objc-parse.y:3538
#, c-format
msgid "%s at end of input"
msgstr ""
-#: c-parse.y:2832 cp/spew.c:1483 objc-parse.y:3520
+#: c-parse.y:2844 cp/spew.c:1527 objc-parse.y:3544
#, c-format
msgid "%s before %s'%c'"
msgstr ""
-#: c-parse.y:2834 cp/spew.c:1485 objc-parse.y:3522
+#: c-parse.y:2846 cp/spew.c:1529 objc-parse.y:3546
#, c-format
msgid "%s before %s'\\x%x'"
msgstr ""
-#: c-parse.y:2838 cp/spew.c:1489 objc-parse.y:3526
+#: c-parse.y:2850 cp/spew.c:1533 objc-parse.y:3550
#, c-format
msgid "%s before string constant"
msgstr ""
-#: c-parse.y:2840 cp/spew.c:1491 objc-parse.y:3528
+#: c-parse.y:2852 cp/spew.c:1535 objc-parse.y:3552
#, c-format
msgid "%s before numeric constant"
msgstr ""
-#: c-parse.y:2842 objc-parse.y:3530
+#: c-parse.y:2854 objc-parse.y:3554
#, c-format
msgid "%s before \"%s\""
msgstr ""
-#: c-parse.y:2844 objc-parse.y:3532
+#: c-parse.y:2856 objc-parse.y:3556
#, c-format
msgid "%s before '%s' token"
msgstr ""
-#: c-parse.y:2980 objc-parse.y:3711
-#, c-format
-msgid "syntax error at '%s' token"
+#: c-parse.y:2921
+msgid "traditional C rejects string concatenation"
msgstr ""
-#: c-parse.y:3010 cp/lex.c:861 objc-parse.y:3741
-msgid "YYDEBUG not defined"
+#: c-parse.y:3047 objc-parse.y:3780
+#, c-format
+msgid "syntax error at '%s' token"
msgstr ""
-#: c-pragma.c:109
+#: c-pragma.c:107
msgid ""
"#pragma pack (pop) encountered without matching #pragma pack (push, <n>)"
msgstr ""
-#: c-pragma.c:127
+#: c-pragma.c:125
#, c-format
msgid ""
"#pragma pack(pop, %s) encountered without matching #pragma pack(push, %s, "
"<n>)"
msgstr ""
-#: c-pragma.c:162
+#: c-pragma.c:145
msgid "#pragma pack(push[, id], <n>) is not supported on this target"
msgstr ""
-#: c-pragma.c:164
+#: c-pragma.c:147
msgid "#pragma pack(pop[, id], <n>) is not supported on this target"
msgstr ""
-#: c-pragma.c:184
+#: c-pragma.c:167
msgid "missing '(' after '#pragma pack' - ignored"
msgstr ""
-#: c-pragma.c:197 c-pragma.c:247
+#: c-pragma.c:180 c-pragma.c:230
msgid "malformed '#pragma pack' - ignored"
msgstr ""
-#: c-pragma.c:202
+#: c-pragma.c:185
msgid "malformed '#pragma pack(push[, id], <n>)' - ignored"
msgstr ""
-#: c-pragma.c:204
+#: c-pragma.c:187
msgid "malformed '#pragma pack(pop[, id])' - ignored"
msgstr ""
-#: c-pragma.c:213
+#: c-pragma.c:196
#, c-format
msgid "unknown action '%s' for '#pragma pack' - ignored"
msgstr ""
-#: c-pragma.c:250
+#: c-pragma.c:233
msgid "junk at end of '#pragma pack'"
msgstr ""
-#: c-pragma.c:264
+#: c-pragma.c:247
#, c-format
msgid "alignment must be a small power of two, not %d"
msgstr ""
-#: c-pragma.c:329 c-pragma.c:334
+#: c-pragma.c:280
+#, c-format
+msgid ""
+"applying #pragma weak `%s' after first use results in unspecified behavior"
+msgstr ""
+
+#: c-pragma.c:321 c-pragma.c:326
msgid "malformed #pragma weak, ignored"
msgstr ""
-#: c-pragma.c:338
+#: c-pragma.c:330
msgid "junk at end of #pragma weak"
msgstr ""
-#: c-pragma.c:369 c-pragma.c:374
+#: c-pragma.c:365 c-pragma.c:370
msgid "malformed #pragma redefine_extname, ignored"
msgstr ""
-#: c-pragma.c:379
+#: c-pragma.c:375
msgid "junk at end of #pragma redefine_extname"
msgstr ""
-#: c-pragma.c:386 c-pragma.c:461
+#: c-pragma.c:382 c-pragma.c:463
msgid "#pragma redefine_extname conflicts with declaration"
msgstr ""
-#: c-pragma.c:410
+#: c-pragma.c:413
msgid "malformed #pragma extern_prefix, ignored"
msgstr ""
-#: c-pragma.c:415
+#: c-pragma.c:418
msgid "junk at end of #pragma extern_prefix"
msgstr ""
-#: c-pragma.c:447
+#: c-pragma.c:450
msgid "asm declaration conficts with previous rename"
msgstr ""
-#: c-semantics.c:563
+#: c-semantics.c:565
msgid "break statement not within loop or switch"
msgstr ""
-#: c-semantics.c:581
+#: c-semantics.c:583
msgid "continue statement not within a loop"
msgstr ""
-#: c-semantics.c:676
+#: c-semantics.c:678
msgid "destructor needed for `%#D'"
msgstr ""
-#: c-semantics.c:677
+#: c-semantics.c:679
msgid "where case label appears here"
msgstr ""
-#: c-semantics.c:680
+#: c-semantics.c:682
msgid ""
"(enclose actions of previous case statements requiring destructors in their "
"own scope.)"
msgstr ""
-#: c-semantics.c:723 c-typeck.c:6889 cp/semantics.c:872
+#: c-semantics.c:725 c-typeck.c:6893 cp/semantics.c:897
#, c-format
msgid "%s qualifier ignored on asm"
msgstr ""
@@ -2527,7 +2657,7 @@ msgstr ""
msgid "`%s' has an incomplete type"
msgstr ""
-#: c-typeck.c:145 cp/call.c:2592
+#: c-typeck.c:145 cp/call.c:2740
msgid "invalid use of void expression"
msgstr ""
@@ -2535,7 +2665,7 @@ msgstr ""
msgid "invalid use of flexible array member"
msgstr ""
-#: c-typeck.c:159 cp/typeck2.c:227
+#: c-typeck.c:159
msgid "invalid use of array with unspecified bounds"
msgstr ""
@@ -2554,1280 +2684,1327 @@ msgstr ""
msgid "function types not truly compatible in ISO C"
msgstr ""
-#: c-typeck.c:598
+#: c-typeck.c:603
msgid "types are not quite compatible"
msgstr ""
-#: c-typeck.c:751
-msgid "sizeof applied to a function type"
-msgstr ""
-
-#: c-typeck.c:757
-msgid "sizeof applied to a void type"
-msgstr ""
-
-#: c-typeck.c:764
-msgid "sizeof applied to an incomplete type"
-msgstr ""
-
-#: c-typeck.c:817 c-typeck.c:2706
+#: c-typeck.c:757 c-typeck.c:2673
msgid "arithmetic on pointer to an incomplete type"
msgstr ""
-#: c-typeck.c:1196
+#: c-typeck.c:1136
#, c-format
msgid "%s has no member named `%s'"
msgstr ""
-#: c-typeck.c:1229
+#: c-typeck.c:1169
#, c-format
msgid "request for member `%s' in something not a structure or union"
msgstr ""
-#: c-typeck.c:1261
+#: c-typeck.c:1201
msgid "dereferencing pointer to incomplete type"
msgstr ""
-#: c-typeck.c:1265
+#: c-typeck.c:1205
msgid "dereferencing `void *' pointer"
msgstr ""
-#: c-typeck.c:1282 cp/typeck.c:2357
+#: c-typeck.c:1222 cp/typeck.c:2357
#, c-format
msgid "invalid type argument of `%s'"
msgstr ""
-#: c-typeck.c:1301 cp/typeck.c:2383
+#: c-typeck.c:1241 cp/typeck.c:2383
msgid "subscript missing in array reference"
msgstr ""
-#: c-typeck.c:1322 cp/typeck.c:2425
+#: c-typeck.c:1262 cp/typeck.c:2425
msgid "array subscript has type `char'"
msgstr ""
-#: c-typeck.c:1330 c-typeck.c:1419 cp/typeck.c:2432 cp/typeck.c:2511
+#: c-typeck.c:1270 c-typeck.c:1359 cp/typeck.c:2432 cp/typeck.c:2511
msgid "array subscript is not an integer"
msgstr ""
-#: c-typeck.c:1363
+#: c-typeck.c:1303
msgid "ISO C forbids subscripting `register' array"
msgstr ""
-#: c-typeck.c:1365
-msgid "ISO C89 forbids subscripting non-lvalue array"
+#: c-typeck.c:1305
+msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr ""
-#: c-typeck.c:1398
+#: c-typeck.c:1338
msgid "subscript has type `char'"
msgstr ""
-#: c-typeck.c:1414 cp/typeck.c:2506
+#: c-typeck.c:1354 cp/typeck.c:2506
msgid "subscripted value is neither array nor pointer"
msgstr ""
-#: c-typeck.c:1468
+#: c-typeck.c:1408
#, c-format
msgid "`%s' undeclared here (not in a function)"
msgstr ""
-#: c-typeck.c:1475
+#: c-typeck.c:1415
#, c-format
msgid "`%s' undeclared (first use in this function)"
msgstr ""
-#: c-typeck.c:1480
+#: c-typeck.c:1420
msgid "(Each undeclared identifier is reported only once"
msgstr ""
-#: c-typeck.c:1481
+#: c-typeck.c:1421
msgid "for each function it appears in.)"
msgstr ""
-#: c-typeck.c:1498
+#: c-typeck.c:1438
#, c-format
msgid "local declaration of `%s' hides instance variable"
msgstr ""
-#: c-typeck.c:1563
+#: c-typeck.c:1504
msgid "called object is not a function"
msgstr ""
-#: c-typeck.c:1650 cp/typeck.c:3145
+#: c-typeck.c:1590 cp/typeck.c:2831
msgid "too many arguments to function"
msgstr ""
-#: c-typeck.c:1671
+#: c-typeck.c:1611
#, c-format
msgid "type of formal parameter %d is incomplete"
msgstr ""
-#: c-typeck.c:1684
+#: c-typeck.c:1624
#, c-format
msgid "%s as integer rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:1687
+#: c-typeck.c:1627
#, c-format
msgid "%s as integer rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:1690
+#: c-typeck.c:1630
#, c-format
msgid "%s as complex rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:1693
+#: c-typeck.c:1633
#, c-format
msgid "%s as floating rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:1696
+#: c-typeck.c:1636
#, c-format
msgid "%s as complex rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:1699
+#: c-typeck.c:1639
#, c-format
msgid "%s as floating rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:1709
+#: c-typeck.c:1649
#, c-format
msgid "%s as `float' rather than `double' due to prototype"
msgstr ""
-#: c-typeck.c:1727
+#: c-typeck.c:1667
#, c-format
msgid "%s with different width due to prototype"
msgstr ""
-#: c-typeck.c:1761
+#: c-typeck.c:1701
#, c-format
msgid "%s as unsigned due to prototype"
msgstr ""
-#: c-typeck.c:1763
+#: c-typeck.c:1703
#, c-format
msgid "%s as signed due to prototype"
msgstr ""
-#: c-typeck.c:1797 cp/typeck.c:3253
+#: c-typeck.c:1737 cp/typeck.c:2935
msgid "too few arguments to function"
msgstr ""
-#: c-typeck.c:1839
+#: c-typeck.c:1779
msgid "suggest parentheses around + or - inside shift"
msgstr ""
-#: c-typeck.c:1846
+#: c-typeck.c:1786
msgid "suggest parentheses around && within ||"
msgstr ""
-#: c-typeck.c:1855
+#: c-typeck.c:1795
msgid "suggest parentheses around arithmetic in operand of |"
msgstr ""
-#: c-typeck.c:1858
+#: c-typeck.c:1798
msgid "suggest parentheses around comparison in operand of |"
msgstr ""
-#: c-typeck.c:1867
+#: c-typeck.c:1807
msgid "suggest parentheses around arithmetic in operand of ^"
msgstr ""
-#: c-typeck.c:1870
+#: c-typeck.c:1810
msgid "suggest parentheses around comparison in operand of ^"
msgstr ""
-#: c-typeck.c:1877
+#: c-typeck.c:1817
msgid "suggest parentheses around + or - in operand of &"
msgstr ""
-#: c-typeck.c:1880
+#: c-typeck.c:1820
msgid "suggest parentheses around comparison in operand of &"
msgstr ""
-#: c-typeck.c:1887
+#: c-typeck.c:1827
msgid "comparisons like X<=Y<=Z do not have their mathematical meaning"
msgstr ""
-#: c-typeck.c:2047 c-typeck.c:2080
+#: c-typeck.c:1987 c-typeck.c:2022
msgid "division by zero"
msgstr ""
-#: c-typeck.c:2125 cp/typeck.c:3514
+#: c-typeck.c:2067 cp/typeck.c:3196
msgid "right shift count is negative"
msgstr ""
-#: c-typeck.c:2132 cp/typeck.c:3520
+#: c-typeck.c:2074 cp/typeck.c:3202
msgid "right shift count >= width of type"
msgstr ""
-#: c-typeck.c:2153 cp/typeck.c:3539
+#: c-typeck.c:2095 cp/typeck.c:3221
msgid "left shift count is negative"
msgstr ""
-#: c-typeck.c:2156 cp/typeck.c:3541
+#: c-typeck.c:2098 cp/typeck.c:3223
msgid "left shift count >= width of type"
msgstr ""
-#: c-typeck.c:2177
+#: c-typeck.c:2119
msgid "shift count is negative"
msgstr ""
-#: c-typeck.c:2179
+#: c-typeck.c:2121
msgid "shift count >= width of type"
msgstr ""
-#: c-typeck.c:2196 cp/typeck.c:3576
+#: c-typeck.c:2138 cp/typeck.c:3258
msgid "comparing floating point with == or != is unsafe"
msgstr ""
-#: c-typeck.c:2220 c-typeck.c:2226
+#: c-typeck.c:2164 c-typeck.c:2170
msgid "ISO C forbids comparison of `void *' with function pointer"
msgstr ""
-#: c-typeck.c:2229 c-typeck.c:2269 c-typeck.c:2297
+#: c-typeck.c:2173 c-typeck.c:2213 c-typeck.c:2241
msgid "comparison of distinct pointer types lacks a cast"
msgstr ""
-#: c-typeck.c:2243 c-typeck.c:2248 c-typeck.c:2317 c-typeck.c:2322
+#: c-typeck.c:2187 c-typeck.c:2192 c-typeck.c:2261 c-typeck.c:2266
msgid "comparison between pointer and integer"
msgstr ""
-#: c-typeck.c:2264 c-typeck.c:2292
+#: c-typeck.c:2208 c-typeck.c:2236
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr ""
-#: c-typeck.c:2289
+#: c-typeck.c:2233
msgid "comparison of complete and incomplete pointers"
msgstr ""
-#: c-typeck.c:2305 c-typeck.c:2312
+#: c-typeck.c:2249 c-typeck.c:2256
msgid "ordered comparison of pointer with integer zero"
msgstr ""
-#: c-typeck.c:2336 cp/typeck.c:3709
+#: c-typeck.c:2280 cp/typeck.c:3391
msgid "unordered comparison on non-floating point argument"
msgstr ""
-#: c-typeck.c:2545
+#: c-typeck.c:2491
msgid "comparison between signed and unsigned"
msgstr ""
-#: c-typeck.c:2591 cp/typeck.c:3953
+#: c-typeck.c:2537 cp/typeck.c:3635
msgid "comparison of promoted ~unsigned with constant"
msgstr ""
-#: c-typeck.c:2599 cp/typeck.c:3961
+#: c-typeck.c:2545 cp/typeck.c:3643
msgid "comparison of promoted ~unsigned with unsigned"
msgstr ""
-#: c-typeck.c:2658
+#: c-typeck.c:2625
msgid "pointer of type `void *' used in subtraction"
msgstr ""
-#: c-typeck.c:2660
+#: c-typeck.c:2627
msgid "pointer to a function used in subtraction"
msgstr ""
-#: c-typeck.c:2757
+#: c-typeck.c:2724
msgid "wrong type argument to unary plus"
msgstr ""
-#: c-typeck.c:2768
+#: c-typeck.c:2737
msgid "wrong type argument to unary minus"
msgstr ""
-#: c-typeck.c:2780
+#: c-typeck.c:2754
msgid "ISO C does not support `~' for complex conjugation"
msgstr ""
-#: c-typeck.c:2786
+#: c-typeck.c:2760
msgid "wrong type argument to bit-complement"
msgstr ""
-#: c-typeck.c:2797
+#: c-typeck.c:2769
msgid "wrong type argument to abs"
msgstr ""
-#: c-typeck.c:2809
+#: c-typeck.c:2781
msgid "wrong type argument to conjugation"
msgstr ""
-#: c-typeck.c:2823
+#: c-typeck.c:2795
msgid "wrong type argument to unary exclamation mark"
msgstr ""
-#: c-typeck.c:2866
+#: c-typeck.c:2838
msgid "ISO C does not support `++' and `--' on complex types"
msgstr ""
-#: c-typeck.c:2881 c-typeck.c:2913
+#: c-typeck.c:2853 c-typeck.c:2885
msgid "wrong type argument to increment"
msgstr ""
-#: c-typeck.c:2883 c-typeck.c:2915
+#: c-typeck.c:2855 c-typeck.c:2887
msgid "wrong type argument to decrement"
msgstr ""
-#: c-typeck.c:2904
+#: c-typeck.c:2876
msgid "increment of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:2906
+#: c-typeck.c:2878
msgid "decrement of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3043
+#: c-typeck.c:3015
msgid "ISO C forbids the address of a cast expression"
msgstr ""
-#: c-typeck.c:3053
+#: c-typeck.c:3025
msgid "invalid lvalue in unary `&'"
msgstr ""
-#: c-typeck.c:3085
+#: c-typeck.c:3057
#, c-format
msgid "attempt to take address of bit-field structure member `%s'"
msgstr ""
-#: c-typeck.c:3194 c-typeck.c:4624 c-typeck.c:4640 c-typeck.c:4656
-#: final.c:2975 final.c:2977 gcc.c:4466 rtl-error.c:121 tradcif.y:532
-#: tradcpp.c:4138 config/cris/cris.c:515 cp/typeck.c:4661 java/expr.c:386
-#: java/verify.c:1464 java/verify.c:1465 java/verify.c:1480
+#: c-typeck.c:3166 c-typeck.c:4632 c-typeck.c:4648 c-typeck.c:4664
+#: final.c:3146 final.c:3148 gcc.c:4397 rtl-error.c:122 toplev.c:1694
+#: config/cris/cris.c:529 cp/typeck.c:4341 java/expr.c:364 java/verify.c:1467
+#: java/verify.c:1468 java/verify.c:1483
#, c-format
msgid "%s"
msgstr ""
-#: c-typeck.c:3255
+#: c-typeck.c:3227
msgid "ISO C forbids use of conditional expressions as lvalues"
msgstr ""
-#: c-typeck.c:3258
+#: c-typeck.c:3230
msgid "ISO C forbids use of compound expressions as lvalues"
msgstr ""
-#: c-typeck.c:3261
+#: c-typeck.c:3233
msgid "ISO C forbids use of cast expressions as lvalues"
msgstr ""
-#: c-typeck.c:3278
+#: c-typeck.c:3250
#, c-format
msgid "%s of read-only member `%s'"
msgstr ""
-#: c-typeck.c:3282
+#: c-typeck.c:3254
#, c-format
msgid "%s of read-only variable `%s'"
msgstr ""
-#: c-typeck.c:3285
+#: c-typeck.c:3257
#, c-format
msgid "%s of read-only location"
msgstr ""
-#: c-typeck.c:3304
+#: c-typeck.c:3276
#, c-format
msgid "cannot take address of bit-field `%s'"
msgstr ""
-#: c-typeck.c:3332
+#: c-typeck.c:3304
#, c-format
msgid "global register variable `%s' used in nested function"
msgstr ""
-#: c-typeck.c:3336
+#: c-typeck.c:3308
#, c-format
msgid "register variable `%s' used in nested function"
msgstr ""
-#: c-typeck.c:3343
+#: c-typeck.c:3315
#, c-format
msgid "address of global register variable `%s' requested"
msgstr ""
-#: c-typeck.c:3355
+#: c-typeck.c:3327
msgid "cannot put object with volatile field into register"
msgstr ""
-#: c-typeck.c:3359
+#: c-typeck.c:3331
#, c-format
msgid "address of register variable `%s' requested"
msgstr ""
-#: c-typeck.c:3467
+#: c-typeck.c:3439
msgid "signed and unsigned type in conditional expression"
msgstr ""
-#: c-typeck.c:3474
+#: c-typeck.c:3446
msgid "ISO C forbids conditional expr with only one void side"
msgstr ""
-#: c-typeck.c:3490 c-typeck.c:3497
+#: c-typeck.c:3462 c-typeck.c:3469
msgid "ISO C forbids conditional expr between `void *' and function pointer"
msgstr ""
-#: c-typeck.c:3503
+#: c-typeck.c:3475
msgid "pointer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:3510 c-typeck.c:3520
+#: c-typeck.c:3482 c-typeck.c:3492
msgid "pointer/integer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:3534
+#: c-typeck.c:3506
msgid "type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:3605 cp/typeck.c:4918
+#: c-typeck.c:3577 cp/typeck.c:4597
msgid "left-hand operand of comma expression has no effect"
msgstr ""
-#: c-typeck.c:3644
+#: c-typeck.c:3621
msgid "cast specifies array type"
msgstr ""
-#: c-typeck.c:3650
+#: c-typeck.c:3627
msgid "cast specifies function type"
msgstr ""
-#: c-typeck.c:3660
+#: c-typeck.c:3637
msgid "ISO C forbids casting nonscalar to the same type"
msgstr ""
-#: c-typeck.c:3679
+#: c-typeck.c:3656
msgid "ISO C forbids casts to union type"
msgstr ""
-#: c-typeck.c:3694
+#: c-typeck.c:3671
msgid "cast to union type from type not present in union"
msgstr ""
-#: c-typeck.c:3745
+#: c-typeck.c:3722
msgid "cast adds new qualifiers to function type"
msgstr ""
#. There are qualifiers present in IN_OTYPE that are not
#. present in IN_TYPE.
-#: c-typeck.c:3750
+#: c-typeck.c:3727
msgid "cast discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:3765
+#: c-typeck.c:3742
msgid "cast increases required alignment of target type"
msgstr ""
-#: c-typeck.c:3771 cp/typeck.c:5348
+#: c-typeck.c:3748 cp/typeck.c:5027
msgid "cast from pointer to integer of different size"
msgstr ""
-#: c-typeck.c:3776
+#: c-typeck.c:3753
msgid "cast does not match function type"
msgstr ""
-#: c-typeck.c:3783 cp/typeck.c:5355
+#: c-typeck.c:3760 cp/typeck.c:5034
msgid "cast to pointer from integer of different size"
msgstr ""
+#: c-typeck.c:3772
+msgid "type-punning to incomplete type might break strict-aliasing rules"
+msgstr ""
+
+#: c-typeck.c:3776
+msgid "dereferencing type-punned pointer will break strict-aliasing rules"
+msgstr ""
+
#. Now we have handled acceptable kinds of LHS that are not truly lvalues.
#. Reject anything strange now.
-#: c-typeck.c:3941
+#: c-typeck.c:3935
msgid "invalid lvalue in assignment"
msgstr ""
#. Convert new value to destination type.
-#: c-typeck.c:3950 c-typeck.c:3975 c-typeck.c:3992 cp/typeck.c:5465
-#: cp/typeck.c:5616
+#: c-typeck.c:3944 c-typeck.c:3969 c-typeck.c:3986 cp/typeck.c:5145
+#: cp/typeck.c:5294
msgid "assignment"
msgstr ""
-#: c-typeck.c:4060
+#: c-typeck.c:4056
msgid "cannot pass rvalue to reference parameter"
msgstr ""
-#: c-typeck.c:4164 c-typeck.c:4231
+#: c-typeck.c:4160 c-typeck.c:4227
#, c-format
msgid "%s makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:4168 c-typeck.c:4211
+#: c-typeck.c:4164 c-typeck.c:4207
#, c-format
msgid "%s discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4174
+#: c-typeck.c:4170
msgid "ISO C prohibits argument conversion to union type"
msgstr ""
-#: c-typeck.c:4203
+#: c-typeck.c:4199
#, c-format
msgid "ISO C forbids %s between function pointer and `void *'"
msgstr ""
-#: c-typeck.c:4220
+#: c-typeck.c:4216
#, c-format
msgid "pointer targets in %s differ in signedness"
msgstr ""
-#: c-typeck.c:4236
+#: c-typeck.c:4232
#, c-format
msgid "%s from incompatible pointer type"
msgstr ""
-#: c-typeck.c:4252
+#: c-typeck.c:4248
#, c-format
msgid "%s makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:4260
+#: c-typeck.c:4256
#, c-format
msgid "%s makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:4274 c-typeck.c:4277
+#: c-typeck.c:4270 c-typeck.c:4273
#, c-format
msgid "incompatible type for argument %d of `%s'"
msgstr ""
-#: c-typeck.c:4281
+#: c-typeck.c:4277
#, c-format
msgid "incompatible type for argument %d of indirect function call"
msgstr ""
-#: c-typeck.c:4285
+#: c-typeck.c:4281
#, c-format
msgid "incompatible types in %s"
msgstr ""
#. Function name is known; supply it.
-#: c-typeck.c:4340
+#: c-typeck.c:4339
+#, c-format
+msgid "passing arg of `%s'"
+msgstr ""
+
+#. Function name unknown (call through ptr).
+#: c-typeck.c:4349
+msgid "passing arg of pointer to function"
+msgstr ""
+
+#. Function name is known; supply it.
+#: c-typeck.c:4357
#, c-format
msgid "passing arg %d of `%s'"
msgstr ""
#. Function name unknown (call through ptr); just give arg number.
-#: c-typeck.c:4350
+#: c-typeck.c:4367
#, c-format
msgid "passing arg %d of pointer to function"
msgstr ""
-#: c-typeck.c:4416
+#: c-typeck.c:4433
msgid "initializer for static variable is not constant"
msgstr ""
-#: c-typeck.c:4422
+#: c-typeck.c:4439
msgid "initializer for static variable uses complicated arithmetic"
msgstr ""
-#: c-typeck.c:4430
+#: c-typeck.c:4447
msgid "aggregate initializer is not constant"
msgstr ""
-#: c-typeck.c:4432
+#: c-typeck.c:4449
msgid "aggregate initializer uses complicated arithmetic"
msgstr ""
-#: c-typeck.c:4439
+#: c-typeck.c:4456
msgid "traditional C rejects automatic aggregate initialization"
msgstr ""
-#: c-typeck.c:4627 c-typeck.c:4643 c-typeck.c:4659
+#: c-typeck.c:4635 c-typeck.c:4651 c-typeck.c:4667
#, c-format
msgid "(near initialization for `%s')"
msgstr ""
-#: c-typeck.c:4710 cp/typeck2.c:513
+#: c-typeck.c:4718 cp/typeck2.c:505
msgid "char-array initialized from wide string"
msgstr ""
-#: c-typeck.c:4717 cp/typeck2.c:520
+#: c-typeck.c:4725 cp/typeck2.c:512
msgid "int-array initialized from non-wide string"
msgstr ""
-#: c-typeck.c:4735 cp/typeck2.c:536
+#: c-typeck.c:4743 cp/typeck2.c:528
msgid "initializer-string for array of chars is too long"
msgstr ""
-#: c-typeck.c:4773
+#: c-typeck.c:4781
msgid "array initialized from non-constant array expression"
msgstr ""
-#: c-typeck.c:4790 c-typeck.c:4792 c-typeck.c:4808 c-typeck.c:4829
-#: c-typeck.c:6229
+#: c-typeck.c:4798 c-typeck.c:4800 c-typeck.c:4816 c-typeck.c:4837
+#: c-typeck.c:6237
msgid "initializer element is not constant"
msgstr ""
-#: c-typeck.c:4824
+#: c-typeck.c:4832
msgid "initialization"
msgstr ""
-#: c-typeck.c:4835 c-typeck.c:6234
+#: c-typeck.c:4843 c-typeck.c:6242
msgid "initializer element is not computable at load time"
msgstr ""
-#: c-typeck.c:4850 cp/typeck2.c:613
+#: c-typeck.c:4858 cp/typeck2.c:605
msgid "invalid initializer"
msgstr ""
-#: c-typeck.c:5343
+#: c-typeck.c:5351
msgid "extra brace group at end of initializer"
msgstr ""
-#: c-typeck.c:5363
+#: c-typeck.c:5371
msgid "missing braces around initializer"
msgstr ""
-#: c-typeck.c:5423
+#: c-typeck.c:5431
msgid "braces around scalar initializer"
msgstr ""
-#: c-typeck.c:5471
+#: c-typeck.c:5479
msgid "initialization of flexible array member in a nested context"
msgstr ""
-#: c-typeck.c:5473
+#: c-typeck.c:5481
msgid "initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:5504
+#: c-typeck.c:5512
msgid "missing initializer"
msgstr ""
-#: c-typeck.c:5530
+#: c-typeck.c:5538
msgid "empty scalar initializer"
msgstr ""
-#: c-typeck.c:5535
+#: c-typeck.c:5543
msgid "extra elements in scalar initializer"
msgstr ""
-#: c-typeck.c:5621
+#: c-typeck.c:5629
msgid "initialization designators may not nest"
msgstr ""
-#: c-typeck.c:5642 c-typeck.c:5713
+#: c-typeck.c:5650 c-typeck.c:5721
msgid "array index in non-array initializer"
msgstr ""
-#: c-typeck.c:5647 c-typeck.c:5765
+#: c-typeck.c:5655 c-typeck.c:5773
msgid "field name not in record or union initializer"
msgstr ""
-#: c-typeck.c:5709 c-typeck.c:5711
+#: c-typeck.c:5717 c-typeck.c:5719
msgid "nonconstant array index in initializer"
msgstr ""
-#: c-typeck.c:5716
+#: c-typeck.c:5724
msgid "array index in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:5727
+#: c-typeck.c:5735
msgid "empty index range in initializer"
msgstr ""
-#: c-typeck.c:5736
+#: c-typeck.c:5744
msgid "array index range in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:5777
+#: c-typeck.c:5785
#, c-format
msgid "unknown field `%s' specified in initializer"
msgstr ""
-#: c-typeck.c:5814 c-typeck.c:5835 c-typeck.c:6296
+#: c-typeck.c:5822 c-typeck.c:5843 c-typeck.c:6304
msgid "initialized field with side-effects overwritten"
msgstr ""
-#: c-typeck.c:6506
+#: c-typeck.c:6514
msgid "excess elements in char array initializer"
msgstr ""
-#: c-typeck.c:6513 c-typeck.c:6559
+#: c-typeck.c:6521 c-typeck.c:6567
msgid "excess elements in struct initializer"
msgstr ""
-#: c-typeck.c:6574
+#: c-typeck.c:6582
msgid "non-static initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:6636
+#: c-typeck.c:6644
msgid "excess elements in union initializer"
msgstr ""
-#: c-typeck.c:6657
+#: c-typeck.c:6665
msgid "traditional C rejects initialization of unions"
msgstr ""
-#: c-typeck.c:6720
+#: c-typeck.c:6728
msgid "excess elements in array initializer"
msgstr ""
-#: c-typeck.c:6749
+#: c-typeck.c:6757
msgid "excess elements in vector initializer"
msgstr ""
-#: c-typeck.c:6771
+#: c-typeck.c:6779
msgid "excess elements in scalar initializer"
msgstr ""
-#: c-typeck.c:6882
+#: c-typeck.c:6886
msgid "asm template is not a string constant"
msgstr ""
-#: c-typeck.c:6914
+#: c-typeck.c:6918
msgid "invalid lvalue in asm statement"
msgstr ""
-#: c-typeck.c:6985
+#: c-typeck.c:6993
msgid "modification by `asm'"
msgstr ""
-#: c-typeck.c:7004 cp/typeck.c:6464
+#: c-typeck.c:7012 cp/typeck.c:6152
msgid "function declared `noreturn' has a `return' statement"
msgstr ""
-#: c-typeck.c:7011
+#: c-typeck.c:7019
msgid "`return' with no value, in function returning non-void"
msgstr ""
-#: c-typeck.c:7017
+#: c-typeck.c:7025
msgid "`return' with a value, in function returning void"
msgstr ""
-#: c-typeck.c:7021
+#: c-typeck.c:7029
msgid "return"
msgstr ""
-#: c-typeck.c:7073
+#: c-typeck.c:7081
msgid "function returns address of local variable"
msgstr ""
-#: c-typeck.c:7129 cp/semantics.c:527
+#: c-typeck.c:7137 cp/semantics.c:555
msgid "switch quantity not an integer"
msgstr ""
-#: c-typeck.c:7139
+#: c-typeck.c:7147
msgid "`long' switch expression not converted to `int' in ISO C"
msgstr ""
-#: c-typeck.c:7174 cp/decl.c:5229
+#: c-typeck.c:7182 cp/decl.c:5173
msgid "case label not within a switch statement"
msgstr ""
-#: c-typeck.c:7176 cp/decl.c:5234
+#: c-typeck.c:7184 cp/decl.c:5178
msgid "`default' label not within a switch statement"
msgstr ""
-#: calls.c:1903
+#: calls.c:1921
#, c-format
msgid "inlining failed in call to `%s'"
msgstr ""
-#: calls.c:1904 calls.c:2210
+#: calls.c:1922 calls.c:2228
msgid "called from here"
msgstr ""
-#: calls.c:2209
+#: calls.c:2227
#, c-format
msgid "can't inline call to `%s'"
msgstr ""
-#: calls.c:2239
+#: calls.c:2257
msgid "function call has aggregate value"
msgstr ""
-#: calls.c:4551
+#: calls.c:4614
msgid "variable offset is passed partially in stack and in reg"
msgstr ""
-#: calls.c:4553
+#: calls.c:4616
msgid "variable size is passed partially in stack and in reg"
msgstr ""
-#: cfgrtl.c:1723
+#: cfgloop.c:1106
+#, c-format
+msgid "Size of loop %d should be %d, not %d."
+msgstr ""
+
+#: cfgloop.c:1125
+#, c-format
+msgid "Bb %d do not belong to loop %d."
+msgstr ""
+
+#: cfgloop.c:1143
+#, c-format
+msgid "Loop %d's header does not have exactly 2 entries."
+msgstr ""
+
+#: cfgloop.c:1151
+#, c-format
+msgid "Loop %d's latch does not have exactly 1 successor."
+msgstr ""
+
+#: cfgloop.c:1156
+#, c-format
+msgid "Loop %d's latch does not have header as successor."
+msgstr ""
+
+#: cfgloop.c:1161
+#, c-format
+msgid "Loop %d's latch does not belong directly to it."
+msgstr ""
+
+#: cfgloop.c:1167
+#, c-format
+msgid "Loop %d's header does not belong directly to it."
+msgstr ""
+
+#: cfgrtl.c:1704
+#, c-format
+msgid "bb %d on wrong place"
+msgstr ""
+
+#: cfgrtl.c:1710
+#, c-format
+msgid "prev_bb of %d should be %d, not %d"
+msgstr ""
+
+#: cfgrtl.c:1730
#, c-format
msgid "end insn %d for block %d not found in the insn stream"
msgstr ""
-#: cfgrtl.c:1737
+#: cfgrtl.c:1744
#, c-format
msgid "insn %d is in multiple basic blocks (%d and %d)"
msgstr ""
-#: cfgrtl.c:1749
+#: cfgrtl.c:1756
#, c-format
msgid "head insn %d for block %d not found in the insn stream"
msgstr ""
-#: cfgrtl.c:1771
+#: cfgrtl.c:1778
#, c-format
msgid "verify_flow_info: REG_BR_PROB does not match cfg %i %i"
msgstr ""
-#: cfgrtl.c:1778
+#: cfgrtl.c:1785
#, c-format
msgid "verify_flow_info: Wrong count of block %i %i"
msgstr ""
-#: cfgrtl.c:1784
+#: cfgrtl.c:1791
#, c-format
msgid "verify_flow_info: Wrong frequency of block %i %i"
msgstr ""
-#: cfgrtl.c:1792
+#: cfgrtl.c:1799
#, c-format
msgid "verify_flow_info: Duplicate edge %i->%i"
msgstr ""
-#: cfgrtl.c:1798
+#: cfgrtl.c:1805
#, c-format
msgid "verify_flow_info: Wrong probability of edge %i->%i %i"
msgstr ""
-#: cfgrtl.c:1804
+#: cfgrtl.c:1811
#, c-format
msgid "verify_flow_info: Wrong count of edge %i->%i %i"
msgstr ""
-#: cfgrtl.c:1834
+#: cfgrtl.c:1841
#, c-format
msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
msgstr ""
-#: cfgrtl.c:1849
+#: cfgrtl.c:1856
#, c-format
msgid "verify_flow_info: Incorrect fallthru %i->%i"
msgstr ""
-#: cfgrtl.c:1851
+#: cfgrtl.c:1858
msgid "wrong insn in the fallthru edge"
msgstr ""
-#: cfgrtl.c:1858
+#: cfgrtl.c:1865
#, c-format
msgid "verify_flow_info: Basic block %d succ edge is corrupted"
msgstr ""
-#: cfgrtl.c:1874
+#: cfgrtl.c:1881
#, c-format
msgid "Missing REG_EH_REGION note in the end of bb %i"
msgstr ""
-#: cfgrtl.c:1882
+#: cfgrtl.c:1889
#, c-format
msgid "Too many outgoing branch edges from bb %i"
msgstr ""
-#: cfgrtl.c:1887
+#: cfgrtl.c:1894
#, c-format
msgid "Fallthru edge after unconditional jump %i"
msgstr ""
-#: cfgrtl.c:1892
+#: cfgrtl.c:1899
#, c-format
msgid "Wrong amount of branch edges after unconditional jump %i"
msgstr ""
-#: cfgrtl.c:1898
+#: cfgrtl.c:1905
#, c-format
msgid "Wrong amount of branch edges after conditional jump %i"
msgstr ""
-#: cfgrtl.c:1903
+#: cfgrtl.c:1910
#, c-format
msgid "Call edges for non-call insn in bb %i"
msgstr ""
-#: cfgrtl.c:1912
+#: cfgrtl.c:1919
#, c-format
msgid "Abnormal edges for no purpose in bb %i"
msgstr ""
-#: cfgrtl.c:1927
+#: cfgrtl.c:1934
#, c-format
msgid "missing barrier after block %i"
msgstr ""
-#: cfgrtl.c:1937
+#: cfgrtl.c:1944
#, c-format
msgid "basic block %d pred edge is corrupted"
msgstr ""
-#: cfgrtl.c:1954
+#: cfgrtl.c:1961
#, c-format
msgid "insn %d inside basic block %d but block_for_insn is NULL"
msgstr ""
-#: cfgrtl.c:1958
+#: cfgrtl.c:1965
#, c-format
msgid "insn %d inside basic block %d but block_for_insn is %i"
msgstr ""
-#: cfgrtl.c:1972 cfgrtl.c:1982
+#: cfgrtl.c:1979 cfgrtl.c:1989
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d"
msgstr ""
-#: cfgrtl.c:1995
+#: cfgrtl.c:2002
#, c-format
msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d"
msgstr ""
-#: cfgrtl.c:2007
+#: cfgrtl.c:2014
#, c-format
msgid "in basic block %d:"
msgstr ""
-#: cfgrtl.c:2008
+#: cfgrtl.c:2015
msgid "flow control insn inside a basic block"
msgstr ""
-#: cfgrtl.c:2027
+#: cfgrtl.c:2034
#, c-format
msgid "basic block %i edge lists are corrupted"
msgstr ""
-#: cfgrtl.c:2041
+#: cfgrtl.c:2049
msgid "basic blocks not numbered consecutively"
msgstr ""
-#: cfgrtl.c:2066
+#: cfgrtl.c:2074
msgid "insn outside basic block"
msgstr ""
-#: cfgrtl.c:2074
+#: cfgrtl.c:2082
msgid "return not followed by barrier"
msgstr ""
-#: cfgrtl.c:2079
+#: cfgrtl.c:2087
#, c-format
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
msgstr ""
-#: cfgrtl.c:2083
+#: cfgrtl.c:2091
msgid "verify_flow_info failed"
msgstr ""
-#: collect2.c:439
+#: collect2.c:425
msgid "internal error"
msgstr ""
-#: collect2.c:940
+#: collect2.c:934
msgid "no arguments"
msgstr ""
-#: collect2.c:1269 collect2.c:1417 collect2.c:1450
+#: collect2.c:1263 collect2.c:1411 collect2.c:1444
#, c-format
msgid "fopen %s"
msgstr ""
-#: collect2.c:1272 collect2.c:1422 collect2.c:1453
+#: collect2.c:1266 collect2.c:1416 collect2.c:1447
#, c-format
msgid "fclose %s"
msgstr ""
-#: collect2.c:1281
+#: collect2.c:1275
#, c-format
msgid "collect2 version %s"
msgstr ""
-#: collect2.c:1371
+#: collect2.c:1365
#, c-format
msgid "%d constructor(s) found\n"
msgstr ""
-#: collect2.c:1372
+#: collect2.c:1366
#, c-format
msgid "%d destructor(s) found\n"
msgstr ""
-#: collect2.c:1373
+#: collect2.c:1367
#, c-format
msgid "%d frame table(s) found\n"
msgstr ""
-#: collect2.c:1514
+#: collect2.c:1508
#, c-format
msgid "%s terminated with signal %d [%s]%s"
msgstr ""
-#: collect2.c:1533
+#: collect2.c:1527
#, c-format
msgid "%s returned %d exit status"
msgstr ""
-#: collect2.c:1561
+#: collect2.c:1555
#, c-format
msgid "[cannot find %s]"
msgstr ""
-#: collect2.c:1576
+#: collect2.c:1570
#, c-format
msgid "cannot find `%s'"
msgstr ""
-#: collect2.c:1587 collect2.c:1590
+#: collect2.c:1581 collect2.c:1584
#, c-format
msgid "redirecting stdout: %s"
msgstr ""
-#: collect2.c:1633
+#: collect2.c:1627
#, c-format
msgid "[Leaving %s]\n"
msgstr ""
-#: collect2.c:1876
+#: collect2.c:1870
#, c-format
msgid ""
"\n"
"write_c_file - output name is %s, prefix is %s\n"
msgstr ""
-#: collect2.c:2089
+#: collect2.c:2083
msgid "cannot find `nm'"
msgstr ""
-#: collect2.c:2099 collect2.c:2541
+#: collect2.c:2093 collect2.c:2535
msgid "pipe"
msgstr ""
-#: collect2.c:2103 collect2.c:2545
+#: collect2.c:2097 collect2.c:2539
msgid "fdopen"
msgstr ""
-#: collect2.c:2129 collect2.c:2571
+#: collect2.c:2123 collect2.c:2565
#, c-format
msgid "dup2 %d 1"
msgstr ""
-#: collect2.c:2132 collect2.c:2135 collect2.c:2148 collect2.c:2574
-#: collect2.c:2577 collect2.c:2590
+#: collect2.c:2126 collect2.c:2129 collect2.c:2142 collect2.c:2568
+#: collect2.c:2571 collect2.c:2584
#, c-format
msgid "close %d"
msgstr ""
-#: collect2.c:2138
+#: collect2.c:2132 collect2.c:2574
#, c-format
-msgid "execvp %s"
+msgid "execv %s"
msgstr ""
-#: collect2.c:2192
+#: collect2.c:2186
#, c-format
msgid "init function found in object %s"
msgstr ""
-#: collect2.c:2200
+#: collect2.c:2194
#, c-format
msgid "fini function found in object %s"
msgstr ""
-#: collect2.c:2223 collect2.c:2629
+#: collect2.c:2217 collect2.c:2623
msgid "fclose"
msgstr ""
-#: collect2.c:2268
+#: collect2.c:2262
#, c-format
msgid "unable to open file '%s'"
msgstr ""
-#: collect2.c:2270
+#: collect2.c:2264
#, c-format
msgid "unable to stat file '%s'"
msgstr ""
-#: collect2.c:2276
+#: collect2.c:2270
#, c-format
msgid "unable to mmap file '%s'"
msgstr ""
-#: collect2.c:2429
+#: collect2.c:2423
msgid "not found\n"
msgstr ""
-#: collect2.c:2431 collect2.c:2608
+#: collect2.c:2425 collect2.c:2602
#, c-format
msgid "dynamic dependency %s not found"
msgstr ""
-#: collect2.c:2451
+#: collect2.c:2445
#, c-format
msgid "bad magic number in file '%s'"
msgstr ""
-#: collect2.c:2473
+#: collect2.c:2467
msgid "dynamic dependencies.\n"
msgstr ""
-#: collect2.c:2532
+#: collect2.c:2526
msgid "cannot find `ldd'"
msgstr ""
-#: collect2.c:2580
-#, c-format
-msgid "execv %s"
-msgstr ""
-
-#: collect2.c:2593
+#: collect2.c:2587
msgid ""
"\n"
"ldd output with constructors/destructors.\n"
msgstr ""
-#: collect2.c:2620
+#: collect2.c:2614
#, c-format
msgid "unable to open dynamic dependency '%s'"
msgstr ""
-#: collect2.c:2734
+#: collect2.c:2728
#, c-format
msgid "%s: not a COFF file"
msgstr ""
-#: collect2.c:2853
+#: collect2.c:2847
#, c-format
msgid "%s: cannot open as COFF file"
msgstr ""
-#: collect2.c:2909
+#: collect2.c:2903
#, c-format
msgid "library lib%s not found"
msgstr ""
-#: collect2.c:3036
+#: collect2.c:3030
#, c-format
msgid "open %s"
msgstr ""
-#: collect2.c:3059
+#: collect2.c:3053
msgid "incompatibilities between object file & expected values"
msgstr ""
-#: collect2.c:3132
+#: collect2.c:3126
#, c-format
msgid ""
"\n"
"Processing symbol table #%d, offset = 0x%.8lx, kind = %s\n"
msgstr ""
-#: collect2.c:3141
+#: collect2.c:3135
msgid "string section missing"
msgstr ""
-#: collect2.c:3144
+#: collect2.c:3138
msgid "section pointer missing"
msgstr ""
-#: collect2.c:3192
+#: collect2.c:3186
msgid "no symbol table found"
msgstr ""
-#: collect2.c:3205
+#: collect2.c:3199
msgid "no cmd_strings found"
msgstr ""
-#: collect2.c:3217
+#: collect2.c:3211
msgid ""
"\n"
"Updating header and load commands.\n"
"\n"
msgstr ""
-#: collect2.c:3224
+#: collect2.c:3218
#, c-format
msgid "load command map, %d cmds, new size %ld.\n"
msgstr ""
-#: collect2.c:3255
+#: collect2.c:3249
msgid ""
"writing load commands.\n"
"\n"
msgstr ""
-#: collect2.c:3275
+#: collect2.c:3269
#, c-format
msgid "close %s"
msgstr ""
-#: collect2.c:3349
+#: collect2.c:3343
msgid "could not convert 0x%l.8x into a region"
msgstr ""
-#: collect2.c:3353
+#: collect2.c:3347
#, c-format
msgid "%s function, region %d, offset = %ld (0x%.8lx)\n"
msgstr ""
-#: collect2.c:3480
+#: collect2.c:3474
msgid "bad magic number"
msgstr ""
-#: collect2.c:3481
+#: collect2.c:3475
msgid "bad header version"
msgstr ""
-#: collect2.c:3482
+#: collect2.c:3476
msgid "bad raw header version"
msgstr ""
-#: collect2.c:3483
+#: collect2.c:3477
msgid "raw header buffer too small"
msgstr ""
-#: collect2.c:3484
+#: collect2.c:3478
msgid "old raw header file"
msgstr ""
-#: collect2.c:3485
+#: collect2.c:3479
msgid "unsupported version"
msgstr ""
-#: collect2.c:3487
+#: collect2.c:3481
#, c-format
msgid "unknown {de,en}code_mach_o_hdr return value %d"
msgstr ""
-#: collect2.c:3507
+#: collect2.c:3501
#, c-format
msgid "fstat %s"
msgstr ""
-#: collect2.c:3544 collect2.c:3592
+#: collect2.c:3538 collect2.c:3586
#, c-format
msgid "lseek %s 0"
msgstr ""
-#: collect2.c:3548
+#: collect2.c:3542
#, c-format
msgid "read %s"
msgstr ""
-#: collect2.c:3551
+#: collect2.c:3545
#, c-format
msgid "read %ld bytes, expected %ld, from %s"
msgstr ""
-#: collect2.c:3572
+#: collect2.c:3566
#, c-format
msgid "msync %s"
msgstr ""
-#: collect2.c:3579
+#: collect2.c:3573
#, c-format
msgid "munmap %s"
msgstr ""
-#: collect2.c:3596
+#: collect2.c:3590
#, c-format
msgid "write %s"
msgstr ""
-#: collect2.c:3599
+#: collect2.c:3593
#, c-format
msgid "wrote %ld bytes, expected %ld, to %s"
msgstr ""
-#: combine.c:12783
+#: combine.c:12966
#, c-format
msgid ""
";; Combiner statistics: %d attempts, %d substitutions (%d requiring new "
@@ -3836,7 +4013,7 @@ msgid ""
"\n"
msgstr ""
-#: combine.c:12793
+#: combine.c:12976
#, c-format
msgid ""
"\n"
@@ -3860,203 +4037,231 @@ msgstr ""
msgid "conversion to incomplete type"
msgstr ""
-#: convert.c:396 convert.c:476
+#: convert.c:414 convert.c:494
msgid "can't convert between vector values of different size"
msgstr ""
-#: convert.c:402
+#: convert.c:420
msgid "aggregate value used where an integer was expected"
msgstr ""
-#: convert.c:454 f/com.c:1081
+#: convert.c:472 f/com.c:1100
msgid "pointer value used where a complex was expected"
msgstr ""
-#: convert.c:458 f/com.c:1083
+#: convert.c:476 f/com.c:1102
msgid "aggregate value used where a complex was expected"
msgstr ""
-#: convert.c:482
+#: convert.c:500
msgid "can't convert value to a vector"
msgstr ""
-#: cpperror.c:118 tradcpp.c:4694
+#: cpperror.c:113
msgid "warning: "
msgstr ""
-#: cpperror.c:120
+#: cpperror.c:115
msgid "internal error: "
msgstr ""
-#: cpperror.c:183
+#: cpperror.c:189
msgid "stdout"
msgstr ""
-#: cpperror.c:185 gcc.c:6311 tradcpp.c:4732
+#: cpperror.c:191 gcc.c:6444
#, c-format
msgid "%s: %s"
msgstr ""
-#: cppexp.c:151
-msgid "floating point numbers are not valid in #if"
+#: cppexp.c:199
+msgid "too many decimal points in number"
msgstr ""
-#: cppexp.c:173
-msgid "traditional C rejects the `U' suffix"
+#: cppexp.c:219
+#, c-format
+msgid "invalid digit \"%c\" in octal constant"
msgstr ""
-#: cppexp.c:177
-msgid "too many 'l' suffixes in integer constant"
+#: cppexp.c:225
+msgid "use of C99 hexadecimal floating constant"
msgstr ""
-#: cppexp.c:182
-msgid "integer constant contains digits beyond the radix"
+#: cppexp.c:234
+msgid "exponent has no digits"
msgstr ""
-#: cppexp.c:185
-msgid "integer constant out of range"
+#: cppexp.c:241
+msgid "hexadecimal floating constants require an exponent"
msgstr ""
-#: cppexp.c:192
-msgid "integer constant is so large that it is unsigned"
+#: cppexp.c:247
+#, c-format
+msgid "invalid suffix \"%.*s\" on floating constant"
msgstr ""
-#: cppexp.c:201
+#: cppexp.c:257 cppexp.c:282
#, c-format
-msgid "invalid suffix '%.*s' on integer constant"
+msgid "traditional C rejects the \"%.*s\" suffix"
msgstr ""
-#: cppexp.c:234
+#: cppexp.c:268
+#, c-format
+msgid "invalid suffix \"%.*s\" on integer constant"
+msgstr ""
+
+#: cppexp.c:289
+msgid "use of C99 long long integer constant"
+msgstr ""
+
+#: cppexp.c:295
+msgid "imaginary constants are a GCC extension"
+msgstr ""
+
+#: cppexp.c:383
+msgid "integer constant is too large for its type"
+msgstr ""
+
+#: cppexp.c:395
+msgid "integer constant is so large that it is unsigned"
+msgstr ""
+
+#: cppexp.c:482
msgid "missing ')' after \"defined\""
msgstr ""
-#: cppexp.c:241
+#: cppexp.c:489
msgid "operator \"defined\" requires an identifier"
msgstr ""
-#: cppexp.c:249
+#: cppexp.c:497
#, c-format
msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
msgstr ""
-#: cppexp.c:261
+#: cppexp.c:507
msgid "this use of \"defined\" may not be portable"
msgstr ""
-#: cppexp.c:309
-msgid "string constants are not valid in #if"
+#: cppexp.c:545
+msgid "floating constant in preprocessor expression"
msgstr ""
-#: cppexp.c:313
-#, c-format
-msgid "invalid character '%c' in #if"
+#: cppexp.c:551
+msgid "imaginary number in preprocessor expression"
msgstr ""
-#: cppexp.c:315
+#: cppexp.c:596
#, c-format
-msgid "invalid character '\\%03o' in #if"
+msgid "ISO C++ does not permit \"%s\" in #if"
msgstr ""
-#: cppexp.c:333
+#: cppexp.c:604
#, c-format
-msgid "ISO C++ does not permit \"%s\" in #if"
+msgid "\"%s\" is not defined"
msgstr ""
-#: cppexp.c:344
+#: cppexp.c:737 cppexp.c:772
#, c-format
-msgid "\"%s\" is not defined"
+msgid "missing binary operator before token \"%s\""
msgstr ""
-#: cppexp.c:370
+#: cppexp.c:756
#, c-format
-msgid "\"%s\" is not valid in #if expressions"
+msgid "invalid character '%c' in #if"
msgstr ""
-#: cppexp.c:386
-msgid "integer overflow in preprocessor expression"
+#: cppexp.c:758
+#, c-format
+msgid "invalid character '\\%03o' in #if"
msgstr ""
-#: cppexp.c:616
-msgid "missing binary operator"
+#: cppexp.c:763
+#, c-format
+msgid "token \"%s\" is not valid in preprocessor expressions"
msgstr ""
-#: cppexp.c:651
+#: cppexp.c:782
msgid "void expression between '(' and ')'"
msgstr ""
-#: cppexp.c:653
+#: cppexp.c:785
+msgid "#if with no expression"
+msgstr ""
+
+#: cppexp.c:787
#, c-format
msgid "operator '%s' has no right operand"
msgstr ""
-#: cppexp.c:665
-#, c-format
-msgid "impossible operator '%s'"
+#: cppexp.c:813
+msgid " ':' without preceding '?'"
msgstr ""
-#: cppexp.c:741 tradcif.y:111 tradcif.y:122
-msgid "division by zero in #if"
+#: cppexp.c:840
+msgid "unbalanced stack in #if"
msgstr ""
-#: cppexp.c:776
-msgid "comma operator in operand of #if"
+#: cppexp.c:862
+#, c-format
+msgid "impossible operator '%u'"
msgstr ""
-#: cppexp.c:781
-msgid "syntax error '?' without following ':'"
+#: cppexp.c:954
+msgid "missing ')' in expression"
msgstr ""
-#: cppexp.c:784
-msgid "syntax error ':' without preceding '?'"
+#: cppexp.c:975
+msgid "'?' without following ':'"
msgstr ""
-#: cppexp.c:792
-msgid "missing ')' in expression"
+#: cppexp.c:985
+msgid "integer overflow in preprocessor expression"
msgstr ""
-#: cppexp.c:799
+#: cppexp.c:990
msgid "missing '(' in expression"
msgstr ""
-#: cppexp.c:825
+#: cppexp.c:1026
#, c-format
-msgid "missing binary operator before '%s'"
+msgid "the left operand of \"%s\" changes sign when promoted"
msgstr ""
-#: cppexp.c:831
+#: cppexp.c:1031
#, c-format
-msgid "operator '%s' has no left operand"
+msgid "the right operand of \"%s\" changes sign when promoted"
msgstr ""
-#: cppexp.c:870
-msgid "unbalanced stack in #if"
+#: cppexp.c:1414
+msgid "comma operator in operand of #if"
msgstr ""
-#: cppexp.c:875
-msgid "#if with no expression"
+#: cppexp.c:1551
+msgid "division by zero in #if"
msgstr ""
-#: cppfiles.c:395
+#: cppfiles.c:411
#, c-format
msgid "%s is too large"
msgstr ""
-#: cppfiles.c:426
+#: cppfiles.c:447
#, c-format
msgid "%s is shorter than expected"
msgstr ""
-#: cppfiles.c:440
+#: cppfiles.c:461
#, c-format
msgid "%s is a block device"
msgstr ""
-#: cppfiles.c:566
+#: cppfiles.c:594
#, c-format
msgid "no include path in which to find %s"
msgstr ""
-#: cppfiles.c:640
+#: cppfiles.c:668
msgid "Multiple include guards may be useful for:\n"
msgstr ""
@@ -4064,723 +4269,593 @@ msgstr ""
msgid "absolute file name in remap_filename"
msgstr ""
-#: cppinit.c:230
+#: cppinit.c:224
#, c-format
msgid "ignoring nonexistent directory \"%s\"\n"
msgstr ""
-#: cppinit.c:237
+#: cppinit.c:231
#, c-format
msgid "%s: Not a directory"
msgstr ""
-#: cppinit.c:284
+#: cppinit.c:287
#, c-format
msgid "ignoring duplicate directory \"%s\"\n"
msgstr ""
-#: cppinit.c:312
-#, c-format
-msgid "changing search order for system directory \"%s\""
+#: cppinit.c:325
+msgid " as it is a non-system directory that duplicates a system directory\n"
+msgstr ""
+
+#: cppinit.c:891
+msgid "cppchar_t must be an unsigned type"
msgstr ""
-#: cppinit.c:316
+#: cppinit.c:895
#, c-format
-msgid " as it is the same as non-system directory \"%s\""
+msgid ""
+"preprocessor arithmetic has maximum precision of %lu bits; target requires %"
+"lu bits"
msgstr ""
-#: cppinit.c:320
-msgid " as it has already been specified as a non-system directory"
+#: cppinit.c:901
+msgid "CPP arithmetic must be at least as precise as a target int"
msgstr ""
-#: cppinit.c:940
+#: cppinit.c:904
+msgid "target char is less than 8 bits wide"
+msgstr ""
+
+#: cppinit.c:908
+msgid "target wchar_t is narrower than target char"
+msgstr ""
+
+#: cppinit.c:912
+msgid "target int is narrower than target char"
+msgstr ""
+
+#: cppinit.c:916
+msgid "CPP half-integer narrower than CPP character"
+msgstr ""
+
+#: cppinit.c:920
+#, c-format
+msgid ""
+"CPP on this host cannot handle wide character constants over %lu bits, but "
+"the target requires %lu bits"
+msgstr ""
+
+#: cppinit.c:972
msgid "#include \"...\" search starts here:\n"
msgstr ""
-#: cppinit.c:944
+#: cppinit.c:976
msgid "#include <...> search starts here:\n"
msgstr ""
-#: cppinit.c:947
+#: cppinit.c:979
msgid "End of search list.\n"
msgstr ""
-#: cppinit.c:1014
+#: cppinit.c:1055
msgid "<built-in>"
msgstr ""
-#: cppinit.c:1016
+#: cppinit.c:1057
msgid "<command line>"
msgstr ""
-#: cppinit.c:1091 tradcpp.c:983 tradcpp.c:993 tradcpp.c:1084
-msgid "I/O error on output"
-msgstr ""
-
#. Irix6 "cc -n32" and OSF4 cc have problems with char foo[] = ("string");
#. I.e. a const string initializer with parens around it. That is
#. what N_("string") resolves to, so we make no_* be macros instead.
-#: cppinit.c:1139
-#, c-format
-msgid "argument missing after %s"
-msgstr ""
-
-#: cppinit.c:1140
+#: cppinit.c:1162
#, c-format
msgid "assertion missing after %s"
msgstr ""
-#: cppinit.c:1141
+#: cppinit.c:1163
#, c-format
msgid "directory name missing after %s"
msgstr ""
-#: cppinit.c:1142
+#: cppinit.c:1164
#, c-format
msgid "file name missing after %s"
msgstr ""
-#: cppinit.c:1143
+#: cppinit.c:1165
#, c-format
msgid "macro name missing after %s"
msgstr ""
-#: cppinit.c:1144
+#: cppinit.c:1166
#, c-format
msgid "path name missing after %s"
msgstr ""
-#: cppinit.c:1145
-#, c-format
-msgid "number missing after %s"
-msgstr ""
-
-#: cppinit.c:1146
-#, c-format
-msgid "target missing after %s"
-msgstr ""
-
-#: cppinit.c:1336
-#, c-format
-msgid "too many filenames. Type %s --help for usage info"
-msgstr ""
-
-#: cppinit.c:1532 tradcpp.c:610
-msgid "output filename specified twice"
-msgstr ""
-
-#: cppinit.c:1644
+#: cppinit.c:1368
msgid "-I- specified twice"
msgstr ""
-#: cppinit.c:1789
-#, c-format
-msgid "GNU CPP version %s (cpplib)"
-msgstr ""
-
-#: cppinit.c:1831 tradcpp.c:807
-msgid "you must additionally specify either -M or -MM"
-msgstr ""
-
-#. To keep the lines from getting too long for some compilers, limit
-#. to about 500 characters (6 lines) per chunk.
-#: cppinit.c:1892
-msgid ""
-"Switches:\n"
-" -include <file> Include the contents of <file> before other "
-"files\n"
-" -imacros <file> Accept definition of macros in <file>\n"
-" -iprefix <path> Specify <path> as a prefix for next two options\n"
-" -iwithprefix <dir> Add <dir> to the end of the system include path\n"
-" -iwithprefixbefore <dir> Add <dir> to the end of the main include path\n"
-" -isystem <dir> Add <dir> to the start of the system include "
-"path\n"
-msgstr ""
-
-#: cppinit.c:1901
-msgid ""
-" -idirafter <dir> Add <dir> to the end of the system include path\n"
-" -I <dir> Add <dir> to the end of the main include path\n"
-" -I- Fine-grained include path control; see info "
-"docs\n"
-" -nostdinc Do not search system include directories\n"
-" (dirs specified with -isystem will still be "
-"used)\n"
-" -nostdinc++ Do not search system include directories for C+"
-"+\n"
-" -o <file> Put output into <file>\n"
-msgstr ""
-
-#: cppinit.c:1910
-msgid ""
-" -pedantic Issue all warnings demanded by strict ISO C\n"
-" -pedantic-errors Issue -pedantic warnings as errors instead\n"
-" -trigraphs Support ISO C trigraphs\n"
-" -lang-c Assume that the input sources are in C\n"
-" -lang-c89 Assume that the input sources are in C89\n"
-msgstr ""
-
-#: cppinit.c:1917
-msgid ""
-" -lang-c++ Assume that the input sources are in C++\n"
-" -lang-objc Assume that the input sources are in ObjectiveC\n"
-" -lang-objc++ Assume that the input sources are in ObjectiveC+"
-"+\n"
-" -lang-asm Assume that the input sources are in assembler\n"
-msgstr ""
-
-#: cppinit.c:1923
-msgid ""
-" -std=<std name> Specify the conformance standard; one of:\n"
-" gnu89, gnu99, c89, c99, iso9899:1990,\n"
-" iso9899:199409, iso9899:1999\n"
-" -+ Allow parsing of C++ style features\n"
-" -w Inhibit warning messages\n"
-" -Wtrigraphs Warn if trigraphs are encountered\n"
-" -Wno-trigraphs Do not warn about trigraphs\n"
-" -Wcomment{s} Warn if one comment starts inside another\n"
-msgstr ""
-
-#: cppinit.c:1933
-msgid ""
-" -Wno-comment{s} Do not warn about comments\n"
-" -Wtraditional Warn about features not present in traditional "
-"C\n"
-" -Wno-traditional Do not warn about traditional C\n"
-" -Wundef Warn if an undefined macro is used by #if\n"
-" -Wno-undef Do not warn about testing undefined macros\n"
-" -Wimport Warn about the use of the #import directive\n"
-msgstr ""
-
-#: cppinit.c:1941
-msgid ""
-" -Wno-import Do not warn about the use of #import\n"
-" -Werror Treat all warnings as errors\n"
-" -Wno-error Do not treat warnings as errors\n"
-" -Wsystem-headers Do not suppress warnings from system headers\n"
-" -Wno-system-headers Suppress warnings from system headers\n"
-" -Wall Enable all preprocessor warnings\n"
-msgstr ""
-
-#: cppinit.c:1949
-msgid ""
-" -M Generate make dependencies\n"
-" -MM As -M, but ignore system header files\n"
-" -MD Generate make dependencies and compile\n"
-" -MMD As -MD, but ignore system header files\n"
-" -MF <file> Write dependency output to the given file\n"
-" -MG Treat missing header file as generated files\n"
-msgstr ""
-
-#: cppinit.c:1957
-msgid ""
-" -MP\t\t\t Generate phony targets for all headers\n"
-" -MQ <target> Add a MAKE-quoted target\n"
-" -MT <target> Add an unquoted target\n"
-msgstr ""
-
-#: cppinit.c:1962
-msgid ""
-" -D<macro> Define a <macro> with string '1' as its value\n"
-" -D<macro>=<val> Define a <macro> with <val> as its value\n"
-" -A<question>=<answer> Assert the <answer> to <question>\n"
-" -A-<question>=<answer> Disable the <answer> to <question>\n"
-" -U<macro> Undefine <macro> \n"
-" -v Display the version number\n"
-msgstr ""
-
-#: cppinit.c:1970
-msgid ""
-" -H Print the name of header files as they are used\n"
-" -C Do not discard comments\n"
-" -dM Display a list of macro definitions active at "
-"end\n"
-" -dD Preserve macro definitions in output\n"
-" -dN As -dD except that only the names are preserved\n"
-" -dI Include #include directives in the output\n"
-msgstr ""
-
-#: cppinit.c:1978
-msgid ""
-" -fpreprocessed Treat the input file as already preprocessed\n"
-" -ftabstop=<number> Distance between tab stops for column reporting\n"
-" -P Do not generate #line directives\n"
-" -$ Do not allow '$' in identifiers\n"
-" -remap Remap file names when including files\n"
-" --version Display version information\n"
-" -h or --help Display this information\n"
-msgstr ""
-
-#: cpplex.c:155
+#: cpplex.c:149
#, c-format
msgid "trigraph ??%c converted to %c"
msgstr ""
-#: cpplex.c:163
+#: cpplex.c:157
#, c-format
msgid "trigraph ??%c ignored"
msgstr ""
-#: cpplex.c:220
+#: cpplex.c:214
msgid "backslash and newline separated by space"
msgstr ""
-#: cpplex.c:227
+#: cpplex.c:221 cpptrad.c:158
msgid "backslash-newline at end of file"
msgstr ""
-#: cpplex.c:293
+#: cpplex.c:287 cpptrad.c:199
msgid "\"/*\" within comment"
msgstr ""
-#: cpplex.c:376
+#: cpplex.c:395
msgid "null character(s) ignored"
msgstr ""
-#: cpplex.c:383
+#: cpplex.c:402
#, c-format
msgid "%s in preprocessing directive"
msgstr ""
-#: cpplex.c:456
+#: cpplex.c:475
#, c-format
msgid "attempt to use poisoned \"%s\""
msgstr ""
-#: cpplex.c:464
+#: cpplex.c:483
msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro"
msgstr ""
-#: cpplex.c:536
+#: cpplex.c:555
msgid "'$' character(s) in identifier or number"
msgstr ""
-#: cpplex.c:653
+#: cpplex.c:698
#, c-format
msgid "missing terminating %c character"
msgstr ""
-#: cpplex.c:666
+#: cpplex.c:711
msgid "null character(s) preserved in literal"
msgstr ""
-#: cpplex.c:889
+#: cpplex.c:915 cpptrad.c:487
msgid "no newline at end of file"
msgstr ""
-#: cpplex.c:1009 tradcpp.c:1471
+#: cpplex.c:1092 cpptrad.c:213
msgid "unterminated comment"
msgstr ""
-#: cpplex.c:1020
-msgid "C++ style comments are not allowed in ISO C89"
+#: cpplex.c:1103
+msgid "C++ style comments are not allowed in ISO C90"
msgstr ""
-#: cpplex.c:1022
+#: cpplex.c:1105
msgid "(this will be reported only once per input file)"
msgstr ""
-#: cpplex.c:1027
+#: cpplex.c:1110
msgid "multi-line comment"
msgstr ""
-#: cpplex.c:1342
+#: cpplex.c:1425
#, c-format
msgid "unknown string token %s\n"
msgstr ""
-#: cpplex.c:1355
+#: cpplex.c:1438
#, c-format
msgid "unspellable token %s"
msgstr ""
-#: cpplex.c:1612
+#: cpplex.c:1695
#, c-format
msgid "the meaning of '\\%c' is different in traditional C"
msgstr ""
-#: cpplex.c:1618
+#: cpplex.c:1701
msgid "incomplete universal-character-name"
msgstr ""
-#: cpplex.c:1632
+#: cpplex.c:1715
#, c-format
msgid "non-hex digit '%c' in universal-character-name"
msgstr ""
-#: cpplex.c:1640
+#: cpplex.c:1723
msgid "universal-character-name on EBCDIC target"
msgstr ""
-#: cpplex.c:1654
+#: cpplex.c:1737
msgid "universal-character-name out of range"
msgstr ""
-#: cpplex.c:1698
+#: cpplex.c:1791
msgid "the meaning of '\\a' is different in traditional C"
msgstr ""
-#: cpplex.c:1705
+#: cpplex.c:1798
#, c-format
msgid "non-ISO-standard escape sequence, '\\%c'"
msgstr ""
-#: cpplex.c:1716
+#: cpplex.c:1809
msgid "the meaning of '\\x' is different in traditional C"
msgstr ""
-#: cpplex.c:1735 f/lex.c:585
+#: cpplex.c:1828 f/lex.c:585
msgid "\\x used with no following hex digits"
msgstr ""
-#: cpplex.c:1740
+#: cpplex.c:1833
msgid "hex escape sequence out of range"
msgstr ""
-#: cpplex.c:1765
+#: cpplex.c:1858
msgid "octal escape sequence out of range"
msgstr ""
-#: cpplex.c:1780
+#: cpplex.c:1874
#, c-format
msgid "unknown escape sequence '\\%c'"
msgstr ""
-#: cpplex.c:1782
+#: cpplex.c:1877
#, c-format
msgid "unknown escape sequence: '\\%03o'"
msgstr ""
-#: cpplex.c:1786
-msgid "escape sequence out of range for type"
+#: cpplex.c:1882
+msgid "escape sequence out of range for its type"
msgstr ""
-#: cpplex.c:1881
+#: cpplex.c:1973
msgid "empty character constant"
msgstr ""
-#: cpplex.c:1885
-msgid "character constant too long"
+#: cpplex.c:1983
+msgid "character constant too long for its type"
msgstr ""
-#: cpplex.c:1888
+#: cpplex.c:1986
msgid "multi-character character constant"
msgstr ""
-#: cpplib.c:228
+#: cpplib.c:225
#, c-format
msgid "extra tokens at end of #%s directive"
msgstr ""
-#: cpplib.c:281
+#: cpplib.c:315
#, c-format
msgid "#%s is a GCC extension"
msgstr ""
-#: cpplib.c:293
+#: cpplib.c:327
msgid "suggest not using #elif in traditional C"
msgstr ""
-#: cpplib.c:296
+#: cpplib.c:330
#, c-format
msgid "traditional C ignores #%s with the # indented"
msgstr ""
-#: cpplib.c:300
+#: cpplib.c:334
#, c-format
msgid "suggest hiding #%s from traditional C with an indented #"
msgstr ""
-#: cpplib.c:324
+#: cpplib.c:358
msgid "embedding a directive within macro arguments is not portable"
msgstr ""
-#: cpplib.c:344
+#: cpplib.c:378
msgid "style of line directive is a GCC extension"
msgstr ""
-#: cpplib.c:393
+#: cpplib.c:427
#, c-format
msgid "invalid preprocessing directive #%s"
msgstr ""
-#: cpplib.c:471
-#, c-format
-msgid "no macro name given in #%s directive"
+#: cpplib.c:499
+msgid "\"defined\" cannot be used as a macro name"
msgstr ""
-#: cpplib.c:475
+#: cpplib.c:505
#, c-format
msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
msgstr ""
-#: cpplib.c:478
-msgid "macro names must be identifiers"
+#: cpplib.c:508
+#, c-format
+msgid "no macro name given in #%s directive"
msgstr ""
-#: cpplib.c:489
-#, c-format
-msgid "\"%s\" cannot be used as a macro name"
+#: cpplib.c:511
+msgid "macro names must be identifiers"
msgstr ""
-#: cpplib.c:527
+#: cpplib.c:551
#, c-format
msgid "undefining \"%s\""
msgstr ""
-#: cpplib.c:570
+#: cpplib.c:597
msgid "missing terminating > character"
msgstr ""
-#: cpplib.c:609
+#: cpplib.c:636
#, c-format
msgid "#%s expects \"FILENAME\" or <FILENAME>"
msgstr ""
-#: cpplib.c:620
+#: cpplib.c:647
#, c-format
msgid "empty file name in #%s"
msgstr ""
-#: cpplib.c:639
+#: cpplib.c:666
msgid "#include_next in primary source file"
msgstr ""
-#: cpplib.c:646
+#: cpplib.c:673
msgid "#import is obsolete, use an #ifndef wrapper in the header file"
msgstr ""
-#: cpplib.c:654
+#: cpplib.c:681
msgid "#include nested too deeply"
msgstr ""
-#: cpplib.c:712
+#: cpplib.c:738
#, c-format
msgid "invalid flag \"%s\" in line directive"
msgstr ""
-#: cpplib.c:795
+#: cpplib.c:813
#, c-format
msgid "\"%s\" after #line is not a positive integer"
msgstr ""
-#: cpplib.c:801
+#: cpplib.c:819
msgid "line number out of range"
msgstr ""
-#: cpplib.c:812 cpplib.c:883
+#: cpplib.c:830 cpplib.c:901
#, c-format
msgid "\"%s\" is not a valid filename"
msgstr ""
-#: cpplib.c:847
+#: cpplib.c:865
#, c-format
msgid "\"%s\" after # is not a positive integer"
msgstr ""
-#: cpplib.c:954
+#: cpplib.c:972
msgid "invalid #ident directive"
msgstr ""
-#: cpplib.c:1042
+#: cpplib.c:1060
#, c-format
msgid "registering \"%s\" as both a pragma and a pragma namespace"
msgstr ""
-#: cpplib.c:1045
+#: cpplib.c:1063
#, c-format
msgid "#pragma %s %s is already registered"
msgstr ""
-#: cpplib.c:1048
+#: cpplib.c:1066
#, c-format
msgid "#pragma %s is already registered"
msgstr ""
-#: cpplib.c:1123
+#: cpplib.c:1140
msgid "#pragma once is obsolete"
msgstr ""
-#: cpplib.c:1126
+#: cpplib.c:1143
msgid "#pragma once in main file"
msgstr ""
-#: cpplib.c:1150
+#: cpplib.c:1167
msgid "invalid #pragma GCC poison directive"
msgstr ""
-#: cpplib.c:1159
+#: cpplib.c:1176
#, c-format
msgid "poisoning existing macro \"%s\""
msgstr ""
-#: cpplib.c:1181
+#: cpplib.c:1198
msgid "#pragma system_header ignored outside include file"
msgstr ""
-#: cpplib.c:1206
+#: cpplib.c:1223
#, c-format
msgid "cannot find source %s"
msgstr ""
-#: cpplib.c:1210
+#: cpplib.c:1227
#, c-format
msgid "current file is older than %s"
msgstr ""
-#: cpplib.c:1286
+#: cpplib.c:1343
msgid "_Pragma takes a parenthesized string literal"
msgstr ""
-#: cpplib.c:1385
+#: cpplib.c:1426
msgid "#else without #if"
msgstr ""
-#: cpplib.c:1390 tradcpp.c:3875
+#: cpplib.c:1431
msgid "#else after #else"
msgstr ""
-#: cpplib.c:1392 cpplib.c:1426
+#: cpplib.c:1433 cpplib.c:1467
msgid "the conditional began here"
msgstr ""
-#: cpplib.c:1419
+#: cpplib.c:1460
msgid "#elif without #if"
msgstr ""
-#: cpplib.c:1424 tradcpp.c:3570
+#: cpplib.c:1465
msgid "#elif after #else"
msgstr ""
-#: cpplib.c:1455
+#: cpplib.c:1496
msgid "#endif without #if"
msgstr ""
-#: cpplib.c:1538 tradcpp.c:3267
+#: cpplib.c:1579
msgid "missing '(' after predicate"
msgstr ""
-#: cpplib.c:1553 tradcpp.c:3281
+#: cpplib.c:1594
msgid "missing ')' to complete answer"
msgstr ""
-#: cpplib.c:1573 tradcpp.c:3287
+#: cpplib.c:1614
msgid "predicate's answer is empty"
msgstr ""
-#: cpplib.c:1603 tradcpp.c:3335
+#: cpplib.c:1644
msgid "assertion without predicate"
msgstr ""
-#: cpplib.c:1605 tradcpp.c:3337
+#: cpplib.c:1646
msgid "predicate must be an identifier"
msgstr ""
-#: cpplib.c:1687 tradcpp.c:3434
+#: cpplib.c:1735
#, c-format
msgid "\"%s\" re-asserted"
msgstr ""
-#: cpplib.c:1917
+#: cpplib.c:1965
#, c-format
msgid "unterminated #%s"
msgstr ""
-#: cppmacro.c:146
+#: cppmacro.c:94
+#, c-format
+msgid "macro \"%s\" is not used"
+msgstr ""
+
+#: cppmacro.c:139 cppmacro.c:294
#, c-format
msgid "invalid built-in macro \"%s\""
msgstr ""
-#: cppmacro.c:349
-msgid "invalid string literal, ignoring final '\\'"
+#: cppmacro.c:234
+msgid "could not determine date and time"
msgstr ""
-#: cppmacro.c:441
-#, c-format
-msgid "pasting \"%s\" and \"%s\" does not give a valid preprocessing token"
+#: cppmacro.c:407
+msgid "invalid string literal, ignoring final '\\'"
msgstr ""
-#: cppmacro.c:561
+#: cppmacro.c:504
#, c-format
-msgid "unterminated argument list invoking macro \"%s\""
+msgid "pasting \"%s\" and \"%s\" does not give a valid preprocessing token"
msgstr ""
-#: cppmacro.c:579
+#: cppmacro.c:546
msgid "ISO C99 requires rest arguments to be used"
msgstr ""
-#: cppmacro.c:584
+#: cppmacro.c:551
#, c-format
msgid "macro \"%s\" requires %u arguments, but only %u given"
msgstr ""
-#: cppmacro.c:595
+#: cppmacro.c:556
#, c-format
msgid "macro \"%s\" passed %u arguments, but takes just %u"
msgstr ""
-#: cppmacro.c:683
+#: cppmacro.c:669 cpptrad.c:774
+#, c-format
+msgid "unterminated argument list invoking macro \"%s\""
+msgstr ""
+
+#: cppmacro.c:776
#, c-format
msgid "function-like macro \"%s\" must be used with arguments in traditional C"
msgstr ""
-#: cppmacro.c:1185
+#: cppmacro.c:1312
#, c-format
msgid "duplicate macro parameter \"%s\""
msgstr ""
-#: cppmacro.c:1221
+#: cppmacro.c:1349
#, c-format
msgid "\"%s\" may not appear in macro parameter list"
msgstr ""
-#: cppmacro.c:1229
+#: cppmacro.c:1357
msgid "macro parameters must be comma-separated"
msgstr ""
-#: cppmacro.c:1246
+#: cppmacro.c:1374
msgid "parameter name missing"
msgstr ""
-#: cppmacro.c:1260
+#: cppmacro.c:1389
msgid "anonymous variadic macros were introduced in C99"
msgstr ""
-#: cppmacro.c:1264
+#: cppmacro.c:1393
msgid "ISO C does not permit named variadic macros"
msgstr ""
-#: cppmacro.c:1273
+#: cppmacro.c:1402
msgid "missing ')' in macro parameter list"
msgstr ""
-#: cppmacro.c:1352
+#: cppmacro.c:1470
msgid "ISO C requires whitespace after the macro name"
msgstr ""
-#: cppmacro.c:1383
+#: cppmacro.c:1498
msgid "'#' is not followed by a macro parameter"
msgstr ""
-#: cppmacro.c:1403
+#: cppmacro.c:1517
msgid "'##' cannot appear at either end of a macro expansion"
msgstr ""
-#: cppmacro.c:1439
+#: cppmacro.c:1599
#, c-format
msgid "\"%s\" redefined"
msgstr ""
-#: cppmacro.c:1443
+#: cppmacro.c:1604
msgid "this is the location of the previous definition"
msgstr ""
-#: cppmacro.c:1507
+#: cppmacro.c:1655
#, c-format
msgid "macro argument \"%s\" would be stringified in traditional C"
msgstr ""
-#: cppmacro.c:1532
+#: cppmacro.c:1680
#, c-format
msgid "invalid hash type %d in cpp_macro_definition"
msgstr ""
@@ -4794,73 +4869,64 @@ msgstr ""
msgid "too many input files"
msgstr ""
-#: cse.c:7113
+#: cpptrad.c:841
#, c-format
-msgid ";; Processing block from %d to %d, %d sets.\n"
+msgid "detected recursion whilst expanding macro \"%s\""
msgstr ""
-#: diagnostic.c:777
+#: cse.c:7187
#, c-format
-msgid "%s:%d: warning: "
-msgstr ""
-
-#: diagnostic.c:784
-#, c-format
-msgid "%s: warning: "
+msgid ";; Processing block from %d to %d, %d sets.\n"
msgstr ""
-#: diagnostic.c:864
+#: diagnostic.c:700
msgid "((anonymous))"
msgstr ""
-#: diagnostic.c:934
+#: diagnostic.c:914
#, c-format
msgid "%s: warnings being treated as errors\n"
msgstr ""
-#: diagnostic.c:971
+#: diagnostic.c:949
#, c-format
msgid "%s: %s: "
msgstr ""
-#: diagnostic.c:1050
-msgid "sorry, not implemented: "
-msgstr ""
-
-#: diagnostic.c:1069
+#: diagnostic.c:1040
#, c-format
msgid "%s "
msgstr ""
-#: diagnostic.c:1071
+#: diagnostic.c:1042
#, c-format
msgid " %s"
msgstr ""
-#: diagnostic.c:1095
+#: diagnostic.c:1064
msgid "At top level:"
msgstr ""
-#: diagnostic.c:1100
+#: diagnostic.c:1069
#, c-format
msgid "In member function `%s':"
msgstr ""
-#: diagnostic.c:1104
+#: diagnostic.c:1073
#, c-format
msgid "In function `%s':"
msgstr ""
-#: diagnostic.c:1188
+#: diagnostic.c:1161
msgid "compilation terminated.\n"
msgstr ""
-#: diagnostic.c:1220
+#: diagnostic.c:1179
#, c-format
msgid "%s:%d: confused by earlier errors, bailing out\n"
msgstr ""
-#: diagnostic.c:1235 diagnostic.c:1385
+#: diagnostic.c:1194 diagnostic.c:1302
#, c-format
msgid ""
"Please submit a full bug report,\n"
@@ -4868,73 +4934,82 @@ msgid ""
"See %s for instructions.\n"
msgstr ""
-#: diagnostic.c:1383
+#: diagnostic.c:1300
msgid "Internal compiler error: Error reporting routines re-entered.\n"
msgstr ""
-#: diagnostic.c:1445
+#: diagnostic.c:1362
#, c-format
-msgid "Internal compiler error in %s, at %s:%d"
+msgid "in %s, at %s:%d"
msgstr ""
-#: diagnostic.c:1490
+#: diagnostic.c:1383
#, c-format
msgid "In file included from %s:%d"
msgstr ""
-#: diagnostic.c:1493
+#: diagnostic.c:1386
#, c-format
msgid ""
",\n"
" from %s:%d"
msgstr ""
-#: diagnostic.c:1494
+#: diagnostic.c:1387
msgid ":\n"
msgstr ""
-#: diagnostic.c:1527 diagnostic.c:1544
+#: diagnostic.c:1431 diagnostic.c:1448
#, c-format
msgid "`%s' is deprecated (declared at %s:%d)"
msgstr ""
-#: diagnostic.c:1547
+#: diagnostic.c:1451
#, c-format
msgid "`%s' is deprecated"
msgstr ""
-#: diagnostic.c:1550
+#: diagnostic.c:1454
#, c-format
msgid "type is deprecated (declared at %s:%d)"
msgstr ""
-#: diagnostic.c:1553
+#: diagnostic.c:1457
msgid "type is deprecated"
msgstr ""
-#: dwarf2out.c:3075
+#: dominance.c:728
+#, c-format
+msgid "dominator of %d should be %d, not %d"
+msgstr ""
+
+#: dwarf2out.c:3124
#, c-format
msgid "DW_LOC_OP %s not implemented\n"
msgstr ""
-#: dwarfout.c:2087
+#: dwarfout.c:2066
#, c-format
-msgid "internal regno botch: regno = %d\n"
+msgid "internal regno botch: `%s' has regno = %d\n"
msgstr ""
-#: dwarfout.c:6287
+#: dwarfout.c:6181
+msgid "support for the DWARF1 debugging format is deprecated"
+msgstr ""
+
+#: dwarfout.c:6278
msgid "can't get current directory"
msgstr ""
-#: emit-rtl.c:1018
+#: emit-rtl.c:1151
msgid "can't access real part of complex value in hard register"
msgstr ""
-#: emit-rtl.c:1040
+#: emit-rtl.c:1173
msgid "can't access imaginary part of complex value in hard register"
msgstr ""
-#: emit-rtl.c:3145
+#: emit-rtl.c:3418
msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
msgstr ""
@@ -4943,251 +5018,251 @@ msgstr ""
msgid "abort in %s, at %s:%d"
msgstr ""
-#: except.c:377
+#: except.c:371
msgid "exception handling disabled, use -fexceptions to enable"
msgstr ""
-#: except.c:3183
+#: except.c:2969
msgid "argument of `__builtin_eh_return_regno' must be constant"
msgstr ""
-#: except.c:3294 except.c:3316
+#: except.c:3090 except.c:3112
msgid "__builtin_eh_return not supported on this target"
msgstr ""
-#: explow.c:1369
+#: explow.c:1398
msgid "stack limits not supported on this target"
msgstr ""
-#: expr.c:2948
+#: expr.c:3323
msgid "function using short complex types cannot be inline"
msgstr ""
-#: expr.c:5815 expr.c:5824 expr.c:5833 expr.c:5838 expr.c:6125 expr.c:6141
+#: expr.c:6197 expr.c:6206 expr.c:6215 expr.c:6220 expr.c:6522 expr.c:6538
msgid "unsupported wide integer operation"
msgstr ""
-#: expr.c:6190
+#: expr.c:6587
#, c-format
msgid "prior parameter's size depends on `%s'"
msgstr ""
-#: expr.c:6537
+#: expr.c:6932
msgid "returned value in block_exit_expr"
msgstr ""
-#: final.c:1205
+#: final.c:1342
msgid "negative insn length"
msgstr ""
-#: final.c:2622
+#: final.c:2793
msgid "could not split insn"
msgstr ""
-#: final.c:2970
+#: final.c:3141
msgid "invalid `asm': "
msgstr ""
-#: final.c:3154
+#: final.c:3328
msgid "nested assembly dialect alternatives"
msgstr ""
-#: final.c:3171 final.c:3183
+#: final.c:3345 final.c:3357
msgid "unterminated assembly dialect alternative"
msgstr ""
-#: final.c:3227
+#: final.c:3401
#, c-format
msgid "operand number missing after %%-letter"
msgstr ""
-#: final.c:3230 final.c:3269
+#: final.c:3404 final.c:3443
msgid "operand number out of range"
msgstr ""
-#: final.c:3288
+#: final.c:3462
#, c-format
msgid "invalid %%-code"
msgstr ""
-#: final.c:3319
+#: final.c:3493
#, c-format
msgid "`%%l' operand isn't a label"
msgstr ""
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3426 vmsdbgout.c:475 config/i386/i386.c:5337
-#: config/pdp11/pdp11.c:1570
+#: final.c:3600 vmsdbgout.c:466 config/i386/i386.c:6104
+#: config/pdp11/pdp11.c:1573
msgid "floating constant misused"
msgstr ""
-#: final.c:3482 vmsdbgout.c:532 config/i386/i386.c:5391
-#: config/pdp11/pdp11.c:1617
+#: final.c:3656 vmsdbgout.c:523 config/i386/i386.c:6182
+#: config/pdp11/pdp11.c:1620
msgid "invalid expression as operand"
msgstr ""
-#: flow.c:356
+#: flow.c:352
msgid "function might be possible candidate for attribute `noreturn'"
msgstr ""
-#: flow.c:361
+#: flow.c:357
msgid "`noreturn' function does return"
msgstr ""
-#: flow.c:380
+#: flow.c:378
msgid "control reaches end of non-void function"
msgstr ""
-#: flow.c:1655
+#: flow.c:1641
msgid "Attempt to delete prologue/epilogue insn:"
msgstr ""
-#: fold-const.c:2476 fold-const.c:2489
+#: fold-const.c:2545 fold-const.c:2558
#, c-format
msgid "comparison is always %d due to width of bit-field"
msgstr ""
-#: fold-const.c:3532 fold-const.c:3549
+#: fold-const.c:3752 fold-const.c:3769
#, c-format
msgid "comparison is always %d"
msgstr ""
-#: fold-const.c:3680
+#: fold-const.c:3900
msgid "`or' of unmatched not-equal tests is always 1"
msgstr ""
-#: fold-const.c:3685
+#: fold-const.c:3905
msgid "`and' of mutually exclusive equal-tests is always 0"
msgstr ""
-#: function.c:901 varasm.c:1531
+#: function.c:881 varasm.c:1503
#, c-format
msgid "size of variable `%s' is too large"
msgstr ""
-#: function.c:5492
+#: function.c:5470
#, c-format
msgid "`%s' might be used uninitialized in this function"
msgstr ""
-#: function.c:5499
+#: function.c:5477
#, c-format
msgid "variable `%s' might be clobbered by `longjmp' or `vfork'"
msgstr ""
-#: function.c:5518
+#: function.c:5496
#, c-format
msgid "argument `%s' might be clobbered by `longjmp' or `vfork'"
msgstr ""
-#: function.c:6383
+#: function.c:6363
msgid "function returns an aggregate"
msgstr ""
-#: function.c:6905
+#: function.c:6868
#, c-format
msgid "unused parameter `%s'"
msgstr ""
-#: gcc.c:1101
+#: gcc.c:1126
#, c-format
msgid "ambiguous abbreviation %s"
msgstr ""
-#: gcc.c:1128
+#: gcc.c:1153
#, c-format
msgid "incomplete `%s' option"
msgstr ""
-#: gcc.c:1139
+#: gcc.c:1164
#, c-format
msgid "missing argument to `%s' option"
msgstr ""
-#: gcc.c:1152
+#: gcc.c:1177
#, c-format
msgid "extraneous argument to `%s' option"
msgstr ""
-#: gcc.c:1459
+#: gcc.c:1505
msgid "Using built-in specs.\n"
msgstr ""
-#: gcc.c:1633
+#: gcc.c:1683
#, c-format
msgid ""
"Setting spec %s to '%s'\n"
"\n"
msgstr ""
-#: gcc.c:1731
+#: gcc.c:1790
#, c-format
msgid "Reading specs from %s\n"
msgstr ""
-#: gcc.c:1829 gcc.c:1848
+#: gcc.c:1888 gcc.c:1907
#, c-format
msgid "specs %%include syntax malformed after %ld characters"
msgstr ""
-#: gcc.c:1856
+#: gcc.c:1915
#, c-format
msgid "could not find specs file %s\n"
msgstr ""
-#: gcc.c:1873 gcc.c:1881 gcc.c:1890 gcc.c:1899
+#: gcc.c:1932 gcc.c:1940 gcc.c:1949 gcc.c:1958
#, c-format
msgid "specs %%rename syntax malformed after %ld characters"
msgstr ""
-#: gcc.c:1908
+#: gcc.c:1967
#, c-format
msgid "specs %s spec was not found to be renamed"
msgstr ""
-#: gcc.c:1915
+#: gcc.c:1974
#, c-format
msgid "%s: attempt to rename spec '%s' to already defined spec '%s'"
msgstr ""
-#: gcc.c:1920
+#: gcc.c:1979
#, c-format
msgid "rename spec %s to %s\n"
msgstr ""
-#: gcc.c:1922
+#: gcc.c:1981
#, c-format
msgid ""
"spec is '%s'\n"
"\n"
msgstr ""
-#: gcc.c:1935
+#: gcc.c:1994
#, c-format
msgid "specs unknown %% command after %ld characters"
msgstr ""
-#: gcc.c:1946 gcc.c:1959
+#: gcc.c:2005 gcc.c:2018
#, c-format
msgid "specs file malformed after %ld characters"
msgstr ""
-#: gcc.c:2013
+#: gcc.c:2072
msgid "spec file has no spec for linking"
msgstr ""
-#: gcc.c:2725
+#: gcc.c:2570
msgid "-pipe not supported"
msgstr ""
-#: gcc.c:2779
+#: gcc.c:2625
msgid ""
"\n"
"Go ahead? (y or n) "
msgstr ""
-#: gcc.c:2878
+#: gcc.c:2751
#, c-format
msgid ""
"Internal error: %s (program %s)\n"
@@ -5195,172 +5270,176 @@ msgid ""
"See %s for instructions."
msgstr ""
-#: gcc.c:2896
+#: gcc.c:2769
#, c-format
msgid "# %s %.2f %.2f\n"
msgstr ""
-#: gcc.c:3029
+#: gcc.c:2899
#, c-format
msgid "Usage: %s [options] file...\n"
msgstr ""
-#: gcc.c:3030
+#: gcc.c:2900
msgid "Options:\n"
msgstr ""
-#: gcc.c:3032
+#: gcc.c:2902
msgid " -pass-exit-codes Exit with highest error code from a phase\n"
msgstr ""
-#: gcc.c:3033
+#: gcc.c:2903
msgid " --help Display this information\n"
msgstr ""
-#: gcc.c:3034
+#: gcc.c:2904
msgid ""
" --target-help Display target specific command line options\n"
msgstr ""
-#: gcc.c:3036
+#: gcc.c:2906
msgid " (Use '-v --help' to display command line options of sub-processes)\n"
msgstr ""
-#: gcc.c:3037
+#: gcc.c:2907
msgid " -dumpspecs Display all of the built in spec strings\n"
msgstr ""
-#: gcc.c:3038
+#: gcc.c:2908
msgid " -dumpversion Display the version of the compiler\n"
msgstr ""
-#: gcc.c:3039
+#: gcc.c:2909
msgid " -dumpmachine Display the compiler's target processor\n"
msgstr ""
-#: gcc.c:3040
+#: gcc.c:2910
msgid ""
" -print-search-dirs Display the directories in the compiler's search "
"path\n"
msgstr ""
-#: gcc.c:3041
+#: gcc.c:2911
msgid ""
" -print-libgcc-file-name Display the name of the compiler's companion "
"library\n"
msgstr ""
-#: gcc.c:3042
+#: gcc.c:2912
msgid " -print-file-name=<lib> Display the full path to library <lib>\n"
msgstr ""
-#: gcc.c:3043
+#: gcc.c:2913
msgid ""
" -print-prog-name=<prog> Display the full path to compiler component "
"<prog>\n"
msgstr ""
-#: gcc.c:3044
+#: gcc.c:2914
msgid ""
" -print-multi-directory Display the root directory for versions of "
"libgcc\n"
msgstr ""
-#: gcc.c:3045
+#: gcc.c:2915
msgid ""
" -print-multi-lib Display the mapping between command line options "
"and\n"
" multiple library search directories\n"
msgstr ""
-#: gcc.c:3048
+#: gcc.c:2918
+msgid " -print-multi-os-directory Display the relative path to OS libraries\n"
+msgstr ""
+
+#: gcc.c:2919
msgid ""
" -Wa,<options> Pass comma-separated <options> on to the "
"assembler\n"
msgstr ""
-#: gcc.c:3049
+#: gcc.c:2920
msgid ""
" -Wp,<options> Pass comma-separated <options> on to the "
"preprocessor\n"
msgstr ""
-#: gcc.c:3050
+#: gcc.c:2921
msgid ""
" -Wl,<options> Pass comma-separated <options> on to the linker\n"
msgstr ""
-#: gcc.c:3051
+#: gcc.c:2922
msgid " -Xlinker <arg> Pass <arg> on to the linker\n"
msgstr ""
-#: gcc.c:3052
+#: gcc.c:2923
msgid " -save-temps Do not delete intermediate files\n"
msgstr ""
-#: gcc.c:3053
+#: gcc.c:2924
msgid " -pipe Use pipes rather than intermediate files\n"
msgstr ""
-#: gcc.c:3054
+#: gcc.c:2925
msgid " -time Time the execution of each subprocess\n"
msgstr ""
-#: gcc.c:3055
+#: gcc.c:2926
msgid ""
" -specs=<file> Override built-in specs with the contents of "
"<file>\n"
msgstr ""
-#: gcc.c:3056
+#: gcc.c:2927
msgid ""
" -std=<standard> Assume that the input sources are for <standard>\n"
msgstr ""
-#: gcc.c:3057
+#: gcc.c:2928
msgid ""
" -B <directory> Add <directory> to the compiler's search paths\n"
msgstr ""
-#: gcc.c:3058
+#: gcc.c:2929
msgid " -b <machine> Run gcc for target <machine>, if installed\n"
msgstr ""
-#: gcc.c:3059
+#: gcc.c:2930
msgid ""
" -V <version> Run gcc version number <version>, if installed\n"
msgstr ""
-#: gcc.c:3060
+#: gcc.c:2931
msgid ""
" -v Display the programs invoked by the compiler\n"
msgstr ""
-#: gcc.c:3061
+#: gcc.c:2932
msgid ""
" -### Like -v but options quoted and commands not "
"executed\n"
msgstr ""
-#: gcc.c:3062
+#: gcc.c:2933
msgid ""
" -E Preprocess only; do not compile, assemble or "
"link\n"
msgstr ""
-#: gcc.c:3063
+#: gcc.c:2934
msgid " -S Compile only; do not assemble or link\n"
msgstr ""
-#: gcc.c:3064
+#: gcc.c:2935
msgid " -c Compile and assemble, but do not link\n"
msgstr ""
-#: gcc.c:3065
+#: gcc.c:2936
msgid " -o <file> Place the output into <file>\n"
msgstr ""
-#: gcc.c:3066
+#: gcc.c:2937
msgid ""
" -x <language> Specify the language of the following input "
"files\n"
@@ -5371,7 +5450,7 @@ msgid ""
"extension\n"
msgstr ""
-#: gcc.c:3073
+#: gcc.c:2944
#, c-format
msgid ""
"\n"
@@ -5380,86 +5459,89 @@ msgid ""
" other options on to these processes the -W<letter> options must be used.\n"
msgstr ""
+#: gcc.c:3079
+#, c-format
+msgid "`-%c' option must have argument"
+msgstr ""
+
+#: gcc.c:3101
+#, c-format
+msgid "couldn't run `%s': %s"
+msgstr ""
+
#. translate_options () has turned --version into -fversion.
-#: gcc.c:3353
+#: gcc.c:3278
#, c-format
msgid "%s (GCC) %s\n"
msgstr ""
-#: gcc.c:3354
+#: gcc.c:3279
msgid "Copyright (C) 2002 Free Software Foundation, Inc.\n"
msgstr ""
-#: gcc.c:3356 gcov.c:320
+#: gcc.c:3281 gcov.c:364
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
"\n"
msgstr ""
-#: gcc.c:3455
+#: gcc.c:3382
msgid "argument to `-Xlinker' is missing"
msgstr ""
-#: gcc.c:3463
+#: gcc.c:3390
msgid "argument to `-l' is missing"
msgstr ""
-#: gcc.c:3480
+#: gcc.c:3407
msgid "argument to `-specs' is missing"
msgstr ""
-#: gcc.c:3495
+#: gcc.c:3422
msgid "argument to `-specs=' is missing"
msgstr ""
-#: gcc.c:3526
-msgid "argument to `-b' is missing"
+#: gcc.c:3452
+#, c-format
+msgid "`-%c' must come at the start of the command line"
msgstr ""
-#: gcc.c:3541
+#: gcc.c:3461
msgid "argument to `-B' is missing"
msgstr ""
-#: gcc.c:3611
-msgid "argument to `-V' is missing"
-msgstr ""
-
-#: gcc.c:3632 gcc.c:3639 gcc.c:3646
-msgid "invalid version number format"
-msgstr ""
-
-#: gcc.c:3756
+#: gcc.c:3634
msgid "cannot specify -o with -c or -S and multiple compilations"
msgstr ""
-#: gcc.c:3927
+#: gcc.c:3807
msgid "warning: -pipe ignored because -save-temps specified"
msgstr ""
-#: gcc.c:3931
+#: gcc.c:3811
msgid "warning: -pipe ignored because -time specified"
msgstr ""
-#: gcc.c:3943
+#: gcc.c:3823
msgid "argument to `-x' is missing"
msgstr ""
-#: gcc.c:3971
+#: gcc.c:3851
#, c-format
msgid "argument to `-%s' is missing"
msgstr ""
-#: gcc.c:4032
+#: gcc.c:3912
#, c-format
msgid "warning: `-x %s' after last input file has no effect"
msgstr ""
-#: gcc.c:4331
+#: gcc.c:4257
msgid "invalid specification! Bug in cc"
msgstr ""
-#: gcc.c:4480
+#: gcc.c:4411
#, c-format
msgid "%s\n"
msgstr ""
@@ -5467,153 +5549,182 @@ msgstr ""
#. Catch the case where a spec string contains something like
#. '%{foo:%*}'. ie there is no * in the pattern on the left
#. hand side of the :.
-#: gcc.c:5033
+#: gcc.c:4971
#, c-format
msgid "spec failure: '%%*' has not been initialized by pattern match"
msgstr ""
-#: gcc.c:5042
+#: gcc.c:4980
#, c-format
msgid "warning: use of obsolete %%[ operator in specs"
msgstr ""
-#: gcc.c:5060
+#: gcc.c:4998
#, c-format
msgid "Processing spec %c%s%c, which is '%s'\n"
msgstr ""
-#: gcc.c:5185
+#: gcc.c:5123
#, c-format
msgid "spec failure: unrecognized spec option '%c'"
msgstr ""
-#: gcc.c:5295
+#: gcc.c:5204
+#, c-format
+msgid "unknown spec function `%s'"
+msgstr ""
+
+#: gcc.c:5223
+#, c-format
+msgid "error in args to spec function `%s'"
+msgstr ""
+
+#: gcc.c:5272
+msgid "malformed spec function name"
+msgstr ""
+
+#. )
+#: gcc.c:5275
+msgid "no arguments for spec function"
+msgstr ""
+
+#: gcc.c:5294
+msgid "malformed spec function arguments"
+msgstr ""
+
+#: gcc.c:5402
msgid "mismatched braces in specs"
msgstr ""
-#: gcc.c:5973
+#: gcc.c:6097
#, c-format
msgid "unrecognized option `-%s'"
msgstr ""
-#: gcc.c:5979
+#: gcc.c:6103
#, c-format
msgid "install: %s%s\n"
msgstr ""
-#: gcc.c:5980
+#: gcc.c:6104
#, c-format
msgid "programs: %s\n"
msgstr ""
-#: gcc.c:5981
+#: gcc.c:6105
#, c-format
msgid "libraries: %s\n"
msgstr ""
-#: gcc.c:6029
+#: gcc.c:6162
msgid ""
"\n"
"For bug reporting instructions, please see:\n"
msgstr ""
-#: gcc.c:6045
+#: gcc.c:6178
#, c-format
msgid "Configured with: %s\n"
msgstr ""
-#: gcc.c:6059
+#: gcc.c:6192
#, c-format
msgid "Thread model: %s\n"
msgstr ""
-#: gcc.c:6070
+#: gcc.c:6203
#, c-format
msgid "gcc version %s\n"
msgstr ""
-#: gcc.c:6072
+#: gcc.c:6205
#, c-format
msgid "gcc driver version %s executing gcc version %s\n"
msgstr ""
-#: gcc.c:6080
+#: gcc.c:6213
msgid "no input files"
msgstr ""
-#: gcc.c:6118
+#: gcc.c:6251
#, c-format
msgid "%s: %s compiler not installed on this system"
msgstr ""
-#: gcc.c:6193
+#: gcc.c:6326
#, c-format
msgid "%s: linker input file unused because linking not done"
msgstr ""
-#: gcc.c:6236
+#: gcc.c:6369
#, c-format
msgid "language %s not recognized"
msgstr ""
-#: gcc.c:6339
+#: gcc.c:6472
msgid "internal gcc abort"
msgstr ""
-#: gcov.c:282
+#: gcov.c:325
msgid "Internal gcov abort.\n"
msgstr ""
-#: gcov.c:295
+#: gcov.c:338
msgid ""
"Usage: gcov [OPTION]... SOURCEFILE\n"
"\n"
msgstr ""
-#: gcov.c:296
+#: gcov.c:339
msgid ""
"Print code coverage information.\n"
"\n"
msgstr ""
-#: gcov.c:297
+#: gcov.c:340
msgid " -h, --help Print this help, then exit\n"
msgstr ""
-#: gcov.c:298
+#: gcov.c:341
msgid " -v, --version Print version number, then exit\n"
msgstr ""
-#: gcov.c:299
+#: gcov.c:342
msgid ""
" -b, --branch-probabilities Include branch probabilities in output\n"
msgstr ""
-#: gcov.c:300
+#: gcov.c:343
msgid ""
" -c, --branch-counts Given counts of branches taken\n"
" rather than percentages\n"
msgstr ""
-#: gcov.c:302
+#: gcov.c:345
msgid " -n, --no-output Do not create an output file\n"
msgstr ""
-#: gcov.c:303
+#: gcov.c:346
msgid ""
" -l, --long-file-names Use long output file names for included\n"
" source files\n"
msgstr ""
-#: gcov.c:305
+#: gcov.c:348
msgid " -f, --function-summaries Output summaries for each function\n"
msgstr ""
-#: gcov.c:306
-msgid " -o, --object-directory OBJDIR Search for object files in OBJDIR\n"
+#: gcov.c:349
+msgid ""
+" -o, --object-directory DIR|FILE Search for object files in DIR or called "
+"FILE\n"
msgstr ""
-#: gcov.c:307
+#: gcov.c:350
+msgid " -p, --preserve-paths Preserve all pathname components\n"
+msgstr ""
+
+#: gcov.c:351
#, c-format
msgid ""
"\n"
@@ -5621,265 +5732,463 @@ msgid ""
"%s.\n"
msgstr ""
-#: gcov.c:317
+#: gcov.c:361
#, c-format
msgid "gcov (GCC) %s\n"
msgstr ""
-#: gcov.c:318
+#: gcov.c:362
msgid "Copyright (C) 2001 Free Software Foundation, Inc.\n"
msgstr ""
-#: gcov.c:462
+#: gcov.c:500
#, c-format
msgid "Could not open basic block file %s.\n"
msgstr ""
-#: gcov.c:471
+#: gcov.c:507
+#, c-format
+msgid "Could not open program flow graph file %s.\n"
+msgstr ""
+
+#: gcov.c:524
#, c-format
msgid "Could not open data file %s.\n"
msgstr ""
-#: gcov.c:472
+#: gcov.c:525
msgid "Assuming that all execution counts are zero.\n"
msgstr ""
-#: gcov.c:478
+#: gcov.c:534
#, c-format
-msgid "Could not open program flow graph file %s.\n"
+msgid "No executable code associated with file %s.\n"
msgstr ""
-#: gcov.c:489
+#: gcov.c:1186
#, c-format
-msgid "No executable code associated with file %s.\n"
+msgid "%s of %d lines executed in %s %s\n"
msgstr ""
-#: gcov.c:789
-msgid ".da file contents exhausted too early\n"
+#: gcov.c:1191
+#, c-format
+msgid "No executable lines in %s %s\n"
msgstr ""
-#: gcov.c:792
-msgid ".da file contents not exhausted\n"
+#: gcov.c:1198
+#, c-format
+msgid "%s of %d branches executed in %s %s\n"
msgstr ""
-#: gcov.c:973
+#: gcov.c:1203
#, c-format
-msgid "%6.2f%% of %d source lines executed in function %s\n"
+msgid "%s of %d branches taken at least once in %s %s\n"
msgstr ""
-#: gcov.c:977
+#: gcov.c:1209
#, c-format
-msgid "No executable source lines in function %s\n"
+msgid "No branches in %s %s\n"
msgstr ""
-#: gcov.c:984
+#: gcov.c:1211
#, c-format
-msgid "%6.2f%% of %d branches executed in function %s\n"
+msgid "%s of %d calls executed in %s %s\n"
msgstr ""
-#: gcov.c:988
+#: gcov.c:1216
#, c-format
-msgid "%6.2f%% of %d branches taken at least once in function %s\n"
+msgid "No calls in %s %s\n"
msgstr ""
-#: gcov.c:993
+#: gcov.c:1351
#, c-format
-msgid "No branches in function %s\n"
+msgid "didn't use all bb entries of graph, function %s\n"
msgstr ""
-#: gcov.c:995
+#: gcov.c:1353
#, c-format
-msgid "%6.2f%% of %d calls executed in function %s\n"
+msgid "block_num = %ld, num_blocks = %d\n"
msgstr ""
-#: gcov.c:999
+#: gcov.c:1367
#, c-format
-msgid "No calls in function %s\n"
+msgid "ERROR: unexpected line number %ld\n"
msgstr ""
-#: gcov.c:1126
+#: gcov.c:1383
#, c-format
-msgid "didn't use all bb entries of graph, function %s\n"
+msgid "ERROR: too many basic blocks in function %s\n"
msgstr ""
-#: gcov.c:1128
+#: gcov.c:1398
#, c-format
-msgid "block_num = %ld, num_blocks = %d\n"
+msgid "ERROR: out of range line number in function %s\n"
msgstr ""
-#: gcov.c:1166
+#: gcov.c:1470
#, c-format
-msgid "ERROR: too many basic blocks in .bb file %s\n"
+msgid "Could not open source file %s.\n"
msgstr ""
-#: gcov.c:1243
+#: gcov.c:1480
#, c-format
-msgid "%6.2f%% of %d source lines executed in file %s\n"
+msgid "Warning: source file %s is newer than %s\n"
msgstr ""
-#: gcov.c:1247
+#: gcov.c:1510
#, c-format
-msgid "No executable source lines in file %s\n"
+msgid "Unexpected EOF while reading source file %s.\n"
msgstr ""
-#: gcov.c:1254
+#: gcov.c:1532
#, c-format
-msgid "%6.2f%% of %d branches executed in file %s\n"
+msgid "call %2d never executed\n"
msgstr ""
-#: gcov.c:1258
+#: gcov.c:1535
#, c-format
-msgid "%6.2f%% of %d branches taken at least once in file %s\n"
+msgid "call %2d returns %s\n"
msgstr ""
-#: gcov.c:1263
+#: gcov.c:1543
#, c-format
-msgid "No branches in file %s\n"
+msgid "branch %2d never executed\n"
msgstr ""
-#: gcov.c:1265
+#: gcov.c:1546
#, c-format
-msgid "%6.2f%% of %d calls executed in file %s\n"
+msgid "branch %2d taken %s\n"
msgstr ""
-#: gcov.c:1269
+#: gcov.c:1610
#, c-format
-msgid "No calls in file %s\n"
+msgid "Creating %s.\n"
msgstr ""
-#: gcov.c:1281
+#: gcov.c:1613
#, c-format
-msgid "Could not open source file %s.\n"
+msgid "Error writing output file %s.\n"
msgstr ""
-#: gcov.c:1331
+#: gcov.c:1618
#, c-format
msgid "Could not open output file %s.\n"
msgstr ""
-#: gcov.c:1339
+#: gcse.c:761
#, c-format
-msgid "Creating %s.\n"
+msgid "GCSE disabled: %d > 1000 basic blocks and %d >= 20 edges/basic block"
+msgstr ""
+
+#: gcse.c:773
+#, c-format
+msgid "GCSE disabled: %d basic blocks and %d registers"
msgstr ""
-#: gcov.c:1387
+#: genautomata.c:1490
#, c-format
-msgid "call %d never executed\n"
+msgid "Name `%s' contains quotes"
msgstr ""
-#: gcov.c:1396
+#: genautomata.c:1621
#, c-format
-msgid "call %d returns = %s\n"
+msgid "invalid string `%s' in define_cpu_unit"
msgstr ""
-#: gcov.c:1406
+#: genautomata.c:1650
#, c-format
-msgid "call %d returns = %s%%\n"
+msgid "invalid string `%s' in define_query_cpu_unit"
msgstr ""
-#: gcov.c:1413
+#: genautomata.c:1682 genautomata.c:1685
#, c-format
-msgid "branch %d never executed\n"
+msgid "invalid string `%s' in define_bypass"
msgstr ""
-#: gcov.c:1423
+#: genautomata.c:1720
#, c-format
-msgid "branch %d taken = %s\n"
+msgid "invalid first string `%s' in exclusion_set"
msgstr ""
-#: gcov.c:1433
+#: genautomata.c:1724
#, c-format
-msgid "branch %d taken = %s%%\n"
+msgid "invalid second string `%s' in exclusion_set"
msgstr ""
-#: gcov.c:1444
+#: genautomata.c:1760
#, c-format
-msgid "Unexpected EOF while reading source file %s.\n"
+msgid "invalid first string `%s' in presence_set"
msgstr ""
-#: gcse.c:759
+#: genautomata.c:1764
#, c-format
-msgid "GCSE disabled: %d > 1000 basic blocks and %d >= 20 edges/basic block"
+msgid "invalid second string `%s' in presence_set"
msgstr ""
-#: gcse.c:771
+#: genautomata.c:1800
#, c-format
-msgid "GCSE disabled: %d basic blocks and %d registers"
+msgid "invalid first string `%s' in absence_set"
+msgstr ""
+
+#: genautomata.c:1804
+#, c-format
+msgid "invalid second string `%s' in absence_set"
msgstr ""
-#: graph.c:421 profile.c:951 profile.c:959 toplev.c:1751 toplev.c:4884
-#: f/com.c:14293 java/jcf-parse.c:935 java/jcf-parse.c:1081 java/lex.c:1771
-#: objc/objc-act.c:490
+#: genautomata.c:1837
+#, c-format
+msgid "invalid string `%s' in define_automaton"
+msgstr ""
+
+#: genautomata.c:1868
+#, c-format
+msgid "invalid option `%s' in automata_option"
+msgstr ""
+
+#: genautomata.c:1890
+#, c-format
+msgid "garbage after ) in reservation `%s'"
+msgstr ""
+
+#: genautomata.c:1921 genautomata.c:1954 genautomata.c:1981
+#, c-format
+msgid "invalid `%s' in reservation `%s'"
+msgstr ""
+
+#: genautomata.c:1932
+#, c-format
+msgid "repetition `%s' <= 1 in reservation `%s'"
+msgstr ""
+
+#: genautomata.c:2425
+#, c-format
+msgid "unit `%s' in exclusion is not declared"
+msgstr ""
+
+#: genautomata.c:2427
+#, c-format
+msgid "`%s' in exclusion is not unit"
+msgstr ""
+
+#: genautomata.c:2465
+#, c-format
+msgid "unit `%s' excludes itself"
+msgstr ""
+
+#: genautomata.c:2473
+#, c-format
+msgid "units `%s' and `%s' in exclusion set belong to different automata"
+msgstr ""
+
+#: genautomata.c:2603 genautomata.c:2609
+#, c-format
+msgid "unit `%s' excludes and requires presence of `%s'"
+msgstr ""
+
+#: genautomata.c:2623 genautomata.c:2629
+#, c-format
+msgid "unit `%s' requires absence and presence of `%s'"
+msgstr ""
+
+#: genautomata.c:2692 genautomata.c:2695
+#, c-format
+msgid "repeated declaration of automaton `%s'"
+msgstr ""
+
+#: genautomata.c:2711
+#, c-format
+msgid "define_insn_reservation `%s' has negative latency time"
+msgstr ""
+
+#: genautomata.c:2717
+#, c-format
+msgid "`%s' is already used as insn reservation name"
+msgstr ""
+
+#: genautomata.c:2723
+#, c-format
+msgid "define_bypass `%s - %s' has negative latency time"
+msgstr ""
+
+#: genautomata.c:2737
+#, c-format
+msgid "automaton `%s' is not declared"
+msgstr ""
+
+#: genautomata.c:2747
+#, c-format
+msgid "define_unit `%s' without automaton when one defined"
+msgstr ""
+
+#: genautomata.c:2753
+#, c-format
+msgid "`%s' is declared as cpu unit"
+msgstr ""
+
+#: genautomata.c:2762
+#, c-format
+msgid "`%s' is declared as cpu reservation"
+msgstr ""
+
+#: genautomata.c:2772
+#, c-format
+msgid "repeated declaration of unit `%s'"
+msgstr ""
+
+#: genautomata.c:2775
+#, c-format
+msgid "repeated declaration of reservation `%s'"
+msgstr ""
+
+#: genautomata.c:2790 genautomata.c:2793
+#, c-format
+msgid "there is no insn reservation `%s'"
+msgstr ""
+
+#: genautomata.c:2810 genautomata.c:2815
+#, c-format
+msgid "the same bypass `%s - %s' is already defined"
+msgstr ""
+
+#: genautomata.c:2820
+#, c-format
+msgid "bypass `%s - %s' is already defined"
+msgstr ""
+
+#: genautomata.c:2925 genautomata.c:2927
+#, c-format
+msgid "automaton `%s' is not used"
+msgstr ""
+
+#: genautomata.c:2950
+#, c-format
+msgid "undeclared unit or reservation `%s'"
+msgstr ""
+
+#: genautomata.c:3028 genautomata.c:3030
+#, c-format
+msgid "unit `%s' is not used"
+msgstr ""
+
+#: genautomata.c:3035 genautomata.c:3037
+#, c-format
+msgid "reservation `%s' is not used"
+msgstr ""
+
+#: genautomata.c:3134
+#, c-format
+msgid "cycle in definition of reservation `%s'"
+msgstr ""
+
+#: genautomata.c:5333
+#, c-format
+msgid "Units `%s' and `%s' should be in the same automaton"
+msgstr ""
+
+#: genautomata.c:9441
+msgid "-split has no argument."
+msgstr ""
+
+#: genautomata.c:9442
+msgid "option `-split' has not been implemented yet\n"
+msgstr ""
+
+#: genautomata.c:9486 genautomata.c:9491
+#, c-format
+msgid "Automaton `%s': Insn `%s' will never be issued"
+msgstr ""
+
+#: genautomata.c:9498 genautomata.c:9501
+#, c-format
+msgid "Insn `%s' will never be issued"
+msgstr ""
+
+#: genautomata.c:9649
+msgid "Errors in DFA description"
+msgstr ""
+
+#: genautomata.c:9732
+#, c-format
+msgid "Error in writing DFA description file %s"
+msgstr ""
+
+#: genconditions.c:196
+msgid "No input file name."
+msgstr ""
+
+#: graph.c:420 profile.c:1204 profile.c:1211 toplev.c:1836 toplev.c:5121
+#: f/com.c:14138 java/jcf-parse.c:913 java/jcf-parse.c:1059 java/lex.c:1767
+#: objc/objc-act.c:449
#, c-format
msgid "can't open %s"
msgstr ""
-#: haifa-sched.c:190
+#: haifa-sched.c:196
#, c-format
msgid "fix_sched_param: unknown param: %s"
msgstr ""
-#: integrate.c:186
+#: integrate.c:172
msgid "function cannot be inline"
msgstr ""
-#: integrate.c:191
+#: integrate.c:176
msgid "varargs function cannot be inline"
msgstr ""
-#: integrate.c:194
+#: integrate.c:179
msgid "function using alloca cannot be inline"
msgstr ""
-#: integrate.c:197
+#: integrate.c:182
msgid "function using setjmp cannot be inline"
msgstr ""
-#: integrate.c:200
+#: integrate.c:185
msgid "function uses __builtin_eh_return"
msgstr ""
-#: integrate.c:203
+#: integrate.c:188
msgid "function with nested functions cannot be inline"
msgstr ""
-#: integrate.c:207
+#: integrate.c:192
msgid "function with label addresses used in initializers cannot inline"
msgstr ""
-#: integrate.c:214 integrate.c:258
+#: integrate.c:199 integrate.c:243
msgid "function too large to be inline"
msgstr ""
-#: integrate.c:224
+#: integrate.c:209
msgid "no prototype, and parameter address used; cannot be inline"
msgstr ""
-#: integrate.c:231 integrate.c:276
+#: integrate.c:216 integrate.c:261
msgid "inline functions not supported for this return value type"
msgstr ""
-#: integrate.c:236
+#: integrate.c:221
msgid "function with varying-size return value cannot be inline"
msgstr ""
-#: integrate.c:243
+#: integrate.c:228
msgid "function with varying-size parameter cannot be inline"
msgstr ""
-#: integrate.c:246
+#: integrate.c:231
msgid "function with transparent unit parameter cannot be inline"
msgstr ""
-#: integrate.c:265
+#: integrate.c:250
msgid "function with computed jump cannot inline"
msgstr ""
-#: integrate.c:269
+#: integrate.c:254
msgid "function with nonlocal goto cannot be inline"
msgstr ""
-#: integrate.c:283
+#: integrate.c:268
msgid "function with target specific attribute(s) cannot be inlined"
msgstr ""
@@ -5913,55 +6222,56 @@ msgstr ""
msgid "invalid parameter `%s'"
msgstr ""
-#: profile.c:430
+#: profile.c:397
#, c-format
-msgid "corrupted profile info: prob for %d-%d thought to be %d"
+msgid "Profile does not match flowgraph of function %s (out of date?)"
msgstr ""
-#: profile.c:976
-#, c-format
-msgid "file %s not found, execution counts assumed to be zero"
+#: profile.c:400
+msgid ".da file corrupted"
msgstr ""
-#: profile.c:1023
-msgid ".da file contents exhausted too early"
+#: profile.c:634
+#, c-format
+msgid "corrupted profile info: prob for %d-%d thought to be %d"
msgstr ""
-#: profile.c:1026
-msgid ".da file contents not exhausted"
+#: profile.c:1226
+#, c-format
+msgid "file %s not found, execution counts assumed to be zero"
msgstr ""
-#: protoize.c:546
+#: protoize.c:542
#, c-format
msgid "%s: internal abort\n"
msgstr ""
-#: protoize.c:637
+#: protoize.c:633
#, c-format
msgid "%s: error writing file `%s': %s\n"
msgstr ""
-#: protoize.c:682
+#: protoize.c:678
#, c-format
msgid "%s: usage '%s [ -VqfnkN ] [ -i <istring> ] [ filename ... ]'\n"
msgstr ""
-#: protoize.c:685
+#: protoize.c:681
#, c-format
msgid "%s: usage '%s [ -VqfnkNlgC ] [ -B <dirname> ] [ filename ... ]'\n"
msgstr ""
-#: protoize.c:792
+#: protoize.c:788
#, c-format
msgid "%s: warning: no read access for file `%s'\n"
msgstr ""
-#: protoize.c:800
+#: protoize.c:796
#, c-format
msgid "%s: warning: no write access for file `%s'\n"
msgstr ""
-#: protoize.c:808
+#: protoize.c:804
#, c-format
msgid "%s: warning: no write access for dir containing `%s'\n"
msgstr ""
@@ -5969,568 +6279,517 @@ msgstr ""
#. Catch cases like /.. where we try to backup to a
#. point above the absolute root of the logical file
#. system.
-#: protoize.c:1226
+#: protoize.c:1222
#, c-format
msgid "%s: invalid file name: %s\n"
msgstr ""
-#: protoize.c:1378
+#: protoize.c:1374
#, c-format
msgid "%s: %s: can't get status: %s\n"
msgstr ""
-#: protoize.c:1399
+#: protoize.c:1395
#, c-format
msgid ""
"\n"
"%s: fatal error: aux info file corrupted at line %d\n"
msgstr ""
-#: protoize.c:1735
+#: protoize.c:1731
#, c-format
msgid "%s:%d: declaration of function `%s' takes different forms\n"
msgstr ""
-#: protoize.c:1993
+#: protoize.c:1989
#, c-format
msgid "%s: compiling `%s'\n"
msgstr ""
-#: protoize.c:2016
+#: protoize.c:2012
#, c-format
msgid "%s: wait: %s\n"
msgstr ""
-#: protoize.c:2021
+#: protoize.c:2017
#, c-format
msgid "%s: subprocess got fatal signal %d\n"
msgstr ""
-#: protoize.c:2029
+#: protoize.c:2025
#, c-format
msgid "%s: %s exited with status %d\n"
msgstr ""
-#: protoize.c:2081
+#: protoize.c:2077
#, c-format
msgid "%s: warning: missing SYSCALLS file `%s'\n"
msgstr ""
-#: protoize.c:2090 protoize.c:2119
+#: protoize.c:2086 protoize.c:2115
#, c-format
msgid "%s: can't read aux info file `%s': %s\n"
msgstr ""
-#: protoize.c:2135 protoize.c:2163
+#: protoize.c:2131 protoize.c:2159
#, c-format
msgid "%s: can't get status of aux info file `%s': %s\n"
msgstr ""
-#: protoize.c:2191
+#: protoize.c:2187
#, c-format
msgid "%s: can't open aux info file `%s' for reading: %s\n"
msgstr ""
-#: protoize.c:2209
+#: protoize.c:2205
#, c-format
msgid "%s: error reading aux info file `%s': %s\n"
msgstr ""
-#: protoize.c:2222
+#: protoize.c:2218
#, c-format
msgid "%s: error closing aux info file `%s': %s\n"
msgstr ""
-#: protoize.c:2238
+#: protoize.c:2234
#, c-format
msgid "%s: can't delete aux info file `%s': %s\n"
msgstr ""
-#: protoize.c:2320 protoize.c:4322
+#: protoize.c:2316 protoize.c:4318
#, c-format
msgid "%s: can't delete file `%s': %s\n"
msgstr ""
-#: protoize.c:2399
+#: protoize.c:2395
#, c-format
msgid "%s: warning: can't rename file `%s' to `%s': %s\n"
msgstr ""
-#: protoize.c:2524
+#: protoize.c:2520
#, c-format
msgid "%s: conflicting extern definitions of '%s'\n"
msgstr ""
-#: protoize.c:2528
+#: protoize.c:2524
#, c-format
msgid "%s: declarations of '%s' will not be converted\n"
msgstr ""
-#: protoize.c:2530
+#: protoize.c:2526
#, c-format
msgid "%s: conflict list for '%s' follows:\n"
msgstr ""
-#: protoize.c:2563
+#: protoize.c:2559
#, c-format
msgid "%s: warning: using formals list from %s(%d) for function `%s'\n"
msgstr ""
-#: protoize.c:2603
+#: protoize.c:2599
#, c-format
msgid "%s: %d: `%s' used but missing from SYSCALLS\n"
msgstr ""
-#: protoize.c:2609
+#: protoize.c:2605
#, c-format
msgid "%s: %d: warning: no extern definition for `%s'\n"
msgstr ""
-#: protoize.c:2640
+#: protoize.c:2636
#, c-format
msgid "%s: warning: no static definition for `%s' in file `%s'\n"
msgstr ""
-#: protoize.c:2646
+#: protoize.c:2642
#, c-format
msgid "%s: multiple static defs of `%s' in file `%s'\n"
msgstr ""
-#: protoize.c:2819 protoize.c:2822
+#: protoize.c:2815 protoize.c:2818
#, c-format
msgid "%s: %d: warning: source too confusing\n"
msgstr ""
-#: protoize.c:3028
+#: protoize.c:3024
#, c-format
msgid "%s: %d: warning: varargs function declaration not converted\n"
msgstr ""
-#: protoize.c:3043
+#: protoize.c:3039
#, c-format
msgid "%s: declaration of function `%s' not converted\n"
msgstr ""
-#: protoize.c:3166
+#: protoize.c:3162
#, c-format
msgid "%s: warning: too many parameter lists in declaration of `%s'\n"
msgstr ""
-#: protoize.c:3187
+#: protoize.c:3183
#, c-format
msgid ""
"\n"
"%s: warning: too few parameter lists in declaration of `%s'\n"
msgstr ""
-#: protoize.c:3285
+#: protoize.c:3281
#, c-format
msgid "%s: %d: warning: found `%s' but expected `%s'\n"
msgstr ""
-#: protoize.c:3463
+#: protoize.c:3459
#, c-format
msgid "%s: local declaration for function `%s' not inserted\n"
msgstr ""
-#: protoize.c:3490
+#: protoize.c:3486
#, c-format
msgid ""
"\n"
"%s: %d: warning: can't add declaration of `%s' into macro call\n"
msgstr ""
-#: protoize.c:3564
+#: protoize.c:3560
#, c-format
msgid "%s: global declarations for file `%s' not inserted\n"
msgstr ""
-#: protoize.c:3655 protoize.c:3685
+#: protoize.c:3651 protoize.c:3681
#, c-format
msgid "%s: definition of function `%s' not converted\n"
msgstr ""
-#: protoize.c:3674
+#: protoize.c:3670
#, c-format
msgid "%s: %d: warning: definition of %s not converted\n"
msgstr ""
-#: protoize.c:4004
+#: protoize.c:4000
#, c-format
msgid "%s: found definition of `%s' at %s(%d)\n"
msgstr ""
#. If we make it here, then we did not know about this
#. function definition.
-#: protoize.c:4020
+#: protoize.c:4016
#, c-format
msgid "%s: %d: warning: `%s' excluded by preprocessing\n"
msgstr ""
-#: protoize.c:4023
+#: protoize.c:4019
#, c-format
msgid "%s: function definition not converted\n"
msgstr ""
-#: protoize.c:4082
+#: protoize.c:4078
#, c-format
msgid "%s: `%s' not converted\n"
msgstr ""
-#: protoize.c:4090
+#: protoize.c:4086
#, c-format
msgid "%s: would convert file `%s'\n"
msgstr ""
-#: protoize.c:4093
+#: protoize.c:4089
#, c-format
msgid "%s: converting file `%s'\n"
msgstr ""
-#: protoize.c:4103
+#: protoize.c:4099
#, c-format
msgid "%s: can't get status for file `%s': %s\n"
msgstr ""
-#: protoize.c:4145
+#: protoize.c:4141
#, c-format
msgid "%s: can't open file `%s' for reading: %s\n"
msgstr ""
-#: protoize.c:4160
+#: protoize.c:4156
#, c-format
msgid ""
"\n"
"%s: error reading input file `%s': %s\n"
msgstr ""
-#: protoize.c:4194
+#: protoize.c:4190
#, c-format
msgid "%s: can't create/open clean file `%s': %s\n"
msgstr ""
-#: protoize.c:4299
+#: protoize.c:4295
#, c-format
msgid "%s: warning: file `%s' already saved in `%s'\n"
msgstr ""
-#: protoize.c:4307
+#: protoize.c:4303
#, c-format
msgid "%s: can't link file `%s' to `%s': %s\n"
msgstr ""
-#: protoize.c:4337
+#: protoize.c:4333
#, c-format
msgid "%s: can't create/open output file `%s': %s\n"
msgstr ""
-#: protoize.c:4370
+#: protoize.c:4366
#, c-format
msgid "%s: can't change mode of file `%s': %s\n"
msgstr ""
-#: protoize.c:4545
+#: protoize.c:4541
#, c-format
msgid "%s: cannot get working directory: %s\n"
msgstr ""
-#: protoize.c:4643
+#: protoize.c:4639
#, c-format
msgid "%s: input file names must have .c suffixes: %s\n"
msgstr ""
-#: real.c:731 real.c:908
-msgid "conversion from NaN to int"
-msgstr ""
-
-#: real.c:754
-msgid "conversion from NaN to unsigned int"
-msgstr ""
-
-#: real.c:2628
-msgid "floating point overflow"
-msgstr ""
-
-#: real.c:4303 real.c:6619 real.c:6700
-msgid "overflow on truncation to integer"
+#: ra.c:750
+msgid "Didn't find a coloring.\n"
msgstr ""
-#: real.c:4375
-msgid "overflow on truncation to unsigned integer"
-msgstr ""
-
-#: real.c:5720
-#, c-format
-msgid "%s: argument domain error"
-msgstr ""
-
-#: real.c:5721
-#, c-format
-msgid "%s: function singularity"
-msgstr ""
-
-#: real.c:5722
-#, c-format
-msgid "%s: overflow range error"
-msgstr ""
-
-#: real.c:5723
-#, c-format
-msgid "%s: underflow range error"
-msgstr ""
-
-#: real.c:5724
-#, c-format
-msgid "%s: total loss of precision"
-msgstr ""
-
-#: real.c:5725
-#, c-format
-msgid "%s: partial loss of precision"
-msgstr ""
-
-#: real.c:5726
-#, c-format
-msgid "%s: NaN - producing operation"
-msgstr ""
-
-#: real.c:6270
-#, c-format
-msgid "%d-bit floats cannot hold NaNs"
-msgstr ""
-
-#: real.c:6344
-#, c-format
-msgid "value exceeds the range of a %d-bit float"
-msgstr ""
-
-#: reg-stack.c:677
+#: reg-stack.c:673
#, c-format
msgid "output constraint %d must specify a single register"
msgstr ""
-#: reg-stack.c:687
+#: reg-stack.c:683
#, c-format
msgid "output constraint %d cannot be specified together with \"%s\" clobber"
msgstr ""
-#: reg-stack.c:710
+#: reg-stack.c:706
msgid "output regs must be grouped at top of stack"
msgstr ""
-#: reg-stack.c:747
+#: reg-stack.c:743
msgid "implicitly popped regs must be grouped at top of stack"
msgstr ""
-#: reg-stack.c:766
+#: reg-stack.c:762
#, c-format
msgid "output operand %d must use `&' constraint"
msgstr ""
-#: regclass.c:778
+#: regclass.c:753
#, c-format
msgid "can't use '%s' as a %s register"
msgstr ""
-#: regclass.c:793 config/ia64/ia64.c:3875 config/ia64/ia64.c:3882
+#: regclass.c:768 config/ia64/ia64.c:4169 config/ia64/ia64.c:4176
#, c-format
msgid "unknown register name: %s"
msgstr ""
-#: regclass.c:804
+#: regclass.c:779
msgid "global register variable follows a function definition"
msgstr ""
-#: regclass.c:808
+#: regclass.c:783
msgid "register used for two global register variables"
msgstr ""
-#: regclass.c:813
+#: regclass.c:788
msgid "call-clobbered register used for global register variable"
msgstr ""
-#: regrename.c:1845
+#: regrename.c:1899
#, c-format
msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)"
msgstr ""
-#: regrename.c:1857
+#: regrename.c:1911
#, c-format
msgid "validate_value_data: Loop in regno chain (%u)"
msgstr ""
-#: regrename.c:1860
+#: regrename.c:1914
#, c-format
msgid "validate_value_data: [%u] Bad oldest_regno (%u)"
msgstr ""
-#: regrename.c:1872
+#: regrename.c:1926
#, c-format
msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
msgstr ""
-#: reload.c:1208
+#: reload.c:1225
msgid "cannot reload integer constant operand in `asm'"
msgstr ""
-#: reload.c:1230
+#: reload.c:1247
msgid "impossible register constraint in `asm'"
msgstr ""
-#: reload.c:3377
+#: reload.c:3467
msgid "`&' constraint used with no register class"
msgstr ""
-#: reload.c:3545
+#: reload.c:3635
msgid "unable to generate reloads for:"
msgstr ""
-#: reload.c:3546 reload.c:3760
+#: reload.c:3636 reload.c:3850
msgid "inconsistent operand constraints in an `asm'"
msgstr ""
-#: reload1.c:1247
+#: reload1.c:1255
msgid "frame size too large for reliable stack checking"
msgstr ""
-#: reload1.c:1250
+#: reload1.c:1258
msgid "try reducing the number of local variables"
msgstr ""
-#: reload1.c:1902
+#: reload1.c:1914
#, c-format
msgid "can't find a register in class `%s' while reloading `asm'"
msgstr ""
-#: reload1.c:1906
+#: reload1.c:1918
#, c-format
msgid "unable to find a register to spill in class `%s'"
msgstr ""
-#: reload1.c:1908
+#: reload1.c:1920
msgid "this is the insn:"
msgstr ""
-#: reload1.c:3924
+#: reload1.c:3941
msgid "`asm' operand requires impossible reload"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:5040
+#: reload1.c:5055
msgid "could not find a spill register"
msgstr ""
-#: reload1.c:5045
+#: reload1.c:5060
msgid "`asm' operand constraint incompatible with operand size"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:6639
+#: reload1.c:6680
msgid "VOIDmode on an output"
msgstr ""
-#: reload1.c:6640
+#: reload1.c:6681
msgid "output operand is constant in `asm'"
msgstr ""
-#: rtl-error.c:139
+#: rtl-error.c:140
msgid "unrecognizable insn:"
msgstr ""
-#: rtl-error.c:141
+#: rtl-error.c:142
msgid "insn does not satisfy its constraints:"
msgstr ""
-#: rtl.c:563
+#: rtl.c:558
#, c-format
msgid "RTL check: access of elt %d of `%s' with last elt %d in %s, at %s:%d"
msgstr ""
-#: rtl.c:578
+#: rtl.c:573
#, c-format
msgid ""
"RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%d"
msgstr ""
-#: rtl.c:594
+#: rtl.c:589
#, c-format
msgid ""
"RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %"
"s:%d"
msgstr ""
-#: rtl.c:607
+#: rtl.c:602
#, c-format
msgid "RTL check: expected code `%s', have `%s' in %s, at %s:%d"
msgstr ""
-#: rtl.c:621
+#: rtl.c:616
#, c-format
msgid "RTL check: expected code `%s' or `%s', have `%s' in %s, at %s:%d"
msgstr ""
-#: rtl.c:636
+#: rtl.c:631
#, c-format
msgid "RTL check: access of elt %d of vector with last elt %d in %s, at %s:%d"
msgstr ""
-#: stmt.c:928
+#: rtl.c:646
+#, c-format
+msgid "RTL flag check: %s used with unexpected rtx code `%s' in %s, at %s:%d"
+msgstr ""
+
+#: stmt.c:753
#, c-format
msgid "jump to `%s' invalidly jumps into binding contour"
msgstr ""
-#: stmt.c:1164 stmt.c:3763
+#: stmt.c:989 stmt.c:3731
#, c-format
msgid "label `%s' used before containing binding contour"
msgstr ""
-#: stmt.c:1344
+#: stmt.c:1169
msgid "output operand constraint lacks `='"
msgstr ""
-#: stmt.c:1359
+#: stmt.c:1184
#, c-format
msgid "output constraint `%c' for operand %d is not at the beginning"
msgstr ""
-#: stmt.c:1381
+#: stmt.c:1206
msgid "operand constraint contains incorrectly positioned '+' or '='"
msgstr ""
-#: stmt.c:1387 stmt.c:1487
+#: stmt.c:1212 stmt.c:1316
#, c-format
msgid "`%%' constraint used with last operand"
msgstr ""
-#: stmt.c:1406
+#: stmt.c:1231
msgid "matching constraint not valid in output operand"
msgstr ""
-#: stmt.c:1478
+#: stmt.c:1307
#, c-format
msgid "input operand constraint contains `%c'"
msgstr ""
-#: stmt.c:1518
+#: stmt.c:1347
msgid "matching constraint references invalid operand number"
msgstr ""
-#: stmt.c:1550
+#: stmt.c:1379
#, c-format
msgid "invalid punctuation `%c' in constraint"
msgstr ""
-#: stmt.c:1646
+#: stmt.c:1429
+#, c-format
+msgid "asm-specifier for variable `%s' conflicts with asm clobber list"
+msgstr ""
+
+#: stmt.c:1519
#, c-format
msgid "unknown register name `%s' in `asm'"
msgstr ""
-#: stmt.c:1690
+#: stmt.c:1567
#, c-format
msgid "more than %d operands in `asm'"
msgstr ""
-#: stmt.c:1749
+#: stmt.c:1626
#, c-format
msgid "output number %d not directly addressable"
msgstr ""
@@ -6538,99 +6797,107 @@ msgstr ""
#. ??? Leave this only until we have experience with what
#. happens in combine and elsewhere when constraints are
#. not satisfied.
-#: stmt.c:1818 stmt.c:1847
+#: stmt.c:1698 stmt.c:1727
#, c-format
msgid "asm operand %d probably doesn't match constraints"
msgstr ""
-#: stmt.c:1993
+#: stmt.c:1858
+msgid "asm clobber conflict with output operand"
+msgstr ""
+
+#: stmt.c:1863
+msgid "asm clobber conflict with input operand"
+msgstr ""
+
+#: stmt.c:1898
msgid "too many alternatives in `asm'"
msgstr ""
-#: stmt.c:2005
+#: stmt.c:1910
msgid "operand constraints for `asm' differ in number of alternatives"
msgstr ""
-#: stmt.c:2058
+#: stmt.c:1963
#, c-format
msgid "duplicate asm operand name '%s'"
msgstr ""
-#: stmt.c:2145
+#: stmt.c:2050
msgid "missing close brace for named operand"
msgstr ""
-#: stmt.c:2173
+#: stmt.c:2078
#, c-format
msgid "undefined named operand '%s'"
msgstr ""
-#: stmt.c:3700
+#: stmt.c:3668
#, c-format
msgid "unused variable `%s'"
msgstr ""
-#: stmt.c:5180
+#: stmt.c:5149
#, c-format
msgid "enumeration value `%s' not handled in switch"
msgstr ""
-#: stmt.c:5205 stmt.c:5225
+#: stmt.c:5174 stmt.c:5194
#, c-format
msgid "case value `%ld' not in enumerated type"
msgstr ""
-#: stmt.c:5208 stmt.c:5228
+#: stmt.c:5177 stmt.c:5197
#, c-format
msgid "case value `%ld' not in enumerated type `%s'"
msgstr ""
-#: stmt.c:5315
+#: stmt.c:5270
msgid "switch missing default case"
msgstr ""
-#: stor-layout.c:175
+#: stor-layout.c:178
msgid "type size can't be explicitly evaluated"
msgstr ""
-#: stor-layout.c:177
+#: stor-layout.c:180
msgid "variable-size type declared outside of any function"
msgstr ""
-#: stor-layout.c:458
+#: stor-layout.c:461
#, c-format
msgid "size of `%s' is %d bytes"
msgstr ""
-#: stor-layout.c:460
+#: stor-layout.c:463
#, c-format
msgid "size of `%s' is larger than %d bytes"
msgstr ""
-#: stor-layout.c:858 stor-layout.c:1159
+#: stor-layout.c:869 stor-layout.c:1285
#, c-format
msgid "packed attribute causes inefficient alignment for `%s'"
msgstr ""
-#: stor-layout.c:860 stor-layout.c:1161
+#: stor-layout.c:871 stor-layout.c:1287
#, c-format
msgid "packed attribute is unnecessary for `%s'"
msgstr ""
-#: stor-layout.c:875
+#: stor-layout.c:886
#, c-format
msgid "padding struct to align `%s'"
msgstr ""
-#: stor-layout.c:1123
+#: stor-layout.c:1249
msgid "padding struct size to alignment boundary"
msgstr ""
-#: stor-layout.c:1166
+#: stor-layout.c:1292
msgid "packed attribute causes inefficient alignment"
msgstr ""
-#: stor-layout.c:1168
+#: stor-layout.c:1294
msgid "packed attribute is unnecessary"
msgstr ""
@@ -6650,1008 +6917,1038 @@ msgstr ""
msgid "time in %s: %ld.%06ld (%ld%%)\n"
msgstr ""
-#: tlink.c:428
+#: tlink.c:399
#, c-format
msgid "collect: reading %s\n"
msgstr ""
-#: tlink.c:532
+#: tlink.c:502
#, c-format
msgid "collect: recompiling %s\n"
msgstr ""
-#: tlink.c:698
+#: tlink.c:668
#, c-format
msgid "collect: tweaking %s in %s\n"
msgstr ""
-#: tlink.c:745
+#: tlink.c:715
msgid "collect: relinking\n"
msgstr ""
-#: tlink.c:754
+#: tlink.c:724
#, c-format
msgid "ld returned %d exit status"
msgstr ""
-#: toplev.c:875
+#: toplev.c:920
msgid "Generate debugging info in default format"
msgstr ""
-#: toplev.c:876
+#: toplev.c:921
msgid "Generate debugging info in default extended format"
msgstr ""
-#: toplev.c:878
+#: toplev.c:923
msgid "Generate STABS format debug info"
msgstr ""
-#: toplev.c:879
+#: toplev.c:924
msgid "Generate extended STABS format debug info"
msgstr ""
-#: toplev.c:882
+#: toplev.c:927
msgid "Generate DWARF-1 format debug info"
msgstr ""
-#: toplev.c:884
+#: toplev.c:929
msgid "Generate extended DWARF-1 format debug info"
msgstr ""
-#: toplev.c:887
+#: toplev.c:932
msgid "Generate DWARF-2 debug info"
msgstr ""
-#: toplev.c:890
+#: toplev.c:935
msgid "Generate XCOFF format debug info"
msgstr ""
-#: toplev.c:891
+#: toplev.c:936
msgid "Generate extended XCOFF format debug info"
msgstr ""
-#: toplev.c:894
+#: toplev.c:939
msgid "Generate COFF format debug info"
msgstr ""
-#: toplev.c:897
+#: toplev.c:942
msgid "Generate VMS format debug info"
msgstr ""
-#: toplev.c:941
+#: toplev.c:981
msgid "Perform DWARF2 duplicate elimination"
msgstr ""
-#: toplev.c:943
+#: toplev.c:983
msgid "Do not store floats in registers"
msgstr ""
-#: toplev.c:945
+#: toplev.c:985
msgid "Consider all mem refs through pointers as volatile"
msgstr ""
-#: toplev.c:947
+#: toplev.c:987
msgid "Consider all mem refs to global data to be volatile"
msgstr ""
-#: toplev.c:949
+#: toplev.c:989
msgid "Consider all mem refs to static data to be volatile"
msgstr ""
-#: toplev.c:951
+#: toplev.c:991
msgid "Defer popping functions args from stack until later"
msgstr ""
-#: toplev.c:953
+#: toplev.c:993
msgid "When possible do not generate stack frames"
msgstr ""
-#: toplev.c:955
+#: toplev.c:995
msgid "Optimize sibling and tail recursive calls"
msgstr ""
-#: toplev.c:957
+#: toplev.c:997
+msgid "Perform superblock formation via tail duplication"
+msgstr ""
+
+#: toplev.c:999
msgid "When running CSE, follow jumps to their targets"
msgstr ""
-#: toplev.c:959
+#: toplev.c:1001
msgid "When running CSE, follow conditional jumps"
msgstr ""
-#: toplev.c:961
+#: toplev.c:1003
msgid "Perform a number of minor, expensive optimizations"
msgstr ""
-#: toplev.c:963
+#: toplev.c:1005
msgid "Perform jump threading optimizations"
msgstr ""
-#: toplev.c:965
+#: toplev.c:1007
msgid "Perform strength reduction optimizations"
msgstr ""
-#: toplev.c:967
+#: toplev.c:1009
msgid "Perform loop unrolling when iteration count is known"
msgstr ""
-#: toplev.c:969
+#: toplev.c:1011
msgid "Perform loop unrolling for all loops"
msgstr ""
-#: toplev.c:971
+#: toplev.c:1013
msgid "Generate prefetch instructions, if available, for arrays in loops"
msgstr ""
-#: toplev.c:973
+#: toplev.c:1015
msgid "Force all loop invariant computations out of loops"
msgstr ""
-#: toplev.c:975
+#: toplev.c:1017
msgid "Strength reduce all loop general induction variables"
msgstr ""
-#: toplev.c:977
+#: toplev.c:1019
msgid "Store strings in writable data section"
msgstr ""
-#: toplev.c:979
+#: toplev.c:1021
msgid "Enable machine specific peephole optimizations"
msgstr ""
-#: toplev.c:981
+#: toplev.c:1023
msgid "Copy memory operands into registers before using"
msgstr ""
-#: toplev.c:983
+#: toplev.c:1025
msgid "Copy memory address constants into regs before using"
msgstr ""
-#: toplev.c:985
+#: toplev.c:1027
msgid "Allow function addresses to be held in registers"
msgstr ""
-#: toplev.c:987
+#: toplev.c:1029
msgid "Integrate simple functions into their callers"
msgstr ""
-#: toplev.c:989
+#: toplev.c:1031
msgid "Generate code for funcs even if they are fully inlined"
msgstr ""
-#: toplev.c:991
+#: toplev.c:1033
msgid "Pay attention to the 'inline' keyword"
msgstr ""
-#: toplev.c:993
+#: toplev.c:1035
msgid "Emit static const variables even if they are not used"
msgstr ""
-#: toplev.c:995
+#: toplev.c:1037
msgid "Check for syntax errors, then stop"
msgstr ""
-#: toplev.c:997
+#: toplev.c:1039
msgid "Mark data as shared rather than private"
msgstr ""
-#: toplev.c:999
+#: toplev.c:1041
msgid "Enable saving registers around function calls"
msgstr ""
-#: toplev.c:1001
+#: toplev.c:1043
msgid "Return 'short' aggregates in memory, not registers"
msgstr ""
-#: toplev.c:1003
+#: toplev.c:1045
msgid "Return 'short' aggregates in registers"
msgstr ""
-#: toplev.c:1005
+#: toplev.c:1047
msgid "Attempt to fill delay slots of branch instructions"
msgstr ""
-#: toplev.c:1007
+#: toplev.c:1049
msgid "Perform the global common subexpression elimination"
msgstr ""
-#: toplev.c:1009
+#: toplev.c:1051
msgid "Perform enhanced load motion during global subexpression elimination"
msgstr ""
-#: toplev.c:1011
+#: toplev.c:1053
msgid "Perform store motion after global subexpression elimination"
msgstr ""
-#: toplev.c:1013
+#: toplev.c:1055
msgid "Perform the loop optimizations"
msgstr ""
-#: toplev.c:1015
+#: toplev.c:1057
msgid "Perform cross-jumping optimization"
msgstr ""
-#: toplev.c:1017
+#: toplev.c:1059
+msgid "Perform conversion of conditional jumps to branchless equivalents"
+msgstr ""
+
+#: toplev.c:1061
+msgid "Perform conversion of conditional jumps to conditional execution"
+msgstr ""
+
+#: toplev.c:1063
msgid "Run CSE pass after loop optimizations"
msgstr ""
-#: toplev.c:1019
+#: toplev.c:1065
msgid "Run the loop optimizer twice"
msgstr ""
-#: toplev.c:1021
+#: toplev.c:1067
msgid "Delete useless null pointer checks"
msgstr ""
-#: toplev.c:1023
+#: toplev.c:1069
msgid "Reschedule instructions before register allocation"
msgstr ""
-#: toplev.c:1025
+#: toplev.c:1071
msgid "Reschedule instructions after register allocation"
msgstr ""
-#: toplev.c:1027
+#: toplev.c:1073
msgid "Enable scheduling across basic blocks"
msgstr ""
-#: toplev.c:1029
+#: toplev.c:1075
msgid "Allow speculative motion of non-loads"
msgstr ""
-#: toplev.c:1031
+#: toplev.c:1077
msgid "Allow speculative motion of some loads"
msgstr ""
-#: toplev.c:1033
+#: toplev.c:1079
msgid "Allow speculative motion of more loads"
msgstr ""
-#: toplev.c:1035
+#: toplev.c:1081
msgid "Replace add,compare,branch with branch on count reg"
msgstr ""
-#: toplev.c:1037
+#: toplev.c:1083
msgid "Generate position independent code, if possible"
msgstr ""
-#: toplev.c:1040
+#: toplev.c:1086
msgid "Enable exception handling"
msgstr ""
-#: toplev.c:1042
+#: toplev.c:1088
msgid "Just generate unwind tables for exception handling"
msgstr ""
-#: toplev.c:1044
+#: toplev.c:1090
msgid "Generate unwind tables exact at each instruction boundary"
msgstr ""
-#: toplev.c:1046
+#: toplev.c:1092
msgid "Support synchronous non-call exceptions"
msgstr ""
-#: toplev.c:1048
+#: toplev.c:1094
msgid "Insert arc based program profiling code"
msgstr ""
-#: toplev.c:1050
+#: toplev.c:1096
msgid "Create data files needed by gcov"
msgstr ""
-#: toplev.c:1052
+#: toplev.c:1098
msgid "Use profiling information for branch probabilities"
msgstr ""
-#: toplev.c:1054
+#: toplev.c:1100
+msgid "Enable basic program profiling code"
+msgstr ""
+
+#: toplev.c:1102
msgid "Reorder basic blocks to improve code placement"
msgstr ""
-#: toplev.c:1056
+#: toplev.c:1104
+msgid "Reorder functions to improve code placement"
+msgstr ""
+
+#: toplev.c:1106
msgid "Do the register renaming optimization pass"
msgstr ""
-#: toplev.c:1058
+#: toplev.c:1108
msgid "Do the register copy-propagation optimization pass"
msgstr ""
-#: toplev.c:1060
+#: toplev.c:1110
msgid "Do not put uninitialized globals in the common section"
msgstr ""
-#: toplev.c:1062
+#: toplev.c:1112
msgid "Do not generate .size directives"
msgstr ""
-#: toplev.c:1064
+#: toplev.c:1114
msgid "place each function into its own section"
msgstr ""
-#: toplev.c:1066
+#: toplev.c:1116
msgid "place data items into their own section"
msgstr ""
-#: toplev.c:1068
+#: toplev.c:1118
msgid "Add extra commentry to assembler output"
msgstr ""
-#: toplev.c:1070
+#: toplev.c:1120
msgid "Output GNU ld formatted global initializers"
msgstr ""
-#: toplev.c:1072
+#: toplev.c:1122
msgid "Enables a register move optimization"
msgstr ""
-#: toplev.c:1074
+#: toplev.c:1124
msgid "Do the full regmove optimization pass"
msgstr ""
-#: toplev.c:1076
+#: toplev.c:1126
msgid "Pack structure members together without holes"
msgstr ""
-#: toplev.c:1078
+#: toplev.c:1128
msgid "Insert stack checking code into the program"
msgstr ""
-#: toplev.c:1080
+#: toplev.c:1130
msgid "Specify that arguments may alias each other & globals"
msgstr ""
-#: toplev.c:1082
+#: toplev.c:1132
msgid "Assume arguments may alias globals but not each other"
msgstr ""
-#: toplev.c:1084
+#: toplev.c:1134
msgid "Assume arguments do not alias each other or globals"
msgstr ""
-#: toplev.c:1086
+#: toplev.c:1136
msgid "Assume strict aliasing rules apply"
msgstr ""
-#: toplev.c:1088
+#: toplev.c:1138
msgid "Align the start of loops"
msgstr ""
-#: toplev.c:1090
+#: toplev.c:1140
msgid "Align labels which are only reached by jumping"
msgstr ""
-#: toplev.c:1092
+#: toplev.c:1142
msgid "Align all labels"
msgstr ""
-#: toplev.c:1094
+#: toplev.c:1144
msgid "Align the start of functions"
msgstr ""
-#: toplev.c:1096
+#: toplev.c:1146
msgid "Attempt to merge identical constants accross compilation units"
msgstr ""
-#: toplev.c:1098
+#: toplev.c:1148
msgid "Attempt to merge identical constants and constant variables"
msgstr ""
-#: toplev.c:1100
+#: toplev.c:1150
msgid ""
"Suppress output of instruction numbers and line number notes in debugging "
"dumps"
msgstr ""
-#: toplev.c:1102
+#: toplev.c:1152
msgid "Instrument function entry/exit with profiling calls"
msgstr ""
-#: toplev.c:1104
+#: toplev.c:1154
msgid "Put zero initialized data in the bss section"
msgstr ""
-#: toplev.c:1106
+#: toplev.c:1156
msgid "Enable SSA optimizations"
msgstr ""
-#: toplev.c:1108
+#: toplev.c:1158
msgid "Enable SSA conditional constant propagation"
msgstr ""
-#: toplev.c:1110
+#: toplev.c:1160
msgid "Enable aggressive SSA dead code elimination"
msgstr ""
-#: toplev.c:1112
+#: toplev.c:1162
msgid "External symbols have a leading underscore"
msgstr ""
-#: toplev.c:1114
+#: toplev.c:1164
msgid "Process #ident directives"
msgstr ""
-#: toplev.c:1116
+#: toplev.c:1166
msgid "Enables an rtl peephole pass run before sched2"
msgstr ""
-#: toplev.c:1118
+#: toplev.c:1168
+msgid "Assume no NaNs or +-Infs are generated"
+msgstr ""
+
+#: toplev.c:1170
msgid "Enables guessing of branch probabilities"
msgstr ""
-#: toplev.c:1120
+#: toplev.c:1172
msgid "Set errno after built-in math functions"
msgstr ""
-#: toplev.c:1122
+#: toplev.c:1174
msgid "Floating-point operations can trap"
msgstr ""
-#: toplev.c:1124
+#: toplev.c:1176
msgid "Allow math optimizations that may violate IEEE or ANSI standards"
msgstr ""
-#: toplev.c:1126
-msgid "Compile pointers as triples: value, base & end"
+#: toplev.c:1178
+msgid "Disable optimizations observable by IEEE signaling NaNs"
msgstr ""
-#: toplev.c:1128
-msgid "Generate code to check bounds before dereferencing pointers and arrays"
+#: toplev.c:1180
+msgid "Generate code to check bounds before indexing arrays"
msgstr ""
-#: toplev.c:1130
+#: toplev.c:1182
msgid "Convert floating point constant to single precision constant"
msgstr ""
-#: toplev.c:1132
+#: toplev.c:1184
msgid "Report time taken by each compiler pass at end of run"
msgstr ""
-#: toplev.c:1134
+#: toplev.c:1186
msgid "Report on permanent memory allocation at end of run"
msgstr ""
-#: toplev.c:1136
+#: toplev.c:1188
msgid "Trap for signed overflow in addition / subtraction / multiplication"
msgstr ""
-#: toplev.c:1153
-msgid "Compile just for ISO C89"
+#: toplev.c:1190
+msgid "Use graph coloring register allocation."
msgstr ""
-#: toplev.c:1155
+#: toplev.c:1207
+msgid "Compile just for ISO C90"
+msgstr ""
+
+#: toplev.c:1209
msgid "Determine language standard"
msgstr ""
-#: toplev.c:1159
+#: toplev.c:1213
msgid "Make bit-fields by unsigned by default"
msgstr ""
-#: toplev.c:1163
+#: toplev.c:1217
msgid "Make 'char' be signed by default"
msgstr ""
-#: toplev.c:1165
+#: toplev.c:1219
msgid "Make 'char' be unsigned by default"
msgstr ""
-#: toplev.c:1171
+#: toplev.c:1225
msgid "Do not recognize the 'asm' keyword"
msgstr ""
-#: toplev.c:1174
+#: toplev.c:1228
msgid "Do not recognize any built in functions"
msgstr ""
-#: toplev.c:1176
+#: toplev.c:1230
msgid "Assume normal C execution environment"
msgstr ""
-#: toplev.c:1179
+#: toplev.c:1233
msgid "Assume that standard libraries & main might not exist"
msgstr ""
-#: toplev.c:1182
+#: toplev.c:1236
msgid "Allow different types as args of ? operator"
msgstr ""
-#: toplev.c:1185
+#: toplev.c:1239
msgid "Allow the use of $ inside identifiers"
msgstr ""
-#: toplev.c:1190
+#: toplev.c:1244
msgid "Use the same size for double as for float"
msgstr ""
-#: toplev.c:1193
+#: toplev.c:1247
msgid "Use the smallest fitting integer to hold enums"
msgstr ""
-#: toplev.c:1196
+#: toplev.c:1250
msgid "Override the underlying type for wchar_t to `unsigned short'"
msgstr ""
-#: toplev.c:1200
+#: toplev.c:1254
msgid "Enable most warning messages"
msgstr ""
-#: toplev.c:1202
+#: toplev.c:1256
msgid "Warn about casting functions to incompatible types"
msgstr ""
-#: toplev.c:1205
+#: toplev.c:1259
msgid "Warn about functions which might be candidates for format attributes"
msgstr ""
-#: toplev.c:1208
+#: toplev.c:1262
msgid "Warn about casts which discard qualifiers"
msgstr ""
-#: toplev.c:1211
+#: toplev.c:1265
msgid "Warn about subscripts whose type is 'char'"
msgstr ""
-#: toplev.c:1214 toplev.c:1217
+#: toplev.c:1268 toplev.c:1271
msgid "Warn if nested comments are detected"
msgstr ""
-#: toplev.c:1220
+#: toplev.c:1274
msgid "Warn about possibly confusing type conversions"
msgstr ""
-#: toplev.c:1224
+#: toplev.c:1278
msgid "Do not warn about compile-time integer division by zero"
msgstr ""
-#: toplev.c:1226
+#: toplev.c:1280
msgid "Warn about testing equality of floating point numbers"
msgstr ""
-#: toplev.c:1229
+#: toplev.c:1283
msgid "Warn about printf/scanf/strftime/strfmon format anomalies"
msgstr ""
-#: toplev.c:1233
+#: toplev.c:1287
msgid "Don't warn about too many arguments to format functions"
msgstr ""
-#: toplev.c:1235
+#: toplev.c:1289
msgid "Warn about non-string-literal format strings"
msgstr ""
-#: toplev.c:1238
+#: toplev.c:1292
msgid "Warn about possible security problems with format functions"
msgstr ""
-#: toplev.c:1242
+#: toplev.c:1296
msgid "Don't warn about strftime formats yielding 2 digit years"
msgstr ""
-#: toplev.c:1244
+#: toplev.c:1298
msgid "Warn about implicit function declarations"
msgstr ""
-#: toplev.c:1248
+#: toplev.c:1302
msgid "Warn when a declaration does not specify a type"
msgstr ""
-#: toplev.c:1253
+#: toplev.c:1307
msgid "Warn about the use of the #import directive"
msgstr ""
-#: toplev.c:1257
+#: toplev.c:1311
msgid "Do not warn about using 'long long' when -pedantic"
msgstr ""
-#: toplev.c:1259
+#: toplev.c:1313
msgid "Warn about suspicious declarations of main"
msgstr ""
-#: toplev.c:1262
+#: toplev.c:1316
msgid "Warn about possibly missing braces around initializers"
msgstr ""
-#: toplev.c:1265
+#: toplev.c:1319
msgid "Warn about global funcs without previous declarations"
msgstr ""
-#: toplev.c:1268
+#: toplev.c:1322
msgid "Warn about global funcs without prototypes"
msgstr ""
-#: toplev.c:1271
+#: toplev.c:1325
msgid "Warn about use of multicharacter literals"
msgstr ""
-#: toplev.c:1274
+#: toplev.c:1328
msgid "Warn about externs not at file scope level"
msgstr ""
-#: toplev.c:1277
+#: toplev.c:1331
msgid "Warn about possible missing parentheses"
msgstr ""
-#: toplev.c:1280
+#: toplev.c:1334
msgid "Warn about function pointer arithmetic"
msgstr ""
-#: toplev.c:1283
+#: toplev.c:1337
msgid "Warn about multiple declarations of the same object"
msgstr ""
-#: toplev.c:1286
+#: toplev.c:1340
msgid "Warn whenever a function's return-type defaults to int"
msgstr ""
-#: toplev.c:1289
+#: toplev.c:1343
msgid "Warn about possible violations of sequence point rules"
msgstr ""
-#: toplev.c:1292
+#: toplev.c:1346
msgid "Warn about signed/unsigned comparisons"
msgstr ""
-#: toplev.c:1295
+#: toplev.c:1349
msgid "Warn about non-prototyped function decls"
msgstr ""
-#: toplev.c:1298
+#: toplev.c:1352
msgid "Warn about constructs whose meanings change in ISO C"
msgstr ""
-#: toplev.c:1301
+#: toplev.c:1355
msgid "Warn when trigraphs are encountered"
msgstr ""
-#: toplev.c:1306
+#: toplev.c:1360
msgid "Warn about unrecognized pragmas"
msgstr ""
-#: toplev.c:1309
+#: toplev.c:1363
msgid "Mark strings as 'const char *'"
msgstr ""
-#: toplev.c:1449
+#: toplev.c:1508
msgid "Warn when a function is unused"
msgstr ""
-#: toplev.c:1451
+#: toplev.c:1510
msgid "Warn when a label is unused"
msgstr ""
-#: toplev.c:1453
+#: toplev.c:1512
msgid "Warn when a function parameter is unused"
msgstr ""
-#: toplev.c:1455
+#: toplev.c:1514
msgid "Warn when a variable is unused"
msgstr ""
-#: toplev.c:1457
+#: toplev.c:1516
msgid "Warn when an expression value is unused"
msgstr ""
-#: toplev.c:1459
+#: toplev.c:1518
msgid "Do not suppress warnings from system headers"
msgstr ""
-#: toplev.c:1461
+#: toplev.c:1520
msgid "Treat all warnings as errors"
msgstr ""
-#: toplev.c:1463
+#: toplev.c:1522
msgid "Warn when one local variable shadows another"
msgstr ""
-#: toplev.c:1465
+#: toplev.c:1524
msgid "Warn about enumerated switches, with no default, missing a case"
msgstr ""
-#: toplev.c:1467
+#: toplev.c:1526
msgid "Warn about enumerated switches missing a default case"
msgstr ""
-#: toplev.c:1469
+#: toplev.c:1528
msgid "Warn about all enumerated switches missing a specific case"
msgstr ""
-#: toplev.c:1471
+#: toplev.c:1530
msgid "Warn about returning structures, unions or arrays"
msgstr ""
-#: toplev.c:1473
+#: toplev.c:1532
msgid "Warn about pointer casts which increase alignment"
msgstr ""
-#: toplev.c:1475
+#: toplev.c:1534
msgid "Warn about code that will never be executed"
msgstr ""
-#: toplev.c:1477
+#: toplev.c:1536
msgid "Warn about uninitialized automatic variables"
msgstr ""
-#: toplev.c:1479
+#: toplev.c:1538
msgid "Warn when an inlined function cannot be inlined"
msgstr ""
-#: toplev.c:1481
+#: toplev.c:1540
msgid "Warn when the packed attribute has no effect on struct layout"
msgstr ""
-#: toplev.c:1483
+#: toplev.c:1542
msgid "Warn when padding is required to align struct members"
msgstr ""
-#: toplev.c:1485
+#: toplev.c:1544
msgid "Warn when an optimization pass is disabled"
msgstr ""
-#: toplev.c:1487
+#: toplev.c:1546
msgid "Warn about uses of __attribute__((deprecated)) declarations"
msgstr ""
-#: toplev.c:1489
+#: toplev.c:1548
msgid "Warn about functions which might be candidates for attribute noreturn"
msgstr ""
-#: toplev.c:1560 toplev.c:4284 tradcpp.c:796
-#, c-format
-msgid "invalid option `%s'"
+#: toplev.c:1550
+msgid "Warn about code which might break the strict aliasing rules"
msgstr ""
-#: toplev.c:1627
+#: toplev.c:1627 toplev.c:4513 config/rs6000/rs6000.c:676
#, c-format
-msgid "internal error: %s"
+msgid "invalid option `%s'"
msgstr ""
-#: toplev.c:1939
+#: toplev.c:2029
#, c-format
msgid "`%s' used but never defined"
msgstr ""
-#: toplev.c:1942
+#: toplev.c:2032
#, c-format
msgid "`%s' declared `static' but never defined"
msgstr ""
-#: toplev.c:1961
+#: toplev.c:2051
#, c-format
msgid "`%s' defined but not used"
msgstr ""
-#: toplev.c:2206
+#: toplev.c:2300
#, c-format
msgid "invalid register name `%s' for register variable"
msgstr ""
-#: toplev.c:3495
+#: toplev.c:3683
msgid ""
" -ffixed-<register> Mark <register> as being unavailable to the "
"compiler\n"
msgstr ""
-#: toplev.c:3496
+#: toplev.c:3684
msgid ""
" -fcall-used-<register> Mark <register> as being corrupted by function "
"calls\n"
msgstr ""
-#: toplev.c:3497
+#: toplev.c:3685
msgid ""
" -fcall-saved-<register> Mark <register> as being preserved across "
"functions\n"
msgstr ""
-#: toplev.c:3498
+#: toplev.c:3686
msgid ""
" -finline-limit=<number> Limits the size of inlined functions to <number>\n"
msgstr ""
-#: toplev.c:3499
+#: toplev.c:3687
msgid ""
" -fmessage-length=<number> Limits diagnostics messages lengths to <number> "
"characters per line. 0 suppresses line-wrapping\n"
msgstr ""
-#: toplev.c:3500
+#: toplev.c:3688
msgid ""
" -fdiagnostics-show-location=[once | every-line] Indicates how often source "
"location information should be emitted, as prefix, at the beginning of "
"diagnostics when line-wrapping\n"
msgstr ""
-#: toplev.c:3511
+#: toplev.c:3689
+msgid ""
+" -ftls-model=[global-dynamic | local-dynamic | initial-exec | local-exec] "
+"Indicates the default thread-local storage code generation model\n"
+msgstr ""
+
+#: toplev.c:3700
msgid " -O[number] Set optimization level to [number]\n"
msgstr ""
-#: toplev.c:3512
+#: toplev.c:3701
msgid " -Os Optimize for space rather than speed\n"
msgstr ""
-#: toplev.c:3524
+#: toplev.c:3713
msgid ""
" -pedantic Issue warnings needed by strict compliance to ISO "
"C\n"
msgstr ""
-#: toplev.c:3525
+#: toplev.c:3714
msgid ""
" -pedantic-errors Like -pedantic except that errors are produced\n"
msgstr ""
-#: toplev.c:3526
+#: toplev.c:3715
msgid " -w Suppress warnings\n"
msgstr ""
-#: toplev.c:3527
+#: toplev.c:3716
msgid " -W Enable extra warnings\n"
msgstr ""
-#: toplev.c:3538
+#: toplev.c:3727
msgid " -Wunused Enable unused warnings\n"
msgstr ""
-#: toplev.c:3539
+#: toplev.c:3728
msgid ""
" -Wlarger-than-<number> Warn if an object is larger than <number> bytes\n"
msgstr ""
-#: toplev.c:3540
+#: toplev.c:3729
msgid " -p Enable function profiling\n"
msgstr ""
-#: toplev.c:3542
-msgid " -a Enable block profiling \n"
-msgstr ""
-
-#: toplev.c:3545
-msgid " -ax Enable jump profiling \n"
-msgstr ""
-
-#: toplev.c:3547
+#: toplev.c:3730
msgid " -o <file> Place output into <file> \n"
msgstr ""
-#: toplev.c:3548
+#: toplev.c:3731
msgid ""
" -G <number> Put global and static data smaller than <number>\n"
" bytes into a special section (on some targets)\n"
msgstr ""
-#: toplev.c:3559
+#: toplev.c:3742
msgid " -aux-info <file> Emit declaration info into <file>\n"
msgstr ""
-#: toplev.c:3560
+#: toplev.c:3743
msgid ""
" -quiet Do not display functions compiled or elapsed time\n"
msgstr ""
-#: toplev.c:3561
+#: toplev.c:3744
msgid " -version Display the compiler's version\n"
msgstr ""
-#: toplev.c:3562
+#: toplev.c:3745
msgid ""
" -d[letters] Enable dumps from specific passes of the compiler\n"
msgstr ""
-#: toplev.c:3563
+#: toplev.c:3746
msgid ""
" -dumpbase <file> Base name to be used for dumps from specific "
"passes\n"
msgstr ""
-#: toplev.c:3565
+#: toplev.c:3748
msgid " -fsched-verbose=<number> Set the verbosity level of the scheduler\n"
msgstr ""
-#: toplev.c:3567
+#: toplev.c:3750
msgid " --help Display this information\n"
msgstr ""
-#: toplev.c:3582
+#: toplev.c:3765
msgid ""
"\n"
"Language specific options:\n"
msgstr ""
-#: toplev.c:3594
+#: toplev.c:3777
#, c-format
msgid " %-23.23s [undocumented]\n"
msgstr ""
-#: toplev.c:3602 toplev.c:3616
+#: toplev.c:3785 toplev.c:3799
#, c-format
msgid ""
"\n"
"There are undocumented %s specific options as well.\n"
msgstr ""
-#: toplev.c:3606
+#: toplev.c:3789
#, c-format
msgid ""
"\n"
" Options for %s:\n"
msgstr ""
-#: toplev.c:3643
+#: toplev.c:3826
msgid ""
"\n"
"Target specific options:\n"
msgstr ""
-#: toplev.c:3657 toplev.c:3676
+#: toplev.c:3840 toplev.c:3859
#, c-format
msgid " -m%-23.23s [undocumented]\n"
msgstr ""
-#: toplev.c:3685
+#: toplev.c:3868
msgid ""
"\n"
"There are undocumented target specific options as well.\n"
msgstr ""
-#: toplev.c:3687
+#: toplev.c:3870
msgid " They exist, but they are not documented.\n"
msgstr ""
-#: toplev.c:3740
+#: toplev.c:3923
#, c-format
msgid "unrecognized gcc debugging option: %c"
msgstr ""
-#: toplev.c:3810
+#: toplev.c:3979
+#, c-format
+msgid "`%s': unknown tls-model option"
+msgstr ""
+
+#: toplev.c:4006
#, c-format
msgid "unrecognized register name `%s'"
msgstr ""
-#: toplev.c:3835 toplev.c:4714
+#: toplev.c:4031 toplev.c:4965
#, c-format
msgid "unrecognized option `%s'"
msgstr ""
-#: toplev.c:3879
+#: toplev.c:4075
msgid "-Wid-clash-LEN is no longer supported"
msgstr ""
-#: toplev.c:3956
+#: toplev.c:4152
#, c-format
msgid "use -gdwarf -g%d for DWARF v1, level %d"
msgstr ""
-#: toplev.c:3959
+#: toplev.c:4155
msgid "use -gdwarf-2 for DWARF v2"
msgstr ""
-#: toplev.c:3964
+#: toplev.c:4160
#, c-format
msgid "ignoring option `%s' due to invalid debug level specification"
msgstr ""
-#: toplev.c:3987 toplev.c:4712
+#: toplev.c:4183 toplev.c:4963
#, c-format
msgid "`%s': unknown or unsupported -g option"
msgstr ""
-#: toplev.c:3994
+#: toplev.c:4190
#, c-format
msgid "`%s' ignored, conflicts with `-g%s'"
msgstr ""
-#: toplev.c:4073
+#: toplev.c:4269
msgid "-param option missing argument"
msgstr ""
-#: toplev.c:4082
+#: toplev.c:4278
#, c-format
msgid "invalid --param option: %s"
msgstr ""
-#: toplev.c:4094
+#: toplev.c:4290
#, c-format
msgid "invalid parameter value `%s'"
msgstr ""
-#: toplev.c:4301
+#: toplev.c:4530
#, c-format
msgid ""
"%s%s%s version %s (%s)\n"
@@ -7659,1164 +7956,923 @@ msgid ""
"%s%s%s version %s (%s) compiled by CC.\n"
msgstr ""
-#: toplev.c:4357
+#: toplev.c:4586
msgid "options passed: "
msgstr ""
-#: toplev.c:4386
+#: toplev.c:4615
msgid "options enabled: "
msgstr ""
-#: toplev.c:4445 java/jcf-write.c:3379
+#: toplev.c:4674 java/jcf-write.c:3421
#, c-format
msgid "can't open %s for writing"
msgstr ""
-#: toplev.c:4704
+#: toplev.c:4955
#, c-format
msgid "ignoring command line option '%s'"
msgstr ""
-#: toplev.c:4707
+#: toplev.c:4958
#, c-format
msgid "(it is valid for %s but not the selected language)"
msgstr ""
-#: toplev.c:4741
+#: toplev.c:4992
msgid "-Wuninitialized is not supported without -O"
msgstr ""
-#: toplev.c:4800
+#: toplev.c:5047
msgid "instruction scheduling not supported on this target machine"
msgstr ""
-#: toplev.c:4804
+#: toplev.c:5051
msgid "this target machine does not have delayed branches"
msgstr ""
-#: toplev.c:4813
-msgid "profiling does not work without a frame pointer"
-msgstr ""
-
-#: toplev.c:4828
+#: toplev.c:5065
#, c-format
msgid "-f%sleading-underscore not supported on this target machine"
msgstr ""
-#: toplev.c:4891
+#: toplev.c:5128
msgid "-ffunction-sections not supported for this target"
msgstr ""
-#: toplev.c:4896
+#: toplev.c:5133
msgid "-fdata-sections not supported for this target"
msgstr ""
-#: toplev.c:4903
+#: toplev.c:5140
msgid "-ffunction-sections disabled; it makes profiling impossible"
msgstr ""
-#: toplev.c:4910
+#: toplev.c:5147
msgid "-fprefetch-loop-arrays not supported for this target"
msgstr ""
-#: toplev.c:4916
+#: toplev.c:5153
msgid ""
"-fprefetch-loop-arrays not supported for this target (try -march switches)"
msgstr ""
-#: toplev.c:4925
+#: toplev.c:5162
msgid "-fprefetch-loop-arrays is not supported with -Os"
msgstr ""
-#: toplev.c:4931
+#: toplev.c:5168
msgid "-ffunction-sections may affect debugging on some targets"
msgstr ""
-#: toplev.c:5044
+#: toplev.c:5280
#, c-format
msgid "error writing to %s"
msgstr ""
-#: toplev.c:5046 java/jcf-parse.c:954 java/jcf-write.c:3386
+#: toplev.c:5282 java/jcf-parse.c:932 java/jcf-write.c:3428
#, c-format
msgid "error closing %s"
msgstr ""
-#: /usr/share/bison.simple:650
-msgid "parse error; also virtual memory exceeded"
-msgstr ""
-
-#. It's a float since it contains a point.
-#: tradcif.y:231
-msgid "floating point numbers not allowed in #if expressions"
-msgstr ""
-
-#: tradcif.y:277
-msgid "invalid number in #if expression"
-msgstr ""
-
-#: tradcif.y:357
-msgid "invalid character constant in #if"
-msgstr ""
-
-#: tradcif.y:394
-msgid "double quoted strings not allowed in #if expressions"
-msgstr ""
-
-#: tradcif.y:407
-msgid "invalid token in expression"
-msgstr ""
-
-#: tradcif.y:498
-msgid "octal character constant does not fit in a byte"
-msgstr ""
-
-#: tradcif.y:519
-msgid "hex character constant does not fit in a byte"
-msgstr ""
-
-#: tradcif.y:550
-msgid "empty #if expression"
-msgstr ""
-
-#: tradcif.y:564
-msgid "Junk after end of expression."
-msgstr ""
-
-#: tradcpp.c:145
-msgid "macro or #include recursion too deep"
-msgstr ""
-
-#: tradcpp.c:562
-#, c-format
-msgid "usage: %s [switches] input output"
-msgstr ""
-
-#: tradcpp.c:578
-msgid "-traditional is not supported in C++"
-msgstr ""
-
-#: tradcpp.c:580
-msgid "-traditional and -ansi are mutually exclusive"
-msgstr ""
-
-#: tradcpp.c:594
-msgid "filename missing after -i option"
-msgstr ""
-
-#: tradcpp.c:612
-msgid "filename missing after -o option"
-msgstr ""
-
-#: tradcpp.c:675
-#, c-format
-msgid "target missing after %s option"
-msgstr ""
-
-#: tradcpp.c:689
-#, c-format
-msgid "filename missing after %s option"
-msgstr ""
-
-#: tradcpp.c:714
-#, c-format
-msgid "macro name missing after -%c option"
-msgstr ""
-
-#: tradcpp.c:734
-msgid "-pedantic and -traditional are mutually exclusive"
-msgstr ""
-
-#: tradcpp.c:739
-msgid "-trigraphs and -traditional are mutually exclusive"
-msgstr ""
-
-#: tradcpp.c:765
-msgid "directory name missing after -I option"
-msgstr ""
-
-#: tradcpp.c:1449 tradcpp.c:3941
-msgid "`/*' within comment"
-msgstr ""
-
-#: tradcpp.c:1825
-#, c-format
-msgid "unterminated #%s conditional"
-msgstr ""
-
-#: tradcpp.c:2184
-msgid "not in any file?!"
-msgstr ""
-
-#: tradcpp.c:2290
-msgid "`defined' must be followed by ident or (ident)"
-msgstr ""
-
-#: tradcpp.c:2294
-msgid "cccp error: invalid special hash type"
-msgstr ""
-
-#: tradcpp.c:2392 tradcpp.c:2462
-msgid "#include expects \"fname\" or <fname>"
-msgstr ""
-
-#: tradcpp.c:2547
-#, c-format
-msgid "no include path in which to find %.*s"
-msgstr ""
-
-#: tradcpp.c:2725
-msgid "invalid macro name"
-msgstr ""
-
-#: tradcpp.c:2733
-#, c-format
-msgid "invalid macro name `%s'"
-msgstr ""
-
-#: tradcpp.c:2738
-msgid "\"defined\" cannot be used as a macro name"
-msgstr ""
-
-#: tradcpp.c:2765
-msgid "parameter name starts with a digit in #define"
-msgstr ""
-
-#: tradcpp.c:2775
-msgid "badly punctuated parameter list in #define"
-msgstr ""
-
-#: tradcpp.c:2783
-msgid "unterminated parameter list in #define"
-msgstr ""
-
-#: tradcpp.c:2831
-#, c-format
-msgid "\"%.*s\" redefined"
-msgstr ""
-
-#: tradcpp.c:3088
-msgid "# operator should be followed by a macro argument name"
-msgstr ""
-
-#: tradcpp.c:3135 tradcpp.c:3161 tradcpp.c:3175 tradcpp.c:3182 tradcpp.c:3207
-msgid "invalid format #line command"
-msgstr ""
-
-#: tradcpp.c:3233
-msgid "undefining `defined'"
-msgstr ""
-
-#: tradcpp.c:3237
-#, c-format
-msgid "undefining `%s'"
-msgstr ""
-
-#: tradcpp.c:3293
-msgid "extra text at end of directive"
-msgstr ""
-
-#: tradcpp.c:3400
-#, c-format
-msgid "#error%.*s"
-msgstr ""
-
-#: tradcpp.c:3410
-#, c-format
-msgid "#warning%.*s"
-msgstr ""
-
-#: tradcpp.c:3566
-msgid "#elif not within a conditional"
-msgstr ""
-
-#: tradcpp.c:3823
-#, c-format
-msgid "#%s not within a conditional"
-msgstr ""
-
-#: tradcpp.c:3831
-msgid "#else or #elif after #else"
-msgstr ""
-
-#: tradcpp.c:3871
-msgid "#else not within a conditional"
-msgstr ""
-
-#: tradcpp.c:3902
-msgid "unbalanced #endif"
-msgstr ""
-
-#: tradcpp.c:3996
-msgid "unterminated string or character constant"
-msgstr ""
-
-#: tradcpp.c:4154
-#, c-format
-msgid "arguments given to macro `%s'"
-msgstr ""
-
-#: tradcpp.c:4160
-#, c-format
-msgid "no args to macro `%s'"
-msgstr ""
-
-#: tradcpp.c:4162
-#, c-format
-msgid "only 1 arg to macro `%s'"
-msgstr ""
-
-#: tradcpp.c:4164
-#, c-format
-msgid "only %d args to macro `%s'"
-msgstr ""
-
-#: tradcpp.c:4166
-#, c-format
-msgid "too many (%d) args to macro `%s'"
-msgstr ""
-
-#: tradcpp.c:4763
-#, c-format
-msgid ""
-"internal error in %s, at tradcpp.c:%d\n"
-"Please submit a full bug report.\n"
-"See %s for instructions."
-msgstr ""
-
-#: tree-dump.c:848
+#: tree-dump.c:702
#, c-format
msgid "could not open dump file `%s'"
msgstr ""
-#: tree-dump.c:924
+#: tree-dump.c:778
#, c-format
msgid "ignoring unknown option `%.*s' in `-f%s'"
msgstr ""
-#: tree.c:3709
+#: tree.c:3645
msgid "arrays of functions are not meaningful"
msgstr ""
-#: tree.c:3766
+#: tree.c:3702
msgid "function return type cannot be function"
msgstr ""
-#: tree.c:4520
+#: tree.c:4544
msgid "invalid initializer for bit string"
msgstr ""
-#: tree.c:4579
+#: tree.c:4603
#, c-format
msgid "tree check: expected %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:4596
+#: tree.c:4620
#, c-format
msgid "tree check: expected class '%c', have '%c' (%s) in %s, at %s:%d"
msgstr ""
-#: varasm.c:456 config/i386/winnt.c:526
+#: tree.c:4637
+#, c-format
+msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
+msgstr ""
+
+#: varasm.c:455 config/i386/winnt.c:546
#, c-format
msgid "%s causes a section type conflict"
msgstr ""
-#: varasm.c:878
+#: varasm.c:841
#, c-format
msgid "register name not specified for `%s'"
msgstr ""
-#: varasm.c:880
+#: varasm.c:843
#, c-format
msgid "invalid register name for `%s'"
msgstr ""
-#: varasm.c:883
+#: varasm.c:846
#, c-format
msgid "data type of `%s' isn't suitable for a register"
msgstr ""
-#: varasm.c:886
+#: varasm.c:849
#, c-format
msgid "register specified for `%s' isn't suitable for data type"
msgstr ""
-#: varasm.c:895
+#: varasm.c:858
msgid "global register variable has initial value"
msgstr ""
-#: varasm.c:898
+#: varasm.c:861
msgid "volatile register variables don't work as you might wish"
msgstr ""
-#: varasm.c:931
+#: varasm.c:894
#, c-format
msgid "register name given for non-register variable `%s'"
msgstr ""
-#: varasm.c:1571
+#: varasm.c:1542
#, c-format
msgid ""
"alignment of `%s' is greater than maximum object file alignment. Using %d"
msgstr ""
-#: varasm.c:1637
+#: varasm.c:1584
+msgid "thread-local COMMON data not implemented"
+msgstr ""
+
+#: varasm.c:1608
#, c-format
msgid "requested alignment for %s is greater than implemented alignment of %d"
msgstr ""
-#: varasm.c:4569
+#: varasm.c:4020
msgid "initializer for integer value is too complicated"
msgstr ""
-#: varasm.c:4574
+#: varasm.c:4025
msgid "initializer for floating value is not a floating constant"
msgstr ""
-#: varasm.c:4624
+#: varasm.c:4075
msgid "unknown set constructor type"
msgstr ""
-#: varasm.c:4838
+#: varasm.c:4289
#, c-format
msgid "invalid initial value for member `%s'"
msgstr ""
-#: varasm.c:4999
+#: varasm.c:4480 varasm.c:4523
#, c-format
-msgid "weak declaration of `%s' must be public"
+msgid "weak declaration of `%s' must precede definition"
msgstr ""
-#: varasm.c:5001
+#: varasm.c:4487
#, c-format
-msgid "weak declaration of `%s' must precede definition"
+msgid ""
+"weak declaration of `%s' after first use results in unspecified behavior"
+msgstr ""
+
+#: varasm.c:4521
+#, c-format
+msgid "weak declaration of `%s' must be public"
msgstr ""
-#: varasm.c:5008
+#: varasm.c:4530
#, c-format
msgid "weak declaration of `%s' not supported"
msgstr ""
-#: varasm.c:5035 varasm.c:5110
+#: varasm.c:4557 varasm.c:4632
msgid "only weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:5119
+#: varasm.c:4640
msgid "alias definitions not supported in this configuration; ignored"
msgstr ""
-#: varasm.c:5139
+#: varasm.c:4670
msgid "visibility attribute not supported in this configuration; ignored"
msgstr ""
-#: varray.c:88
+#: varray.c:134
#, c-format
msgid "virtual array %s[%lu]: element %lu out of bounds in %s, at %s:%d"
msgstr ""
#. Print an error message for unrecognized stab codes.
-#: xcoffout.c:174
+#: xcoffout.c:175
#, c-format
msgid "no sclass for %s stab (0x%x)\n"
msgstr ""
-#: params.def:46
+#: pretty-print.h:97
+#, c-format
+msgid "#`%s' not supported by %s#"
+msgstr ""
+
+#: params.def:53
msgid ""
-"The maximum number of instructions in a function that is eligible for "
+"The maximum number of instructions in a single function eliglible for "
"inlining"
msgstr ""
-#: params.def:57
+#: params.def:74
+msgid ""
+"The maximuem number of instructions by repeated inlining before gcc starts "
+"to throttle inlining"
+msgstr ""
+
+#: params.def:87
+msgid ""
+"The slope of the linear funtion throttling inlining after the recursive "
+"inlining limit has been reached is given by the negative reciprocal value of "
+"this parameter"
+msgstr ""
+
+#: params.def:100
+msgid ""
+"The number of instructions in a single functions still eligible to inlining "
+"after a lot recursive inlining"
+msgstr ""
+
+#: params.def:111
msgid "The maximum number of instructions to consider to fill a delay slot"
msgstr ""
-#: params.def:68
+#: params.def:122
msgid ""
"The maximum number of instructions to consider to find accurate live "
"register information"
msgstr ""
-#: params.def:78
+#: params.def:132
msgid "The maximum length of scheduling's pending operations list"
msgstr ""
-#: params.def:85
+#: params.def:139
msgid "The maximum amount of memory to be allocated by GCSE"
msgstr ""
-#: params.def:90
+#: params.def:144
msgid "The maximum number of passes to make when doing GCSE"
msgstr ""
-#: params.def:97
+#: params.def:151
msgid "The maximum number of instructions to consider to unroll in a loop"
msgstr ""
-#: config/darwin-c.c:76
-msgid "too many #pragma options align=reset"
-msgstr ""
-
-#: config/darwin-c.c:98 config/darwin-c.c:101 config/darwin-c.c:103
-#: config/darwin-c.c:105
-msgid "malformed '#pragma options', ignoring"
-msgstr ""
-
-#: config/darwin-c.c:108
-msgid "junk at end of '#pragma options'"
-msgstr ""
-
-#: config/darwin-c.c:118
-msgid "malformed '#pragma options align={mac68k|power|reset}', ignoring"
-msgstr ""
-
-#: config/darwin-c.c:131
-msgid "missing '(' after '#pragma unused', ignoring"
-msgstr ""
-
-#: config/darwin-c.c:149
-msgid "missing ')' after '#pragma unused', ignoring"
-msgstr ""
-
-#: config/darwin-c.c:152
-msgid "junk at end of '#pragma unused'"
-msgstr ""
-
-#: config/nextstep.c:68
-msgid "optimization turned on"
-msgstr ""
-
-#: config/nextstep.c:74
-msgid "optimization turned off"
-msgstr ""
-
-#: config/nextstep.c:83
-msgid "optimization level restored"
-msgstr ""
-
-#: config/lynx-ng.h:97 config/lynx.h:120 config/rs6000/lynx.h:85
-msgid "-msystem-v and -p are incompatible"
-msgstr ""
-
-#: config/lynx-ng.h:99 config/lynx.h:122 config/rs6000/lynx.h:87
-msgid "-msystem-v and -mthreads are incompatible"
-msgstr ""
-
-#. Run-time compilation parameters selecting different hardware subsets.
-#: config/1750a/1750a.h:39
-msgid "Use VAX-C alignment"
-msgstr ""
-
-#: config/a29k/a29k.c:1028 config/m88k/m88k.c:2966
-#, c-format
-msgid "invalid %%Q value"
-msgstr ""
-
-#: config/a29k/a29k.c:1034 config/alpha/alpha.c:5410 config/m88k/m88k.c:3062
-#, c-format
-msgid "invalid %%C value"
-msgstr ""
-
-#: config/a29k/a29k.c:1040 config/alpha/alpha.c:5255
-#: config/rs6000/rs6000.c:6459
-#, c-format
-msgid "invalid %%N value"
-msgstr ""
-
-#: config/a29k/a29k.c:1046 config/alpha/alpha.c:5326
-#: config/rs6000/rs6000.c:6421
-#, c-format
-msgid "invalid %%M value"
-msgstr ""
-
-#: config/a29k/a29k.c:1052 config/alpha/alpha.c:5318
-#: config/rs6000/rs6000.c:6386
-#, c-format
-msgid "invalid %%m value"
-msgstr ""
-
-#: config/a29k/a29k.c:1157 config/alpha/alpha.c:5279 config/romp/romp.c:690
-#, c-format
-msgid "invalid %%L value"
-msgstr ""
-
-#: config/a29k/a29k.c:1162 config/rs6000/rs6000.c:6467
-#, c-format
-msgid "invalid %%O value"
-msgstr ""
-
-#: config/a29k/a29k.c:1168 config/alpha/alpha.c:5263
-#: config/rs6000/rs6000.c:6487
-#, c-format
-msgid "invalid %%P value"
-msgstr ""
-
-#: config/a29k/a29k.c:1178
-#, c-format
-msgid "invalid %%V value"
-msgstr ""
-
-#: config/a29k/a29k.h:101
-msgid "Generate code assuming DW bit is set"
+#: params.def:156
+msgid ""
+"Select fraction of the maximal count of repetitions of basic block in "
+"program given basic block needs to have to be considered hot"
msgstr ""
-#: config/a29k/a29k.h:102
-msgid "Generate code assuming DW bit is not set"
+#: params.def:161
+msgid ""
+"Select fraction of the maximal frequency of executions of basic block in "
+"function given basic block needs to have to be considered hot"
msgstr ""
-#: config/a29k/a29k.h:103
-msgid "Generate code using byte writes"
+#: params.def:166
+msgid ""
+"The percentage of function, weighted by execution frequency, that must be "
+"covered by trace formation. Used when profile feedback is available"
msgstr ""
-#: config/a29k/a29k.h:104
-msgid "Do not generate byte writes"
+#: params.def:171
+msgid ""
+"The percentage of function, weighted by execution frequency, that must be "
+"covered by trace formation. Used when profile feedback is not available"
msgstr ""
-#: config/a29k/a29k.h:105
-msgid "Use small memory model"
+#: params.def:176
+msgid "Maximal code growth caused by tail duplication (in percents)"
msgstr ""
-#: config/a29k/a29k.h:106
-msgid "Use normal memory model"
+#: params.def:180
+msgid ""
+"Stop reverse growth if the reverse probability of best edge is less than "
+"this threshold (in percents)"
msgstr ""
-#: config/a29k/a29k.h:107
-msgid "Use large memory model"
+#: params.def:185
+msgid ""
+"Stop forward growth if the probability of best edge is less than this "
+"threshold (in percents). Used when profile feedback is available"
msgstr ""
-#: config/a29k/a29k.h:108
-msgid "Generate 29050 code"
+#: params.def:190
+msgid ""
+"Stop forward growth if the probability of best edge is less than this "
+"threshold (in percents). Used when profile feedback is not available"
msgstr ""
-#: config/a29k/a29k.h:109
-msgid "Generate 29000 code"
+#: params.def:204
+msgid ""
+"Minimum heap expansion to trigger garbage collection, as a percentage of the "
+"total size of the heap."
msgstr ""
-#: config/a29k/a29k.h:110
-msgid "Use kernel global registers"
+#: params.def:210
+msgid "Minimum heap size before we start collecting garbage, in kilobytes."
msgstr ""
-#: config/a29k/a29k.h:111
-msgid "Use user global registers"
+#: config/darwin-c.c:75
+msgid "too many #pragma options align=reset"
msgstr ""
-#: config/a29k/a29k.h:112
-msgid "Emit stack checking code"
+#: config/darwin-c.c:97 config/darwin-c.c:100 config/darwin-c.c:102
+#: config/darwin-c.c:104
+msgid "malformed '#pragma options', ignoring"
msgstr ""
-#: config/a29k/a29k.h:113
-msgid "Do not emit stack checking code"
+#: config/darwin-c.c:107
+msgid "junk at end of '#pragma options'"
msgstr ""
-#: config/a29k/a29k.h:114
-msgid "Work around storem hardware bug"
+#: config/darwin-c.c:117
+msgid "malformed '#pragma options align={mac68k|power|reset}', ignoring"
msgstr ""
-#: config/a29k/a29k.h:115
-msgid "Do not work around storem hardware bug"
+#: config/darwin-c.c:130
+msgid "missing '(' after '#pragma unused', ignoring"
msgstr ""
-#: config/a29k/a29k.h:116
-msgid "Store locals in argument registers"
+#: config/darwin-c.c:148
+msgid "missing ')' after '#pragma unused', ignoring"
msgstr ""
-#: config/a29k/a29k.h:117
-msgid "Do not store locals in arg registers"
+#: config/darwin-c.c:151
+msgid "junk at end of '#pragma unused'"
msgstr ""
-#: config/a29k/a29k.h:118 config/i960/i960.h:283 config/mips/mips.h:406
-msgid "Use software floating point"
+#: config/lynx-ng.h:97 config/lynx.h:121 config/rs6000/lynx.h:100
+msgid "-msystem-v and -p are incompatible"
msgstr ""
-#: config/a29k/a29k.h:119
-msgid "Do not generate multm instructions"
+#: config/lynx-ng.h:99 config/lynx.h:123 config/rs6000/lynx.h:102
+msgid "-msystem-v and -mthreads are incompatible"
msgstr ""
-#: config/alpha/alpha.c:272
+#: config/alpha/alpha.c:342
#, c-format
msgid "-f%s ignored for Unicos/Mk (not supported)"
msgstr ""
-#: config/alpha/alpha.c:296
+#: config/alpha/alpha.c:366
msgid "-mieee not supported on Unicos/Mk"
msgstr ""
-#: config/alpha/alpha.c:307
+#: config/alpha/alpha.c:377
msgid "-mieee-with-inexact not supported on Unicos/Mk"
msgstr ""
-#: config/alpha/alpha.c:324
+#: config/alpha/alpha.c:394
#, c-format
msgid "bad value `%s' for -mtrap-precision switch"
msgstr ""
-#: config/alpha/alpha.c:338
+#: config/alpha/alpha.c:408
#, c-format
msgid "bad value `%s' for -mfp-rounding-mode switch"
msgstr ""
-#: config/alpha/alpha.c:353
+#: config/alpha/alpha.c:423
#, c-format
msgid "bad value `%s' for -mfp-trap-mode switch"
msgstr ""
-#: config/alpha/alpha.c:372 config/alpha/alpha.c:384
+#: config/alpha/alpha.c:435
+#, c-format
+msgid "bad value `%s' for -mtls-size switch"
+msgstr ""
+
+#: config/alpha/alpha.c:454 config/alpha/alpha.c:466
#, c-format
msgid "bad value `%s' for -mcpu switch"
msgstr ""
-#: config/alpha/alpha.c:391
+#: config/alpha/alpha.c:473
msgid "trap mode not supported on Unicos/Mk"
msgstr ""
-#: config/alpha/alpha.c:398
+#: config/alpha/alpha.c:480
msgid "fp software completion requires -mtrap-precision=i"
msgstr ""
-#: config/alpha/alpha.c:414
+#: config/alpha/alpha.c:496
msgid "rounding mode not supported for VAX floats"
msgstr ""
-#: config/alpha/alpha.c:419
+#: config/alpha/alpha.c:501
msgid "trap mode not supported for VAX floats"
msgstr ""
-#: config/alpha/alpha.c:448
+#: config/alpha/alpha.c:530
#, c-format
msgid "L%d cache latency unknown for %s"
msgstr ""
-#: config/alpha/alpha.c:463
+#: config/alpha/alpha.c:545
#, c-format
msgid "bad value `%s' for -mmemory-latency"
msgstr ""
-#: config/alpha/alpha.c:5219 config/m88k/m88k.c:2954 config/romp/romp.c:746
-#: config/romp/romp.c:753
+#: config/alpha/alpha.c:5604 config/m88k/m88k.c:2889 config/romp/romp.c:754
+#: config/romp/romp.c:761
#, c-format
msgid "invalid %%H value"
msgstr ""
-#: config/alpha/alpha.c:5229
+#: config/alpha/alpha.c:5625
#, c-format
msgid "invalid %%J value"
msgstr ""
-#: config/alpha/alpha.c:5239 config/ia64/ia64.c:3544 config/m88k/m88k.c:3099
+#: config/alpha/alpha.c:5641 config/ia64/ia64.c:3834 config/m88k/m88k.c:3034
#, c-format
msgid "invalid %%r value"
msgstr ""
-#: config/alpha/alpha.c:5249 config/rs6000/rs6000.c:6533
+#: config/alpha/alpha.c:5651 config/rs6000/rs6000.c:7700
#, c-format
msgid "invalid %%R value"
msgstr ""
-#: config/alpha/alpha.c:5271 config/m88k/m88k.c:2960 config/romp/romp.c:732
-#: config/romp/romp.c:739
+#: config/alpha/alpha.c:5657 config/rs6000/rs6000.c:7626
+#, c-format
+msgid "invalid %%N value"
+msgstr ""
+
+#: config/alpha/alpha.c:5665 config/rs6000/rs6000.c:7654
+#, c-format
+msgid "invalid %%P value"
+msgstr ""
+
+#: config/alpha/alpha.c:5673 config/m88k/m88k.c:2895 config/romp/romp.c:740
+#: config/romp/romp.c:747
#, c-format
msgid "invalid %%h value"
msgstr ""
-#: config/alpha/alpha.c:5361
+#: config/alpha/alpha.c:5681 config/romp/romp.c:698
+#, c-format
+msgid "invalid %%L value"
+msgstr ""
+
+#: config/alpha/alpha.c:5720 config/rs6000/rs6000.c:7608
+#, c-format
+msgid "invalid %%m value"
+msgstr ""
+
+#: config/alpha/alpha.c:5728 config/rs6000/rs6000.c:7616
+#, c-format
+msgid "invalid %%M value"
+msgstr ""
+
+#: config/alpha/alpha.c:5772
#, c-format
msgid "invalid %%U value"
msgstr ""
-#: config/alpha/alpha.c:5373 config/alpha/alpha.c:5387 config/romp/romp.c:698
-#: config/rs6000/rs6000.c:6541
+#: config/alpha/alpha.c:5784 config/alpha/alpha.c:5798 config/romp/romp.c:706
+#: config/rs6000/rs6000.c:7708
#, c-format
msgid "invalid %%s value"
msgstr ""
-#: config/alpha/alpha.c:5447 config/m88k/m88k.c:3083
-#: config/rs6000/rs6000.c:6248
+#: config/alpha/alpha.c:5821 config/m88k/m88k.c:2997
+#, c-format
+msgid "invalid %%C value"
+msgstr ""
+
+#: config/alpha/alpha.c:5858 config/m88k/m88k.c:3018
+#: config/rs6000/rs6000.c:7465
#, c-format
msgid "invalid %%E value"
msgstr ""
-#: config/alpha/alpha.c:5468 config/romp/romp.c:973
-#: config/rs6000/rs6000.c:6849
+#: config/alpha/alpha.c:5883 config/alpha/alpha.c:5933
+msgid "unknown relocation unspec"
+msgstr ""
+
+#: config/alpha/alpha.c:5892 config/romp/romp.c:981
+#: config/rs6000/rs6000.c:8015
#, c-format
msgid "invalid %%xn code"
msgstr ""
+#: config/alpha/alpha.c:6615 config/alpha/alpha.c:6618
+msgid "bad builtin fcode"
+msgstr ""
+
#. Macro to define tables used to set the flags.
#. This is a list in braces of pairs in braces,
#. each pair being { "NAME", VALUE }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/alpha/alpha.h:214 config/i386/i386.h:291 config/i386/i386.h:293
-#: config/i386/i386.h:295 config/ns32k/ns32k.h:103 config/rs6000/rs6000.h:329
-#: config/s390/s390.h:56 config/sparc/sparc.h:529 config/sparc/sparc.h:534
+#: config/alpha/alpha.h:279 config/i386/i386.h:294 config/i386/i386.h:296
+#: config/i386/i386.h:298 config/ns32k/ns32k.h:140 config/rs6000/rs6000.h:292
+#: config/s390/s390.h:68 config/sparc/sparc.h:522 config/sparc/sparc.h:527
msgid "Use hardware fp"
msgstr ""
-#: config/alpha/alpha.h:215 config/i386/i386.h:292 config/i386/i386.h:294
-#: config/rs6000/rs6000.h:331 config/sparc/sparc.h:531
-#: config/sparc/sparc.h:536
+#: config/alpha/alpha.h:280 config/i386/i386.h:295 config/i386/i386.h:297
+#: config/rs6000/rs6000.h:294 config/sparc/sparc.h:524
+#: config/sparc/sparc.h:529
msgid "Do not use hardware fp"
msgstr ""
-#: config/alpha/alpha.h:216
+#: config/alpha/alpha.h:281
msgid "Use fp registers"
msgstr ""
-#: config/alpha/alpha.h:218
+#: config/alpha/alpha.h:283
msgid "Do not use fp registers"
msgstr ""
-#: config/alpha/alpha.h:219
+#: config/alpha/alpha.h:284
msgid "Do not assume GAS"
msgstr ""
-#: config/alpha/alpha.h:220
+#: config/alpha/alpha.h:285
msgid "Assume GAS"
msgstr ""
-#: config/alpha/alpha.h:222
+#: config/alpha/alpha.h:287
msgid "Request IEEE-conformant math library routines (OSF/1)"
msgstr ""
-#: config/alpha/alpha.h:224
+#: config/alpha/alpha.h:289
msgid "Emit IEEE-conformant code, without inexact exceptions"
msgstr ""
-#: config/alpha/alpha.h:226
+#: config/alpha/alpha.h:291
msgid "Emit IEEE-conformant code, with inexact exceptions"
msgstr ""
-#: config/alpha/alpha.h:228
+#: config/alpha/alpha.h:293
msgid "Do not emit complex integer constants to read-only memory"
msgstr ""
-#: config/alpha/alpha.h:229
+#: config/alpha/alpha.h:294
msgid "Use VAX fp"
msgstr ""
-#: config/alpha/alpha.h:230
+#: config/alpha/alpha.h:295
msgid "Do not use VAX fp"
msgstr ""
-#: config/alpha/alpha.h:231
+#: config/alpha/alpha.h:296
msgid "Emit code for the byte/word ISA extension"
msgstr ""
-#: config/alpha/alpha.h:234
+#: config/alpha/alpha.h:299
msgid "Emit code for the motion video ISA extension"
msgstr ""
-#: config/alpha/alpha.h:237
+#: config/alpha/alpha.h:302
msgid "Emit code for the fp move and sqrt ISA extension"
msgstr ""
-#: config/alpha/alpha.h:239
+#: config/alpha/alpha.h:304
msgid "Emit code for the counting ISA extension"
msgstr ""
-#: config/alpha/alpha.h:242
+#: config/alpha/alpha.h:307
msgid "Emit code using explicit relocation directives"
msgstr ""
-#: config/alpha/alpha.h:245
+#: config/alpha/alpha.h:310
msgid "Emit 16-bit relocations to the small data areas"
msgstr ""
-#: config/alpha/alpha.h:247
+#: config/alpha/alpha.h:312
msgid "Emit 32-bit relocations to the small data areas"
msgstr ""
+#: config/alpha/alpha.h:314
+msgid "Emit rdval instead of rduniq for thread pointer"
+msgstr ""
+
#. For -mcpu=
#. For -mtune=
#. For -mfp-rounding-mode=[n|m|c|d]
#. For -mfp-trap-mode=[n|u|su|sui]
#. For -mtrap-precision=[p|f|i]
#. For -mmemory-latency=
-#: config/alpha/alpha.h:275
+#. For -mtls-size=
+#: config/alpha/alpha.h:343
msgid "Use features of and schedule given CPU"
msgstr ""
-#: config/alpha/alpha.h:277
+#: config/alpha/alpha.h:345
msgid "Schedule given CPU"
msgstr ""
-#: config/alpha/alpha.h:279
+#: config/alpha/alpha.h:347
msgid "Control the generated fp rounding mode"
msgstr ""
-#: config/alpha/alpha.h:281
+#: config/alpha/alpha.h:349
msgid "Control the IEEE trap mode"
msgstr ""
-#: config/alpha/alpha.h:283
+#: config/alpha/alpha.h:351
msgid "Control the precision given to fp exceptions"
msgstr ""
-#: config/alpha/alpha.h:285
+#: config/alpha/alpha.h:353
msgid "Tune expected memory latency"
msgstr ""
-#: config/arc/arc.c:132
+#: config/alpha/alpha.h:355 config/ia64/ia64.h:221
+msgid "Specify bit size of immediate TLS offsets"
+msgstr ""
+
+#: config/arc/arc.c:135
#, c-format
msgid "bad value (%s) for -mcpu switch"
msgstr ""
-#: config/arc/arc.c:359
+#: config/arc/arc.c:362
#, c-format
msgid "argument of `%s' attribute is not a string constant"
msgstr ""
-#: config/arc/arc.c:366
+#: config/arc/arc.c:369
#, c-format
msgid "argument of `%s' attribute is not \"ilink1\" or \"ilink2\""
msgstr ""
-#: config/arc/arc.c:1709 config/m32r/m32r.c:2282
+#: config/arc/arc.c:1708 config/m32r/m32r.c:2286
#, c-format
msgid "invalid operand to %%R code"
msgstr ""
-#: config/arc/arc.c:1741 config/m32r/m32r.c:2305
+#: config/arc/arc.c:1740 config/m32r/m32r.c:2309
#, c-format
msgid "invalid operand to %%H/%%L code"
msgstr ""
-#: config/arc/arc.c:1765 config/m32r/m32r.c:2382
+#: config/arc/arc.c:1763 config/m32r/m32r.c:2385
#, c-format
msgid "invalid operand to %%U code"
msgstr ""
-#: config/arc/arc.c:1776
+#: config/arc/arc.c:1774
#, c-format
msgid "invalid operand to %%V code"
msgstr ""
#. Unknown flag.
-#: config/arc/arc.c:1783 config/m32r/m32r.c:2421 config/sparc/sparc.c:6159
+#: config/arc/arc.c:1781 config/m32r/m32r.c:2424 config/sparc/sparc.c:6473
msgid "invalid operand output code"
msgstr ""
-#: config/arm/arm.c:436
+#: config/arm/arm.c:459
#, c-format
msgid "switch -mcpu=%s conflicts with -march= switch"
msgstr ""
-#: config/arm/arm.c:446 config/rs6000/rs6000.c:444 config/sparc/sparc.c:381
+#: config/arm/arm.c:469 config/rs6000/rs6000.c:554 config/sparc/sparc.c:393
#, c-format
msgid "bad value (%s) for %s switch"
msgstr ""
-#: config/arm/arm.c:582
+#: config/arm/arm.c:605
msgid "target CPU does not support APCS-32"
msgstr ""
-#: config/arm/arm.c:587
+#: config/arm/arm.c:610
msgid "target CPU does not support APCS-26"
msgstr ""
-#: config/arm/arm.c:593
+#: config/arm/arm.c:616
msgid "target CPU does not support interworking"
msgstr ""
-#: config/arm/arm.c:599
+#: config/arm/arm.c:622
msgid "target CPU does not support THUMB instructions"
msgstr ""
-#: config/arm/arm.c:613
+#: config/arm/arm.c:636
msgid ""
"enabling backtrace support is only meaningful when compiling for the Thumb"
msgstr ""
-#: config/arm/arm.c:616
+#: config/arm/arm.c:639
msgid ""
"enabling callee interworking support is only meaningful when compiling for "
"the Thumb"
msgstr ""
-#: config/arm/arm.c:619
+#: config/arm/arm.c:642
msgid ""
"enabling caller interworking support is only meaningful when compiling for "
"the Thumb"
msgstr ""
-#: config/arm/arm.c:625
+#: config/arm/arm.c:648
msgid "interworking forces APCS-32 to be used"
msgstr ""
-#: config/arm/arm.c:631
+#: config/arm/arm.c:654
msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
msgstr ""
-#: config/arm/arm.c:639
+#: config/arm/arm.c:662
msgid "-fpic and -mapcs-reent are incompatible"
msgstr ""
-#: config/arm/arm.c:642
+#: config/arm/arm.c:665
msgid "APCS reentrant code not supported. Ignored"
msgstr ""
-#: config/arm/arm.c:650
+#: config/arm/arm.c:673
msgid "-g with -mno-apcs-frame may not give sensible debugging"
msgstr ""
-#: config/arm/arm.c:658
+#: config/arm/arm.c:681
msgid "passing floating point arguments in fp regs not yet supported"
msgstr ""
-#: config/arm/arm.c:687
+#: config/arm/arm.c:710
#, c-format
msgid "invalid floating point emulation option: -mfpe-%s"
msgstr ""
-#: config/arm/arm.c:711
+#: config/arm/arm.c:734
msgid "structure size boundary can only be set to 8 or 32"
msgstr ""
-#: config/arm/arm.c:719
+#: config/arm/arm.c:742
msgid "-mpic-register= is useless without -fpic"
msgstr ""
-#: config/arm/arm.c:726
+#: config/arm/arm.c:749
#, c-format
msgid "unable to use '%s' for PIC register"
msgstr ""
-#: config/arm/arm.c:1970 config/arm/arm.c:1993 config/avr/avr.c:4703
-#: config/c4x/c4x.c:4674 config/h8300/h8300.c:3381 config/i386/i386.c:1261
-#: config/i386/i386.c:1290 config/m68hc11/m68hc11.c:1220
-#: config/mcore/mcore.c:3506 config/ns32k/ns32k.c:1044
-#: config/rs6000/rs6000.c:10789 config/sh/sh.c:5592 config/sh/sh.c:5612
-#: config/sh/sh.c:5651 config/stormy16/stormy16.c:2012 config/v850/v850.c:2047
+#: config/arm/arm.c:2061 config/arm/arm.c:2084 config/avr/avr.c:4794
+#: config/c4x/c4x.c:4644 config/h8300/h8300.c:3623 config/i386/i386.c:1389
+#: config/i386/i386.c:1418 config/m68hc11/m68hc11.c:1216
+#: config/mcore/mcore.c:3510 config/ns32k/ns32k.c:1047
+#: config/rs6000/rs6000.c:12476 config/sh/sh.c:5678 config/sh/sh.c:5703
+#: config/sh/sh.c:5742 config/stormy16/stormy16.c:2026 config/v850/v850.c:2180
#, c-format
msgid "`%s' attribute only applies to functions"
msgstr ""
-#: config/arm/arm.c:9290
+#: config/arm/arm.c:9474
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:9970
+#: config/arm/arm.c:10153
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:10162
+#: config/arm/arm.c:10404
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/pe.c:168 config/i386/winnt.c:290 config/mcore/mcore.c:3365
+#: config/arm/pe.c:168 config/i386/winnt.c:303 config/mcore/mcore.c:3358
#, c-format
msgid "initialized variable `%s' is marked dllimport"
msgstr ""
-#: config/arm/pe.c:177 config/i386/winnt.c:299
+#: config/arm/pe.c:177 config/i386/winnt.c:312
#, c-format
msgid "static variable `%s' is marked dllimport"
msgstr ""
-#: config/arm/arm.h:422
+#: config/arm/arm.h:416
msgid "Generate APCS conformant stack frames"
msgstr ""
-#: config/arm/arm.h:425
+#: config/arm/arm.h:419
msgid "Store function names in object code"
msgstr ""
-#: config/arm/arm.h:429
+#: config/arm/arm.h:423
msgid "Use the 32-bit version of the APCS"
msgstr ""
-#: config/arm/arm.h:431
+#: config/arm/arm.h:425
msgid "Use the 26-bit version of the APCS"
msgstr ""
-#: config/arm/arm.h:435
+#: config/arm/arm.h:429
msgid "Pass FP arguments in FP registers"
msgstr ""
-#: config/arm/arm.h:438
+#: config/arm/arm.h:432
msgid "Generate re-entrant, PIC code"
msgstr ""
-#: config/arm/arm.h:441
+#: config/arm/arm.h:435
msgid "The MMU will trap on unaligned accesses"
msgstr ""
-#: config/arm/arm.h:448
+#: config/arm/arm.h:442
msgid "Use library calls to perform FP operations"
msgstr ""
-#: config/arm/arm.h:450 config/i960/i960.h:281
+#: config/arm/arm.h:444 config/i960/i960.h:281
msgid "Use hardware floating point instructions"
msgstr ""
-#: config/arm/arm.h:452
+#: config/arm/arm.h:446
msgid "Assume target CPU is configured as big endian"
msgstr ""
-#: config/arm/arm.h:454
+#: config/arm/arm.h:448
msgid "Assume target CPU is configured as little endian"
msgstr ""
-#: config/arm/arm.h:456
+#: config/arm/arm.h:450
msgid "Assume big endian bytes, little endian words"
msgstr ""
-#: config/arm/arm.h:458
+#: config/arm/arm.h:452
msgid "Support calls between Thumb and ARM instruction sets"
msgstr ""
-#: config/arm/arm.h:461
+#: config/arm/arm.h:455
msgid "Generate a call to abort if a noreturn function returns"
msgstr ""
-#: config/arm/arm.h:464
+#: config/arm/arm.h:458
msgid "Do not move instructions into a function's prologue"
msgstr ""
-#: config/arm/arm.h:467
+#: config/arm/arm.h:461
msgid "Do not load the PIC register in function prologues"
msgstr ""
-#: config/arm/arm.h:470
+#: config/arm/arm.h:464
msgid "Generate call insns as indirect calls, if necessary"
msgstr ""
-#: config/arm/arm.h:473
+#: config/arm/arm.h:467
msgid "Compile for the Thumb not the ARM"
msgstr ""
-#: config/arm/arm.h:477
+#: config/arm/arm.h:471
msgid "Thumb: Generate (non-leaf) stack frames even if not needed"
msgstr ""
-#: config/arm/arm.h:480
+#: config/arm/arm.h:474
msgid "Thumb: Generate (leaf) stack frames even if not needed"
msgstr ""
-#: config/arm/arm.h:483
+#: config/arm/arm.h:477
msgid "Thumb: Assume non-static functions may be called from ARM code"
msgstr ""
-#: config/arm/arm.h:487
+#: config/arm/arm.h:481
msgid "Thumb: Assume function pointers may go to non-Thumb aware code"
msgstr ""
-#: config/arm/arm.h:497
+#: config/arm/arm.h:491
msgid "Specify the name of the target CPU"
msgstr ""
-#: config/arm/arm.h:499
+#: config/arm/arm.h:493
msgid "Specify the name of the target architecture"
msgstr ""
-#: config/arm/arm.h:503
+#: config/arm/arm.h:497
msgid "Specify the version of the floating point emulator"
msgstr ""
-#: config/arm/arm.h:505
+#: config/arm/arm.h:499
msgid "Specify the minimum bit alignment of structures"
msgstr ""
-#: config/arm/arm.h:507
+#: config/arm/arm.h:501
msgid "Specify the register to be used for PIC addressing"
msgstr ""
@@ -8824,99 +8880,92 @@ msgstr ""
msgid "Ignore dllimport attribute for functions"
msgstr ""
-#. None of these is actually used in cc1. If we don't define them in target
-#. switches cc1 complains about them. For the sake of argument lets allocate
-#. bit 31 of target flags for such options.
-#: config/arm/riscix.h:84
-msgid "Do symbol renaming for BSD"
-msgstr ""
-
-#: config/arm/riscix.h:85
-msgid "Do symbol renaming for X/OPEN"
-msgstr ""
-
-#: config/arm/riscix.h:86
-msgid "Don't do symbol renaming"
-msgstr ""
-
-#: config/avr/avr.c:221
-#, c-format
-msgid "MCU `%s' not supported"
-msgstr ""
-
-#: config/avr/avr.c:461
+#: config/avr/avr.c:528
#, c-format
msgid "large frame pointer change (%d) with -mtiny-stack"
msgstr ""
-#: config/avr/avr.c:1056
+#: config/avr/avr.c:1135
msgid "bad address, not (reg+disp):"
msgstr ""
-#: config/avr/avr.c:1064
+#: config/avr/avr.c:1143
msgid "internal compiler error. Bad address:"
msgstr ""
-#: config/avr/avr.c:1077
+#: config/avr/avr.c:1156
msgid "internal compiler error. Unknown mode:"
msgstr ""
-#: config/avr/avr.c:1785 config/avr/avr.c:2497
+#: config/avr/avr.c:1864 config/avr/avr.c:2576
msgid "invalid insn:"
msgstr ""
-#: config/avr/avr.c:1822 config/avr/avr.c:1908 config/avr/avr.c:1957
-#: config/avr/avr.c:1966 config/avr/avr.c:2064 config/avr/avr.c:2236
-#: config/avr/avr.c:2534 config/avr/avr.c:2645
+#: config/avr/avr.c:1901 config/avr/avr.c:1987 config/avr/avr.c:2036
+#: config/avr/avr.c:2045 config/avr/avr.c:2143 config/avr/avr.c:2315
+#: config/avr/avr.c:2613 config/avr/avr.c:2724
msgid "incorrect insn:"
msgstr ""
-#: config/avr/avr.c:1985 config/avr/avr.c:2149 config/avr/avr.c:2307
-#: config/avr/avr.c:2689
+#: config/avr/avr.c:2064 config/avr/avr.c:2228 config/avr/avr.c:2386
+#: config/avr/avr.c:2768
msgid "unknown move insn:"
msgstr ""
-#: config/avr/avr.c:2925
+#: config/avr/avr.c:3003
msgid "bad shift insn:"
msgstr ""
-#: config/avr/avr.c:3041 config/avr/avr.c:3471 config/avr/avr.c:3851
+#: config/avr/avr.c:3119 config/avr/avr.c:3549 config/avr/avr.c:3929
msgid "internal compiler error. Incorrect shift:"
msgstr ""
-#: config/avr/avr.c:4676
+#: config/avr/avr.c:4767
msgid "only initialized variables can be placed into program memory area"
msgstr ""
-#: config/avr/avr.h:63
+#: config/avr/avr.c:4866
+msgid "only uninitialized variables can be placed in the .noinit section"
+msgstr ""
+
+#: config/avr/avr.c:4881
+#, c-format
+msgid "MCU `%s' supported for assembler only"
+msgstr ""
+
+#: config/avr/avr.h:78
msgid "Assume int to be 8 bit integer"
msgstr ""
-#: config/avr/avr.h:65
+#: config/avr/avr.h:80
msgid "Change the stack pointer without disabling interrupts"
msgstr ""
-#: config/avr/avr.h:67
+#: config/avr/avr.h:82
msgid "Use subroutines for function prologue/epilogue"
msgstr ""
-#: config/avr/avr.h:69
+#: config/avr/avr.h:84
msgid "Change only the low 8 bits of the stack pointer"
msgstr ""
-#: config/avr/avr.h:71
+#: config/avr/avr.h:86
msgid "Do not generate tablejump insns"
msgstr ""
-#: config/avr/avr.h:74
+#: config/avr/avr.h:88
+msgid "Use rjmp/rcall (limited range) on >8K devices"
+msgstr ""
+
+#: config/avr/avr.h:91
msgid "Output instruction sizes to the asm file"
msgstr ""
-#: config/avr/avr.h:87
+#: config/avr/avr.h:108
msgid "Specify the initial stack address"
msgstr ""
-#: config/avr/avr.h:88
+#: config/avr/avr.h:109
msgid "Specify the MCU name"
msgstr ""
@@ -8928,132 +8977,132 @@ msgstr ""
#. For instance, the SH target has only positive offsets in
#. addresses. Thus sorting to put the smallest address first allows
#. the most combinations to be found.
-#: config/avr/avr.h:2553
+#: config/avr/avr.h:2450
msgid "trampolines not supported"
msgstr ""
-#: config/c4x/c4x-c.c:70
+#: config/c4x/c4x-c.c:69
#, c-format
msgid "missing '(' after '#pragma %s' - ignored"
msgstr ""
-#: config/c4x/c4x-c.c:73
+#: config/c4x/c4x-c.c:72
#, c-format
msgid "missing function name in '#pragma %s' - ignored"
msgstr ""
-#: config/c4x/c4x-c.c:78
+#: config/c4x/c4x-c.c:77
#, c-format
msgid "malformed '#pragma %s' - ignored"
msgstr ""
-#: config/c4x/c4x-c.c:80
+#: config/c4x/c4x-c.c:79
#, c-format
msgid "missing section name in '#pragma %s' - ignored"
msgstr ""
-#: config/c4x/c4x-c.c:85
+#: config/c4x/c4x-c.c:84
#, c-format
msgid "missing ')' for '#pragma %s' - ignored"
msgstr ""
-#: config/c4x/c4x-c.c:88
+#: config/c4x/c4x-c.c:87
#, c-format
msgid "junk at end of '#pragma %s'"
msgstr ""
-#: config/c4x/c4x.c:299
+#: config/c4x/c4x.c:280
#, c-format
msgid "unknown CPU version %d, using 40.\n"
msgstr ""
-#: config/c4x/c4x.c:883
+#: config/c4x/c4x.c:853
#, c-format
msgid "ISR %s requires %d words of local vars, max is 32767"
msgstr ""
-#: config/c4x/c4x.c:1631
+#: config/c4x/c4x.c:1602
msgid "using CONST_DOUBLE for address"
msgstr ""
-#: config/c4x/c4x.c:1771
+#: config/c4x/c4x.c:1742
msgid "c4x_address_cost: Invalid addressing mode"
msgstr ""
-#: config/c4x/c4x.c:1913
+#: config/c4x/c4x.c:1884
#, c-format
msgid "c4x_print_operand: %%L inconsistency"
msgstr ""
-#: config/c4x/c4x.c:1919
+#: config/c4x/c4x.c:1890
#, c-format
msgid "c4x_print_operand: %%N inconsistency"
msgstr ""
-#: config/c4x/c4x.c:1960
+#: config/c4x/c4x.c:1931
#, c-format
msgid "c4x_print_operand: %%O inconsistency"
msgstr ""
-#: config/c4x/c4x.c:2056
+#: config/c4x/c4x.c:2026
msgid "c4x_print_operand: Bad operand case"
msgstr ""
-#: config/c4x/c4x.c:2099
+#: config/c4x/c4x.c:2069
msgid "c4x_print_operand_address: Bad post_modify"
msgstr ""
-#: config/c4x/c4x.c:2121
+#: config/c4x/c4x.c:2091
msgid "c4x_print_operand_address: Bad pre_modify"
msgstr ""
-#: config/c4x/c4x.c:2169 config/c4x/c4x.c:2181 config/c4x/c4x.c:2196
+#: config/c4x/c4x.c:2139 config/c4x/c4x.c:2151 config/c4x/c4x.c:2166
msgid "c4x_print_operand_address: Bad operand case"
msgstr ""
-#: config/c4x/c4x.c:2452
+#: config/c4x/c4x.c:2422
msgid "c4x_rptb_insert: Cannot find start label"
msgstr ""
-#: config/c4x/c4x.c:3439 config/c4x/c4x.c:3459
+#: config/c4x/c4x.c:3409 config/c4x/c4x.c:3429
msgid "mode not QImode"
msgstr ""
-#: config/c4x/c4x.c:3544
+#: config/c4x/c4x.c:3514
msgid "invalid indirect memory address"
msgstr ""
-#: config/c4x/c4x.c:3633
+#: config/c4x/c4x.c:3603
msgid "invalid indirect (S) memory address"
msgstr ""
-#: config/c4x/c4x.c:3974
+#: config/c4x/c4x.c:3944
msgid "c4x_valid_operands: Internal error"
msgstr ""
-#: config/c4x/c4x.c:4454
+#: config/c4x/c4x.c:4424
msgid "c4x_operand_subword: invalid mode"
msgstr ""
-#: config/c4x/c4x.c:4457
+#: config/c4x/c4x.c:4427
msgid "c4x_operand_subword: invalid operand"
msgstr ""
#. We could handle these with some difficulty.
#. e.g., *p-- => *(p-=2); *(p+1).
-#: config/c4x/c4x.c:4483
+#: config/c4x/c4x.c:4453
msgid "c4x_operand_subword: invalid autoincrement"
msgstr ""
-#: config/c4x/c4x.c:4489
+#: config/c4x/c4x.c:4459
msgid "c4x_operand_subword: invalid address"
msgstr ""
-#: config/c4x/c4x.c:4500
+#: config/c4x/c4x.c:4470
msgid "c4x_operand_subword: address not offsettable"
msgstr ""
-#: config/c4x/c4x.c:4700
+#: config/c4x/c4x.c:4670
msgid "c4x_rptb_rpts_p: Repeat block top label moved\n"
msgstr ""
@@ -9061,7 +9110,6 @@ msgstr ""
#. Name of the c4x linker.
#. Define assembler options.
#. Define linker options.
-#. Define C preprocessor options.
#. Specify the end file to link with.
#. Target compilation option flags.
#. Small memory model.
@@ -9097,405 +9145,343 @@ msgstr ""
#. each pair being { "NAME", VALUE, "DESCRIPTION" }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/c4x/c4x.h:141
+#: config/c4x/c4x.h:170
msgid "Small memory model"
msgstr ""
-#: config/c4x/c4x.h:143
+#: config/c4x/c4x.h:172
msgid "Big memory model"
msgstr ""
-#: config/c4x/c4x.h:145
+#: config/c4x/c4x.h:174
msgid "Use MPYI instruction for C3x"
msgstr ""
-#: config/c4x/c4x.h:147
+#: config/c4x/c4x.h:176
msgid "Do not use MPYI instruction for C3x"
msgstr ""
-#: config/c4x/c4x.h:149
+#: config/c4x/c4x.h:178
msgid "Use fast but approximate float to integer conversion"
msgstr ""
-#: config/c4x/c4x.h:151
+#: config/c4x/c4x.h:180
msgid "Use slow but accurate float to integer conversion"
msgstr ""
-#: config/c4x/c4x.h:153
+#: config/c4x/c4x.h:182
msgid "Enable use of RTPS instruction"
msgstr ""
-#: config/c4x/c4x.h:155
+#: config/c4x/c4x.h:184
msgid "Disable use of RTPS instruction"
msgstr ""
-#: config/c4x/c4x.h:157
+#: config/c4x/c4x.h:186
msgid "Enable use of RTPB instruction"
msgstr ""
-#: config/c4x/c4x.h:159
+#: config/c4x/c4x.h:188
msgid "Disable use of RTPB instruction"
msgstr ""
-#: config/c4x/c4x.h:161
+#: config/c4x/c4x.h:190
msgid "Generate code for C30 CPU"
msgstr ""
-#: config/c4x/c4x.h:163
+#: config/c4x/c4x.h:192
msgid "Generate code for C31 CPU"
msgstr ""
-#: config/c4x/c4x.h:165
+#: config/c4x/c4x.h:194
msgid "Generate code for C32 CPU"
msgstr ""
-#: config/c4x/c4x.h:167
+#: config/c4x/c4x.h:196
msgid "Generate code for C33 CPU"
msgstr ""
-#: config/c4x/c4x.h:169
+#: config/c4x/c4x.h:198
msgid "Generate code for C40 CPU"
msgstr ""
-#: config/c4x/c4x.h:171
+#: config/c4x/c4x.h:200
msgid "Generate code for C44 CPU"
msgstr ""
-#: config/c4x/c4x.h:173
+#: config/c4x/c4x.h:202
msgid "Emit code compatible with TI tools"
msgstr ""
-#: config/c4x/c4x.h:175
+#: config/c4x/c4x.h:204
msgid "Emit code to use GAS extensions"
msgstr ""
-#: config/c4x/c4x.h:177 config/c4x/c4x.h:181
+#: config/c4x/c4x.h:206 config/c4x/c4x.h:210
msgid "Save DP across ISR in small memory model"
msgstr ""
-#: config/c4x/c4x.h:179 config/c4x/c4x.h:183
+#: config/c4x/c4x.h:208 config/c4x/c4x.h:212
msgid "Don't save DP across ISR in small memory model"
msgstr ""
-#: config/c4x/c4x.h:185
+#: config/c4x/c4x.h:214
msgid "Pass arguments on the stack"
msgstr ""
-#: config/c4x/c4x.h:187
+#: config/c4x/c4x.h:216
msgid "Pass arguments in registers"
msgstr ""
-#: config/c4x/c4x.h:189
+#: config/c4x/c4x.h:218
msgid "Enable new features under development"
msgstr ""
-#: config/c4x/c4x.h:191
+#: config/c4x/c4x.h:220
msgid "Disable new features under development"
msgstr ""
-#: config/c4x/c4x.h:193
+#: config/c4x/c4x.h:222
msgid "Use the BK register as a general purpose register"
msgstr ""
-#: config/c4x/c4x.h:195
+#: config/c4x/c4x.h:224
msgid "Do not allocate BK register"
msgstr ""
-#: config/c4x/c4x.h:197
+#: config/c4x/c4x.h:226
msgid "Enable use of DB instruction"
msgstr ""
-#: config/c4x/c4x.h:199
+#: config/c4x/c4x.h:228
msgid "Disable use of DB instruction"
msgstr ""
-#: config/c4x/c4x.h:201
+#: config/c4x/c4x.h:230
msgid "Enable debugging"
msgstr ""
-#: config/c4x/c4x.h:203
+#: config/c4x/c4x.h:232
msgid "Disable debugging"
msgstr ""
-#: config/c4x/c4x.h:205
+#: config/c4x/c4x.h:234
msgid "Force constants into registers to improve hoisting"
msgstr ""
-#: config/c4x/c4x.h:207
+#: config/c4x/c4x.h:236
msgid "Don't force constants into registers"
msgstr ""
-#: config/c4x/c4x.h:209
+#: config/c4x/c4x.h:238
msgid "Force RTL generation to emit valid 3 operand insns"
msgstr ""
-#: config/c4x/c4x.h:211
+#: config/c4x/c4x.h:240
msgid "Allow RTL generation to emit invalid 3 operand insns"
msgstr ""
-#: config/c4x/c4x.h:213
+#: config/c4x/c4x.h:242
msgid "Allow unsigned interation counts for RPTB/DB"
msgstr ""
-#: config/c4x/c4x.h:215
+#: config/c4x/c4x.h:244
msgid "Disallow unsigned iteration counts for RPTB/DB"
msgstr ""
-#: config/c4x/c4x.h:217
+#: config/c4x/c4x.h:246
msgid "Preserve all 40 bits of FP reg across call"
msgstr ""
-#: config/c4x/c4x.h:219
+#: config/c4x/c4x.h:248
msgid "Only preserve 32 bits of FP reg across call"
msgstr ""
-#: config/c4x/c4x.h:221
+#: config/c4x/c4x.h:250
msgid "Enable parallel instructions"
msgstr ""
-#: config/c4x/c4x.h:223
+#: config/c4x/c4x.h:252
msgid "Disable parallel instructions"
msgstr ""
-#: config/c4x/c4x.h:225
+#: config/c4x/c4x.h:254
msgid "Enable MPY||ADD and MPY||SUB instructions"
msgstr ""
-#: config/c4x/c4x.h:227
+#: config/c4x/c4x.h:256
msgid "Disable MPY||ADD and MPY||SUB instructions"
msgstr ""
-#: config/c4x/c4x.h:229
+#: config/c4x/c4x.h:258
msgid "Assume that pointers may be aliased"
msgstr ""
-#: config/c4x/c4x.h:231
+#: config/c4x/c4x.h:260
msgid "Assume that pointers not aliased"
msgstr ""
-#: config/c4x/c4x.h:304
+#: config/c4x/c4x.h:333
msgid "Specify maximum number of iterations for RPTS"
msgstr ""
-#: config/c4x/c4x.h:306
+#: config/c4x/c4x.h:335
msgid "Select CPU to generate code for"
msgstr ""
-#. Macros used in the machine description to test the flags.
-#. Macro to define tables used to set the flags.
-#. This is a list in braces of pairs in braces,
-#. each pair being { "NAME", VALUE }
-#. where VALUE is the bits to set or minus the bits to clear.
-#. An empty string NAME is used to identify the default VALUE.
-#: config/clipper/clipper.h:40
-msgid "Generate code for the C400"
-msgstr ""
-
-#: config/clipper/clipper.h:41
-msgid "Generate code for the C300"
-msgstr ""
-
-#: config/convex/convex.h:53
-msgid "Generate code for c1"
-msgstr ""
-
-#: config/convex/convex.h:54
-msgid "Generate code for c2"
-msgstr ""
-
-#: config/convex/convex.h:55
-msgid "Generate code for c32"
-msgstr ""
-
-#: config/convex/convex.h:56 config/convex/convex.h:57
-msgid "Generate code for c34"
-msgstr ""
-
-#: config/convex/convex.h:59
-msgid "Use standard calling sequence, with arg count word"
-msgstr ""
-
-#: config/convex/convex.h:61
-msgid "Place arg count in a nop instruction (faster than push)"
-msgstr ""
-
-#: config/convex/convex.h:63
-msgid "Don't push arg count, depend on symbol table"
-msgstr ""
-
-#: config/convex/convex.h:65
-msgid "Use data cache for volatile mem refs (default)"
-msgstr ""
-
-#: config/convex/convex.h:67
-msgid "Don't use data cache for volatile mem refs"
-msgstr ""
-
-#: config/convex/convex.h:69
-msgid "Bypass data cache for volatile mem refs"
-msgstr ""
-
-#: config/convex/convex.h:70
-msgid "Use 64-bit longs"
-msgstr ""
-
-#: config/convex/convex.h:71
-msgid "Use cc- and libc-compatible 32-bit longs"
-msgstr ""
-
-#: config/cris/cris.c:569
+#: config/cris/cris.c:583
msgid "unexpected index-type in cris_print_index"
msgstr ""
-#: config/cris/cris.c:585
+#: config/cris/cris.c:599
msgid "unexpected base-type in cris_print_base"
msgstr ""
-#: config/cris/cris.c:878
+#: config/cris/cris.c:892
#, c-format
msgid "stackframe too big: %d bytes"
msgstr ""
-#: config/cris/cris.c:1193
+#: config/cris/cris.c:1207
msgid "allocated but unused delay list in epilogue"
msgstr ""
-#: config/cris/cris.c:1203
+#: config/cris/cris.c:1217
msgid ""
"unexpected function type needing stack adjustment for __builtin_eh_return"
msgstr ""
-#: config/cris/cris.c:1282
+#: config/cris/cris.c:1296
msgid "invalid operand for 'b' modifier"
msgstr ""
-#: config/cris/cris.c:1294
+#: config/cris/cris.c:1308
msgid "invalid operand for 'v' modifier"
msgstr ""
-#: config/cris/cris.c:1304
+#: config/cris/cris.c:1318
msgid "invalid operand for 'P' modifier"
msgstr ""
-#: config/cris/cris.c:1311
+#: config/cris/cris.c:1325
msgid "invalid operand for 'p' modifier"
msgstr ""
-#: config/cris/cris.c:1350
+#: config/cris/cris.c:1364
msgid "invalid operand for 'z' modifier"
msgstr ""
-#: config/cris/cris.c:1381 config/cris/cris.c:1411
+#: config/cris/cris.c:1395 config/cris/cris.c:1425
msgid "invalid operand for 'H' modifier"
msgstr ""
-#: config/cris/cris.c:1387
+#: config/cris/cris.c:1401
msgid "bad register"
msgstr ""
-#: config/cris/cris.c:1425
+#: config/cris/cris.c:1439
msgid "invalid operand for 'e' modifier"
msgstr ""
-#: config/cris/cris.c:1442
+#: config/cris/cris.c:1456
msgid "invalid operand for 'm' modifier"
msgstr ""
-#: config/cris/cris.c:1467
+#: config/cris/cris.c:1481
msgid "invalid operand for 'A' modifier"
msgstr ""
-#: config/cris/cris.c:1475
+#: config/cris/cris.c:1489
msgid "invalid operand for 'D' modifier"
msgstr ""
-#: config/cris/cris.c:1489
+#: config/cris/cris.c:1503
msgid "invalid operand for 'T' modifier"
msgstr ""
-#: config/cris/cris.c:1498
+#: config/cris/cris.c:1512
msgid "invalid operand modifier letter"
msgstr ""
-#: config/cris/cris.c:1506
+#: config/cris/cris.c:1520
#, c-format
msgid "internal error: bad register: %d"
msgstr ""
-#: config/cris/cris.c:1554
+#: config/cris/cris.c:1568
msgid "unexpected multiplicative operand"
msgstr ""
-#: config/cris/cris.c:1574
+#: config/cris/cris.c:1588
msgid "unexpected operand"
msgstr ""
-#: config/cris/cris.c:1609 config/cris/cris.c:1619
+#: config/cris/cris.c:1623 config/cris/cris.c:1633
msgid "unrecognized address"
msgstr ""
-#: config/cris/cris.c:1975
+#: config/cris/cris.c:1989
msgid "internal error: sideeffect-insn affecting main effect"
msgstr ""
#. If we get here, the caller got its initial tests wrong.
-#: config/cris/cris.c:2262
+#: config/cris/cris.c:2276
msgid "internal error: cris_side_effect_mode_ok with bad operands"
msgstr ""
-#: config/cris/cris.c:2344 config/cris/cris.c:2402
+#: config/cris/cris.c:2358 config/cris/cris.c:2416
msgid "unrecognized supposed constant"
msgstr ""
-#: config/cris/cris.c:2443
+#: config/cris/cris.c:2457
msgid "unrecognized supposed constant in cris_global_pic_symbol"
msgstr ""
-#: config/cris/cris.c:2462
+#: config/cris/cris.c:2476
#, c-format
msgid "-max-stackframe=%d is not usable, not between 0 and %d"
msgstr ""
-#: config/cris/cris.c:2490
+#: config/cris/cris.c:2504
#, c-format
msgid "unknown CRIS version specification in -march= or -mcpu= : %s"
msgstr ""
-#: config/cris/cris.c:2526
+#: config/cris/cris.c:2540
#, c-format
msgid "unknown CRIS cpu version specification in -mtune= : %s"
msgstr ""
-#: config/cris/cris.c:2544
+#: config/cris/cris.c:2558
msgid "-fPIC and -fpic are not supported in this configuration"
msgstr ""
-#: config/cris/cris.c:2560
+#: config/cris/cris.c:2574
msgid "that particular -g option is invalid with -maout and -melinux"
msgstr ""
-#: config/cris/cris.c:2790 config/cris/cris.c:2835
+#: config/cris/cris.c:2808 config/cris/cris.c:2853
msgid "unexpected side-effects in address"
msgstr ""
#. Labels are never marked as global symbols.
-#: config/cris/cris.c:2932 config/cris/cris.c:2963
+#: config/cris/cris.c:2950 config/cris/cris.c:2981
msgid "unexpected PIC symbol"
msgstr ""
-#: config/cris/cris.c:2936
+#: config/cris/cris.c:2954
msgid "PIC register isn't set up"
msgstr ""
-#: config/cris/cris.c:2949 config/cris/cris.c:3032
+#: config/cris/cris.c:2967 config/cris/cris.c:3050
msgid "unexpected address expression"
msgstr ""
-#: config/cris/cris.c:2967
+#: config/cris/cris.c:2985
msgid "emitting PIC operand, but PIC register isn't set up"
msgstr ""
-#: config/cris/cris.c:2976
+#: config/cris/cris.c:2994
msgid "unexpected NOTE as addr_const:"
msgstr ""
@@ -9575,7 +9561,7 @@ msgid "Warn when a stackframe is larger than the specified size"
msgstr ""
#. Node: Profiling
-#: config/cris/cris.h:1023
+#: config/cris/cris.h:1019
msgid "no FUNCTION_PROFILER for CRIS"
msgstr ""
@@ -9583,105 +9569,105 @@ msgstr ""
msgid "Together with -fpic and -fPIC, do not use GOTPLT references"
msgstr ""
-#: config/d30v/d30v.c:210
+#: config/d30v/d30v.c:207
#, c-format
msgid "bad modes_tieable_p for register %s, mode1 %s, mode2 %s"
msgstr ""
-#: config/d30v/d30v.c:2677
+#: config/d30v/d30v.c:2666
msgid "bad insn to d30v_print_operand_address:"
msgstr ""
-#: config/d30v/d30v.c:2694 config/d30v/d30v.c:2755 config/d30v/d30v.c:2776
-#: config/d30v/d30v.c:2794
+#: config/d30v/d30v.c:2683 config/d30v/d30v.c:2744 config/d30v/d30v.c:2765
+#: config/d30v/d30v.c:2783
msgid "bad insn to d30v_print_operand_memory_reference:"
msgstr ""
-#: config/d30v/d30v.c:2862
+#: config/d30v/d30v.c:2851
msgid "bad insn to d30v_print_operand, 'f' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2871
+#: config/d30v/d30v.c:2860
msgid "bad insn to d30v_print_operand, 'A' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2878
+#: config/d30v/d30v.c:2867
msgid "bad insn to d30v_print_operand, 'M' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2932
+#: config/d30v/d30v.c:2921
msgid "bad insn to print_operand, 'F' or 'T' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2943
+#: config/d30v/d30v.c:2932
msgid "bad insn to print_operand, 'B' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2950
+#: config/d30v/d30v.c:2939
msgid "bad insn to print_operand, 'E' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2968
+#: config/d30v/d30v.c:2957
msgid "bad insn to print_operand, 'R' modifier:"
msgstr ""
-#: config/d30v/d30v.c:2977 config/d30v/d30v.c:2985
+#: config/d30v/d30v.c:2966 config/d30v/d30v.c:2974
msgid "bad insn to print_operand, 's' modifier:"
msgstr ""
-#: config/d30v/d30v.c:3014
+#: config/d30v/d30v.c:3003
msgid "bad insn in d30v_print_operand, 0 case"
msgstr ""
-#: config/d30v/d30v.c:3369
+#: config/d30v/d30v.c:3301
msgid "d30v_emit_comparison"
msgstr ""
-#: config/d30v/d30v.c:3413
+#: config/d30v/d30v.c:3345
msgid "bad call to d30v_move_2words"
msgstr ""
-#: config/d30v/d30v.h:108
+#: config/d30v/d30v.h:114
msgid "Enable use of conditional move instructions"
msgstr ""
-#: config/d30v/d30v.h:111
+#: config/d30v/d30v.h:117
msgid "Disable use of conditional move instructions"
msgstr ""
-#: config/d30v/d30v.h:114
+#: config/d30v/d30v.h:120
msgid "Debug argument support in compiler"
msgstr ""
-#: config/d30v/d30v.h:117
+#: config/d30v/d30v.h:123
msgid "Debug stack support in compiler"
msgstr ""
-#: config/d30v/d30v.h:120
+#: config/d30v/d30v.h:126
msgid "Debug memory address support in compiler"
msgstr ""
-#: config/d30v/d30v.h:123
+#: config/d30v/d30v.h:129
msgid "Make adjacent short instructions parallel if possible"
msgstr ""
-#: config/d30v/d30v.h:126
+#: config/d30v/d30v.h:132
msgid "Do not make adjacent short instructions parallel"
msgstr ""
-#: config/d30v/d30v.h:129 config/d30v/d30v.h:132
+#: config/d30v/d30v.h:135 config/d30v/d30v.h:138
msgid "Link programs/data to be in external memory by default"
msgstr ""
-#: config/d30v/d30v.h:135
+#: config/d30v/d30v.h:141
msgid "Link programs/data to be in onchip memory by default"
msgstr ""
-#: config/d30v/d30v.h:143
+#: config/d30v/d30v.h:149
msgid "Change the branch costs within the compiler"
msgstr ""
-#: config/d30v/d30v.h:146
+#: config/d30v/d30v.h:152
msgid "Change the threshold for conversion to conditional execution"
msgstr ""
@@ -9693,27 +9679,27 @@ msgstr ""
msgid "invalid addressing mode"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:1857
+#: config/dsp16xx/dsp16xx.c:1821
msgid "bad register extension code"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:1957
+#: config/dsp16xx/dsp16xx.c:1921
msgid "invalid offset in ybase addressing"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:1960
+#: config/dsp16xx/dsp16xx.c:1924
msgid "invalid register in ybase addressing"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:2135
+#: config/dsp16xx/dsp16xx.c:2099
msgid "invalid shift operator in emit_1600_core_shift"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:2464
+#: config/dsp16xx/dsp16xx.c:2428
msgid "invalid mode for gen_tst_reg"
msgstr ""
-#: config/dsp16xx/dsp16xx.c:2536
+#: config/dsp16xx/dsp16xx.c:2500
msgid "invalid mode for integer comparison in gen_compare_reg"
msgstr ""
@@ -9722,239 +9708,379 @@ msgstr ""
#. each pair being { "NAME", VALUE }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/dsp16xx/dsp16xx.h:215
+#: config/dsp16xx/dsp16xx.h:230
msgid "Pass parameters in registers (default)"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:217
+#: config/dsp16xx/dsp16xx.h:232
msgid "Don't pass parameters in registers"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:219
+#: config/dsp16xx/dsp16xx.h:234
msgid "Generate code for near calls"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:221
+#: config/dsp16xx/dsp16xx.h:236
msgid "Don't generate code for near calls"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:223
+#: config/dsp16xx/dsp16xx.h:238
msgid "Generate code for near jumps"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:225
+#: config/dsp16xx/dsp16xx.h:240
msgid "Don't generate code for near jumps"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:227
+#: config/dsp16xx/dsp16xx.h:242
msgid "Generate code for a bit-manipulation unit"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:229
+#: config/dsp16xx/dsp16xx.h:244
msgid "Don't generate code for a bit-manipulation unit"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:231
+#: config/dsp16xx/dsp16xx.h:246
msgid "Generate code for memory map1"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:233
+#: config/dsp16xx/dsp16xx.h:248
msgid "Generate code for memory map2"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:235
+#: config/dsp16xx/dsp16xx.h:250
msgid "Generate code for memory map3"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:237
+#: config/dsp16xx/dsp16xx.h:252
msgid "Generate code for memory map4"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:239
+#: config/dsp16xx/dsp16xx.h:254
msgid "Ouput extra code for initialized data"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:241
+#: config/dsp16xx/dsp16xx.h:256
msgid "Don't let reg. allocator use ybase registers"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:243
+#: config/dsp16xx/dsp16xx.h:258
msgid "Output extra debug info in Luxworks environment"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:245
+#: config/dsp16xx/dsp16xx.h:260
msgid "Save temp. files in Luxworks environment"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:257
+#: config/dsp16xx/dsp16xx.h:272
msgid "Specify alternate name for text section"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:259
+#: config/dsp16xx/dsp16xx.h:274
msgid "Specify alternate name for data section"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:261
+#: config/dsp16xx/dsp16xx.h:276
msgid "Specify alternate name for bss section"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:263
+#: config/dsp16xx/dsp16xx.h:278
msgid "Specify alternate name for constant section"
msgstr ""
-#: config/dsp16xx/dsp16xx.h:265
+#: config/dsp16xx/dsp16xx.h:280
msgid "Specify alternate name for dsp16xx chip"
msgstr ""
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/dsp16xx/dsp16xx.h:1203 config/dsp16xx/dsp16xx.h:1208
-#: config/dsp16xx/dsp16xx.h:1213 config/dsp16xx/dsp16xx.h:1793
-#: config/dsp16xx/dsp16xx.h:1798
+#: config/dsp16xx/dsp16xx.h:1218 config/dsp16xx/dsp16xx.h:1772
+#: config/dsp16xx/dsp16xx.h:1777
msgid "profiling not implemented yet"
msgstr ""
#. Emit RTL insns to initialize the variable parts of a trampoline.
#. FNADDR is an RTX for the address of the function's pure code.
#. CXT is an RTX for the static chain value for the function.
-#: config/dsp16xx/dsp16xx.h:1224 config/dsp16xx/dsp16xx.h:1236
+#: config/dsp16xx/dsp16xx.h:1228 config/dsp16xx/dsp16xx.h:1240
msgid "trampolines not yet implemented"
msgstr ""
-#. Macro to define tables used to set the flags.
-#. This is a list in braces of pairs in braces,
-#. each pair being { "NAME", VALUE }
-#. where VALUE is the bits to set or minus the bits to clear.
-#. An empty string NAME is used to identify the default VALUE.
-#: config/elxsi/elxsi.h:51
-msgid "Generate code the unix assembler can handle"
-msgstr ""
-
-#: config/elxsi/elxsi.h:52
-msgid "Generate code an embedded assembler can handle"
-msgstr ""
-
-#: config/fr30/fr30.c:456
+#: config/fr30/fr30.c:453
msgid "fr30_print_operand_address: unhandled address"
msgstr ""
-#: config/fr30/fr30.c:483
+#: config/fr30/fr30.c:480
#, c-format
msgid "fr30_print_operand: unrecognized %%p code"
msgstr ""
-#: config/fr30/fr30.c:503
+#: config/fr30/fr30.c:500
#, c-format
msgid "fr30_print_operand: unrecognized %%b code"
msgstr ""
-#: config/fr30/fr30.c:524
+#: config/fr30/fr30.c:521
#, c-format
msgid "fr30_print_operand: unrecognized %%B code"
msgstr ""
-#: config/fr30/fr30.c:532
+#: config/fr30/fr30.c:529
#, c-format
msgid "fr30_print_operand: invalid operand to %%A code"
msgstr ""
-#: config/fr30/fr30.c:549
+#: config/fr30/fr30.c:546
#, c-format
msgid "fr30_print_operand: invalid %%x code"
msgstr ""
-#: config/fr30/fr30.c:556
+#: config/fr30/fr30.c:553
#, c-format
msgid "fr30_print_operand: invalid %%F code"
msgstr ""
-#: config/fr30/fr30.c:572
+#: config/fr30/fr30.c:570
msgid "fr30_print_operand: unknown code"
msgstr ""
-#: config/fr30/fr30.c:601 config/fr30/fr30.c:610 config/fr30/fr30.c:621
-#: config/fr30/fr30.c:634
+#: config/fr30/fr30.c:599 config/fr30/fr30.c:608 config/fr30/fr30.c:619
+#: config/fr30/fr30.c:632
msgid "fr30_print_operand: unhandled MEM"
msgstr ""
-#: config/fr30/fr30.h:57
+#: config/fr30/fr30.h:63
msgid "Assume small address space"
msgstr ""
-#: config/h8300/h8300.c:143
+#: config/frv/frv.c:410 config/frv/frv.c:428
+#, c-format
+msgid "Unknown cpu: -mcpu=%s"
+msgstr ""
+
+#: config/frv/frv.c:451
+msgid "-fpic and -gdwarf are incompatible (-fpic and -g/-gdwarf-2 are fine)"
+msgstr ""
+
+#: config/frv/frv.c:2520
+msgid "Bad insn to frv_print_operand_address:"
+msgstr ""
+
+#: config/frv/frv.c:2533
+msgid "Bad register to frv_print_operand_memory_reference_reg:"
+msgstr ""
+
+#: config/frv/frv.c:2574 config/frv/frv.c:2584 config/frv/frv.c:2593
+#: config/frv/frv.c:2621 config/frv/frv.c:2633 config/frv/frv.c:2637
+msgid "Bad insn to frv_print_operand_memory_reference:"
+msgstr ""
+
+#: config/frv/frv.c:2779
+msgid "Bad insn in frv_print_operand, bad const_double"
+msgstr ""
+
+#: config/frv/frv.c:2824
+msgid "Bad insn to frv_print_operand, 'C' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2847
+msgid "Bad insn to frv_print_operand, 'c' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2872
+msgid "Bad insn to frv_print_operand, 'e' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2880
+msgid "Bad insn to frv_print_operand, 'F' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2896
+msgid "Bad insn to frv_print_operand, 'f' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2949
+msgid "Bad insn to frv_print_operand, 'L' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2962
+msgid "Bad insn to frv_print_operand, 'M/N' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:2983
+msgid "Bad insn to frv_print_operand, 'O' modifier:"
+msgstr ""
+
+#: config/frv/frv.c:3001
+msgid "Bad insn to frv_print_operand, P modifier:"
+msgstr ""
+
+#: config/frv/frv.c:3021
+msgid "Bad insn in frv_print_operand, z case"
+msgstr ""
+
+#: config/frv/frv.c:3049
+msgid "Bad insn in frv_print_operand, 0 case"
+msgstr ""
+
+#: config/frv/frv.c:3054
+msgid "frv_print_operand: unknown code"
+msgstr ""
+
+#: config/frv/frv.c:5737
+msgid "Bad output_move_single operand"
+msgstr ""
+
+#: config/frv/frv.c:5866
+msgid "Bad output_move_double operand"
+msgstr ""
+
+#: config/frv/frv.c:6010
+msgid "Bad output_condmove_single operand"
+msgstr ""
+
+#: config/frv/frv.c:8315
+msgid "frv_registers_update"
+msgstr ""
+
+#: config/frv/frv.c:8475
+msgid "frv_registers_used_p"
+msgstr ""
+
+#: config/frv/frv.c:8604
+msgid "frv_registers_set_p"
+msgstr ""
+
+#: config/frv/frv.c:9171
+msgid "accumulator is not a constant integer"
+msgstr ""
+
+#: config/frv/frv.c:9176
+msgid "accumulator number is out of bounds"
+msgstr ""
+
+#: config/frv/frv.c:9187
+#, c-format
+msgid "inappropriate accumulator for `%s'"
+msgstr ""
+
+#: config/frv/frv.c:9253
+#, c-format
+msgid "`%s' expects a constant argument"
+msgstr ""
+
+#: config/frv/frv.c:9258
+#, c-format
+msgid "constant argument out of range for `%s'"
+msgstr ""
+
+#: config/frv/frv.c:9638
+msgid "media functions are not available unless -mmedia is used"
+msgstr ""
+
+#: config/frv/frv.c:9650
+msgid "this media function is only available on the fr500"
+msgstr ""
+
+#: config/frv/frv.c:9678
+msgid "this media function is only available on the fr400"
+msgstr ""
+
+#. This macro is a C statement to print on `stderr' a string describing the
+#. particular machine description choice. Every machine description should
+#. define `TARGET_VERSION'. For example:
+#.
+#. #ifdef MOTOROLA
+#. #define TARGET_VERSION fprintf (stderr, " (68k, Motorola syntax)");
+#. #else
+#. #define TARGET_VERSION fprintf (stderr, " (68k, MIT syntax)");
+#. #endif
+#: config/frv/frv.h:512
+msgid " (frv)"
+msgstr ""
+
+#: config/h8300/h8300.c:314
msgid "-ms2600 is used without -ms"
msgstr ""
+#: config/h8300/h8300.c:320
+msgid "-mn is used without -mh or -ms"
+msgstr ""
+
#. Macro to define tables used to set the flags.
#. This is a list in braces of pairs in braces,
#. each pair being { "NAME", VALUE }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/h8300/h8300.h:117
-msgid "Generate H8/S code"
+#: config/h8300/h8300.h:150
+msgid "Generate H8S code"
msgstr ""
-#: config/h8300/h8300.h:118
-msgid "Do not generate H8/S code"
+#: config/h8300/h8300.h:151
+msgid "Do not generate H8S code"
msgstr ""
-#: config/h8300/h8300.h:119
-msgid "Generate H8/S2600 code"
+#: config/h8300/h8300.h:152
+msgid "Generate H8S/2600 code"
msgstr ""
-#: config/h8300/h8300.h:120
-msgid "Do not generate H8/S2600 code"
+#: config/h8300/h8300.h:153
+msgid "Do not generate H8S/2600 code"
msgstr ""
-#: config/h8300/h8300.h:121
+#: config/h8300/h8300.h:154
msgid "Make integers 32 bits wide"
msgstr ""
-#: config/h8300/h8300.h:124
+#: config/h8300/h8300.h:157
msgid "Use registers for argument passing"
msgstr ""
-#: config/h8300/h8300.h:126
+#: config/h8300/h8300.h:159
msgid "Do not use registers for argument passing"
msgstr ""
-#: config/h8300/h8300.h:128
+#: config/h8300/h8300.h:161
msgid "Consider access to byte sized memory slow"
msgstr ""
-#: config/h8300/h8300.h:129
+#: config/h8300/h8300.h:162
msgid "Enable linker relaxing"
msgstr ""
-#: config/h8300/h8300.h:131
+#: config/h8300/h8300.h:164
msgid "Generate H8/300H code"
msgstr ""
-#: config/h8300/h8300.h:132
+#: config/h8300/h8300.h:165
+msgid "Enable the normal mode"
+msgstr ""
+
+#: config/h8300/h8300.h:166
msgid "Do not generate H8/300H code"
msgstr ""
-#: config/h8300/h8300.h:133
+#: config/h8300/h8300.h:167
msgid "Use H8/300 alignment rules"
msgstr ""
-#: config/i370/i370-c.c:54
+#: config/i370/i370-c.c:53
msgid "junk at end of #pragma map"
msgstr ""
-#: config/i370/i370-c.c:60
+#: config/i370/i370-c.c:59
msgid "malformed #pragma map, ignored"
msgstr ""
-#: config/i370/i370.c:897
+#: config/i370/i370.c:915
msgid "real name is too long - alias ignored"
msgstr ""
-#: config/i370/i370.c:902
+#: config/i370/i370.c:920
msgid "alias name is too long - alias ignored"
msgstr ""
-#: config/i370/i370.c:1173
+#: config/i370/i370.c:1191
msgid "internal error--no jump follows compare:"
msgstr ""
@@ -9962,162 +10088,171 @@ msgstr ""
#. of pairs in braces, each pair being { "NAME", VALUE }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/i370/i370.h:63
+#: config/i370/i370.h:75
msgid "Generate char instructions"
msgstr ""
-#: config/i370/i370.h:64
+#: config/i370/i370.h:76
msgid "Do not generate char instructions"
msgstr ""
-#: config/i386/i386.c:926
+#: config/i386/i386.c:1043
#, c-format
msgid "code model %s not supported in PIC mode"
msgstr ""
-#: config/i386/i386.c:936 config/sparc/sparc.c:344
+#: config/i386/i386.c:1053 config/sparc/sparc.c:356
#, c-format
msgid "bad value (%s) for -mcmodel= switch"
msgstr ""
-#: config/i386/i386.c:951
+#: config/i386/i386.c:1068
#, c-format
msgid "bad value (%s) for -masm= switch"
msgstr ""
-#: config/i386/i386.c:954
+#: config/i386/i386.c:1071
#, c-format
msgid "code model `%s' not supported in the %s bit mode"
msgstr ""
-#: config/i386/i386.c:957
+#: config/i386/i386.c:1074
msgid "code model `large' not supported yet"
msgstr ""
-#: config/i386/i386.c:959
+#: config/i386/i386.c:1076
#, c-format
msgid "%i-bit mode not compiled in"
msgstr ""
-#: config/i386/i386.c:989 config/mips/mips.c:4969
+#: config/i386/i386.c:1106
#, c-format
msgid "bad value (%s) for -march= switch"
msgstr ""
-#: config/i386/i386.c:1000 config/mips/mips.c:4925
+#: config/i386/i386.c:1117
#, c-format
msgid "bad value (%s) for -mcpu= switch"
msgstr ""
-#: config/i386/i386.c:1019
+#: config/i386/i386.c:1134
#, c-format
msgid "-mregparm=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:1032
+#: config/i386/i386.c:1147
msgid "-malign-loops is obsolete, use -falign-loops"
msgstr ""
-#: config/i386/i386.c:1037 config/i386/i386.c:1050 config/i386/i386.c:1063
+#: config/i386/i386.c:1152 config/i386/i386.c:1165 config/i386/i386.c:1178
#, c-format
msgid "-malign-loops=%d is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:1045
+#: config/i386/i386.c:1160
msgid "-malign-jumps is obsolete, use -falign-jumps"
msgstr ""
-#: config/i386/i386.c:1058
+#: config/i386/i386.c:1173
msgid "-malign-functions is obsolete, use -falign-functions"
msgstr ""
-#: config/i386/i386.c:1096
+#: config/i386/i386.c:1211
#, c-format
msgid "-mpreferred-stack-boundary=%d is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:1108
+#: config/i386/i386.c:1223
#, c-format
msgid "-mbranch-cost=%d is not between 0 and 5"
msgstr ""
-#: config/i386/i386.c:1130
+#: config/i386/i386.c:1235
+#, c-format
+msgid "bad value (%s) for -mtls-dialect= switch"
+msgstr ""
+
+#: config/i386/i386.c:1256
msgid "-malign-double makes no sense in the 64bit mode"
msgstr ""
-#: config/i386/i386.c:1132
+#: config/i386/i386.c:1258
msgid "-mrtd calling convention not supported in the 64bit mode"
msgstr ""
-#: config/i386/i386.c:1148 config/i386/i386.c:1159
+#: config/i386/i386.c:1274 config/i386/i386.c:1285
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr ""
-#: config/i386/i386.c:1164
+#: config/i386/i386.c:1290
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr ""
-#: config/i386/i386.c:1171
+#: config/i386/i386.c:1297
#, c-format
msgid "bad value (%s) for -mfpmath= switch"
msgstr ""
-#: config/i386/i386.c:1301
+#: config/i386/i386.c:1429
#, c-format
msgid "`%s' attribute requires an integer constant argument"
msgstr ""
-#: config/i386/i386.c:1307
+#: config/i386/i386.c:1435
#, c-format
msgid "argument to `%s' attribute larger than %d"
msgstr ""
-#: config/i386/i386.c:5385
+#: config/i386/i386.c:6176
msgid "invalid UNSPEC as operand"
msgstr ""
-#: config/i386/i386.c:5622
+#: config/i386/i386.c:6438
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:5637
+#: config/i386/i386.c:6453
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:5910
+#: config/i386/i386.c:6768
msgid ""
"operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr ""
-#: config/i386/i386.c:5956
+#: config/i386/i386.c:6814
#, c-format
msgid "invalid operand code `%c'"
msgstr ""
-#: config/i386/i386.c:6003
+#: config/i386/i386.c:6861
msgid "invalid constraints for operand"
msgstr ""
-#: config/i386/i386.c:9978
+#: config/i386/i386.c:11027
msgid "unknown insn mode"
msgstr ""
#. @@@ better error message
-#: config/i386/i386.c:11841 config/i386/i386.c:11874
+#: config/i386/i386.c:13083 config/i386/i386.c:13119
msgid "selector must be an immediate"
msgstr ""
#. @@@ better error message
-#: config/i386/i386.c:12032 config/i386/i386.c:12060
+#: config/i386/i386.c:13280 config/i386/i386.c:13314
msgid "mask must be an immediate"
msgstr ""
-#: config/i386/winnt.c:94
+#: config/i386/i386.c:13346
+msgid "shift must be an immediate"
+msgstr ""
+
+#: config/i386/winnt.c:105
#, c-format
msgid "`%s' attribute only applies to variables"
msgstr ""
-#: config/i386/winnt.c:262
+#: config/i386/winnt.c:275
#, c-format
msgid "`%s' declared as both exported to and imported from a DLL"
msgstr ""
@@ -10158,140 +10293,113 @@ msgstr ""
msgid "Use Mingw-specific thread support"
msgstr ""
-#: config/i386/cygwin.h:236
+#: config/i386/cygwin.h:244
#, c-format
msgid "-f%s ignored for target (all code is position independent)"
msgstr ""
-#: config/i386/dgux.h:60
-msgid "Retain standard MXDB information"
-msgstr ""
-
-#: config/i386/dgux.h:62
-msgid "Retain legend information"
-msgstr ""
-
-#: config/i386/dgux.h:65
-msgid "Generate external legend information"
-msgstr ""
-
-#: config/i386/dgux.h:67
-msgid "Emit identifying info in .s file"
-msgstr ""
-
-#: config/i386/dgux.h:69
-msgid "Warn when a function arg is a structure"
-msgstr ""
-
-#: config/i386/dgux.h:249
-msgid "argument is a structure"
-msgstr ""
-
-#: config/i386/djgpp.h:202
+#: config/i386/djgpp.h:204
msgid "-mbnu210 is ignored (option is obsolete)"
msgstr ""
-#: config/i386/i386.h:45 config/mips/mips.h:184
-msgid "half-pic init called on systems that don't support it"
-msgstr ""
-
#. Deprecated.
#. Deprecated.
#. Deprecated.
#. Deprecated.
#. Deprecated.
#. Deprecated.
-#: config/i386/i386.h:303
+#: config/i386/i386.h:306
msgid "Alternate calling convention"
msgstr ""
-#: config/i386/i386.h:305 config/m68k/m68k.h:180 config/ns32k/ns32k.h:106
+#: config/i386/i386.h:308 config/m68k/m68k.h:180 config/ns32k/ns32k.h:144
msgid "Use normal calling convention"
msgstr ""
-#: config/i386/i386.h:307
+#: config/i386/i386.h:310
msgid "Align some doubles on dword boundary"
msgstr ""
-#: config/i386/i386.h:309
+#: config/i386/i386.h:312
msgid "Align doubles on word boundary"
msgstr ""
-#: config/i386/i386.h:311
+#: config/i386/i386.h:314
msgid "Uninitialized locals in .bss"
msgstr ""
-#: config/i386/i386.h:313
+#: config/i386/i386.h:316
msgid "Uninitialized locals in .data"
msgstr ""
-#: config/i386/i386.h:315 config/m68k/linux-aout.h:45 config/m68k/linux.h:50
+#: config/i386/i386.h:318 config/m68k/linux-aout.h:45 config/m68k/linux.h:50
+#: config/ns32k/ns32k.h:167
msgid "Use IEEE math for fp comparisons"
msgstr ""
-#: config/i386/i386.h:317
+#: config/i386/i386.h:320 config/ns32k/ns32k.h:169
msgid "Do not use IEEE math for fp comparisons"
msgstr ""
-#: config/i386/i386.h:319
+#: config/i386/i386.h:322
msgid "Return values of functions in FPU registers"
msgstr ""
-#: config/i386/i386.h:321
+#: config/i386/i386.h:324
msgid "Do not return values of functions in FPU registers"
msgstr ""
-#: config/i386/i386.h:323
+#: config/i386/i386.h:326
msgid "Do not generate sin, cos, sqrt for FPU"
msgstr ""
-#: config/i386/i386.h:325
+#: config/i386/i386.h:328
msgid "Generate sin, cos, sqrt for FPU"
msgstr ""
-#: config/i386/i386.h:327
+#: config/i386/i386.h:330
msgid "Omit the frame pointer in leaf functions"
msgstr ""
-#: config/i386/i386.h:330
+#: config/i386/i386.h:333
msgid "Enable stack probing"
msgstr ""
#. undocumented
#. undocumented
-#: config/i386/i386.h:335
+#: config/i386/i386.h:338
msgid "Align destination of the string operations"
msgstr ""
-#: config/i386/i386.h:337
+#: config/i386/i386.h:340
msgid "Do not align destination of the string operations"
msgstr ""
-#: config/i386/i386.h:339
+#: config/i386/i386.h:342
msgid "Inline all known string operations"
msgstr ""
-#: config/i386/i386.h:341
+#: config/i386/i386.h:344
msgid "Do not inline all known string operations"
msgstr ""
-#: config/i386/i386.h:343 config/i386/i386.h:348
+#: config/i386/i386.h:346 config/i386/i386.h:350
msgid "Use push instructions to save outgoing arguments"
msgstr ""
-#: config/i386/i386.h:345 config/i386/i386.h:350
+#: config/i386/i386.h:348 config/i386/i386.h:352
msgid "Do not use push instructions to save outgoing arguments"
msgstr ""
-#: config/i386/i386.h:352
+#: config/i386/i386.h:354
msgid "Support MMX built-in functions"
msgstr ""
-#: config/i386/i386.h:354
+#: config/i386/i386.h:356
msgid "Do not support MMX built-in functions"
msgstr ""
-#: config/i386/i386.h:357
+#: config/i386/i386.h:358
msgid "Support 3DNow! built-in functions"
msgstr ""
@@ -10303,39 +10411,39 @@ msgstr ""
msgid "Support MMX and SSE built-in functions and code generation"
msgstr ""
-#: config/i386/i386.h:365
+#: config/i386/i386.h:364
msgid "Do not support MMX and SSE built-in functions and code generation"
msgstr ""
-#: config/i386/i386.h:367
+#: config/i386/i386.h:366
msgid "Support MMX, SSE and SSE2 built-in functions and code generation"
msgstr ""
-#: config/i386/i386.h:370
+#: config/i386/i386.h:368
msgid "Do not support MMX, SSE and SSE2 built-in functions and code generation"
msgstr ""
-#: config/i386/i386.h:372
+#: config/i386/i386.h:370
msgid "sizeof(long double) is 16"
msgstr ""
-#: config/i386/i386.h:374
+#: config/i386/i386.h:372
msgid "sizeof(long double) is 12"
msgstr ""
-#: config/i386/i386.h:376
+#: config/i386/i386.h:374
msgid "Generate 64bit x86-64 code"
msgstr ""
-#: config/i386/i386.h:378
+#: config/i386/i386.h:376
msgid "Generate 32bit i386 code"
msgstr ""
-#: config/i386/i386.h:380
+#: config/i386/i386.h:378
msgid "Use red-zone in the x86-64 code"
msgstr ""
-#: config/i386/i386.h:382
+#: config/i386/i386.h:380
msgid "Do not use red-zone in the x86-64 code"
msgstr ""
@@ -10348,19 +10456,19 @@ msgstr ""
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/i386/i386.h:428 config/rs6000/rs6000.h:428 config/sparc/sparc.h:641
+#: config/i386/i386.h:409 config/rs6000/rs6000.h:393 config/sparc/sparc.h:635
msgid "Schedule code for given CPU"
msgstr ""
-#: config/i386/i386.h:430
+#: config/i386/i386.h:411
msgid "Generate floating point mathematics using given instruction set"
msgstr ""
-#: config/i386/i386.h:432
+#: config/i386/i386.h:413
msgid "Generate code for given CPU"
msgstr ""
-#: config/i386/i386.h:434
+#: config/i386/i386.h:415
msgid "Number of registers used to pass integer arguments"
msgstr ""
@@ -10374,71 +10482,41 @@ msgstr ""
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/i386/i386.h:436 config/m68k/m68k.h:263
+#: config/i386/i386.h:417 config/m68k/m68k.h:263
msgid "Loop code aligned to this power of 2"
msgstr ""
-#: config/i386/i386.h:438 config/m68k/m68k.h:265
+#: config/i386/i386.h:419 config/m68k/m68k.h:265
msgid "Jump targets are aligned to this power of 2"
msgstr ""
-#: config/i386/i386.h:440 config/m68k/m68k.h:267
+#: config/i386/i386.h:421 config/m68k/m68k.h:267
msgid "Function starts are aligned to this power of 2"
msgstr ""
-#: config/i386/i386.h:443
+#: config/i386/i386.h:424
msgid "Attempt to keep stack aligned to this power of 2"
msgstr ""
-#: config/i386/i386.h:445
+#: config/i386/i386.h:426
msgid "Branches are this expensive (1-5, arbitrary units)"
msgstr ""
-#: config/i386/i386.h:447
+#: config/i386/i386.h:428
msgid "Use given x86-64 code model"
msgstr ""
#. Undocumented.
#. Undocumented.
-#: config/i386/i386.h:453
+#: config/i386/i386.h:434
msgid "Use given assembler dialect"
msgstr ""
-#: config/i386/osf1elf.h:112
-msgid "Profiling uses mcount"
+#: config/i386/i386.h:436
+msgid "Use given thread-local storage dialect"
msgstr ""
-#: config/i386/osfrose.h:57
-msgid "Emit half-PIC code"
-msgstr ""
-
-#. intentionally undoc
-#. intentionally undoc
-#: config/i386/osfrose.h:64
-msgid "Emit ELF object code"
-msgstr ""
-
-#: config/i386/osfrose.h:66
-msgid "Emit ROSE object code"
-msgstr ""
-
-#: config/i386/osfrose.h:68
-msgid "Symbols have a leading underscore"
-msgstr ""
-
-#: config/i386/osfrose.h:71
-msgid "Align to >word boundaries"
-msgstr ""
-
-#: config/i386/osfrose.h:74
-msgid "Use mcount for profiling"
-msgstr ""
-
-#: config/i386/osfrose.h:76
-msgid "Use mcount_ptr for profiling"
-msgstr ""
-
-#: config/i386/sco5.h:763
+#: config/i386/sco5.h:700
msgid "Generate ELF output"
msgstr ""
@@ -10470,33 +10548,31 @@ msgstr ""
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr ""
-#. Macro to define tables used to set the flags.
-#. This is a list in braces of pairs in braces,
-#. each pair being { "NAME", VALUE }
-#. where VALUE is the bits to set or minus the bits to clear.
-#. An empty string NAME is used to identify the default VALUE.
-#: config/i860/i860.h:56 config/i860/paragon.h:28
-msgid "Generate code which uses the FPU"
+#: config/i960/i960-c.c:66
+msgid "sorry, not implemented: #pragma align NAME=SIZE"
msgstr ""
-#: config/i860/i860.h:57 config/i860/i860.h:58 config/i860/paragon.h:29
-#: config/i860/paragon.h:30 config/i860/paragon.h:31
-msgid "Do not generate code which uses the FPU"
+#: config/i960/i960-c.c:71
+msgid "malformed #pragma align - ignored"
msgstr ""
-#: config/i960/i960-c.c:67
-msgid "sorry, not implemented: #pragma align NAME=SIZE"
+#: config/i960/i960-c.c:109
+msgid "sorry, not implemented: #pragma noalign NAME"
msgstr ""
-#: config/i960/i960-c.c:72
-msgid "malformed #pragma align - ignored"
+#: config/i960/i960.c:121 config/i960/i960.c:131
+msgid "conflicting architectures defined - using C series"
msgstr ""
-#: config/i960/i960-c.c:110
-msgid "sorry, not implemented: #pragma noalign NAME"
+#: config/i960/i960.c:126
+msgid "conflicting architectures defined - using K series"
msgstr ""
-#: config/i960/i960.c:1405 config/m68k/m68k.c:665 config/rs6000/rs6000.c:8446
+#: config/i960/i960.c:141
+msgid "iC2.0 and iC3.0 are incompatible - using iC3.0"
+msgstr ""
+
+#: config/i960/i960.c:1448 config/m68k/m68k.c:559 config/rs6000/rs6000.c:9931
msgid "stack limit expression is not supported"
msgstr ""
@@ -10554,6 +10630,10 @@ msgstr ""
msgid "Generate CF code"
msgstr ""
+#: config/i960/i960.h:283 config/mips/mips.h:568 config/pa/pa.h:252
+msgid "Use software floating point"
+msgstr ""
+
#: config/i960/i960.h:285
msgid "Use alternate leaf function entries"
msgstr ""
@@ -10615,8 +10695,8 @@ msgstr ""
msgid "Do not layout types like Intel's v1.3 gcc"
msgstr ""
-#: config/i960/i960.h:323 config/sparc/freebsd.h:80 config/sparc/linux.h:88
-#: config/sparc/linux64.h:145 config/sparc/netbsd-elf.h:240
+#: config/i960/i960.h:323 config/sparc/freebsd.h:79 config/sparc/linux.h:86
+#: config/sparc/linux64.h:88 config/sparc/netbsd-elf.h:238
msgid "Use 64 bit long doubles"
msgstr ""
@@ -10628,187 +10708,196 @@ msgstr ""
msgid "Do not enable linker relaxation"
msgstr ""
-#. Override conflicting target switch options.
-#. Doesn't actually detect if more than one -mARCH option is given, but
-#. does handle the case of two blatantly conflicting -mARCH options.
-#: config/i960/i960.h:342 config/i960/i960.h:352
-msgid "conflicting architectures defined - using C series"
+#: config/ia64/ia64-c.c:50
+msgid "malformed #pragma builtin"
msgstr ""
-#: config/i960/i960.h:347
-msgid "conflicting architectures defined - using K series"
+#: config/ia64/ia64.c:3879
+msgid "ia64_print_operand: unknown code"
msgstr ""
-#: config/i960/i960.h:362
-msgid "iC2.0 and iC3.0 are incompatible - using iC3.0"
+#: config/ia64/ia64.c:4157
+msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#. ??? See the LONG_DOUBLE_TYPE_SIZE definition below.
-#: config/i960/i960.h:373
-msgid "the -mlong-double-64 option does not work yet"
+#: config/ia64/ia64.c:4184
+#, c-format
+msgid "%s-%s is an empty range"
msgstr ""
-#: config/ia64/ia64.c:3589
-msgid "ia64_print_operand: unknown code"
+#: config/ia64/ia64.c:4215
+msgid "cannot optimize floating point division for both latency and throughput"
msgstr ""
-#: config/ia64/ia64.c:3863
-msgid "value of -mfixed-range must have form REG1-REG2"
+#: config/ia64/ia64.c:4221
+msgid "cannot optimize integer division for both latency and throughput"
msgstr ""
-#: config/ia64/ia64.c:3890
+#: config/ia64/ia64.c:4233
#, c-format
-msgid "%s-%s is an empty range"
-msgstr ""
-
-#: config/ia64/ia64.c:3955
-msgid "cannot optimize division for both latency and throughput"
+msgid "bad value (%s) for -mtls-size= switch"
msgstr ""
#. This macro defines names of command options to set and clear bits in
#. `target_flags'. Its definition is an initializer with a subgrouping for
#. each command option.
-#: config/ia64/ia64.h:119
+#: config/ia64/ia64.h:150
msgid "Generate big endian code"
msgstr ""
-#: config/ia64/ia64.h:121 config/mcore/mcore.h:159
+#: config/ia64/ia64.h:152 config/mcore/mcore.h:159
msgid "Generate little endian code"
msgstr ""
-#: config/ia64/ia64.h:123
+#: config/ia64/ia64.h:154
msgid "Generate code for GNU as"
msgstr ""
-#: config/ia64/ia64.h:125
+#: config/ia64/ia64.h:156
msgid "Generate code for Intel as"
msgstr ""
-#: config/ia64/ia64.h:127
+#: config/ia64/ia64.h:158
msgid "Generate code for GNU ld"
msgstr ""
-#: config/ia64/ia64.h:129
+#: config/ia64/ia64.h:160
msgid "Generate code for Intel ld"
msgstr ""
-#: config/ia64/ia64.h:131
+#: config/ia64/ia64.h:162
msgid "Generate code without GP reg"
msgstr ""
-#: config/ia64/ia64.h:133
+#: config/ia64/ia64.h:164
msgid "Emit stop bits before and after volatile extended asms"
msgstr ""
-#: config/ia64/ia64.h:135
+#: config/ia64/ia64.h:166
msgid "Don't emit stop bits before and after volatile extended asms"
msgstr ""
-#: config/ia64/ia64.h:137
+#: config/ia64/ia64.h:168
msgid "Emit code for Itanium (TM) processor B step"
msgstr ""
-#: config/ia64/ia64.h:139
+#: config/ia64/ia64.h:170
msgid "Use in/loc/out register names"
msgstr ""
-#: config/ia64/ia64.h:141
+#: config/ia64/ia64.h:172
msgid "Disable use of sdata/scommon/sbss"
msgstr ""
-#: config/ia64/ia64.h:143
+#: config/ia64/ia64.h:174
msgid "Enable use of sdata/scommon/sbss"
msgstr ""
-#: config/ia64/ia64.h:145
+#: config/ia64/ia64.h:176
msgid "gp is constant (but save/restore gp on indirect calls)"
msgstr ""
-#: config/ia64/ia64.h:147
+#: config/ia64/ia64.h:178
msgid "Generate self-relocatable code"
msgstr ""
-#: config/ia64/ia64.h:149
-msgid "Generate inline division, optimize for latency"
+#: config/ia64/ia64.h:180
+msgid "Generate inline floating point division, optimize for latency"
+msgstr ""
+
+#: config/ia64/ia64.h:182
+msgid "Generate inline floating point division, optimize for throughput"
+msgstr ""
+
+#: config/ia64/ia64.h:184
+msgid "Generate inline integer division, optimize for latency"
msgstr ""
-#: config/ia64/ia64.h:151
-msgid "Generate inline division, optimize for throughput"
+#: config/ia64/ia64.h:186
+msgid "Generate inline integer division, optimize for throughput"
msgstr ""
-#: config/ia64/ia64.h:153
+#: config/ia64/ia64.h:188
msgid "Enable Dwarf 2 line debug info via GNU as"
msgstr ""
-#: config/ia64/ia64.h:155
+#: config/ia64/ia64.h:190
msgid "Disable Dwarf 2 line debug info via GNU as"
msgstr ""
-#: config/ia64/ia64.h:183
+#: config/ia64/ia64.h:219
msgid "Specify range of registers to make fixed"
msgstr ""
-#: config/m32r/m32r.c:130
+#: config/ip2k/ip2k.c:1082
+msgid "bad operand"
+msgstr ""
+
+#: config/ip2k/ip2k.c:3184
+msgid "Only initialized variables can be placed into program memory area."
+msgstr ""
+
+#: config/m32r/m32r.c:139
#, c-format
msgid "bad value (%s) for -mmodel switch"
msgstr ""
-#: config/m32r/m32r.c:139
+#: config/m32r/m32r.c:148
#, c-format
msgid "bad value (%s) for -msdata switch"
msgstr ""
-#: config/m32r/m32r.c:310
+#: config/m32r/m32r.c:319
#, c-format
msgid "invalid argument of `%s' attribute"
msgstr ""
-#: config/m32r/m32r.c:412
+#: config/m32r/m32r.c:422
msgid "const objects cannot go in .sdata/.sbss"
msgstr ""
-#: config/m32r/m32r.c:2252
+#: config/m32r/m32r.c:2256
#, c-format
msgid "invalid operand to %%s code"
msgstr ""
-#: config/m32r/m32r.c:2259
+#: config/m32r/m32r.c:2263
#, c-format
msgid "invalid operand to %%p code"
msgstr ""
-#: config/m32r/m32r.c:2315
+#: config/m32r/m32r.c:2318
msgid "bad insn for 'A'"
msgstr ""
-#: config/m32r/m32r.c:2367
+#: config/m32r/m32r.c:2370
#, c-format
msgid "invalid operand to %%T/%%B code"
msgstr ""
-#: config/m32r/m32r.c:2390
+#: config/m32r/m32r.c:2393
#, c-format
msgid "invalid operand to %%N code"
msgstr ""
-#: config/m32r/m32r.c:2435
+#: config/m32r/m32r.c:2438
msgid "pre-increment address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2442
+#: config/m32r/m32r.c:2445
msgid "pre-decrement address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2449
+#: config/m32r/m32r.c:2452
msgid "post-increment address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2527 config/m32r/m32r.c:2543
-#: config/rs6000/rs6000.c:11098
+#: config/m32r/m32r.c:2530 config/m32r/m32r.c:2546
+#: config/rs6000/rs6000.c:12737
msgid "bad address"
msgstr ""
-#: config/m32r/m32r.c:2548
+#: config/m32r/m32r.c:2551
msgid "lo_sum not of register"
msgstr ""
@@ -10837,46 +10926,46 @@ msgstr ""
msgid "Small data area: none, sdata, use"
msgstr ""
-#: config/m68hc11/m68hc11.c:236
+#: config/m68hc11/m68hc11.c:242
#, c-format
msgid "-f%s ignored for 68HC11/68HC12 (not supported)"
msgstr ""
#. !!!! SCz wrong here.
-#: config/m68hc11/m68hc11.c:3170 config/m68hc11/m68hc11.c:3544
+#: config/m68hc11/m68hc11.c:3252 config/m68hc11/m68hc11.c:3626
msgid "move insn not handled"
msgstr ""
-#: config/m68hc11/m68hc11.c:3390 config/m68hc11/m68hc11.c:3474
-#: config/m68hc11/m68hc11.c:3747
+#: config/m68hc11/m68hc11.c:3472 config/m68hc11/m68hc11.c:3556
+#: config/m68hc11/m68hc11.c:3829
msgid "invalid register in the move instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3424
+#: config/m68hc11/m68hc11.c:3506
msgid "invalid operand in the instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3721
+#: config/m68hc11/m68hc11.c:3803
msgid "invalid register in the instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3754
+#: config/m68hc11/m68hc11.c:3836
msgid "operand 1 must be a hard register"
msgstr ""
-#: config/m68hc11/m68hc11.c:3771
+#: config/m68hc11/m68hc11.c:3853
msgid "invalid rotate insn"
msgstr ""
-#: config/m68hc11/m68hc11.c:4196
+#: config/m68hc11/m68hc11.c:4278
msgid "registers IX, IY and Z used in the same INSN"
msgstr ""
-#: config/m68hc11/m68hc11.c:4521 config/m68hc11/m68hc11.c:4823
+#: config/m68hc11/m68hc11.c:4603 config/m68hc11/m68hc11.c:4906
msgid "cannot do z-register replacement"
msgstr ""
-#: config/m68hc11/m68hc11.c:4886
+#: config/m68hc11/m68hc11.c:4969
msgid "invalid Z register replacement for insn"
msgstr ""
@@ -10884,31 +10973,47 @@ msgstr ""
#. pairs in braces, each pair being { "NAME", VALUE } where VALUE is the bits
#. to set or minus the bits to clear. An empty string NAME is used to
#. identify the default VALUE.
-#: config/m68hc11/m68hc11.h:155
+#: config/m68hc11/m68hc11.h:160
msgid "Compile with 16-bit integer mode"
msgstr ""
-#: config/m68hc11/m68hc11.h:157
+#: config/m68hc11/m68hc11.h:162
msgid "Compile with 32-bit integer mode"
msgstr ""
-#: config/m68hc11/m68hc11.h:159
+#: config/m68hc11/m68hc11.h:164
msgid "Auto pre/post decrement increment allowed"
msgstr ""
-#: config/m68hc11/m68hc11.h:161
+#: config/m68hc11/m68hc11.h:166
msgid "Auto pre/post decrement increment not allowed"
msgstr ""
-#: config/m68hc11/m68hc11.h:163
+#: config/m68hc11/m68hc11.h:168
+msgid "Min/max instructions allowed"
+msgstr ""
+
+#: config/m68hc11/m68hc11.h:170
+msgid "Min/max instructions not allowed"
+msgstr ""
+
+#: config/m68hc11/m68hc11.h:172
+msgid "Use call and rtc for function calls and returns"
+msgstr ""
+
+#: config/m68hc11/m68hc11.h:174
+msgid "Use jsr and rts for function calls and returns"
+msgstr ""
+
+#: config/m68hc11/m68hc11.h:176
msgid "Do not use direct addressing mode for soft registers"
msgstr ""
-#: config/m68hc11/m68hc11.h:165 config/m68hc11/m68hc11.h:169
+#: config/m68hc11/m68hc11.h:178 config/m68hc11/m68hc11.h:182
msgid "Compile for a 68HC11"
msgstr ""
-#: config/m68hc11/m68hc11.h:167 config/m68hc11/m68hc11.h:171
+#: config/m68hc11/m68hc11.h:180 config/m68hc11/m68hc11.h:184
msgid "Compile for a 68HC12"
msgstr ""
@@ -10921,29 +11026,33 @@ msgstr ""
#. variable, type `char *', is set to the variable part of the given
#. option if the fixed part matches. The actual option name is made
#. by appending `-m' to the specified name.
-#: config/m68hc11/m68hc11.h:185
+#: config/m68hc11/m68hc11.h:198
msgid "Specify the register allocation order"
msgstr ""
-#: config/m68hc11/m68hc11.h:187
+#: config/m68hc11/m68hc11.h:200
msgid "Indicate the number of soft registers available"
msgstr ""
-#: config/m68k/m68k.c:150
+#: config/m68k/m68k.c:158
#, c-format
msgid "-malign-loops=%d is not between 1 and %d"
msgstr ""
-#: config/m68k/m68k.c:161
+#: config/m68k/m68k.c:169
#, c-format
msgid "-malign-jumps=%d is not between 1 and %d"
msgstr ""
-#: config/m68k/m68k.c:172
+#: config/m68k/m68k.c:180
#, c-format
msgid "-malign-functions=%d is not between 1 and %d"
msgstr ""
+#: config/m68k/m68k.c:189
+msgid "-fPIC is not currently supported on the 68000 or 68010\n"
+msgstr ""
+
#. Macro to define tables used to set the flags.
#. This is a list in braces of pairs in braces,
#. each pair being { "NAME", VALUE }
@@ -11065,91 +11174,84 @@ msgstr ""
msgid "Use unaligned memory references"
msgstr ""
-#. Sometimes certain combinations of command options do not make
-#. sense on a particular target machine. You can define a macro
-#. `OVERRIDE_OPTIONS' to take account of this. This macro, if
-#. defined, is executed once just after all the command options have
-#. been parsed.
-#.
-#. Don't use this macro to turn on various extra optimizations for
-#. `-O'. That is what `OPTIMIZATION_OPTIONS' is for.
-#: config/m68k/m68k.h:284 config/m68k/m68kelf.h:267 config/m68k/m68kv4.h:299
-msgid "-fPIC is not currently supported on the 68000 or 68010\n"
-msgstr ""
-
-#: config/m88k/m88k.c:899
+#: config/m88k/m88k.c:903
#, c-format
msgid "internal gcc monitor: short-branch(%x)"
msgstr ""
-#: config/m88k/m88k.c:2299
+#: config/m88k/m88k.c:2302
msgid "internal gcc error: Can't express symbolic location"
msgstr ""
-#: config/m88k/m88k.c:2581
+#: config/m88k/m88k.c:2517
#, c-format
msgid "argument #%d is a structure"
msgstr ""
-#: config/m88k/m88k.c:2881
+#: config/m88k/m88k.c:2816
#, c-format
msgid "%%R not followed by %%B/C/D/E"
msgstr ""
-#: config/m88k/m88k.c:2949
+#: config/m88k/m88k.c:2884
#, c-format
msgid "invalid %%x/X value"
msgstr ""
-#: config/m88k/m88k.c:2972 config/rs6000/rs6000.c:6514
+#: config/m88k/m88k.c:2901
+#, c-format
+msgid "invalid %%Q value"
+msgstr ""
+
+#: config/m88k/m88k.c:2907 config/rs6000/rs6000.c:7681
#, c-format
msgid "invalid %%q value"
msgstr ""
-#: config/m88k/m88k.c:2978
+#: config/m88k/m88k.c:2913
#, c-format
msgid "invalid %%o value"
msgstr ""
-#: config/m88k/m88k.c:2985 config/rs6000/rs6000.c:6477
+#: config/m88k/m88k.c:2920 config/rs6000/rs6000.c:7644
#, c-format
msgid "invalid %%p value"
msgstr ""
-#: config/m88k/m88k.c:2998 config/m88k/m88k.c:3003
+#: config/m88k/m88k.c:2933 config/m88k/m88k.c:2938
#, c-format
msgid "invalid %%s/S value"
msgstr ""
-#: config/m88k/m88k.c:3014
+#: config/m88k/m88k.c:2949
#, c-format
msgid "invalid %%P operand"
msgstr ""
-#: config/m88k/m88k.c:3045 config/romp/romp.c:682
+#: config/m88k/m88k.c:2980 config/romp/romp.c:690
#, c-format
msgid "invalid %%B value"
msgstr ""
-#: config/m88k/m88k.c:3075
+#: config/m88k/m88k.c:3010
#, c-format
msgid "invalid %%D value"
msgstr ""
-#: config/m88k/m88k.c:3088
+#: config/m88k/m88k.c:3023
#, c-format
msgid "`%%d' operand isn't a register"
msgstr ""
-#: config/m88k/m88k.c:3106
+#: config/m88k/m88k.c:3041
msgid "operand is r0"
msgstr ""
-#: config/m88k/m88k.c:3120
+#: config/m88k/m88k.c:3055
msgid "operand is const_double"
msgstr ""
-#: config/m88k/m88k.c:3139
+#: config/m88k/m88k.c:3074
msgid "invalid code"
msgstr ""
@@ -11173,7 +11275,7 @@ msgstr ""
msgid "-mshort-data-%s and PIC are incompatible"
msgstr ""
-#: config/mcore/mcore.c:3083
+#: config/mcore/mcore.c:3078
#, c-format
msgid "invalid option `-mstack-increment=%s'"
msgstr ""
@@ -11230,219 +11332,235 @@ msgstr ""
msgid "Maximum amount for a single stack increment operation"
msgstr ""
-#: config/mips/mips.c:4795
-msgid "The -march option is incompatible to -mipsN and therefore ignored."
+#: config/mips/mips.c:5112
+#, c-format
+msgid "bad value (%s) for -mabi= switch"
msgstr ""
-#: config/mips/mips.c:4821
+#: config/mips/mips.c:5142
#, c-format
-msgid "-mips%d not supported"
+msgid ""
+"-mips%d conflicts with the other architecture options, which specify a MIPS%"
+"d processor"
msgstr ""
-#: config/mips/mips.c:4828
+#: config/mips/mips.c:5149
#, c-format
msgid "bad value (%s) for -mips switch"
msgstr ""
-#: config/mips/mips.c:4849
+#: config/mips/mips.c:5164
#, c-format
-msgid "bad value (%s) for -mabi= switch"
+msgid "-march=%s is not compatible with the selected ABI"
msgstr ""
-#: config/mips/mips.c:4887
-#, c-format
-msgid "-mabi=%s does not support -mips%d"
+#: config/mips/mips.c:5176
+msgid "-mgp64 used with a 32-bit processor"
msgstr ""
-#: config/mips/mips.c:4904
-msgid "this target does not support the -mabi switch"
+#: config/mips/mips.c:5178
+msgid "-mgp32 used with a 64-bit ABI"
msgstr ""
-#: config/mips/mips.c:5014
-#, c-format
-msgid "bad value (%s) for -mtune= switch"
+#: config/mips/mips.c:5180
+msgid "-mgp64 used with a 32-bit ABI"
msgstr ""
-#: config/mips/mips.c:5024
+#: config/mips/mips.c:5198 config/mips/mips.c:5200 config/mips/mips.c:5202
#, c-format
-msgid "-mips%d does not support 64 bit fp registers"
+msgid "unsupported combination: %s"
msgstr ""
-#: config/mips/mips.c:5030
-#, c-format
-msgid "-mips%d does not support 64 bit gp registers"
+#: config/mips/mips.c:5272
+msgid ""
+"generation of Branch Likely instructions enabled, but not supported by "
+"architecture"
msgstr ""
-#: config/mips/mips.c:5051
+#: config/mips/mips.c:5283
msgid "-G is incompatible with PIC code which is the default"
msgstr ""
-#: config/mips/mips.c:5067
+#: config/mips/mips.c:5299
msgid "-membedded-pic and -mabicalls are incompatible"
msgstr ""
-#: config/mips/mips.c:5070
+#: config/mips/mips.c:5302
msgid "-G and -membedded-pic are incompatible"
msgstr ""
-#: config/mips/mips.c:5121
+#: config/mips/mips.c:5353
#, c-format
msgid "invalid option `entry%s'"
msgstr ""
-#: config/mips/mips.c:5124
+#: config/mips/mips.c:5356
msgid "-mentry is only meaningful with -mips-16"
msgstr ""
-#: config/mips/mips.c:5500
+#: config/mips/mips.c:5761
#, c-format
msgid "internal error: %%) found without a %%( in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5514
+#: config/mips/mips.c:5775
#, c-format
msgid "internal error: %%] found without a %%[ in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5527
+#: config/mips/mips.c:5788
#, c-format
msgid "internal error: %%> found without a %%< in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5540
+#: config/mips/mips.c:5801
#, c-format
msgid "internal error: %%} found without a %%{ in assembler pattern"
msgstr ""
-#: config/mips/mips.c:5554
+#: config/mips/mips.c:5815
#, c-format
msgid "PRINT_OPERAND: unknown punctuation '%c'"
msgstr ""
-#: config/mips/mips.c:5563 config/xtensa/xtensa.c:1913
+#: config/mips/mips.c:5824 config/xtensa/xtensa.c:1939
msgid "PRINT_OPERAND null pointer"
msgstr ""
-#: config/mips/mips.c:5696
+#: config/mips/mips.c:5955
#, c-format
msgid "invalid use of %%d, %%x, or %%X"
msgstr ""
-#: config/mips/mips.c:5739 config/xtensa/xtensa.c:2012
+#: config/mips/mips.c:5993 config/xtensa/xtensa.c:2033
msgid "PRINT_OPERAND_ADDRESS, null pointer"
msgstr ""
-#: config/mips/mips.c:5963
+#: config/mips/mips.c:6222
msgid ""
"MIPS ECOFF format does not allow changing filenames within functions with "
"#line"
msgstr ""
-#: config/mips/mips.c:6277
+#: config/mips/mips.c:6532
msgid "can't rewind temp file"
msgstr ""
-#: config/mips/mips.c:6281
+#: config/mips/mips.c:6536
msgid "can't write to output file"
msgstr ""
-#: config/mips/mips.c:6284
+#: config/mips/mips.c:6539
msgid "can't read from temp file"
msgstr ""
-#: config/mips/mips.c:6287
+#: config/mips/mips.c:6542
msgid "can't close temp file"
msgstr ""
-#: config/mips/mips.c:6705
+#: config/mips/mips.c:6983
#, c-format
msgid "gp_offset (%ld) or end_offset (%ld) is less than zero"
msgstr ""
-#: config/mips/mips.c:6865
+#: config/mips/mips.c:7092
#, c-format
msgid "fp_offset (%ld) or end_offset (%ld) is less than zero"
msgstr ""
-#: config/mips/mips.c:8906
+#: config/mips/mips.c:9312
#, c-format
msgid "can not handle inconsistent calls to `%s'"
msgstr ""
+#: config/mips/mips.c:10444
+msgid "the cpu name must be lower case"
+msgstr ""
+
+#: config/mips/mips.c:10466
+#, c-format
+msgid "bad value (%s) for %s"
+msgstr ""
+
+#. Target CPU builtins.
+#. We do this here because __mips is defined below and so we can't use builtin_define_std.
+#. Treat _R3000 and _R4000 like register-size defines, which is how they've historically been used.
+#. Macros dependent on the C dialect.
+#. Bizzare, but needed at least for Irix.
#. Macro to define tables used to set the flags.
#. This is a list in braces of pairs in braces,
#. each pair being { "NAME", VALUE }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/mips/mips.h:366 config/mn10300/mn10300.h:64
+#: config/mips/mips.h:528 config/mn10300/mn10300.h:64
msgid "No default crt0.o"
msgstr ""
-#: config/mips/mips.h:368
+#: config/mips/mips.h:530
msgid "Use 64-bit int type"
msgstr ""
-#: config/mips/mips.h:370
+#: config/mips/mips.h:532
msgid "Use 64-bit long type"
msgstr ""
-#: config/mips/mips.h:372
+#: config/mips/mips.h:534
msgid "Use 32-bit long type"
msgstr ""
-#: config/mips/mips.h:374
+#: config/mips/mips.h:536
msgid "Optimize lui/addiu address loads"
msgstr ""
-#: config/mips/mips.h:376
+#: config/mips/mips.h:538
msgid "Don't optimize lui/addiu address loads"
msgstr ""
-#: config/mips/mips.h:378
+#: config/mips/mips.h:540
msgid "Use MIPS as"
msgstr ""
-#: config/mips/mips.h:380
+#: config/mips/mips.h:542
msgid "Use GNU as"
msgstr ""
-#: config/mips/mips.h:382
+#: config/mips/mips.h:544
msgid "Use symbolic register names"
msgstr ""
-#: config/mips/mips.h:384
+#: config/mips/mips.h:546
msgid "Don't use symbolic register names"
msgstr ""
-#: config/mips/mips.h:386 config/mips/mips.h:388
+#: config/mips/mips.h:548 config/mips/mips.h:550
msgid "Use GP relative sdata/sbss sections"
msgstr ""
-#: config/mips/mips.h:390 config/mips/mips.h:392
+#: config/mips/mips.h:552 config/mips/mips.h:554
msgid "Don't use GP relative sdata/sbss sections"
msgstr ""
-#: config/mips/mips.h:394
+#: config/mips/mips.h:556
msgid "Output compiler statistics"
msgstr ""
-#: config/mips/mips.h:396
+#: config/mips/mips.h:558
msgid "Don't output compiler statistics"
msgstr ""
-#: config/mips/mips.h:398
+#: config/mips/mips.h:560
msgid "Don't optimize block moves"
msgstr ""
-#: config/mips/mips.h:400
+#: config/mips/mips.h:562
msgid "Optimize block moves"
msgstr ""
-#: config/mips/mips.h:402
+#: config/mips/mips.h:564
msgid "Use mips-tfile asm postpass"
msgstr ""
-#: config/mips/mips.h:404
+#: config/mips/mips.h:566
msgid "Don't use mips-tfile asm postpass"
msgstr ""
@@ -11452,270 +11570,253 @@ msgstr ""
#. where VALUE is the bits to set or minus the bits to clear and DOC
#. is the documentation for --help (NULL if intentionally undocumented).
#. An empty string NAME is used to identify the default VALUE.
-#: config/mips/mips.h:408 config/pdp11/pdp11.h:55
+#: config/mips/mips.h:570 config/pdp11/pdp11.h:56
msgid "Use hardware floating point"
msgstr ""
-#: config/mips/mips.h:410
+#: config/mips/mips.h:572
msgid "Use 64-bit FP registers"
msgstr ""
-#: config/mips/mips.h:412
+#: config/mips/mips.h:574
msgid "Use 32-bit FP registers"
msgstr ""
-#: config/mips/mips.h:414
+#: config/mips/mips.h:576
msgid "Use 64-bit general registers"
msgstr ""
-#: config/mips/mips.h:416
+#: config/mips/mips.h:578
msgid "Use 32-bit general registers"
msgstr ""
-#: config/mips/mips.h:418
+#: config/mips/mips.h:580
msgid "Use Irix PIC"
msgstr ""
-#: config/mips/mips.h:420
+#: config/mips/mips.h:582
msgid "Don't use Irix PIC"
msgstr ""
-#: config/mips/mips.h:422
-msgid "Use OSF PIC"
-msgstr ""
-
-#: config/mips/mips.h:424
-msgid "Don't use OSF PIC"
-msgstr ""
-
-#: config/mips/mips.h:426
+#: config/mips/mips.h:584
msgid "Use indirect calls"
msgstr ""
-#: config/mips/mips.h:428
+#: config/mips/mips.h:586
msgid "Don't use indirect calls"
msgstr ""
-#: config/mips/mips.h:430
+#: config/mips/mips.h:588
msgid "Use embedded PIC"
msgstr ""
-#: config/mips/mips.h:432
+#: config/mips/mips.h:590
msgid "Don't use embedded PIC"
msgstr ""
-#: config/mips/mips.h:434
+#: config/mips/mips.h:592
msgid "Use ROM instead of RAM"
msgstr ""
-#: config/mips/mips.h:436
+#: config/mips/mips.h:594
msgid "Don't use ROM instead of RAM"
msgstr ""
-#: config/mips/mips.h:438
+#: config/mips/mips.h:596
msgid "Put uninitialized constants in ROM (needs -membedded-data)"
msgstr ""
-#: config/mips/mips.h:440
+#: config/mips/mips.h:598
msgid "Don't put uninitialized constants in ROM"
msgstr ""
#. Macro to define tables used to set the flags.
-#: config/mips/mips.h:442 config/xtensa/xtensa.h:110
+#: config/mips/mips.h:600 config/xtensa/xtensa.h:110
msgid "Use big-endian byte order"
msgstr ""
-#: config/mips/mips.h:444 config/xtensa/xtensa.h:112
+#: config/mips/mips.h:602 config/xtensa/xtensa.h:112
msgid "Use little-endian byte order"
msgstr ""
-#: config/mips/mips.h:446
+#: config/mips/mips.h:604
msgid "Use single (32-bit) FP only"
msgstr ""
-#: config/mips/mips.h:448
+#: config/mips/mips.h:606
msgid "Don't use single (32-bit) FP only"
msgstr ""
-#: config/mips/mips.h:450
+#: config/mips/mips.h:608
msgid "Use multiply accumulate"
msgstr ""
-#: config/mips/mips.h:452
+#: config/mips/mips.h:610
msgid "Don't use multiply accumulate"
msgstr ""
-#: config/mips/mips.h:454 config/rs6000/rs6000.h:351
+#: config/mips/mips.h:612 config/rs6000/rs6000.h:314
msgid "Don't generate fused multiply/add instructions"
msgstr ""
-#: config/mips/mips.h:456 config/rs6000/rs6000.h:349
+#: config/mips/mips.h:614 config/rs6000/rs6000.h:312
msgid "Generate fused multiply/add instructions"
msgstr ""
-#: config/mips/mips.h:458
+#: config/mips/mips.h:616
msgid "Work around early 4300 hardware bug"
msgstr ""
-#: config/mips/mips.h:460
+#: config/mips/mips.h:618
msgid "Don't work around early 4300 hardware bug"
msgstr ""
-#: config/mips/mips.h:462
-msgid "Optimize for 3900"
-msgstr ""
-
-#: config/mips/mips.h:464
-msgid "Optimize for 4650"
-msgstr ""
-
-#: config/mips/mips.h:466
+#: config/mips/mips.h:620
msgid "Trap on integer divide by zero"
msgstr ""
-#: config/mips/mips.h:468
+#: config/mips/mips.h:622
msgid "Don't trap on integer divide by zero"
msgstr ""
-#: config/mips/mips.h:470
+#: config/mips/mips.h:624
msgid "Trap on integer divide overflow"
msgstr ""
-#: config/mips/mips.h:472
+#: config/mips/mips.h:626
msgid "Don't trap on integer divide overflow"
msgstr ""
-#: config/mips/mips.h:588 config/mips/mips.h:590
+#: config/mips/mips.h:628
+msgid "Use Branch Likely instructions, overriding default for arch"
+msgstr ""
+
+#: config/mips/mips.h:630
+msgid "Don't use Branch Likely instructions, overriding default for arch"
+msgstr ""
+
+#: config/mips/mips.h:744 config/pa/pa.h:296
msgid "Specify CPU for scheduling purposes"
msgstr ""
-#: config/mips/mips.h:592
+#: config/mips/mips.h:746
msgid "Specify CPU for code generation purposes"
msgstr ""
-#: config/mips/mips.h:594
+#: config/mips/mips.h:748
+msgid "Specify an ABI"
+msgstr ""
+
+#: config/mips/mips.h:750
msgid "Specify a Standard MIPS ISA"
msgstr ""
-#: config/mips/mips.h:596
+#: config/mips/mips.h:752
msgid "Use mips16 entry/exit psuedo ops"
msgstr ""
-#: config/mips/mips.h:598
+#: config/mips/mips.h:754
msgid "Don't use MIPS16 instructions"
msgstr ""
-#: config/mips/mips.h:602
+#: config/mips/mips.h:756
msgid "Don't call any cache flush functions"
msgstr ""
-#: config/mips/mips.h:604
+#: config/mips/mips.h:758
msgid "Specify cache flush function"
msgstr ""
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/mips/mips.h:2923
+#: config/mips/mips.h:2868
msgid "mips16 function profiling"
msgstr ""
-#: config/mmix/mmix.c:138
+#: config/mmix/mmix.c:189
#, c-format
msgid "-f%s not supported: ignored"
msgstr ""
-#: config/mmix/mmix.c:596
+#: config/mmix/mmix.c:644
#, c-format
msgid ""
"too large function value type, needs %d registers, have only %d registers "
"for this"
msgstr ""
-#: config/mmix/mmix.c:677
-msgid "stack frame too big"
-msgstr ""
-
-#: config/mmix/mmix.c:705
-#, c-format
-msgid "stack frame not a multiple of 8 bytes: %d"
-msgstr ""
-
-#: config/mmix/mmix.c:1044
-#, c-format
-msgid "stack frame not a multiple of octabyte: %d"
-msgstr ""
-
-#: config/mmix/mmix.c:1203
+#: config/mmix/mmix.c:826
msgid "function_profiler support for MMIX"
msgstr ""
-#: config/mmix/mmix.c:1240
-msgid "neither varargs or stdarg in mmix_setup_incoming_varargs"
-msgstr ""
-
-#: config/mmix/mmix.c:1246
+#: config/mmix/mmix.c:848
msgid "MMIX Internal: Last named vararg would not fit in a register"
msgstr ""
-#. FIXME: Remove when I know this trigs.
-#: config/mmix/mmix.c:1608
-msgid "oops, not debugged; fixing up value:"
-msgstr ""
-
-#: config/mmix/mmix.c:2185 config/mmix/mmix.c:2319
+#: config/mmix/mmix.c:1639 config/mmix/mmix.c:1769
msgid "MMIX Internal: Expected a CONST_INT, not this"
msgstr ""
-#: config/mmix/mmix.c:2193 config/mmix/mmix.c:2217 config/mmix/mmix.c:2336
+#: config/mmix/mmix.c:1647 config/mmix/mmix.c:1671 config/mmix/mmix.c:1787
#, c-format
msgid "MMIX Internal: Bad register: %d"
msgstr ""
-#: config/mmix/mmix.c:2264
+#: config/mmix/mmix.c:1718
msgid "MMIX Internal: Bad value for 'm', not a CONST_INT"
msgstr ""
-#: config/mmix/mmix.c:2287
+#: config/mmix/mmix.c:1737
msgid "MMIX Internal: Expected a register, not this"
msgstr ""
-#: config/mmix/mmix.c:2297
+#: config/mmix/mmix.c:1747
msgid "MMIX Internal: Expected a constant, not this"
msgstr ""
#. Presumably there's a missing case above if we get here.
-#: config/mmix/mmix.c:2329
+#: config/mmix/mmix.c:1779
#, c-format
msgid "MMIX Internal: Missing `%c' case in mmix_print_operand"
msgstr ""
#. We need the original here.
-#: config/mmix/mmix.c:2380
+#: config/mmix/mmix.c:1831
msgid "MMIX Internal: Cannot decode this operand"
msgstr ""
-#: config/mmix/mmix.c:2445
+#: config/mmix/mmix.c:1891
msgid "MMIX Internal: This is not a recognized address"
msgstr ""
-#: config/mmix/mmix.c:2941 config/mmix/mmix.c:3010
+#: config/mmix/mmix.c:2082
+#, c-format
+msgid "stack frame not a multiple of 8 bytes: %d"
+msgstr ""
+
+#: config/mmix/mmix.c:2321
+#, c-format
+msgid "stack frame not a multiple of octabyte: %d"
+msgstr ""
+
+#: config/mmix/mmix.c:2818 config/mmix/mmix.c:2887
#, c-format
msgid "MMIX Internal: %s is not a shiftable int"
msgstr ""
-#: config/mmix/mmix.c:3129
+#: config/mmix/mmix.c:3006
msgid "MMIX Internal: Trying to output invalidly reversed condition:"
msgstr ""
-#: config/mmix/mmix.c:3136
+#: config/mmix/mmix.c:3013
msgid "MMIX Internal: What's the CC of this?"
msgstr ""
-#: config/mmix/mmix.c:3140
+#: config/mmix/mmix.c:3017
msgid "MMIX Internal: What is the CC of this?"
msgstr ""
-#: config/mmix/mmix.c:3211
+#: config/mmix/mmix.c:3088
msgid "MMIX Internal: This is not a constant:"
msgstr ""
@@ -11728,8 +11829,6 @@ msgstr ""
#. the opposite, since we don't have to care about old littering and
#. soon outdated generic comments.
#. Node: Driver
-#. When both ABI:s work, this is how we tell them apart in code. The
-#. GNU abi is implied the default. Also implied in TARGET_DEFAULT.
#. User symbols are in the same name-space as built-in symbols, but we
#. don't need the built-in symbols, so remove those and instead apply
#. stricter operand checking. Don't warn when expanding insns.
@@ -11738,69 +11837,77 @@ msgstr ""
#. Don't do this if linking relocatably, with -r. For a final link,
#. produce mmo, unless ELF is requested or when linking relocatably.
#. Put unused option values here.
-#: config/mmix/mmix.h:137
+#: config/mmix/mmix.h:132
msgid "Set start-address of the program"
msgstr ""
-#: config/mmix/mmix.h:139
+#: config/mmix/mmix.h:134
msgid "Set start-address of data"
msgstr ""
#. FIXME: Provide a way to *load* the epsilon register.
-#: config/mmix/mmix.h:188
+#: config/mmix/mmix.h:198
msgid "For intrinsics library: pass all parameters in registers"
msgstr ""
-#: config/mmix/mmix.h:191
+#: config/mmix/mmix.h:201
msgid "Use register stack for parameters and return value"
msgstr ""
-#: config/mmix/mmix.h:193
+#: config/mmix/mmix.h:203
msgid "Use call-clobbered registers for parameters and return value"
msgstr ""
-#: config/mmix/mmix.h:195
+#: config/mmix/mmix.h:205
msgid "Use epsilon-respecting floating point compare instructions"
msgstr ""
-#: config/mmix/mmix.h:198
+#: config/mmix/mmix.h:208
msgid "Use zero-extending memory loads, not sign-extending ones"
msgstr ""
-#: config/mmix/mmix.h:201
+#: config/mmix/mmix.h:211
msgid ""
"Generate divide results with reminder having the same sign as the divisor "
"(not the dividend)"
msgstr ""
-#: config/mmix/mmix.h:205
+#: config/mmix/mmix.h:215
msgid "Prepend global symbols with \":\" (for use with PREFIX)"
msgstr ""
-#: config/mmix/mmix.h:207
+#: config/mmix/mmix.h:217
msgid "Do not provide a default start-address 0x100 of the program"
msgstr ""
-#: config/mmix/mmix.h:209
+#: config/mmix/mmix.h:219
msgid "Link to emit program in ELF format (rather than mmo)"
msgstr ""
-#: config/mmix/mmix.h:211
+#: config/mmix/mmix.h:221
msgid "Use P-mnemonics for branches statically predicted as taken"
msgstr ""
-#: config/mmix/mmix.h:213
+#: config/mmix/mmix.h:223
msgid "Don't use P-mnemonics for branches"
msgstr ""
-#: config/mmix/mmix.h:215
+#: config/mmix/mmix.h:225
msgid "Use addresses that allocate global registers"
msgstr ""
-#: config/mmix/mmix.h:217
+#: config/mmix/mmix.h:227
msgid "Do not use addresses that allocate global registers"
msgstr ""
+#: config/mmix/mmix.h:229
+msgid "Generate a single exit point for each function"
+msgstr ""
+
+#: config/mmix/mmix.h:231
+msgid "Do not generate a single exit point for each function"
+msgstr ""
+
#: config/mn10300/mn10300.h:59
msgid "Work around hardware multiply bug"
msgstr ""
@@ -11817,152 +11924,282 @@ msgstr ""
msgid "Enable linker relaxations"
msgstr ""
-#: config/ns32k/ns32k.h:104 config/s390/s390.h:57
+#: config/ns32k/ns32k.h:142 config/s390/s390.h:69
msgid "Don't use hardware fp"
msgstr ""
-#: config/ns32k/ns32k.h:105
+#: config/ns32k/ns32k.h:143
msgid "Alternative calling convention"
msgstr ""
-#: config/ns32k/ns32k.h:107
+#: config/ns32k/ns32k.h:145
msgid "Pass some arguments in registers"
msgstr ""
-#: config/ns32k/ns32k.h:108
+#: config/ns32k/ns32k.h:146
msgid "Pass all arguments on stack"
msgstr ""
-#: config/ns32k/ns32k.h:109
+#: config/ns32k/ns32k.h:147
msgid "Optimize for 32532 cpu"
msgstr ""
-#: config/ns32k/ns32k.h:110
+#: config/ns32k/ns32k.h:148
msgid "Optimize for 32332 cpu"
msgstr ""
-#: config/ns32k/ns32k.h:112
+#: config/ns32k/ns32k.h:150
msgid "Optimize for 32032"
msgstr ""
-#: config/ns32k/ns32k.h:114
+#: config/ns32k/ns32k.h:152
msgid "Register sb is zero. Use for absolute addressing"
msgstr ""
-#: config/ns32k/ns32k.h:115
+#: config/ns32k/ns32k.h:153
msgid "Do not use register sb"
msgstr ""
-#: config/ns32k/ns32k.h:116
-msgid "Do not use bit-field instructions"
+#: config/ns32k/ns32k.h:155
+msgid "Use bit-field instructions"
msgstr ""
-#: config/ns32k/ns32k.h:117
-msgid "Use bit-field instructions"
+#: config/ns32k/ns32k.h:157
+msgid "Do not use bit-field instructions"
msgstr ""
-#: config/ns32k/ns32k.h:118
+#: config/ns32k/ns32k.h:158
msgid "Generate code for high memory"
msgstr ""
-#: config/ns32k/ns32k.h:119
+#: config/ns32k/ns32k.h:159
msgid "Generate code for low memory"
msgstr ""
-#: config/ns32k/ns32k.h:120
+#: config/ns32k/ns32k.h:160
msgid "32381 fpu"
msgstr ""
-#: config/ns32k/ns32k.h:121
+#: config/ns32k/ns32k.h:162
msgid "Use multiply-accumulate fp instructions"
msgstr ""
-#: config/ns32k/ns32k.h:123
+#: config/ns32k/ns32k.h:164
msgid "Do not use multiply-accumulate fp instructions"
msgstr ""
-#: config/ns32k/ns32k.h:124
+#: config/ns32k/ns32k.h:165
msgid "\"Small register classes\" kludge"
msgstr ""
-#: config/ns32k/ns32k.h:125
+#: config/ns32k/ns32k.h:166
msgid "No \"Small register classes\" kludge"
msgstr ""
-#: config/pa/pa.c:182
+#: config/pa/pa.c:246
#, c-format
msgid ""
"unknown -mschedule= option (%s).\n"
-"Valid options are 700, 7100, 7100LC, 7200, and 8000\n"
+"Valid options are 700, 7100, 7100LC, 7200, 7300, and 8000\n"
msgstr ""
-#: config/pa/pa.c:207
+#: config/pa/pa.c:271
#, c-format
msgid ""
"unknown -march= option (%s).\n"
"Valid options are 1.0, 1.1, and 2.0\n"
msgstr ""
-#: config/pa/pa.c:212
+#: config/pa/pa.c:284
msgid "PIC code generation is not supported in the portable runtime model\n"
msgstr ""
-#: config/pa/pa.c:217
+#: config/pa/pa.c:289
msgid "PIC code generation is not compatible with fast indirect calls\n"
msgstr ""
-#: config/pa/pa.c:222
+#: config/pa/pa.c:294
msgid "-g is only supported when using GAS on this processor,"
msgstr ""
-#: config/pa/pa.c:223
+#: config/pa/pa.c:295
msgid "-g option disabled"
msgstr ""
-#: config/pdp11/pdp11.h:56
+#: config/pa/pa-hiux.h:75 config/pa/pa-hpux.h:80 config/pa/pa-hpux7.h:81
+#: config/pa/pa64-hpux.h:25
+msgid "Generate cpp defines for server IO"
+msgstr ""
+
+#: config/pa/pa-hiux.h:76 config/pa/pa-hpux.h:81 config/pa/pa-hpux7.h:82
+#: config/pa/pa64-hpux.h:27
+msgid "Generate cpp defines for workstation IO"
+msgstr ""
+
+#. Macro to define tables used to set the flags. This is a
+#. list in braces of target switches with each switch being
+#. { "NAME", VALUE, "HELP_STRING" }. VALUE is the bits to set,
+#. or minus the bits to clear. An empty string NAME is used to
+#. identify the default VALUE. Do not mark empty strings for
+#. translation.
+#: config/pa/pa.h:218 config/pa/pa.h:224
+msgid "Generate PA1.1 code"
+msgstr ""
+
+#: config/pa/pa.h:220 config/pa/pa.h:222
+msgid "Generate PA1.0 code"
+msgstr ""
+
+#: config/pa/pa.h:226
+msgid "Generate PA2.0 code (requires binutils 2.10 or later)"
+msgstr ""
+
+#: config/pa/pa.h:228
+msgid "Disable FP regs"
+msgstr ""
+
+#: config/pa/pa.h:230
+msgid "Do not disable FP regs"
+msgstr ""
+
+#: config/pa/pa.h:232
+msgid "Disable space regs"
+msgstr ""
+
+#: config/pa/pa.h:234
+msgid "Do not disable space regs"
+msgstr ""
+
+#: config/pa/pa.h:236
+msgid "Put jumps in call delay slots"
+msgstr ""
+
+#: config/pa/pa.h:238
+msgid "Do not put jumps in call delay slots"
+msgstr ""
+
+#: config/pa/pa.h:240
+msgid "Disable indexed addressing"
+msgstr ""
+
+#: config/pa/pa.h:242
+msgid "Do not disable indexed addressing"
+msgstr ""
+
+#: config/pa/pa.h:244
+msgid "Use portable calling conventions"
+msgstr ""
+
+#: config/pa/pa.h:246
+msgid "Do not use portable calling conventions"
+msgstr ""
+
+#: config/pa/pa.h:248
+msgid "Assume code will be assembled by GAS"
+msgstr ""
+
+#: config/pa/pa.h:250
+msgid "Do not assume code will be assembled by GAS"
+msgstr ""
+
+#: config/pa/pa.h:254
+msgid "Do not use software floating point"
+msgstr ""
+
+#: config/pa/pa.h:256
+msgid "Emit long load/store sequences"
+msgstr ""
+
+#: config/pa/pa.h:258
+msgid "Do not emit long load/store sequences"
+msgstr ""
+
+#: config/pa/pa.h:260
+msgid "Generate fast indirect calls"
+msgstr ""
+
+#: config/pa/pa.h:262
+msgid "Do not generate fast indirect calls"
+msgstr ""
+
+#: config/pa/pa.h:264
+msgid "Generate code for huge switch statements"
+msgstr ""
+
+#: config/pa/pa.h:266
+msgid "Do not generate code for huge switch statements"
+msgstr ""
+
+#: config/pa/pa.h:268
+msgid "Always generate long calls"
+msgstr ""
+
+#: config/pa/pa.h:270
+msgid "Generate long calls only when needed"
+msgstr ""
+
+#: config/pa/pa.h:272
+msgid "Enable linker optimizations"
+msgstr ""
+
+#: config/pa/pa.h:298
+msgid ""
+"Specify architecture for code generation. Values are 1.0, 1.1, and 2.0. "
+"2.0 requires gas snapshot 19990413 or later."
+msgstr ""
+
+#: config/pa/pa64-hpux.h:29
+msgid "Assume code will be linked by GNU ld"
+msgstr ""
+
+#: config/pa/pa64-hpux.h:31
+msgid "Assume code will be linked by HP ld"
+msgstr ""
+
+#: config/pdp11/pdp11.h:57
msgid "Do not use hardware floating point"
msgstr ""
#. return float result in ac0
-#: config/pdp11/pdp11.h:58
+#: config/pdp11/pdp11.h:59
msgid "Return floating point results in ac0"
msgstr ""
-#: config/pdp11/pdp11.h:59
+#: config/pdp11/pdp11.h:60
msgid "Return floating point results in memory"
msgstr ""
#. is 11/40
-#: config/pdp11/pdp11.h:61
+#: config/pdp11/pdp11.h:62
msgid "Generate code for an 11/40"
msgstr ""
#. is 11/45
-#: config/pdp11/pdp11.h:64
+#: config/pdp11/pdp11.h:65
msgid "Generate code for an 11/45"
msgstr ""
#. is 11/10
-#: config/pdp11/pdp11.h:67
+#: config/pdp11/pdp11.h:68
msgid "Generate code for an 11/10"
msgstr ""
#. use movstrhi for bcopy
#. use 32 bit for int
-#: config/pdp11/pdp11.h:72 config/pdp11/pdp11.h:73
+#: config/pdp11/pdp11.h:73 config/pdp11/pdp11.h:74
msgid "Use 32 bit int"
msgstr ""
-#: config/pdp11/pdp11.h:74 config/pdp11/pdp11.h:75
+#: config/pdp11/pdp11.h:75 config/pdp11/pdp11.h:76
msgid "Use 16 bit int"
msgstr ""
#. use 32 bit for float
-#: config/pdp11/pdp11.h:77 config/pdp11/pdp11.h:78
+#: config/pdp11/pdp11.h:78 config/pdp11/pdp11.h:79
msgid "Use 32 bit float"
msgstr ""
-#: config/pdp11/pdp11.h:79 config/pdp11/pdp11.h:80
+#: config/pdp11/pdp11.h:80 config/pdp11/pdp11.h:81
msgid "Use 64 bit float"
msgstr ""
@@ -11970,74 +12207,50 @@ msgstr ""
#. is branching expensive - on a PDP, it's actually really cheap
#. this is just to play around and check what code gcc generates
#. split instruction and data memory?
-#: config/pdp11/pdp11.h:89
+#: config/pdp11/pdp11.h:90
msgid "Target has split I&D"
msgstr ""
-#: config/pdp11/pdp11.h:90
+#: config/pdp11/pdp11.h:91
msgid "Target does not have split I&D"
msgstr ""
#. UNIX assembler syntax?
-#: config/pdp11/pdp11.h:92
+#: config/pdp11/pdp11.h:93
msgid "Use UNIX assembler syntax"
msgstr ""
-#: config/pdp11/pdp11.h:93
+#: config/pdp11/pdp11.h:94
msgid "Use DEC assembler syntax"
msgstr ""
-#: config/pj/pj.h:73
-msgid "Generate little endian data"
-msgstr ""
-
-#: config/pj/pj.h:75
-msgid "Generate big endian data"
-msgstr ""
-
-#: config/pj/pj.h:77
-msgid "Turn on maintainer testing code"
-msgstr ""
-
-#: config/pj/pj.h:79
-msgid "Enable Transmeta picoJava extensions"
-msgstr ""
-
-#: config/pj/pj.h:81
-msgid "Disable Transmeta picoJava extensions"
-msgstr ""
-
-#: config/pj/pj.h:83
-msgid "Disable reorganization pass"
-msgstr ""
-
-#: config/romp/romp.c:709 config/rs6000/rs6000.c:6551
+#: config/romp/romp.c:717 config/rs6000/rs6000.c:7718
#, c-format
msgid "invalid %%S value"
msgstr ""
-#: config/romp/romp.c:718 config/romp/romp.c:725
+#: config/romp/romp.c:726 config/romp/romp.c:733
#, c-format
msgid "invalid %%b value"
msgstr ""
-#: config/romp/romp.c:765 config/romp/romp.c:776
+#: config/romp/romp.c:773 config/romp/romp.c:784
#, c-format
msgid "invalid %%z value"
msgstr ""
-#: config/romp/romp.c:784 config/romp/romp.c:792
+#: config/romp/romp.c:792 config/romp/romp.c:800
#, c-format
msgid "invalid %%Z value"
msgstr ""
-#: config/romp/romp.c:799 config/romp/romp.c:808 config/romp/romp.c:815
-#: config/rs6000/rs6000.c:6330
+#: config/romp/romp.c:807 config/romp/romp.c:816 config/romp/romp.c:823
+#: config/rs6000/rs6000.c:7547
#, c-format
msgid "invalid %%k value"
msgstr ""
-#: config/romp/romp.c:900 config/romp/romp.c:943
+#: config/romp/romp.c:908 config/romp/romp.c:951
#, c-format
msgid "invalid %%j value"
msgstr ""
@@ -12059,139 +12272,198 @@ msgstr ""
msgid "can't have varargs with -mfp-arg-in-fp-regs"
msgstr ""
-#: config/rs6000/rs6000.c:475
+#. Handle the machine specific pragma longcall. Its syntax is
+#.
+#. # pragma longcall ( TOGGLE )
+#.
+#. where TOGGLE is either 0 or 1.
+#.
+#. rs6000_default_long_calls is set to the value of TOGGLE, changing
+#. whether or not new function declarations receive a longcall
+#. attribute by default.
+#: config/rs6000/rs6000-c.c:44
+msgid "ignoring malformed #pragma longcall"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:58
+msgid "missing open paren"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:60
+msgid "missing number"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:62
+msgid "missing close paren"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:65
+msgid "number must be 0 or 1"
+msgstr ""
+
+#: config/rs6000/rs6000-c.c:68
+msgid "junk at end of #pragma longcall"
+msgstr ""
+
+#: config/rs6000/rs6000.c:588
msgid "-mmultiple is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:482
+#: config/rs6000/rs6000.c:595
msgid "-mstring is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:491 config/xtensa/xtensa.c:1846
+#: config/rs6000/rs6000.c:619
#, c-format
-msgid "-f%s ignored (all code is position independent)"
+msgid "unknown -mdebug-%s switch"
msgstr ""
-#: config/rs6000/rs6000.c:499
-msgid "-ffunction-sections disabled on AIX when debugging"
+#: config/rs6000/rs6000.c:631
+#, c-format
+msgid "unknown -mtraceback arg `%s'; expecting `full', `partial' or `none'"
msgstr ""
-#: config/rs6000/rs6000.c:505
-msgid "-fdata-sections not supported on AIX"
+#: config/rs6000/rs6000.c:642
+#, c-format
+msgid "Unknown switch -mlong-double-%s"
msgstr ""
-#: config/rs6000/rs6000.c:520
+#: config/rs6000/rs6000.c:734
#, c-format
-msgid "unknown -mdebug-%s switch"
+msgid "unknown -misel= option specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:530
+#: config/rs6000/rs6000.c:749
#, c-format
-msgid "Unknown switch -mlong-double-%s"
+msgid "unknown -mvrsave= option specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:597
+#: config/rs6000/rs6000.c:768
#, c-format
msgid "unknown ABI specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:3636
+#: config/rs6000/rs6000.c:4169
+msgid "argument 1 must be a 5-bit signed literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:4276 config/rs6000/rs6000.c:4866
+msgid "argument 2 must be a 5-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:4319
msgid "argument 1 of __builtin_altivec_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:3690
+#: config/rs6000/rs6000.c:4373
msgid "argument 1 of __builtin_altivec_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:4046
+#: config/rs6000/rs6000.c:4452
+msgid "argument 3 must be a 4-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:4629
#, c-format
-msgid "argument 3 of `%s' must be a 2-bit literal"
+msgid "argument to `%s' must be a 2-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:4745
+msgid "argument to dss must be a 2-bit unsigned literal"
+msgstr ""
+
+#: config/rs6000/rs6000.c:4976
+msgid "argument 1 of __builtin_spe_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:6257
+#: config/rs6000/rs6000.c:5049
+msgid "argument 1 of __builtin_spe_predicate is out of range"
+msgstr ""
+
+#: config/rs6000/rs6000.c:7474
#, c-format
msgid "invalid %%f value"
msgstr ""
-#: config/rs6000/rs6000.c:6266
+#: config/rs6000/rs6000.c:7483
#, c-format
msgid "invalid %%F value"
msgstr ""
-#: config/rs6000/rs6000.c:6275
+#: config/rs6000/rs6000.c:7492
#, c-format
msgid "invalid %%G value"
msgstr ""
-#: config/rs6000/rs6000.c:6310
+#: config/rs6000/rs6000.c:7527
#, c-format
msgid "invalid %%j code"
msgstr ""
-#: config/rs6000/rs6000.c:6320
+#: config/rs6000/rs6000.c:7537
#, c-format
msgid "invalid %%J code"
msgstr ""
-#: config/rs6000/rs6000.c:6350
+#: config/rs6000/rs6000.c:7567
#, c-format
msgid "invalid %%K value"
msgstr ""
-#: config/rs6000/rs6000.c:6577
-#, c-format
-msgid "%%S computed all 1's mask"
-msgstr ""
-
-#: config/rs6000/rs6000.c:6604
+#: config/rs6000/rs6000.c:7634
#, c-format
-msgid "%%S computed all 0's mask"
+msgid "invalid %%O value"
msgstr ""
-#: config/rs6000/rs6000.c:6614
+#: config/rs6000/rs6000.c:7756
#, c-format
msgid "invalid %%T value"
msgstr ""
-#: config/rs6000/rs6000.c:6624
+#: config/rs6000/rs6000.c:7766
#, c-format
msgid "invalid %%u value"
msgstr ""
-#: config/rs6000/rs6000.c:6633
+#: config/rs6000/rs6000.c:7775
#, c-format
msgid "invalid %%v value"
msgstr ""
-#: config/rs6000/aix.h:137 config/rs6000/beos.h:32
+#: config/rs6000/rs6000.c:12180
+msgid "no profiling of 64-bit code for this ABI"
+msgstr ""
+
+#: config/rs6000/aix.h:160 config/rs6000/beos.h:32
msgid "Always pass floating-point arguments in memory"
msgstr ""
-#: config/rs6000/aix.h:139 config/rs6000/beos.h:34
+#: config/rs6000/aix.h:162 config/rs6000/beos.h:34
msgid "Don't always pass floating-point arguments in memory"
msgstr ""
#: config/rs6000/aix41.h:28 config/rs6000/aix43.h:32 config/rs6000/aix51.h:32
+#: config/rs6000/aix52.h:32
msgid "Support message passing with the Parallel Environment"
msgstr ""
-#: config/rs6000/aix43.h:28 config/rs6000/aix51.h:28
+#: config/rs6000/aix43.h:28 config/rs6000/aix51.h:28 config/rs6000/aix52.h:28
msgid "Compile for 64-bit pointers"
msgstr ""
-#: config/rs6000/aix43.h:30 config/rs6000/aix51.h:30
+#: config/rs6000/aix43.h:30 config/rs6000/aix51.h:30 config/rs6000/aix52.h:30
msgid "Compile for 32-bit pointers"
msgstr ""
-#: config/rs6000/aix43.h:49 config/rs6000/aix51.h:49
+#: config/rs6000/aix43.h:49 config/rs6000/aix51.h:49 config/rs6000/aix52.h:49
msgid "-maix64 and POWER architecture are incompatible"
msgstr ""
-#: config/rs6000/aix43.h:54 config/rs6000/aix51.h:54
+#: config/rs6000/aix43.h:54 config/rs6000/aix51.h:54 config/rs6000/aix52.h:54
msgid "-maix64 requires PowerPC64 architecture remain enabled"
msgstr ""
-#: config/rs6000/aix43.h:58 config/rs6000/aix51.h:58
+#: config/rs6000/aix43.h:58 config/rs6000/aix51.h:58 config/rs6000/aix52.h:58
msgid ""
"-maix64 required: 64-bit computation with 32-bit addressing not yet supported"
msgstr ""
@@ -12203,146 +12475,162 @@ msgstr ""
#. each pair being { "NAME", VALUE }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/rs6000/rs6000.h:277
+#: config/rs6000/rs6000.h:240
msgid "Use POWER instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:280
+#: config/rs6000/rs6000.h:243
msgid "Use POWER2 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:282
+#: config/rs6000/rs6000.h:245
msgid "Do not use POWER2 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:285
+#: config/rs6000/rs6000.h:248
msgid "Do not use POWER instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:287
+#: config/rs6000/rs6000.h:250
msgid "Use PowerPC instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:290
+#: config/rs6000/rs6000.h:253
msgid "Do not use PowerPC instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:292
+#: config/rs6000/rs6000.h:255
msgid "Use PowerPC General Purpose group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:294
+#: config/rs6000/rs6000.h:257
msgid "Don't use PowerPC General Purpose group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:296
+#: config/rs6000/rs6000.h:259
msgid "Use PowerPC Graphics group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:298
+#: config/rs6000/rs6000.h:261
msgid "Don't use PowerPC Graphics group optional instructions"
msgstr ""
-#: config/rs6000/rs6000.h:300
+#: config/rs6000/rs6000.h:263
msgid "Use PowerPC-64 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:302
+#: config/rs6000/rs6000.h:265
msgid "Don't use PowerPC-64 instruction set"
msgstr ""
-#: config/rs6000/rs6000.h:304
+#: config/rs6000/rs6000.h:267
msgid "Use AltiVec instructions"
msgstr ""
-#: config/rs6000/rs6000.h:306
+#: config/rs6000/rs6000.h:269
msgid "Don't use AltiVec instructions"
msgstr ""
-#: config/rs6000/rs6000.h:308
+#: config/rs6000/rs6000.h:271
msgid "Use new mnemonics for PowerPC architecture"
msgstr ""
-#: config/rs6000/rs6000.h:310
+#: config/rs6000/rs6000.h:273
msgid "Use old mnemonics for PowerPC architecture"
msgstr ""
-#: config/rs6000/rs6000.h:313
+#: config/rs6000/rs6000.h:276
msgid "Put everything in the regular TOC"
msgstr ""
-#: config/rs6000/rs6000.h:315
+#: config/rs6000/rs6000.h:278
msgid "Place floating point constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:317
+#: config/rs6000/rs6000.h:280
msgid "Don't place floating point constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:319
+#: config/rs6000/rs6000.h:282
msgid "Place symbol+offset constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:321
+#: config/rs6000/rs6000.h:284
msgid "Don't place symbol+offset constants in TOC"
msgstr ""
-#: config/rs6000/rs6000.h:327
+#: config/rs6000/rs6000.h:290
msgid "Place variable addresses in the regular TOC"
msgstr ""
-#: config/rs6000/rs6000.h:333
+#: config/rs6000/rs6000.h:296
msgid "Generate load/store multiple instructions"
msgstr ""
-#: config/rs6000/rs6000.h:335
+#: config/rs6000/rs6000.h:298
msgid "Do not generate load/store multiple instructions"
msgstr ""
-#: config/rs6000/rs6000.h:339
+#: config/rs6000/rs6000.h:302
msgid "Generate string instructions for block moves"
msgstr ""
-#: config/rs6000/rs6000.h:341
+#: config/rs6000/rs6000.h:304
msgid "Do not generate string instructions for block moves"
msgstr ""
-#: config/rs6000/rs6000.h:345
+#: config/rs6000/rs6000.h:308
msgid "Generate load/store with update instructions"
msgstr ""
-#: config/rs6000/rs6000.h:347
+#: config/rs6000/rs6000.h:310
msgid "Do not generate load/store with update instructions"
msgstr ""
-#: config/rs6000/rs6000.h:355
+#: config/rs6000/rs6000.h:318
msgid "Don't schedule the start and end of the procedure"
msgstr ""
-#: config/rs6000/rs6000.h:361
+#: config/rs6000/rs6000.h:324
msgid "Return all structures in memory (AIX default)"
msgstr ""
-#: config/rs6000/rs6000.h:363
+#: config/rs6000/rs6000.h:326
msgid "Return small structures in registers (SVR4 default)"
msgstr ""
-#: config/rs6000/rs6000.h:426 config/sparc/sparc.h:639
+#: config/rs6000/rs6000.h:391 config/sparc/sparc.h:633
msgid "Use features of and schedule code for given CPU"
msgstr ""
-#: config/rs6000/rs6000.h:429
+#: config/rs6000/rs6000.h:394
msgid "Enable debug output"
msgstr ""
-#: config/rs6000/rs6000.h:430
+#: config/rs6000/rs6000.h:396
+msgid "Select full, part, or no traceback table"
+msgstr ""
+
+#: config/rs6000/rs6000.h:397
msgid "Specify ABI to use"
msgstr ""
-#: config/rs6000/rs6000.h:432
+#: config/rs6000/rs6000.h:399
msgid "Specify size of long double (64 or 128 bits)"
msgstr ""
+#: config/rs6000/rs6000.h:401
+msgid "Specify yes/no if isel instructions should be generated"
+msgstr ""
+
+#: config/rs6000/rs6000.h:403
+msgid "Specify yes/no if VRSAVE instructions should be generated for AltiVec"
+msgstr ""
+
+#: config/rs6000/rs6000.h:405
+msgid "Avoid all range limits on call instructions"
+msgstr ""
+
#. Definitions for __builtin_return_address and __builtin_frame_address.
#. __builtin_return_address (0) should give link register (65), enable
#. this.
@@ -12355,99 +12643,103 @@ msgstr ""
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1772
+#: config/rs6000/rs6000.h:1869
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
-#: config/rs6000/sysv4.h:88
+#: config/rs6000/sysv4.h:87
msgid "Select ABI calling convention"
msgstr ""
-#: config/rs6000/sysv4.h:89
+#: config/rs6000/sysv4.h:88
msgid "Select method for sdata handling"
msgstr ""
-#: config/rs6000/sysv4.h:104
+#: config/rs6000/sysv4.h:103
msgid "Align to the base type of the bit-field"
msgstr ""
-#: config/rs6000/sysv4.h:106
+#: config/rs6000/sysv4.h:105
msgid "Don't align to the base type of the bit-field"
msgstr ""
-#: config/rs6000/sysv4.h:108
+#: config/rs6000/sysv4.h:107
msgid "Don't assume that unaligned accesses are handled by the system"
msgstr ""
-#: config/rs6000/sysv4.h:110
+#: config/rs6000/sysv4.h:109
msgid "Assume that unaligned accesses are handled by the system"
msgstr ""
-#: config/rs6000/sysv4.h:112 config/rs6000/sysv4.h:116
+#: config/rs6000/sysv4.h:111 config/rs6000/sysv4.h:115
msgid "Produce code relocatable at runtime"
msgstr ""
-#: config/rs6000/sysv4.h:114 config/rs6000/sysv4.h:118
+#: config/rs6000/sysv4.h:113 config/rs6000/sysv4.h:117
msgid "Don't produce code relocatable at runtime"
msgstr ""
-#: config/rs6000/sysv4.h:120 config/rs6000/sysv4.h:122
+#: config/rs6000/sysv4.h:119 config/rs6000/sysv4.h:121
msgid "Produce little endian code"
msgstr ""
-#: config/rs6000/sysv4.h:124 config/rs6000/sysv4.h:126
+#: config/rs6000/sysv4.h:123 config/rs6000/sysv4.h:125
msgid "Produce big endian code"
msgstr ""
-#: config/rs6000/sysv4.h:127 config/rs6000/sysv4.h:128
-#: config/rs6000/sysv4.h:129 config/rs6000/sysv4.h:130
-#: config/rs6000/sysv4.h:131 config/rs6000/sysv4.h:132
-#: config/rs6000/sysv4.h:142 config/rs6000/sysv4.h:143
-#: config/rs6000/sysv4.h:154 config/rs6000/sysv4.h:155
+#: config/rs6000/sysv4.h:126 config/rs6000/sysv4.h:127
+#: config/rs6000/sysv4.h:128 config/rs6000/sysv4.h:129
+#: config/rs6000/sysv4.h:130 config/rs6000/sysv4.h:131
+#: config/rs6000/sysv4.h:141 config/rs6000/sysv4.h:142
+#: config/rs6000/sysv4.h:153 config/rs6000/sysv4.h:155
#: config/rs6000/sysv4.h:157
msgid "no description yet"
msgstr ""
-#: config/rs6000/sysv4.h:133
+#: config/rs6000/sysv4.h:132
msgid "Use EABI"
msgstr ""
-#: config/rs6000/sysv4.h:134
+#: config/rs6000/sysv4.h:133
msgid "Don't use EABI"
msgstr ""
-#: config/rs6000/sysv4.h:137
+#: config/rs6000/sysv4.h:136
msgid "Do not allow bit-fields to cross word boundaries"
msgstr ""
-#: config/rs6000/sysv4.h:139
+#: config/rs6000/sysv4.h:138
msgid "Use alternate register names"
msgstr ""
-#: config/rs6000/sysv4.h:141
+#: config/rs6000/sysv4.h:140
msgid "Don't use alternate register names"
msgstr ""
-#: config/rs6000/sysv4.h:145
+#: config/rs6000/sysv4.h:144
msgid "Link with libsim.a, libc.a and sim-crt0.o"
msgstr ""
-#: config/rs6000/sysv4.h:147
+#: config/rs6000/sysv4.h:146
msgid "Link with libads.a, libc.a and crt0.o"
msgstr ""
-#: config/rs6000/sysv4.h:149
+#: config/rs6000/sysv4.h:148
msgid "Link with libyk.a, libc.a and crt0.o"
msgstr ""
-#: config/rs6000/sysv4.h:151
+#: config/rs6000/sysv4.h:150
msgid "Link with libmvme.a, libc.a and crt0.o"
msgstr ""
-#: config/rs6000/sysv4.h:153
+#: config/rs6000/sysv4.h:152
msgid "Set the PPC_EMB bit in the ELF flags header"
msgstr ""
+#: config/rs6000/sysv4.h:154
+msgid "Use the WindISS simulator"
+msgstr ""
+
#. Sometimes certain combinations of command options do not make sense
#. on a particular target machine. You can define a macro
#. `OVERRIDE_OPTIONS' to take account of this. This macro, if
@@ -12481,179 +12773,183 @@ msgstr ""
msgid "-msdata=%s and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:270
+#: config/rs6000/sysv4.h:272
msgid "-mrelocatable and -mno-minimal-toc are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:276
+#: config/rs6000/sysv4.h:278
#, c-format
msgid "-mrelocatable and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:283
+#: config/rs6000/sysv4.h:285
#, c-format
msgid "-fPIC and -mcall-%s are incompatible"
msgstr ""
-#: config/rs6000/sysv4.h:290
+#: config/rs6000/sysv4.h:292
msgid "-mcall-aixdesc must be big endian"
msgstr ""
-#: config/s390/s390.c:1958
+#: config/s390/s390.c:2584
msgid "invalid UNSPEC as operand (1)"
msgstr ""
-#: config/s390/s390.c:1988
+#: config/s390/s390.c:2620
msgid "invalid UNSPEC as operand (2)"
msgstr ""
-#: config/s390/s390.c:1994
+#: config/s390/s390.c:2626
msgid "UNKNOWN in s390_output_symbolic_const !?"
msgstr ""
-#: config/s390/s390.c:2010
+#: config/s390/s390.c:2644
msgid "Cannot decompose address."
msgstr ""
-#: config/s390/s390.c:2158
+#: config/s390/s390.c:2784
msgid "UNKNOWN in print_operand !?"
msgstr ""
-#: config/s390/s390.c:2751
+#: config/s390/s390.c:4421
msgid "Total size of local variables exceeds architecture limit."
msgstr ""
-#: config/s390/s390.h:58
+#: config/s390/s390.h:70
msgid "Set backchain"
msgstr ""
-#: config/s390/s390.h:59
+#: config/s390/s390.h:71
msgid "Don't set backchain (faster, but debug harder"
msgstr ""
-#: config/s390/s390.h:60
+#: config/s390/s390.h:72
msgid "Use bras for execucable < 64k"
msgstr ""
-#: config/s390/s390.h:61
+#: config/s390/s390.h:73
msgid "Don't use bras"
msgstr ""
-#: config/s390/s390.h:62
+#: config/s390/s390.h:74
msgid "Additional debug prints"
msgstr ""
-#: config/s390/s390.h:63
+#: config/s390/s390.h:75
msgid "Don't print additional debug prints"
msgstr ""
-#: config/s390/s390.h:64
+#: config/s390/s390.h:76
msgid "64 bit mode"
msgstr ""
-#: config/s390/s390.h:65
+#: config/s390/s390.h:77
msgid "31 bit mode"
msgstr ""
-#: config/s390/s390.h:66
+#: config/s390/s390.h:78
msgid "mvcle use"
msgstr ""
-#: config/s390/s390.h:67
+#: config/s390/s390.h:79
msgid "mvc&ex"
msgstr ""
-#: config/sh/sh.c:5069
+#: config/sh/sh.c:5134
msgid "__builtin_saveregs not supported by this subtarget"
msgstr ""
+#: config/sh/sh.c:5684
+msgid "attribute interrupt_handler is not compatible with -m5-compact"
+msgstr ""
+
#. The sp_switch attribute only has meaning for interrupt functions.
-#: config/sh/sh.c:5619 config/sh/sh.c:5658
+#: config/sh/sh.c:5710 config/sh/sh.c:5749
#, c-format
msgid "`%s' attribute only applies to interrupt functions"
msgstr ""
#. The argument must be a constant string.
-#: config/sh/sh.c:5626
+#: config/sh/sh.c:5717
#, c-format
msgid "`%s' attribute argument not a string constant"
msgstr ""
#. The argument must be a constant integer.
-#: config/sh/sh.c:5665
+#: config/sh/sh.c:5756
#, c-format
msgid "`%s' attribute argument not an integer constant"
msgstr ""
#. There are no delay slots on SHmedia.
#. Relaxation isn't yet supported for SHmedia
-#: config/sh/sh.h:367
+#: config/sh/sh.h:437
msgid "Profiling is not supported on this target."
msgstr ""
-#: config/sparc/sparc.c:317
+#: config/sparc/sparc.c:329
#, c-format
msgid "%s is not supported by this configuration"
msgstr ""
-#: config/sparc/sparc.c:324
+#: config/sparc/sparc.c:336
msgid "-mlong-double-64 not allowed with -m64"
msgstr ""
-#: config/sparc/sparc.c:349
+#: config/sparc/sparc.c:361
msgid "-mcmodel= is not supported on 32 bit systems"
msgstr ""
-#: config/sparc/sparc.c:5985 config/sparc/sparc.c:5991
+#: config/sparc/sparc.c:6299 config/sparc/sparc.c:6305
#, c-format
msgid "invalid %%Y operand"
msgstr ""
-#: config/sparc/sparc.c:6061
+#: config/sparc/sparc.c:6375
#, c-format
msgid "invalid %%A operand"
msgstr ""
-#: config/sparc/sparc.c:6071
+#: config/sparc/sparc.c:6385
#, c-format
msgid "invalid %%B operand"
msgstr ""
-#: config/sparc/sparc.c:6110
+#: config/sparc/sparc.c:6424
#, c-format
msgid "invalid %%c operand"
msgstr ""
-#: config/sparc/sparc.c:6111
+#: config/sparc/sparc.c:6425
#, c-format
msgid "invalid %%C operand"
msgstr ""
-#: config/sparc/sparc.c:6132
+#: config/sparc/sparc.c:6446
#, c-format
msgid "invalid %%d operand"
msgstr ""
-#: config/sparc/sparc.c:6133
+#: config/sparc/sparc.c:6447
#, c-format
msgid "invalid %%D operand"
msgstr ""
-#: config/sparc/sparc.c:6149
+#: config/sparc/sparc.c:6463
#, c-format
msgid "invalid %%f operand"
msgstr ""
-#: config/sparc/sparc.c:6199
+#: config/sparc/sparc.c:6513
msgid "long long constant not a valid immediate operand"
msgstr ""
-#: config/sparc/sparc.c:6202
+#: config/sparc/sparc.c:6516
msgid "floating point constant not a valid immediate operand"
msgstr ""
-#: config/sparc/freebsd.h:81 config/sparc/linux.h:89
-#: config/sparc/linux64.h:146 config/sparc/netbsd-elf.h:241
+#: config/sparc/freebsd.h:80 config/sparc/linux.h:87 config/sparc/linux64.h:89
+#: config/sparc/netbsd-elf.h:239
msgid "Use 128 bit long doubles"
msgstr ""
@@ -12665,334 +12961,379 @@ msgstr ""
msgid "Generate code for little endian"
msgstr ""
-#: config/sparc/sp86x-aout.h:51 config/sparc/sp86x-elf.h:67
+#: config/sparc/sp86x-aout.h:51 config/sparc/sp86x-elf.h:65
msgid "Use little-endian byte order for data"
msgstr ""
-#: config/sparc/sparc.h:539
+#: config/sparc/sparc.h:532
msgid "Assume possible double misalignment"
msgstr ""
-#: config/sparc/sparc.h:541
+#: config/sparc/sparc.h:534
msgid "Assume all doubles are aligned"
msgstr ""
-#: config/sparc/sparc.h:543
+#: config/sparc/sparc.h:536
msgid "Pass -assert pure-text to linker"
msgstr ""
-#: config/sparc/sparc.h:545
+#: config/sparc/sparc.h:538
msgid "Do not pass -assert pure-text to linker"
msgstr ""
-#: config/sparc/sparc.h:547
+#: config/sparc/sparc.h:540
msgid "Use flat register window model"
msgstr ""
-#: config/sparc/sparc.h:549
+#: config/sparc/sparc.h:542
msgid "Do not use flat register window model"
msgstr ""
-#: config/sparc/sparc.h:551
+#: config/sparc/sparc.h:544
msgid "Use ABI reserved registers"
msgstr ""
-#: config/sparc/sparc.h:553
+#: config/sparc/sparc.h:546
msgid "Do not use ABI reserved registers"
msgstr ""
-#: config/sparc/sparc.h:555
+#: config/sparc/sparc.h:548
msgid "Use hardware quad fp instructions"
msgstr ""
-#: config/sparc/sparc.h:557
+#: config/sparc/sparc.h:550
msgid "Do not use hardware quad fp instructions"
msgstr ""
-#: config/sparc/sparc.h:559
+#: config/sparc/sparc.h:552
msgid "Compile for v8plus ABI"
msgstr ""
-#: config/sparc/sparc.h:561
+#: config/sparc/sparc.h:554
msgid "Do not compile for v8plus ABI"
msgstr ""
-#: config/sparc/sparc.h:563
+#: config/sparc/sparc.h:556
msgid "Utilize Visual Instruction Set"
msgstr ""
-#: config/sparc/sparc.h:565
+#: config/sparc/sparc.h:558
msgid "Do not utilize Visual Instruction Set"
msgstr ""
#. ??? These are deprecated, coerced to -mcpu=. Delete in 2.9.
-#: config/sparc/sparc.h:568
+#: config/sparc/sparc.h:561
msgid "Optimize for Cypress processors"
msgstr ""
-#: config/sparc/sparc.h:570
-msgid "Optimize for SparcLite processors"
+#: config/sparc/sparc.h:563
+msgid "Optimize for SPARCLite processors"
msgstr ""
-#: config/sparc/sparc.h:572
+#: config/sparc/sparc.h:565
msgid "Optimize for F930 processors"
msgstr ""
-#: config/sparc/sparc.h:574
+#: config/sparc/sparc.h:567
msgid "Optimize for F934 processors"
msgstr ""
-#: config/sparc/sparc.h:576
-msgid "Use V8 Sparc ISA"
+#: config/sparc/sparc.h:569
+msgid "Use V8 SPARC ISA"
msgstr ""
-#: config/sparc/sparc.h:578
-msgid "Optimize for SuperSparc processors"
+#: config/sparc/sparc.h:571
+msgid "Optimize for SuperSPARC processors"
msgstr ""
#. End of deprecated options.
-#: config/sparc/sparc.h:581
+#: config/sparc/sparc.h:574
msgid "Pointers are 64-bit"
msgstr ""
-#: config/sparc/sparc.h:583
+#: config/sparc/sparc.h:576
msgid "Pointers are 32-bit"
msgstr ""
-#: config/sparc/sparc.h:585
+#: config/sparc/sparc.h:578
msgid "Use 32-bit ABI"
msgstr ""
-#: config/sparc/sparc.h:587
+#: config/sparc/sparc.h:580
msgid "Use 64-bit ABI"
msgstr ""
-#: config/sparc/sparc.h:589
+#: config/sparc/sparc.h:582
msgid "Use stack bias"
msgstr ""
-#: config/sparc/sparc.h:591
+#: config/sparc/sparc.h:584
msgid "Do not use stack bias"
msgstr ""
-#: config/sparc/sparc.h:593
+#: config/sparc/sparc.h:586
msgid "Use structs on stronger alignment for double-word copies"
msgstr ""
-#: config/sparc/sparc.h:595
+#: config/sparc/sparc.h:588
msgid "Do not use structs on stronger alignment for double-word copies"
msgstr ""
-#: config/sparc/sparc.h:597
+#: config/sparc/sparc.h:590
msgid "Optimize tail call instructions in assembler and linker"
msgstr ""
-#: config/sparc/sparc.h:599
+#: config/sparc/sparc.h:592
msgid "Do not optimize tail call instructions in assembler or linker"
msgstr ""
-#: config/sparc/sparc.h:643
-msgid "Use given Sparc code model"
+#: config/sparc/sparc.h:637
+msgid "Use given SPARC code model"
msgstr ""
-#: config/stormy16/stormy16.c:1180
+#: config/stormy16/stormy16.c:1192
msgid "cannot use va_start in interrupt function"
msgstr ""
-#: config/stormy16/stormy16.c:1538
+#: config/stormy16/stormy16.c:1552
msgid "`B' operand is not constant"
msgstr ""
-#: config/stormy16/stormy16.c:1544
+#: config/stormy16/stormy16.c:1558
msgid "`B' operand has multiple bits set"
msgstr ""
-#: config/stormy16/stormy16.c:1571
+#: config/stormy16/stormy16.c:1585
msgid "`o' operand is not constant"
msgstr ""
-#: config/stormy16/stormy16.c:1586
+#: config/stormy16/stormy16.c:1600
msgid "xstormy16_print_operand: unknown code"
msgstr ""
-#: config/stormy16/stormy16.c:1636
+#: config/stormy16/stormy16.c:1650
#, c-format
msgid "switch statement of size %lu entries too large"
msgstr ""
-#: config/v850/v850-c.c:68
+#: config/v850/v850-c.c:67
msgid "#pragma GHS endXXXX found without previous startXXX"
msgstr ""
-#: config/v850/v850-c.c:70
+#: config/v850/v850-c.c:69
msgid "#pragma GHS endXXX does not match previous startXXX"
msgstr ""
-#: config/v850/v850-c.c:95
+#: config/v850/v850-c.c:94
msgid "cannot set interrupt attribute: no current function"
msgstr ""
-#: config/v850/v850-c.c:103
+#: config/v850/v850-c.c:102
msgid "cannot set interrupt attribute: no such identifier"
msgstr ""
-#: config/v850/v850-c.c:149
+#: config/v850/v850-c.c:148
msgid "junk at end of #pragma ghs section"
msgstr ""
-#: config/v850/v850-c.c:166
+#: config/v850/v850-c.c:165
#, c-format
msgid "unrecognized section name \"%s\""
msgstr ""
-#: config/v850/v850-c.c:181
+#: config/v850/v850-c.c:180
msgid "malformed #pragma ghs section"
msgstr ""
-#: config/v850/v850-c.c:201
+#: config/v850/v850-c.c:200
msgid "junk at end of #pragma ghs interrupt"
msgstr ""
-#: config/v850/v850-c.c:213
+#: config/v850/v850-c.c:212
msgid "junk at end of #pragma ghs starttda"
msgstr ""
-#: config/v850/v850-c.c:225
+#: config/v850/v850-c.c:224
msgid "junk at end of #pragma ghs startsda"
msgstr ""
-#: config/v850/v850-c.c:237
+#: config/v850/v850-c.c:236
msgid "junk at end of #pragma ghs startzda"
msgstr ""
-#: config/v850/v850-c.c:249
+#: config/v850/v850-c.c:248
msgid "junk at end of #pragma ghs endtda"
msgstr ""
-#: config/v850/v850-c.c:261
+#: config/v850/v850-c.c:260
msgid "junk at end of #pragma ghs endsda"
msgstr ""
-#: config/v850/v850-c.c:273
+#: config/v850/v850-c.c:272
msgid "junk at end of #pragma ghs endzda"
msgstr ""
-#: config/v850/v850.c:122
+#: config/v850/v850.c:129
#, c-format
msgid "%s=%s is not numeric"
msgstr ""
-#: config/v850/v850.c:129
+#: config/v850/v850.c:136
#, c-format
msgid "%s=%s is too large"
msgstr ""
-#: config/v850/v850.c:285
+#: config/v850/v850.c:302
msgid "const_double_split got a bad insn:"
msgstr ""
-#: config/v850/v850.c:777
+#: config/v850/v850.c:837
msgid "output_move_single:"
msgstr ""
-#: config/v850/v850.c:2084
+#: config/v850/v850.c:2217
msgid "a data area attribute cannot be specified for local variables"
msgstr ""
-#: config/v850/v850.c:2095
+#: config/v850/v850.c:2228
#, c-format
msgid "data area of '%s' conflicts with previous declaration"
msgstr ""
-#: config/v850/v850.c:2298
+#: config/v850/v850.c:2447
#, c-format
msgid "bogus JR construction: %d\n"
msgstr ""
-#: config/v850/v850.c:2319 config/v850/v850.c:2521
+#: config/v850/v850.c:2468 config/v850/v850.c:2670
#, c-format
msgid "bad amount of stack space removal: %d"
msgstr ""
-#: config/v850/v850.c:2497
+#: config/v850/v850.c:2646
#, c-format
msgid "bogus JARL construction: %d\n"
msgstr ""
+#: config/v850/v850.c:3026
+#, c-format
+msgid "Bogus DISPOSE construction: %d\n"
+msgstr ""
+
+#: config/v850/v850.c:3048
+#, c-format
+msgid "Too much stack space to dispose of: %d"
+msgstr ""
+
+#: config/v850/v850.c:3224
+#, c-format
+msgid "Bogus PREPEARE construction: %d\n"
+msgstr ""
+
+#: config/v850/v850.c:3246
+#, c-format
+msgid "Too much stack space to prepare: %d"
+msgstr ""
+
#. Macro to define tables used to set the flags.
#. This is a list in braces of pairs in braces,
#. each pair being { "NAME", VALUE }
#. where VALUE is the bits to set or minus the bits to clear.
#. An empty string NAME is used to identify the default VALUE.
-#: config/v850/v850.h:120
+#: config/v850/v850.h:158
msgid "Support Green Hills ABI"
msgstr ""
-#: config/v850/v850.h:123
+#: config/v850/v850.h:161
msgid "Prohibit PC relative function calls"
msgstr ""
-#: config/v850/v850.h:126
+#: config/v850/v850.h:164
msgid "Reuse r30 on a per function basis"
msgstr ""
-#: config/v850/v850.h:129
+#: config/v850/v850.h:167
msgid "Use stubs for function prologues"
msgstr ""
-#: config/v850/v850.h:132
+#: config/v850/v850.h:170
msgid "Same as: -mep -mprolog-function"
msgstr ""
-#: config/v850/v850.h:133
+#: config/v850/v850.h:171
msgid "Enable backend debugging"
msgstr ""
-#: config/v850/v850.h:135
+#: config/v850/v850.h:173
msgid "Compile for the v850 processor"
msgstr ""
-#: config/v850/v850.h:138
+#: config/v850/v850.h:175
+msgid "Compile for v850e processor"
+msgstr ""
+
+#. Make sure that the other bits are cleared.
+#: config/v850/v850.h:177
+msgid "Enable the use of the short load instructions"
+msgstr ""
+
+#: config/v850/v850.h:180
+msgid "Do not use the callt instruction"
+msgstr ""
+
+#: config/v850/v850.h:187
+msgid "Do not use registers r2 and r5"
+msgstr ""
+
+#: config/v850/v850.h:189
+msgid "Enfore strict alignment"
+msgstr ""
+
+#: config/v850/v850.h:192
msgid "Use 4 byte entries in switch tables"
msgstr ""
-#: config/v850/v850.h:164
+#: config/v850/v850.h:218
msgid "Set the max size of data eligible for the TDA area"
msgstr ""
-#: config/v850/v850.h:167
+#: config/v850/v850.h:221
msgid "Set the max size of data eligible for the SDA area"
msgstr ""
-#: config/v850/v850.h:170
+#: config/v850/v850.h:224
msgid "Set the max size of data eligible for the ZDA area"
msgstr ""
-#: config/xtensa/xtensa.c:1048 config/xtensa/xtensa.c:1082
-#: config/xtensa/xtensa.c:1091
+#: config/xtensa/xtensa.c:1062 config/xtensa/xtensa.c:1096
+#: config/xtensa/xtensa.c:1105
msgid "bad test"
msgstr ""
-#: config/xtensa/xtensa.c:1790
+#: config/xtensa/xtensa.c:1824
msgid "boolean registers required for the floating-point option"
msgstr ""
-#: config/xtensa/xtensa.c:1965
+#: config/xtensa/xtensa.c:1991
msgid "invalid mask"
msgstr ""
-#: config/xtensa/xtensa.c:2017
+#: config/xtensa/xtensa.c:2038
msgid "invalid address"
msgstr ""
-#: config/xtensa/xtensa.c:2042
+#: config/xtensa/xtensa.c:2063
msgid "no register in address"
msgstr ""
-#: config/xtensa/xtensa.c:2050
+#: config/xtensa/xtensa.c:2071
msgid "address offset not a constant"
msgstr ""
+#: config/xtensa/xtensa.c:2809
+msgid "only uninitialized variables can be placed in a .bss section"
+msgstr ""
+
#: config/xtensa/xtensa.h:114
msgid "Use the Xtensa code density option"
msgstr ""
@@ -13115,519 +13456,574 @@ msgstr ""
msgid "Use direct CALLn instructions for fast calls"
msgstr ""
-#: ada/misc.c:234
+#: ada/misc.c:233
msgid "`-gnat' misspelled as `-gant'"
msgstr ""
-#: cp/call.c:270 cp/init.c:1633
+#: cp/call.c:258 cp/init.c:1587
msgid "qualified type `%T' does not match destructor name `~%T'"
msgstr ""
-#: cp/call.c:279
+#: cp/call.c:267
msgid "type of `%E' does not match destructor type `%T' (type was `%T')"
msgstr ""
-#: cp/call.c:288
+#: cp/call.c:276
msgid "`%D' is a namespace"
msgstr ""
-#: cp/call.c:296
+#: cp/call.c:284
msgid "base object `%E' of scoped method call is of non-aggregate type `%T'"
msgstr ""
-#: cp/call.c:377
+#: cp/call.c:366
msgid "unable to call pointer to member function here"
msgstr ""
-#: cp/call.c:513
+#: cp/call.c:515
msgid "destructors take no parameters"
msgstr ""
-#: cp/call.c:520
+#: cp/call.c:519
msgid "destructor name `~%T' does not match type `%T' of expression"
msgstr ""
-#: cp/call.c:2357
+#: cp/call.c:535 cp/call.c:4857
+msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
+msgstr ""
+
+#: cp/call.c:557
+msgid "request for member `%D' is ambiguous"
+msgstr ""
+
+#: cp/call.c:2446
msgid "%s %D(%T, %T, %T) <built-in>"
msgstr ""
-#: cp/call.c:2362
+#: cp/call.c:2451
msgid "%s %D(%T, %T) <built-in>"
msgstr ""
-#: cp/call.c:2366
+#: cp/call.c:2455
msgid "%s %D(%T) <built-in>"
msgstr ""
-#: cp/call.c:2370
+#: cp/call.c:2459
msgid "%s %T <conversion>"
msgstr ""
-#: cp/call.c:2372
+#: cp/call.c:2461
msgid "%s %+#D%s"
msgstr ""
-#: cp/call.c:2517
-msgid "no viable candidates"
+#: cp/call.c:2615
+msgid "conversion from `%T' to `%T' is ambiguous"
msgstr ""
-#: cp/call.c:2531
-msgid "conversion from `%T' to `%T' is ambiguous"
+#: cp/call.c:2690
+msgid "incomplete type '%T' cannot be used to name a scope"
+msgstr ""
+
+#: cp/call.c:2706 cp/typeck.c:2176 cp/typeck.c:2205
+msgid "'%D' has no member named '%E'"
msgstr ""
-#: cp/call.c:2648
+#: cp/call.c:2812
msgid "no matching function for call to `%D(%A)'"
msgstr ""
-#: cp/call.c:2659 cp/call.c:4655
+#: cp/call.c:2823 cp/call.c:4948
msgid "call of overloaded `%D(%A)' is ambiguous"
msgstr ""
#. It's no good looking for an overloaded operator() on a
#. pointer-to-member-function.
-#: cp/call.c:2686
+#: cp/call.c:2850
#, c-format
msgid ""
"pointer-to-member function %E cannot be called without an object; consider "
"using .* or ->*"
msgstr ""
-#: cp/call.c:2755
+#: cp/call.c:2920
msgid "no match for call to `(%T) (%A)'"
msgstr ""
-#: cp/call.c:2765
+#: cp/call.c:2930
msgid "call of `(%T) (%A)' is ambiguous"
msgstr ""
-#: cp/call.c:2800
+#: cp/call.c:2965
msgid "%s for `%T ? %T : %T' operator"
msgstr ""
-#: cp/call.c:2805
+#: cp/call.c:2970
msgid "%s for `%T %s' operator"
msgstr ""
-#: cp/call.c:2808
+#: cp/call.c:2973
msgid "%s for `%T [%T]' operator"
msgstr ""
-#: cp/call.c:2813
+#: cp/call.c:2978
msgid "%s for `%T %s %T' operator"
msgstr ""
-#: cp/call.c:2816
+#: cp/call.c:2981
msgid "%s for `%s %T' operator"
msgstr ""
-#: cp/call.c:2908
+#: cp/call.c:3071
msgid "ISO C++ forbids omitting the middle term of a ?: expression"
msgstr ""
-#: cp/call.c:2967
+#: cp/call.c:3130
#, c-format
msgid "`%E' has type `void' and is not a throw-expression"
msgstr ""
-#: cp/call.c:3000 cp/call.c:3200
+#: cp/call.c:3163 cp/call.c:3363
msgid "operands to ?: have different types"
msgstr ""
-#: cp/call.c:3153
+#: cp/call.c:3316
msgid "enumeral mismatch in conditional expression: `%T' vs `%T'"
msgstr ""
-#: cp/call.c:3160
+#: cp/call.c:3323
msgid "enumeral and non-enumeral type in conditional expression"
msgstr ""
-#: cp/call.c:3241
+#: cp/call.c:3405
msgid "`%D' must be declared before use"
msgstr ""
-#: cp/call.c:3404
+#: cp/call.c:3604
msgid "no `%D(int)' declared for postfix `%s', trying prefix operator instead"
msgstr ""
-#: cp/call.c:3451
+#: cp/call.c:3651
msgid "using synthesized `%#D' for copy assignment"
msgstr ""
-#: cp/call.c:3453
+#: cp/call.c:3653
msgid " where cfront would use `%#D'"
msgstr ""
-#: cp/call.c:3480
+#: cp/call.c:3680
msgid "comparison between `%#T' and `%#T'"
msgstr ""
-#: cp/call.c:3719
+#: cp/call.c:3919
msgid "no suitable `operator delete' for `%T'"
msgstr ""
-#: cp/call.c:3738
+#: cp/call.c:3938
msgid "`%+#D' is private"
msgstr ""
-#: cp/call.c:3740
+#: cp/call.c:3940
msgid "`%+#D' is protected"
msgstr ""
-#: cp/call.c:3742
+#: cp/call.c:3942
msgid "`%+#D' is inaccessible"
msgstr ""
-#: cp/call.c:3743
+#: cp/call.c:3943
msgid "within this context"
msgstr ""
-#: cp/call.c:3785
+#: cp/call.c:3985
msgid "invalid conversion from `%T' to `%T'"
msgstr ""
-#: cp/call.c:3787 cp/call.c:3926 cp/call.c:3928
+#: cp/call.c:3987 cp/call.c:4126 cp/call.c:4128
msgid " initializing argument %P of `%D'"
msgstr ""
-#: cp/call.c:3850 cp/call.c:3854
+#: cp/call.c:4050 cp/call.c:4054
msgid " initializing argument %P of `%D' from result of `%D'"
msgstr ""
-#: cp/call.c:3860 cp/call.c:3863
+#: cp/call.c:4060 cp/call.c:4063
msgid " initializing temporary from result of `%D'"
msgstr ""
-#. Undefined behaviour [expr.call] 5.2.2/7.
-#: cp/call.c:3997
-msgid "cannot pass objects of non-POD type `%#T' through `...'"
+#. Undefined behavior [expr.call] 5.2.2/7. We used to just warn
+#. here and do a bitwise copy, but now cp_expr_size will abort if we
+#. try to do that.
+#: cp/call.c:4215
+msgid ""
+"cannot pass objects of non-POD type `%#T' through `...'; call will abort at "
+"runtime"
msgstr ""
-#. Undefined behaviour [expr.call] 5.2.2/7.
-#: cp/call.c:4022
+#. Undefined behavior [expr.call] 5.2.2/7.
+#: cp/call.c:4242
msgid "cannot receive objects of non-POD type `%#T' through `...'"
msgstr ""
-#: cp/call.c:4167
+#: cp/call.c:4422
msgid "passing `%T' as `this' argument of `%#D' discards qualifiers"
msgstr ""
-#: cp/call.c:4417
+#: cp/call.c:4656
msgid "could not find class$ field in java interface type `%T'"
msgstr ""
-#: cp/call.c:4518 cp/typeck.c:2019
-msgid "request for member `%D' in `%E', which is of non-aggregate type `%T'"
+#: cp/call.c:4831
+msgid "call to non-function `%D'"
msgstr ""
-#: cp/call.c:4644
+#: cp/call.c:4937
msgid "no matching function for call to `%T::%D(%A)%#V'"
msgstr ""
-#: cp/call.c:4674
+#: cp/call.c:4967
msgid "cannot call member function `%D' without object"
msgstr ""
-#: cp/call.c:5287
+#: cp/call.c:5580
msgid "passing `%T' chooses `%T' over `%T'"
msgstr ""
-#: cp/call.c:5289 cp/decl2.c:4508
+#: cp/call.c:5582 cp/decl2.c:4081
msgid " in call to `%D'"
msgstr ""
-#: cp/call.c:5338 cp/call.c:5463
+#: cp/call.c:5631 cp/call.c:5756
msgid "choosing `%D' over `%D'"
msgstr ""
-#: cp/call.c:5339
+#: cp/call.c:5632
msgid " for conversion from `%T' to `%T'"
msgstr ""
-#: cp/call.c:5341
+#: cp/call.c:5634
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:5465
+#: cp/call.c:5758
msgid ""
" because worst conversion for the former is better than worst conversion "
"for the latter"
msgstr ""
-#: cp/call.c:5581 cp/call.c:5602
+#: cp/call.c:5874 cp/call.c:5895
msgid "could not convert `%E' to `%T'"
msgstr ""
-#: cp/class.c:287
+#: cp/class.c:286
msgid ""
"cannot convert from base `%T' to derived type `%T' via virtual base `%T'"
msgstr ""
-#: cp/class.c:1049
+#: cp/class.c:943
msgid "`%#D' and `%#D' cannot be overloaded"
msgstr ""
-#. There has already been a declaration of this method
-#. or member template.
-#: cp/class.c:1060
-msgid "`%D' has already been declared in `%T'"
-msgstr ""
-
-#: cp/class.c:1141
+#: cp/class.c:1027
msgid "duplicate enum value `%D'"
msgstr ""
-#: cp/class.c:1144
+#: cp/class.c:1030
msgid "duplicate field `%D' (as enum and non-enum)"
msgstr ""
-#: cp/class.c:1151
+#: cp/class.c:1037
msgid "duplicate nested type `%D'"
msgstr ""
-#: cp/class.c:1162
+#: cp/class.c:1048
msgid "duplicate field `%D' (as type and non-type)"
msgstr ""
-#: cp/class.c:1166
+#: cp/class.c:1052
msgid "duplicate member `%D'"
msgstr ""
-#: cp/class.c:1209
+#: cp/class.c:1095
msgid "conflicting access specifications for method `%D', ignored"
msgstr ""
-#: cp/class.c:1211
+#: cp/class.c:1097
#, c-format
msgid "conflicting access specifications for field `%s', ignored"
msgstr ""
-#: cp/class.c:1254
+#: cp/class.c:1142
msgid "`%D' names constructor"
msgstr ""
-#: cp/class.c:1260
+#: cp/class.c:1147
msgid "`%D' invalid in `%T'"
msgstr ""
-#: cp/class.c:1268
+#: cp/class.c:1155
msgid "no members matching `%D' in `%#T'"
msgstr ""
-#: cp/class.c:1300 cp/class.c:1308
+#: cp/class.c:1187 cp/class.c:1195
msgid "`%D' invalid in `%#T'"
msgstr ""
-#: cp/class.c:1301
+#: cp/class.c:1188
msgid " because of local method `%#D' with same name"
msgstr ""
-#: cp/class.c:1309
+#: cp/class.c:1196
msgid " because of local member `%#D' with same name"
msgstr ""
-#: cp/class.c:1381
+#: cp/class.c:1268
msgid "base class `%#T' has a non-virtual destructor"
msgstr ""
-#: cp/class.c:1401
+#: cp/class.c:1288
msgid ""
"base `%T' with only non-default constructor in class without a constructor"
msgstr ""
-#: cp/class.c:1988
+#: cp/class.c:1860
msgid "all member functions in class `%T' are private"
msgstr ""
-#: cp/class.c:2002
+#: cp/class.c:1874
msgid "`%#T' only defines a private destructor and has no friends"
msgstr ""
-#: cp/class.c:2045
+#: cp/class.c:1917
msgid "`%#T' only defines private constructors and has no friends"
msgstr ""
-#: cp/class.c:2166 cp/class.c:5093
+#: cp/class.c:2038 cp/class.c:5172
msgid "redefinition of `%#T'"
msgstr ""
-#: cp/class.c:2167
+#: cp/class.c:2039
msgid "previous definition of `%#T'"
msgstr ""
-#: cp/class.c:2497
+#: cp/class.c:2313
msgid "no unique final overrider for `%D' in `%T'"
msgstr ""
#. Here we know it is a hider, and no overrider exists.
-#: cp/class.c:2879
+#: cp/class.c:2652
msgid "`%D' was hidden"
msgstr ""
-#: cp/class.c:2880
+#: cp/class.c:2653
msgid " by `%D'"
msgstr ""
-#: cp/class.c:2922
+#: cp/class.c:2695
msgid "ISO C++ forbids member `%D' with same name as enclosing class"
msgstr ""
-#: cp/class.c:2927 cp/decl2.c:1874
+#: cp/class.c:2700 cp/decl2.c:1327
msgid "`%#D' invalid; an anonymous union can only have non-static data members"
msgstr ""
-#: cp/class.c:2933 cp/decl2.c:1880
+#: cp/class.c:2706 cp/decl2.c:1333
msgid "private member `%#D' in anonymous union"
msgstr ""
-#: cp/class.c:2936 cp/decl2.c:1882
+#: cp/class.c:2709 cp/decl2.c:1335
msgid "protected member `%#D' in anonymous union"
msgstr ""
-#: cp/class.c:3088
+#: cp/class.c:2834
+msgid ""
+"vtable layout for class `%T' may not be ABI-compliant and may change in a "
+"future version of GCC due to implicit virtual destructor"
+msgstr ""
+
+#: cp/class.c:2898
msgid "bit-field `%#D' with non-integral type"
msgstr ""
-#: cp/class.c:3108
+#: cp/class.c:2918
msgid "bit-field `%D' width not an integer constant"
msgstr ""
-#: cp/class.c:3114
+#: cp/class.c:2924
msgid "negative width in bit-field `%D'"
msgstr ""
-#: cp/class.c:3119
+#: cp/class.c:2929
msgid "zero width for bit-field `%D'"
msgstr ""
-#: cp/class.c:3125
+#: cp/class.c:2935
msgid "width of `%D' exceeds its type"
msgstr ""
-#: cp/class.c:3134
+#: cp/class.c:2944
msgid "`%D' is too small to hold all values of `%#T'"
msgstr ""
-#: cp/class.c:3218
+#: cp/class.c:3028
msgid "member `%#D' with constructor not allowed in union"
msgstr ""
-#: cp/class.c:3221
+#: cp/class.c:3031
msgid "member `%#D' with destructor not allowed in union"
msgstr ""
-#: cp/class.c:3224
+#: cp/class.c:3034
msgid "member `%#D' with copy assignment operator not allowed in union"
msgstr ""
-#: cp/class.c:3251
+#: cp/class.c:3061
msgid "multiple fields in union `%T' initialized"
msgstr ""
-#: cp/class.c:3370
+#: cp/class.c:3183
msgid "field `%D' in local class cannot be static"
msgstr ""
-#: cp/class.c:3376
+#: cp/class.c:3189
msgid "field `%D' invalidly declared function type"
msgstr ""
-#: cp/class.c:3383
+#: cp/class.c:3196
msgid "field `%D' invalidly declared method type"
msgstr ""
-#: cp/class.c:3389
+#: cp/class.c:3202
msgid "field `%D' invalidly declared offset type"
msgstr ""
#. Unions cannot have static members.
-#: cp/class.c:3407
+#: cp/class.c:3220
msgid "field `%D' declared static in union"
msgstr ""
-#: cp/class.c:3433
+#: cp/class.c:3247
msgid "non-static reference `%#D' in class without a constructor"
msgstr ""
-#: cp/class.c:3464
+#: cp/class.c:3282
msgid "non-static const member `%#D' in class without a constructor"
msgstr ""
-#: cp/class.c:3479
+#: cp/class.c:3298
msgid "field `%#D' with same name as class"
msgstr ""
-#: cp/class.c:3497
+#: cp/class.c:3316
msgid "`%#T' has pointer data members"
msgstr ""
-#: cp/class.c:3501
+#: cp/class.c:3320
msgid " but does not override `%T(const %T&)'"
msgstr ""
-#: cp/class.c:3503
+#: cp/class.c:3322
msgid " or `operator=(const %T&)'"
msgstr ""
-#: cp/class.c:3506
+#: cp/class.c:3325
msgid " but does not override `operator=(const %T&)'"
msgstr ""
-#: cp/class.c:3972
+#: cp/class.c:3775
+msgid ""
+"offset of empty base `%T' may not be ABI-compliant and maychange in a future "
+"version of GCC"
+msgstr ""
+
+#: cp/class.c:3883
+msgid "class `%T' will be considered nearly empty in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:3973
msgid "initializer specified for non-virtual method `%D'"
msgstr ""
-#: cp/class.c:4757
-msgid "virtual base `%T' inaccessible in `%T' due to ambiguity"
+#: cp/class.c:4709
+msgid ""
+"offset of virtual base `%T' is not ABI-compliant and may change in a future "
+"version of GCC"
msgstr ""
-#: cp/class.c:4827
+#: cp/class.c:4809
msgid "direct base `%T' inaccessible in `%T' due to ambiguity"
msgstr ""
-#: cp/class.c:5254
+#: cp/class.c:4822
+msgid "virtual base `%T' inaccessible in `%T' due to ambiguity"
+msgstr ""
+
+#: cp/class.c:4978
+msgid ""
+"size assigned to `%T' may not be ABI-compliant and may change in a future "
+"version of GCC"
+msgstr ""
+
+#: cp/class.c:5011
+msgid ""
+"offset of `%D' is not ABI-compliant and may change in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5020
+msgid ""
+"`%D' contains empty classes which may cause base classes to be placed at "
+"different locations in a future version of GCC"
+msgstr ""
+
+#: cp/class.c:5079
+msgid ""
+"layout of classes derived from empty class `%T' may change in a future "
+"version of GCC"
+msgstr ""
+
+#: cp/class.c:5320
msgid "`%#T' has virtual functions but non-virtual destructor"
msgstr ""
-#: cp/class.c:5338
+#: cp/class.c:5405
msgid "trying to finish struct, but kicked out due to previous parse errors"
msgstr ""
-#: cp/class.c:5795
+#: cp/class.c:5861
#, c-format
msgid "language string `\"%s\"' not recognized"
msgstr ""
-#: cp/class.c:5891
+#: cp/class.c:5957
msgid ""
"cannot resolve overloaded function `%D' based on conversion to type `%T'"
msgstr ""
-#: cp/class.c:6012
+#: cp/class.c:6078
msgid "no matches converting function `%D' to type `%#T'"
msgstr ""
-#: cp/class.c:6035
+#: cp/class.c:6101
msgid "converting overloaded function `%D' to type `%#T' is ambiguous"
msgstr ""
-#: cp/class.c:6061
+#: cp/class.c:6127
msgid "assuming pointer to member `%D'"
msgstr ""
-#: cp/class.c:6064
+#: cp/class.c:6130
#, c-format
msgid "(a pointer to member can only be formed with `&%E')"
msgstr ""
-#: cp/class.c:6108 cp/class.c:6276 cp/class.c:6283
+#: cp/class.c:6174 cp/class.c:6345 cp/class.c:6352
msgid "not enough type information"
msgstr ""
-#: cp/class.c:6117
+#: cp/class.c:6183
msgid "argument of type `%T' does not match `%T'"
msgstr ""
-#: cp/class.c:6260
+#: cp/class.c:6329
msgid "invalid operation on uninstantiated type"
msgstr ""
@@ -13636,11 +14032,11 @@ msgstr ""
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:6512 cp/decl.c:1029 cp/decl.c:3169 cp/pt.c:1844
+#: cp/class.c:6612 cp/decl.c:1006 cp/decl.c:3102 cp/pt.c:1845
msgid "declaration of `%#D'"
msgstr ""
-#: cp/class.c:6513
+#: cp/class.c:6613
msgid "changes meaning of `%D' from `%+#D'"
msgstr ""
@@ -13656,206 +14052,210 @@ msgstr ""
msgid "converting from `%T' to `%T'"
msgstr ""
-#: cp/cvt.c:198 cp/cvt.c:202
+#: cp/cvt.c:201 cp/cvt.c:205
msgid "pointer to member cast from `%T' to `%T' is via virtual base"
msgstr ""
-#: cp/cvt.c:220 cp/cvt.c:233 cp/cvt.c:272
+#: cp/cvt.c:223 cp/cvt.c:236 cp/cvt.c:283
msgid "cannot convert `%E' from type `%T' to type `%T'"
msgstr ""
-#: cp/cvt.c:525
+#: cp/cvt.c:262
+msgid "invalid conversion from '%T' to '%T'"
+msgstr ""
+
+#: cp/cvt.c:537
msgid "conversion from `%T' to `%T' discards qualifiers"
msgstr ""
-#: cp/cvt.c:543
+#: cp/cvt.c:555
msgid "casting `%T' to `%T' does not dereference pointer"
msgstr ""
-#: cp/cvt.c:572
+#: cp/cvt.c:584
msgid "cannot convert type `%T' to type `%T'"
msgstr ""
-#: cp/cvt.c:689
+#: cp/cvt.c:701
msgid "conversion from `%#T' to `%#T'"
msgstr ""
-#: cp/cvt.c:701
+#: cp/cvt.c:713
msgid "`%#T' used where a `%T' was expected"
msgstr ""
-#: cp/cvt.c:718
+#: cp/cvt.c:730
msgid "the address of `%D', will always be `true'"
msgstr ""
-#: cp/cvt.c:738
+#: cp/cvt.c:750
msgid "`%#T' used where a floating point value was expected"
msgstr ""
-#: cp/cvt.c:793
+#: cp/cvt.c:797
msgid "conversion from `%T' to non-scalar type `%T' requested"
msgstr ""
-#: cp/cvt.c:879
+#: cp/cvt.c:883
msgid "object of incomplete type `%T' will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:882
+#: cp/cvt.c:886
msgid "object of type `%T' will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:898
+#: cp/cvt.c:902
msgid "object `%E' of incomplete type `%T' will not be accessed in %s"
msgstr ""
#. [over.over] enumerates the places where we can take the address
#. of an overloaded function, and this is not one of them.
-#: cp/cvt.c:918
+#: cp/cvt.c:922
#, c-format
msgid "%s cannot resolve address of overloaded function"
msgstr ""
#. Only warn when there is no &.
-#: cp/cvt.c:923
+#: cp/cvt.c:927
#, c-format
msgid "%s is a reference, not call, to function `%E'"
msgstr ""
-#: cp/cvt.c:1061
+#: cp/cvt.c:1065
msgid "converting NULL to non-pointer type"
msgstr ""
-#: cp/cvt.c:1137
+#: cp/cvt.c:1141
msgid "ambiguous default type conversion from `%T'"
msgstr ""
-#: cp/cvt.c:1139
+#: cp/cvt.c:1143
msgid " candidate conversions include `%D' and `%D'"
msgstr ""
-#: cp/decl.c:1030 cp/decl.c:3272
+#: cp/decl.c:1007 cp/decl.c:3205
msgid "conflicts with previous declaration `%#D'"
msgstr ""
-#: cp/decl.c:1219
+#: cp/decl.c:1211
msgid "label `%D' used but not defined"
msgstr ""
-#: cp/decl.c:1224
+#: cp/decl.c:1216
msgid "label `%D' defined but not used"
msgstr ""
-#: cp/decl.c:2291
+#: cp/decl.c:2249
msgid "namespace alias `%D' not allowed here, assuming `%D'"
msgstr ""
-#: cp/decl.c:3075 cp/decl.c:3480
+#: cp/decl.c:3008 cp/decl.c:3413
msgid "previous declaration of `%D'"
msgstr ""
-#: cp/decl.c:3156 cp/decl.c:3194
+#: cp/decl.c:3089 cp/decl.c:3127
msgid "shadowing %s function `%#D'"
msgstr ""
-#: cp/decl.c:3165
+#: cp/decl.c:3098
msgid "library function `%#D' redeclared as non-function `%#D'"
msgstr ""
-#: cp/decl.c:3170
+#: cp/decl.c:3103
msgid "conflicts with built-in declaration `%#D'"
msgstr ""
-#: cp/decl.c:3189 cp/decl.c:3282 cp/decl.c:3298
+#: cp/decl.c:3122 cp/decl.c:3219 cp/decl.c:3235
msgid "new declaration `%#D'"
msgstr ""
-#: cp/decl.c:3190
+#: cp/decl.c:3123
msgid "ambiguates built-in declaration `%#D'"
msgstr ""
-#: cp/decl.c:3246
+#: cp/decl.c:3179
msgid "`%#D' redeclared as different kind of symbol"
msgstr ""
-#: cp/decl.c:3249
+#: cp/decl.c:3182
msgid "previous declaration of `%#D'"
msgstr ""
-#: cp/decl.c:3271
+#: cp/decl.c:3204
msgid "declaration of template `%#D'"
msgstr ""
-#: cp/decl.c:3283 cp/decl.c:3299
+#: cp/decl.c:3220 cp/decl.c:3236
msgid "ambiguates old declaration `%#D'"
msgstr ""
-#: cp/decl.c:3291
+#: cp/decl.c:3228
msgid "declaration of C function `%#D' conflicts with"
msgstr ""
-#: cp/decl.c:3293
+#: cp/decl.c:3230
msgid "previous declaration `%#D' here"
msgstr ""
-#: cp/decl.c:3309
+#: cp/decl.c:3246
msgid "conflicting types for `%#D'"
msgstr ""
-#: cp/decl.c:3310
+#: cp/decl.c:3247
msgid "previous declaration as `%#D'"
msgstr ""
-#: cp/decl.c:3353
+#: cp/decl.c:3290
msgid "`%#D' previously defined here"
msgstr ""
-#: cp/decl.c:3354
+#: cp/decl.c:3291
msgid "`%#D' previously declared here"
msgstr ""
#. Prototype decl follows defn w/o prototype.
-#: cp/decl.c:3363
+#: cp/decl.c:3300
msgid "prototype for `%#D'"
msgstr ""
-#: cp/decl.c:3364
+#: cp/decl.c:3301
msgid "follows non-prototype definition here"
msgstr ""
-#: cp/decl.c:3376
+#: cp/decl.c:3313
msgid "previous declaration of `%#D' with %L linkage"
msgstr ""
-#: cp/decl.c:3378
+#: cp/decl.c:3315
msgid "conflicts with new declaration with %L linkage"
msgstr ""
-#: cp/decl.c:3401 cp/decl.c:3408
+#: cp/decl.c:3338 cp/decl.c:3345
msgid "default argument given for parameter %d of `%#D'"
msgstr ""
-#: cp/decl.c:3403 cp/decl.c:3410
+#: cp/decl.c:3340 cp/decl.c:3347
msgid "after previous specification in `%#D'"
msgstr ""
-#: cp/decl.c:3419
+#: cp/decl.c:3356
msgid "`%#D' was used before it was declared inline"
msgstr ""
-#: cp/decl.c:3421
+#: cp/decl.c:3358
msgid "previous non-inline declaration here"
msgstr ""
-#: cp/decl.c:3479
+#: cp/decl.c:3412
msgid "redundant redeclaration of `%D' in same scope"
msgstr ""
-#: cp/decl.c:3563
+#: cp/decl.c:3493
#, c-format
msgid "declaration of `%F' throws different exceptions"
msgstr ""
-#: cp/decl.c:3565
+#: cp/decl.c:3495
#, c-format
msgid "than previous declaration `%F'"
msgstr ""
@@ -13868,15 +14268,15 @@ msgstr ""
#. that specialization that would cause an implicit
#. instantiation to take place, in every translation unit in
#. which such a use occurs.
-#: cp/decl.c:3698
+#: cp/decl.c:3632
msgid "explicit specialization of %D after first use"
msgstr ""
-#: cp/decl.c:3943
+#: cp/decl.c:3886
msgid "`%#D' used prior to declaration"
msgstr ""
-#: cp/decl.c:3974
+#: cp/decl.c:3917
msgid "redeclaration of `wchar_t' as `%T'"
msgstr ""
@@ -13886,856 +14286,900 @@ msgstr ""
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/decl.c:4002
+#: cp/decl.c:3945
msgid "invalid redeclaration of `%D'"
msgstr ""
-#: cp/decl.c:4003
+#: cp/decl.c:3946
msgid "as `%D'"
msgstr ""
-#: cp/decl.c:4093
+#: cp/decl.c:4036
msgid "previous external decl of `%#D'"
msgstr ""
-#: cp/decl.c:4134
+#: cp/decl.c:4077
msgid "`%D' was previously implicitly declared to return `int'"
msgstr ""
-#: cp/decl.c:4194
+#: cp/decl.c:4137
msgid "extern declaration of `%#D' doesn't match"
msgstr ""
-#: cp/decl.c:4195
+#: cp/decl.c:4138
msgid "global declaration `%#D'"
msgstr ""
-#: cp/decl.c:4226
+#: cp/decl.c:4169
msgid "declaration of `%#D' shadows a parameter"
msgstr ""
-#: cp/decl.c:4246
+#: cp/decl.c:4189
#, c-format
msgid "declaration of `%s' shadows a member of `this'"
msgstr ""
-#: cp/decl.c:4597
+#: cp/decl.c:4541
msgid "`%#D' hides constructor for `%#T'"
msgstr ""
-#: cp/decl.c:4612
+#: cp/decl.c:4556
msgid "`%#D' conflicts with previous using declaration `%#D'"
msgstr ""
-#: cp/decl.c:4624
+#: cp/decl.c:4568
msgid "previous non-function declaration `%#D'"
msgstr ""
-#: cp/decl.c:4625
+#: cp/decl.c:4569
msgid "conflicts with function declaration `%#D'"
msgstr ""
-#: cp/decl.c:4715
+#: cp/decl.c:4659
msgid "implicit declaration of function `%#D'"
msgstr ""
-#: cp/decl.c:4873
+#: cp/decl.c:4817
#, c-format
msgid "label `%s' referenced outside of any function"
msgstr ""
-#: cp/decl.c:4976 cp/decl.c:5000 cp/decl.c:5093
+#: cp/decl.c:4920 cp/decl.c:4944 cp/decl.c:5037
msgid "jump to label `%D'"
msgstr ""
-#: cp/decl.c:4978 cp/decl.c:5002
+#: cp/decl.c:4922 cp/decl.c:4946
msgid "jump to case label"
msgstr ""
-#: cp/decl.c:4986
+#: cp/decl.c:4930
msgid " crosses initialization of `%#D'"
msgstr ""
-#: cp/decl.c:4989 cp/decl.c:5109
+#: cp/decl.c:4933 cp/decl.c:5053
msgid " enters scope of non-POD `%#D'"
msgstr ""
-#: cp/decl.c:5009 cp/decl.c:5113
+#: cp/decl.c:4953 cp/decl.c:5057
msgid " enters try block"
msgstr ""
#. Can't skip init of __exception_info.
-#: cp/decl.c:5011 cp/decl.c:5105 cp/decl.c:5115
+#: cp/decl.c:4955 cp/decl.c:5049 cp/decl.c:5059
msgid " enters catch block"
msgstr ""
-#: cp/decl.c:5094
+#: cp/decl.c:5038
msgid " from here"
msgstr ""
-#: cp/decl.c:5107
+#: cp/decl.c:5051
msgid " skips initialization of `%#D'"
msgstr ""
-#: cp/decl.c:5142
+#: cp/decl.c:5086
msgid "label named wchar_t"
msgstr ""
-#: cp/decl.c:5146
+#: cp/decl.c:5090
msgid "duplicate label `%D'"
msgstr ""
-#: cp/decl.c:5231
+#: cp/decl.c:5175
#, c-format
msgid "case label `%E' not within a switch statement"
msgstr ""
#. Definition isn't the kind we were looking for.
-#: cp/decl.c:5408 cp/decl.c:5427
+#: cp/decl.c:5354 cp/decl.c:5373
msgid "`%#D' redeclared as %C"
msgstr ""
#. This happens for A::B where B is a template, and there are no
#. template arguments.
-#: cp/decl.c:5515 cp/typeck.c:1981
+#: cp/decl.c:5461 cp/typeck.c:2062 cp/typeck.c:2217
msgid "invalid use of `%D'"
msgstr ""
-#: cp/decl.c:5556
+#: cp/decl.c:5502
msgid "`%D::%D' is not a template"
msgstr ""
-#: cp/decl.c:5573
+#: cp/decl.c:5519
msgid "`%D' undeclared in namespace `%D'"
msgstr ""
-#: cp/decl.c:5710
+#: cp/decl.c:5652
msgid "`%D' used without template parameters"
msgstr ""
-#: cp/decl.c:5721 cp/decl.c:5737 cp/decl.c:5825
+#: cp/decl.c:5663 cp/decl.c:5679 cp/decl.c:5783
msgid "no class template named `%#T' in `%#T'"
msgstr ""
-#: cp/decl.c:5755 cp/decl.c:5785
+#: cp/decl.c:5702 cp/decl.c:5712 cp/decl.c:5744
msgid "no type named `%#T' in `%#T'"
msgstr ""
-#: cp/decl.c:6008
+#: cp/decl.c:5968
msgid "lookup of `%D' finds `%#D'"
msgstr ""
-#: cp/decl.c:6010
+#: cp/decl.c:5970
msgid " instead of `%D' from dependent base class"
msgstr ""
-#: cp/decl.c:6012
+#: cp/decl.c:5972
msgid " (use `typename %T::%D' if that's what you meant)"
msgstr ""
-#: cp/decl.c:6185
+#: cp/decl.c:6003
+msgid "name lookup of `%D' changed"
+msgstr ""
+
+#: cp/decl.c:6005
+msgid " matches this `%D' under ISO standard rules"
+msgstr ""
+
+#: cp/decl.c:6007
+msgid " matches this `%D' under old rules"
+msgstr ""
+
+#: cp/decl.c:6021 cp/decl.c:6028
+msgid "name lookup of `%D' changed for new ISO `for' scoping"
+msgstr ""
+
+#: cp/decl.c:6023
+msgid " cannot use obsolete binding at `%D' because it has a destructor"
+msgstr ""
+
+#: cp/decl.c:6030
+msgid " using obsolete binding at `%D'"
+msgstr ""
+
+#: cp/decl.c:6211
msgid ""
"lookup of `%D' in the scope of `%#T' (`%#D') does not match lookup in the "
"current scope (`%#D')"
msgstr ""
-#: cp/decl.c:7024
+#: cp/decl.c:7025
msgid "an anonymous union cannot have function members"
msgstr ""
-#: cp/decl.c:7041
+#: cp/decl.c:7042
msgid "member %#D' with constructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:7044
+#: cp/decl.c:7045
msgid "member %#D' with destructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:7047
+#: cp/decl.c:7048
msgid ""
"member %#D' with copy assignment operator not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:7085
+#: cp/decl.c:7086
msgid "redeclaration of C++ built-in type `%T'"
msgstr ""
-#: cp/decl.c:7120
+#: cp/decl.c:7122
msgid "multiple types in one declaration"
msgstr ""
-#: cp/decl.c:7123
-msgid "declaration does not declare anything"
-msgstr ""
-
-#: cp/decl.c:7147
+#: cp/decl.c:7149
msgid "missing type-name in typedef-declaration"
msgstr ""
-#: cp/decl.c:7154
+#: cp/decl.c:7156
msgid "ISO C++ prohibits anonymous structs"
msgstr ""
-#: cp/decl.c:7161
+#: cp/decl.c:7163
msgid "`%D' can only be specified for functions"
msgstr ""
-#: cp/decl.c:7163
+#: cp/decl.c:7165
msgid "`%D' can only be specified inside a class"
msgstr ""
-#: cp/decl.c:7165
+#: cp/decl.c:7167
msgid "`%D' can only be specified for constructors"
msgstr ""
-#: cp/decl.c:7168
+#: cp/decl.c:7170
msgid "`%D' can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:7317
-msgid "typedef `%D' is initialized"
+#: cp/decl.c:7312 cp/decl2.c:927
+msgid "typedef `%D' is initialized (use __typeof__ instead)"
msgstr ""
-#: cp/decl.c:7323
+#: cp/decl.c:7317
msgid "function `%#D' is initialized like a variable"
msgstr ""
-#: cp/decl.c:7335
+#: cp/decl.c:7329
msgid "declaration of `%#D' has `extern' and is initialized"
msgstr ""
-#: cp/decl.c:7369
+#: cp/decl.c:7363
msgid "`%#D' is not a static member of `%#T'"
msgstr ""
-#: cp/decl.c:7374
+#: cp/decl.c:7368
msgid "ISO C++ does not permit `%T::%D' to be defined as `%T::%D'"
msgstr ""
-#: cp/decl.c:7385
+#: cp/decl.c:7379
msgid "duplicate initialization of %D"
msgstr ""
-#: cp/decl.c:7414
+#: cp/decl.c:7408
msgid "declaration of `%#D' outside of class is not definition"
msgstr ""
-#: cp/decl.c:7462
+#: cp/decl.c:7456
msgid "variable `%#D' has initializer but incomplete type"
msgstr ""
-#: cp/decl.c:7470 cp/decl.c:7821
+#: cp/decl.c:7464 cp/decl.c:8006
msgid "elements of array `%#D' have incomplete type"
msgstr ""
-#: cp/decl.c:7486
+#: cp/decl.c:7480
msgid "aggregate `%#D' has incomplete type and cannot be defined"
msgstr ""
-#: cp/decl.c:7525
+#: cp/decl.c:7519
msgid "`%D' declared as reference but not initialized"
msgstr ""
-#: cp/decl.c:7534
+#: cp/decl.c:7528
msgid "ISO C++ forbids use of initializer list to initialize reference `%D'"
msgstr ""
-#: cp/decl.c:7567
+#: cp/decl.c:7561
msgid "cannot initialize `%T' from `%T'"
msgstr ""
-#: cp/decl.c:7628
+#: cp/decl.c:7595
msgid "initializer fails to determine size of `%D'"
msgstr ""
-#: cp/decl.c:7633
+#: cp/decl.c:7600
msgid "array size missing in `%D'"
msgstr ""
-#: cp/decl.c:7645
+#: cp/decl.c:7612
msgid "zero-size array `%D'"
msgstr ""
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:7678
+#: cp/decl.c:7650
msgid "storage size of `%D' isn't known"
msgstr ""
-#: cp/decl.c:7700
+#: cp/decl.c:7672
msgid "storage size of `%D' isn't constant"
msgstr ""
-#: cp/decl.c:7751
+#: cp/decl.c:7723
msgid ""
"sorry: semantics of inline function static data `%#D' are wrong (you'll wind "
"up with multiple copies)"
msgstr ""
-#: cp/decl.c:7752
+#: cp/decl.c:7724
msgid " you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:7780
+#: cp/decl.c:7752
msgid "uninitialized const `%D'"
msgstr ""
-#: cp/decl.c:7815
+#: cp/decl.c:7836
+msgid "brace-enclosed initializer used to initialize `%T'"
+msgstr ""
+
+#: cp/decl.c:7900
+msgid "initializer for `%T' must be brace-enclosed"
+msgstr ""
+
+#: cp/decl.c:7964
+msgid "too many initializers for `%T'"
+msgstr ""
+
+#: cp/decl.c:8000
msgid "variable-sized object `%D' may not be initialized"
msgstr ""
-#: cp/decl.c:7826 cp/typeck2.c:201
+#: cp/decl.c:8011
msgid "`%D' has incomplete type"
msgstr ""
-#: cp/decl.c:7858
+#: cp/decl.c:8060
msgid "`%D' must be initialized by constructor, not by `{...}'"
msgstr ""
-#: cp/decl.c:7888
+#: cp/decl.c:8101
msgid "structure `%D' with uninitialized const members"
msgstr ""
-#: cp/decl.c:7890
+#: cp/decl.c:8103
msgid "structure `%D' with uninitialized reference members"
msgstr ""
-#: cp/decl.c:8157
+#: cp/decl.c:8346
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:8169
+#: cp/decl.c:8358
msgid "cannot initialize `%D' to namespace `%D'"
msgstr ""
-#: cp/decl.c:8226
+#: cp/decl.c:8409
msgid "shadowing previous type declaration of `%#D'"
msgstr ""
-#: cp/decl.c:8624
+#: cp/decl.c:8455
+msgid "`%D' cannot be thread-local because it has non-POD type `%T'"
+msgstr ""
+
+#: cp/decl.c:8470
+msgid "`%D' is thread-local and so cannot be dynamically initialized"
+msgstr ""
+
+#: cp/decl.c:8864 cp/init.c:547
msgid "multiple initializations given for `%D'"
msgstr ""
-#: cp/decl.c:8724
+#: cp/decl.c:8956
msgid "invalid catch parameter"
msgstr ""
-#: cp/decl.c:8842
+#: cp/decl.c:9074
msgid "destructor for alien class `%T' cannot be a member"
msgstr ""
-#: cp/decl.c:8845
+#: cp/decl.c:9077
msgid "constructor for alien class `%T' cannot be a member"
msgstr ""
-#: cp/decl.c:8864
+#: cp/decl.c:9096
msgid "`%D' declared as a `virtual' %s"
msgstr ""
-#: cp/decl.c:8866
+#: cp/decl.c:9098
msgid "`%D' declared as an `inline' %s"
msgstr ""
-#: cp/decl.c:8868
+#: cp/decl.c:9100
msgid ""
"`const' and `volatile' function specifiers on `%D' invalid in %s declaration"
msgstr ""
-#: cp/decl.c:8871
+#: cp/decl.c:9103
msgid "`%D' declared as a friend"
msgstr ""
-#: cp/decl.c:8877
+#: cp/decl.c:9109
msgid "`%D' declared with an exception specification"
msgstr ""
-#: cp/decl.c:8952
+#: cp/decl.c:9184
msgid "cannot declare `::main' to be a template"
msgstr ""
-#: cp/decl.c:8954
+#: cp/decl.c:9186
msgid "cannot declare `::main' to be inline"
msgstr ""
-#: cp/decl.c:8956
+#: cp/decl.c:9188
msgid "cannot declare `::main' to be static"
msgstr ""
-#: cp/decl.c:8959
+#: cp/decl.c:9191
msgid "`main' must return `int'"
msgstr ""
-#: cp/decl.c:8987
+#: cp/decl.c:9219
msgid "non-local function `%#D' uses anonymous type"
msgstr ""
-#: cp/decl.c:8990
+#: cp/decl.c:9222
msgid ""
"`%#D' does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl.c:8996
+#: cp/decl.c:9228
msgid "non-local function `%#D' uses local type `%T'"
msgstr ""
-#: cp/decl.c:9019
+#: cp/decl.c:9251
msgid "%smember function `%D' cannot have `%T' method qualifier"
msgstr ""
-#: cp/decl.c:9043
+#: cp/decl.c:9275
msgid "defining explicit specialization `%D' in friend declaration"
msgstr ""
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:9053
+#: cp/decl.c:9285
msgid "invalid use of template-id `%D' in declaration of primary template"
msgstr ""
-#: cp/decl.c:9081
+#: cp/decl.c:9313
msgid ""
"default arguments are not allowed in declaration of friend template "
"specialization `%D'"
msgstr ""
-#: cp/decl.c:9088
+#: cp/decl.c:9320
msgid ""
"`inline' is not allowed in declaration of friend template specialization `%D'"
msgstr ""
-#: cp/decl.c:9150
+#: cp/decl.c:9382
msgid "definition of implicitly-declared `%D'"
msgstr ""
-#: cp/decl.c:9162 cp/decl2.c:1358
+#: cp/decl.c:9394 cp/decl2.c:776
msgid "no `%#D' member function declared in class `%T'"
msgstr ""
-#: cp/decl.c:9281
+#: cp/decl.c:9527
msgid "non-local variable `%#D' uses local type `%T'"
msgstr ""
-#: cp/decl.c:9371
+#: cp/decl.c:9625
msgid ""
"invalid in-class initialization of static data member of non-integral type `%"
"T'"
msgstr ""
-#: cp/decl.c:9380
+#: cp/decl.c:9634
msgid "ISO C++ forbids in-class initialization of non-const static member `%D'"
msgstr ""
-#: cp/decl.c:9383
+#: cp/decl.c:9637
msgid ""
"ISO C++ forbids initialization of member constant `%D' of non-integral type `"
"%T'"
msgstr ""
-#: cp/decl.c:9433
+#: cp/decl.c:9687
msgid "size of array `%D' has non-integer type"
msgstr ""
-#: cp/decl.c:9435
+#: cp/decl.c:9689
msgid "size of array has non-integer type"
msgstr ""
-#: cp/decl.c:9455
+#: cp/decl.c:9709
msgid "size of array `%D' is negative"
msgstr ""
-#: cp/decl.c:9457
+#: cp/decl.c:9711
msgid "size of array is negative"
msgstr ""
-#: cp/decl.c:9466
+#: cp/decl.c:9720
msgid "ISO C++ forbids zero-size array `%D'"
msgstr ""
-#: cp/decl.c:9468
+#: cp/decl.c:9722
msgid "ISO C++ forbids zero-size array"
msgstr ""
-#: cp/decl.c:9475
+#: cp/decl.c:9729
msgid "size of array `%D' is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:9478
+#: cp/decl.c:9732
msgid "size of array is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:9496
+#: cp/decl.c:9750
msgid "ISO C++ forbids variable-size array `%D'"
msgstr ""
-#: cp/decl.c:9499
+#: cp/decl.c:9753
msgid "ISO C++ forbids variable-size array"
msgstr ""
-#: cp/decl.c:9510
+#: cp/decl.c:9764
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:9569
+#: cp/decl.c:9823
msgid "declaration of `%D' as %s"
msgstr ""
-#: cp/decl.c:9571
+#: cp/decl.c:9825
#, c-format
msgid "creating %s"
msgstr ""
-#: cp/decl.c:9583
+#: cp/decl.c:9837
msgid ""
"declaration of `%D' as multidimensional array must have bounds for all "
"dimensions except the first"
msgstr ""
-#: cp/decl.c:9586
+#: cp/decl.c:9840
msgid ""
"multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:9615
+#: cp/decl.c:9869
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:9622
+#: cp/decl.c:9876
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:9628
+#: cp/decl.c:9882
msgid "operator `%T' declared to return `%T'"
msgstr ""
-#: cp/decl.c:9630
+#: cp/decl.c:9884
msgid "return type specified for `operator %T'"
msgstr ""
-#: cp/decl.c:9798
+#: cp/decl.c:10052
msgid "destructors must be member functions"
msgstr ""
-#: cp/decl.c:9817
+#: cp/decl.c:10071
msgid "destructor `%T' must match class name `%T'"
msgstr ""
-#: cp/decl.c:9867
+#: cp/decl.c:10100
+msgid "variable declaration is not allowed here"
+msgstr ""
+
+#: cp/decl.c:10127
msgid "invalid declarator"
msgstr ""
-#: cp/decl.c:9920
+#: cp/decl.c:10178
msgid "declarator-id missing; using reserved word `%D'"
msgstr ""
-#: cp/decl.c:9977
+#: cp/decl.c:10235
msgid "type `%T' is not derived from type `%T'"
msgstr ""
#. Parse error puts this typespec where
#. a declarator should go.
-#: cp/decl.c:10023
+#: cp/decl.c:10279
msgid "`%T' specified as declarator-id"
msgstr ""
-#: cp/decl.c:10025
+#: cp/decl.c:10281
msgid " perhaps you want `%T' for a constructor"
msgstr ""
-#: cp/decl.c:10039
-msgid "`%D' as declarator"
+#. Sometimes, we see a template-name used as part of a
+#. decl-specifier like in
+#. std::allocator alloc;
+#. Handle that gracefully.
+#: cp/decl.c:10303
+#, c-format
+msgid "invalid use of template-name '%E' in a declarator"
msgstr ""
-#: cp/decl.c:10054
+#: cp/decl.c:10323
msgid "declaration of `%D' as non-function"
msgstr ""
-#: cp/decl.c:10131
+#: cp/decl.c:10400
msgid "`bool' is now a keyword"
msgstr ""
-#: cp/decl.c:10133
+#: cp/decl.c:10402
msgid "extraneous `%T' ignored"
msgstr ""
-#: cp/decl.c:10149 cp/decl.c:10182
+#: cp/decl.c:10418 cp/decl.c:10463
msgid "multiple declarations `%T' and `%T'"
msgstr ""
-#: cp/decl.c:10162
+#: cp/decl.c:10431
msgid "ISO C++ does not support `long long'"
msgstr ""
-#: cp/decl.c:10255 cp/decl.c:10258
+#: cp/decl.c:10536 cp/decl.c:10539
#, c-format
msgid "ISO C++ forbids declaration of `%s' with no type"
msgstr ""
#. The implicit typename extension is deprecated and will be
#. removed. Warn about its use now.
-#: cp/decl.c:10268
+#: cp/decl.c:10549
msgid "`%T' is implicitly a typename"
msgstr ""
-#: cp/decl.c:10304
+#: cp/decl.c:10585
#, c-format
msgid "short, signed or unsigned invalid for `%s'"
msgstr ""
-#: cp/decl.c:10309
+#: cp/decl.c:10590
#, c-format
msgid "long and short specified together for `%s'"
msgstr ""
-#: cp/decl.c:10320
+#: cp/decl.c:10601
#, c-format
msgid "signed and unsigned given together for `%s'"
msgstr ""
-#: cp/decl.c:10429
+#: cp/decl.c:10710
msgid "qualifiers are not allowed on declaration of `operator %T'"
msgstr ""
-#: cp/decl.c:10451
+#: cp/decl.c:10732
msgid "member `%D' cannot be declared both virtual and static"
msgstr ""
-#: cp/decl.c:10460
+#: cp/decl.c:10741
msgid "`%T::%D' is not a valid declarator"
msgstr ""
-#: cp/decl.c:10471
+#: cp/decl.c:10753
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:10475
+#: cp/decl.c:10757
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:10488
+#: cp/decl.c:10770
msgid "virtual outside class declaration"
msgstr ""
-#: cp/decl.c:10542
+#: cp/decl.c:10831
#, c-format
msgid "storage class specified for %s `%s'"
msgstr ""
-#: cp/decl.c:10580
+#: cp/decl.c:10878
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:10684
-msgid "size of member `%D' is not constant"
-msgstr ""
-
-#: cp/decl.c:10763
+#: cp/decl.c:11048
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:10766
+#: cp/decl.c:11051
#, c-format
msgid "destructors may not be `%s'"
msgstr ""
-#: cp/decl.c:10787
+#: cp/decl.c:11072
msgid "constructor cannot be static member function"
msgstr ""
-#: cp/decl.c:10790
+#: cp/decl.c:11075
msgid "constructors cannot be declared virtual"
msgstr ""
-#: cp/decl.c:10795
+#: cp/decl.c:11080
#, c-format
msgid "constructors may not be `%s'"
msgstr ""
-#: cp/decl.c:10805
+#: cp/decl.c:11090
msgid "return value type specifier for constructor ignored"
msgstr ""
-#: cp/decl.c:10824
+#: cp/decl.c:11109
#, c-format
msgid "can't initialize friend function `%s'"
msgstr ""
#. Cannot be both friend and virtual.
-#: cp/decl.c:10828
+#: cp/decl.c:11113
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:10833
+#: cp/decl.c:11118
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:10835
+#: cp/decl.c:11120
#, c-format
msgid "can't define friend function `%s' in a local class definition"
msgstr ""
-#: cp/decl.c:10859
+#: cp/decl.c:11144
msgid "destructors may not have parameters"
msgstr ""
-#: cp/decl.c:10889
-#, c-format
-msgid "cannot declare %s to references"
+#: cp/decl.c:11175 cp/decl.c:11182
+msgid "cannot declare reference to `%#T'"
msgstr ""
-#: cp/decl.c:10900
-msgid "cannot declare pointer to `%#T' member"
+#: cp/decl.c:11176
+msgid "cannot declare pointer to `%#T'"
msgstr ""
-#: cp/decl.c:10915
-msgid "invalid type: `void &'"
+#: cp/decl.c:11181
+msgid "cannot declare pointer to `%#T' member"
msgstr ""
-#: cp/decl.c:11077
+#: cp/decl.c:11357
msgid "extra qualification `%T::' on member `%s' ignored"
msgstr ""
-#: cp/decl.c:11087
+#: cp/decl.c:11367
msgid "cannot declare member function `%T::%s' within `%T'"
msgstr ""
-#: cp/decl.c:11102
+#: cp/decl.c:11382
msgid "cannot declare member `%T::%s' within `%T'"
msgstr ""
+#: cp/decl.c:11460
+msgid "data member may not have variably modified type `%T'"
+msgstr ""
+
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:11182
+#: cp/decl.c:11468
msgid "only declarations of constructors can be `explicit'"
msgstr ""
-#: cp/decl.c:11190
+#: cp/decl.c:11476
#, c-format
msgid "non-member `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11195
+#: cp/decl.c:11481
#, c-format
msgid "non-object member `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11201
+#: cp/decl.c:11487
#, c-format
msgid "function `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11206
+#: cp/decl.c:11492
#, c-format
msgid "static `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11211
+#: cp/decl.c:11497
#, c-format
msgid "const `%s' cannot be declared `mutable'"
msgstr ""
-#: cp/decl.c:11224
+#: cp/decl.c:11510
msgid "template-id `%D' used as a declarator"
msgstr ""
-#: cp/decl.c:11245
+#: cp/decl.c:11531
msgid "ISO C++ forbids nested type `%D' with same name as enclosing class"
msgstr ""
-#: cp/decl.c:11292
+#: cp/decl.c:11580
msgid "typedef name may not be class-qualified"
msgstr ""
-#: cp/decl.c:11300
+#: cp/decl.c:11588
msgid "invalid type qualifier for non-member function type"
msgstr ""
-#: cp/decl.c:11316
-msgid "typedef declaration includes an initializer"
-msgstr ""
-
-#: cp/decl.c:11366
+#: cp/decl.c:11651
msgid "type qualifiers specified for friend class declaration"
msgstr ""
-#: cp/decl.c:11371
+#: cp/decl.c:11656
msgid "`inline' specified for friend class declaration"
msgstr ""
-#: cp/decl.c:11381
+#: cp/decl.c:11664
msgid "template parameters cannot be friends"
msgstr ""
-#: cp/decl.c:11383
-msgid "friend declaration requires class-key, i.e. `friend class %T::%T'"
+#: cp/decl.c:11666
+msgid "friend declaration requires class-key, i.e. `friend class %T::%D'"
msgstr ""
-#: cp/decl.c:11388
+#: cp/decl.c:11670
msgid "friend declaration requires class-key, i.e. `friend %#T'"
msgstr ""
-#: cp/decl.c:11402
+#: cp/decl.c:11684
msgid "trying to make class `%T' a friend of global scope"
msgstr ""
-#: cp/decl.c:11413
+#: cp/decl.c:11695
msgid "invalid qualifiers on non-member function type"
msgstr ""
-#: cp/decl.c:11432
+#: cp/decl.c:11714
msgid "abstract declarator `%T' used as declaration"
msgstr ""
-#: cp/decl.c:11444
+#: cp/decl.c:11726
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:11453
+#: cp/decl.c:11735
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:11463
+#: cp/decl.c:11745
msgid "cannot use `::' in parameter declaration"
msgstr ""
#. Something like struct S { int N::j; };
-#: cp/decl.c:11509
+#: cp/decl.c:11784
msgid "invalid use of `::'"
msgstr ""
-#: cp/decl.c:11521
+#: cp/decl.c:11796
msgid "function `%D' cannot be declared friend"
msgstr ""
-#: cp/decl.c:11533
+#: cp/decl.c:11808
msgid "can't make `%D' into a method -- not in a class"
msgstr ""
-#: cp/decl.c:11542
+#: cp/decl.c:11817
msgid "function `%D' declared virtual inside a union"
msgstr ""
-#: cp/decl.c:11554
+#: cp/decl.c:11829
msgid "`%D' cannot be declared virtual, since it is always static"
msgstr ""
-#: cp/decl.c:11627
+#: cp/decl.c:11902
msgid "field `%D' has incomplete type"
msgstr ""
-#: cp/decl.c:11629
+#: cp/decl.c:11904
msgid "name `%T' has incomplete type"
msgstr ""
-#: cp/decl.c:11638
+#: cp/decl.c:11913
msgid " in instantiation of template `%T'"
msgstr ""
-#: cp/decl.c:11648
+#: cp/decl.c:11923
#, c-format
msgid "`%s' is neither function nor member function; cannot be declared friend"
msgstr ""
-#: cp/decl.c:11659
+#: cp/decl.c:11934
msgid "member functions are implicitly friends of their class"
msgstr ""
@@ -14751,101 +15195,106 @@ msgstr ""
#. the rest of the compiler does not correctly
#. handle the initialization unless the member is
#. static so we make it static below.
-#: cp/decl.c:11706
+#: cp/decl.c:11981
msgid "ISO C++ forbids initialization of member `%D'"
msgstr ""
-#: cp/decl.c:11708
+#: cp/decl.c:11983
msgid "making `%D' static"
msgstr ""
-#: cp/decl.c:11732
+#: cp/decl.c:12007
msgid ""
"ISO C++ forbids static data member `%D' with same name as enclosing class"
msgstr ""
-#: cp/decl.c:11773
+#: cp/decl.c:12048
#, c-format
msgid "storage class `auto' invalid for function `%s'"
msgstr ""
-#: cp/decl.c:11775
+#: cp/decl.c:12050
#, c-format
msgid "storage class `register' invalid for function `%s'"
msgstr ""
-#: cp/decl.c:11786
+#: cp/decl.c:12052
+#, c-format
+msgid "storage class `__thread' invalid for function `%s'"
+msgstr ""
+
+#: cp/decl.c:12063
#, c-format
msgid ""
"storage class `static' invalid for function `%s' declared out of global scope"
msgstr ""
-#: cp/decl.c:11788
+#: cp/decl.c:12065
#, c-format
msgid ""
"storage class `inline' invalid for function `%s' declared out of global scope"
msgstr ""
-#: cp/decl.c:11795
+#: cp/decl.c:12072
#, c-format
msgid "virtual non-class function `%s'"
msgstr ""
-#: cp/decl.c:11824
+#: cp/decl.c:12101
msgid "cannot declare member function `%D' to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:11830
+#: cp/decl.c:12107
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:11858
+#: cp/decl.c:12135
msgid ""
"`static' may not be used when defining (as opposed to declaring) a static "
"data member"
msgstr ""
-#: cp/decl.c:11864
+#: cp/decl.c:12141
msgid "static member `%D' declared `register'"
msgstr ""
-#: cp/decl.c:11869
+#: cp/decl.c:12146
msgid "cannot explicitly declare member `%#D' to have extern linkage"
msgstr ""
-#: cp/decl.c:12041
+#: cp/decl.c:12318
msgid "default argument for `%#D' has type `%T'"
msgstr ""
-#: cp/decl.c:12044
+#: cp/decl.c:12321
msgid "default argument for parameter of type `%T' has type `%T'"
msgstr ""
-#: cp/decl.c:12061
+#: cp/decl.c:12338
msgid "default argument `%E' uses local variable `%D'"
msgstr ""
-#: cp/decl.c:12106
+#: cp/decl.c:12383
#, c-format
msgid "invalid string constant `%E'"
msgstr ""
-#: cp/decl.c:12108
+#: cp/decl.c:12385
msgid ""
"invalid integer constant in parameter list, did you forget to give parameter "
"name?"
msgstr ""
-#: cp/decl.c:12146
+#: cp/decl.c:12423
msgid "parameter `%D' invalidly declared method type"
msgstr ""
-#: cp/decl.c:12152
+#: cp/decl.c:12429
msgid "parameter `%D' invalidly declared offset type"
msgstr ""
-#: cp/decl.c:12176
+#: cp/decl.c:12453
msgid "parameter `%D' includes %s to array of unknown bound `%T'"
msgstr ""
@@ -14864,563 +15313,549 @@ msgstr ""
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:12343
+#: cp/decl.c:12615
msgid "invalid constructor; you probably meant `%T (const %T&)'"
msgstr ""
-#: cp/decl.c:12494
+#: cp/decl.c:12766
msgid "`%D' must be a nonstatic member function"
msgstr ""
-#: cp/decl.c:12500
+#: cp/decl.c:12772
msgid ""
"`%D' must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:12517
+#: cp/decl.c:12789
msgid "`%D' must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:12549
+#: cp/decl.c:12821
#, c-format
msgid "conversion to %s%s will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:12556
+#: cp/decl.c:12828
msgid "ISO C++ prohibits overloading operator ?:"
msgstr ""
-#: cp/decl.c:12606
+#: cp/decl.c:12878
msgid "postfix `%D' must take `int' as its argument"
msgstr ""
-#: cp/decl.c:12610
+#: cp/decl.c:12882
msgid "postfix `%D' must take `int' as its second argument"
msgstr ""
-#: cp/decl.c:12617
+#: cp/decl.c:12889
msgid "`%D' must take either zero or one argument"
msgstr ""
-#: cp/decl.c:12619
+#: cp/decl.c:12891
msgid "`%D' must take either one or two arguments"
msgstr ""
-#: cp/decl.c:12640
+#: cp/decl.c:12912
msgid "prefix `%D' should return `%T'"
msgstr ""
-#: cp/decl.c:12646
+#: cp/decl.c:12918
msgid "postfix `%D' should return `%T'"
msgstr ""
-#: cp/decl.c:12655
+#: cp/decl.c:12927
msgid "`%D' must take `void'"
msgstr ""
-#: cp/decl.c:12657 cp/decl.c:12665
+#: cp/decl.c:12929 cp/decl.c:12937
msgid "`%D' must take exactly one argument"
msgstr ""
-#: cp/decl.c:12667
+#: cp/decl.c:12939
msgid "`%D' must take exactly two arguments"
msgstr ""
-#: cp/decl.c:12675
+#: cp/decl.c:12947
msgid "user-defined `%D' always evaluates both arguments"
msgstr ""
-#: cp/decl.c:12687
+#: cp/decl.c:12961
msgid "`%D' should return by value"
msgstr ""
-#: cp/decl.c:12699 cp/decl.c:12702
+#: cp/decl.c:12973 cp/decl.c:12976
msgid "`%D' cannot have default arguments"
msgstr ""
-#: cp/decl.c:12793
+#: cp/decl.c:13052
msgid "`%s %T' declares a new type at namespace scope"
msgstr ""
-#: cp/decl.c:12796
+#: cp/decl.c:13055
msgid ""
" names from dependent base classes are not visible to unqualified name "
"lookup - to refer to the inherited type, say `%s %T::%T'"
msgstr ""
-#: cp/decl.c:12834
+#: cp/decl.c:13093
msgid "using typedef-name `%D' after `%s'"
msgstr ""
-#: cp/decl.c:12839
+#: cp/decl.c:13098
msgid "using template type parameter `%T' after `%s'"
msgstr ""
-#: cp/decl.c:12919
+#: cp/decl.c:13178
msgid "use of enum `%#D' without previous declaration"
msgstr ""
-#: cp/decl.c:13017
+#: cp/decl.c:13264
msgid "derived union `%T' invalid"
msgstr ""
-#: cp/decl.c:13061
+#: cp/decl.c:13310
msgid "base type `%T' fails to be a struct or class type"
msgstr ""
-#: cp/decl.c:13071
+#: cp/decl.c:13320
msgid "base class `%T' has incomplete type"
msgstr ""
-#: cp/decl.c:13079
+#: cp/decl.c:13328
msgid "recursive type `%T' undefined"
msgstr ""
-#: cp/decl.c:13081
+#: cp/decl.c:13330
msgid "duplicate base type `%T' invalid"
msgstr ""
-#: cp/decl.c:13192
+#: cp/decl.c:13441
msgid "multiple definition of `%#T'"
msgstr ""
-#: cp/decl.c:13193
+#: cp/decl.c:13442
msgid "previous definition here"
msgstr ""
-#: cp/decl.c:13364
+#: cp/decl.c:13610
msgid "enumerator value for `%D' not integer constant"
msgstr ""
-#: cp/decl.c:13384
+#: cp/decl.c:13630
msgid "overflow in enumeration values at `%D'"
msgstr ""
-#: cp/decl.c:13470
+#: cp/decl.c:13716
msgid "return type `%#T' is incomplete"
msgstr ""
-#: cp/decl.c:13586
+#: cp/decl.c:13830
msgid "semicolon missing after declaration of `%#T'"
msgstr ""
-#: cp/decl.c:13607
+#: cp/decl.c:13851
msgid "return type for `main' changed to `int'"
msgstr ""
-#: cp/decl.c:13638
+#: cp/decl.c:13882
msgid "`%D' implicitly declared before its definition"
msgstr ""
-#: cp/decl.c:13660 cp/typeck.c:6541
+#: cp/decl.c:13904 cp/typeck.c:6229
msgid "`operator=' should return a reference to `*this'"
msgstr ""
-#: cp/decl.c:13924
+#: cp/decl.c:14164
msgid "parameter `%D' declared void"
msgstr ""
-#: cp/decl.c:14392
+#: cp/decl.c:14628
msgid "`%D' is already defined in class `%T'"
msgstr ""
-#: cp/decl.c:14609
+#: cp/decl.c:14845
msgid "static member function `%#D' declared with type qualifiers"
msgstr ""
-#: cp/decl2.c:521
-#, c-format
-msgid "-f%s is no longer supported"
-msgstr ""
-
-#: cp/decl2.c:527
-msgid ""
-"-fhandle-exceptions has been renamed to -fexceptions (and is now on by "
-"default)"
-msgstr ""
-
-#: cp/decl2.c:553
-msgid "-fname-mangling-version is no longer supported"
-msgstr ""
-
-#: cp/decl2.c:613
-msgid "-Wno-strict-prototypes is not supported in C++"
-msgstr ""
-
-#: cp/decl2.c:752
+#: cp/decl2.c:154
#, c-format
msgid "duplicate type qualifiers in %s declaration"
msgstr ""
-#: cp/decl2.c:791
+#: cp/decl2.c:193
msgid "template `%#D' instantiated in file without #pragma interface"
msgstr ""
-#: cp/decl2.c:797
+#: cp/decl2.c:199
msgid "template `%#D' defined in file without #pragma interface"
msgstr ""
-#: cp/decl2.c:954
+#: cp/decl2.c:366
msgid "name missing for member function"
msgstr ""
#. Something has gone very wrong. Assume we are mistakenly reducing
#. an expression instead of a declaration.
-#: cp/decl2.c:1017
+#: cp/decl2.c:429
msgid "parser may be lost: is there a '{' missing somewhere?"
msgstr ""
-#: cp/decl2.c:1048 cp/decl2.c:1062
+#: cp/decl2.c:460 cp/decl2.c:474
msgid "ambiguous conversion for array subscript"
msgstr ""
-#: cp/decl2.c:1056
+#: cp/decl2.c:468
msgid "invalid types `%T[%T]' for array subscript"
msgstr ""
-#: cp/decl2.c:1104
+#: cp/decl2.c:516
msgid "type `%#T' argument given to `delete', expected pointer"
msgstr ""
-#: cp/decl2.c:1112
+#: cp/decl2.c:524
msgid "anachronistic use of array size in vector delete"
msgstr ""
-#: cp/decl2.c:1122
+#: cp/decl2.c:534
msgid ""
"cannot delete a function. Only pointer-to-objects are valid arguments to "
"`delete'"
msgstr ""
-#: cp/decl2.c:1129
+#: cp/decl2.c:541
msgid "deleting `%T' is undefined"
msgstr ""
-#: cp/decl2.c:1137
+#: cp/decl2.c:549
msgid "deleting array `%#D'"
msgstr ""
#. 14.5.2.2 [temp.mem]
#.
#. A local class shall not have member templates.
-#: cp/decl2.c:1171
+#: cp/decl2.c:583
msgid "invalid declaration of member template `%#D' in local class"
msgstr ""
-#: cp/decl2.c:1180
+#: cp/decl2.c:592
msgid "invalid use of `virtual' in template declaration of `%#D'"
msgstr ""
-#: cp/decl2.c:1190 cp/pt.c:2584
+#: cp/decl2.c:602 cp/pt.c:2586
msgid "template declaration of `%#D'"
msgstr ""
-#: cp/decl2.c:1240
+#: cp/decl2.c:652
msgid "Java method '%D' has non-Java return type `%T'"
msgstr ""
-#: cp/decl2.c:1249
+#: cp/decl2.c:661
msgid "Java method '%D' has non-Java parameter type `%T'"
msgstr ""
-#: cp/decl2.c:1345
+#: cp/decl2.c:737
msgid "prototype for `%#D' does not match any in class `%T'"
msgstr ""
-#: cp/decl2.c:1347
-msgid "candidate%s: %+#D"
-msgstr ""
-
-#: cp/decl2.c:1350
-msgid " %#D"
-msgstr ""
-
-#: cp/decl2.c:1402
+#: cp/decl2.c:819
msgid "local class `%#T' shall not have static data member `%#D'"
msgstr ""
-#: cp/decl2.c:1410
+#: cp/decl2.c:827
msgid "initializer invalid for static member with constructor"
msgstr ""
-#: cp/decl2.c:1413
+#: cp/decl2.c:830
msgid "(an out of class initialization is required)"
msgstr ""
-#: cp/decl2.c:1472
+#: cp/decl2.c:889
msgid "invalid data member initialization"
msgstr ""
-#: cp/decl2.c:1475
+#: cp/decl2.c:892
msgid "(use `=' to initialize static data members)"
msgstr ""
-#: cp/decl2.c:1515
+#: cp/decl2.c:938
msgid "member `%D' conflicts with virtual function table field name"
msgstr ""
-#: cp/decl2.c:1535
+#: cp/decl2.c:958
msgid "`%D' is already defined in `%T'"
msgstr ""
-#: cp/decl2.c:1586
+#: cp/decl2.c:1010
msgid "field initializer is not constant"
msgstr ""
-#: cp/decl2.c:1609
+#: cp/decl2.c:1034
msgid "`asm' specifiers are not permitted on non-static data members"
msgstr ""
-#: cp/decl2.c:1661
+#: cp/decl2.c:1086
msgid "cannot declare `%D' to be a bit-field type"
msgstr ""
-#: cp/decl2.c:1671
+#: cp/decl2.c:1096
msgid "cannot declare bit-field `%D' with function type"
msgstr ""
-#: cp/decl2.c:1678
+#: cp/decl2.c:1103
msgid "`%D' is already defined in the class %T"
msgstr ""
-#: cp/decl2.c:1685
+#: cp/decl2.c:1110
msgid "static member `%D' cannot be a bit-field"
msgstr ""
-#: cp/decl2.c:1754
+#: cp/decl2.c:1197
msgid "initializer specified for non-member function `%D'"
msgstr ""
-#: cp/decl2.c:1758
+#: cp/decl2.c:1201
msgid "invalid initializer for virtual method `%D'"
msgstr ""
-#: cp/decl2.c:1862
+#: cp/decl2.c:1315
msgid "anonymous struct not inside named type"
msgstr ""
-#: cp/decl2.c:1958
+#: cp/decl2.c:1411
msgid "namespace-scope anonymous aggregates must be static"
msgstr ""
-#: cp/decl2.c:1968
+#: cp/decl2.c:1424
msgid "anonymous aggregate with no members"
msgstr ""
-#: cp/decl2.c:2035
+#: cp/decl2.c:1493
msgid "`operator new' must return type `%T'"
msgstr ""
-#: cp/decl2.c:2043
+#: cp/decl2.c:1501
msgid "`operator new' takes type `size_t' (`%T') as first parameter"
msgstr ""
-#: cp/decl2.c:2070
+#: cp/decl2.c:1528
msgid "`operator delete' must return type `%T'"
msgstr ""
-#: cp/decl2.c:2078
+#: cp/decl2.c:1536
msgid "`operator delete' takes type `%T' as first parameter"
msgstr ""
#. Overflow occurred. That means there are at least 4 billion
#. initialization functions.
-#: cp/decl2.c:2819
+#: cp/decl2.c:2290
msgid "too many initialization functions required"
msgstr ""
-#: cp/decl2.c:3639
+#: cp/decl2.c:2966
+msgid "inline function `%D' used but never defined"
+msgstr ""
+
+#: cp/decl2.c:3086
msgid "use of old-style cast"
msgstr ""
-#: cp/decl2.c:4220
+#: cp/decl2.c:3794
msgid "use of `%D' is ambiguous"
msgstr ""
-#: cp/decl2.c:4221
+#: cp/decl2.c:3795
msgid " first declared as `%#D' here"
msgstr ""
-#: cp/decl2.c:4224
+#: cp/decl2.c:3798
msgid " also declared as `%#D' here"
msgstr ""
-#: cp/decl2.c:4239
+#: cp/decl2.c:3813
msgid "`%D' denotes an ambiguous type"
msgstr ""
-#: cp/decl2.c:4240
+#: cp/decl2.c:3814
msgid " first type here"
msgstr ""
-#: cp/decl2.c:4241
+#: cp/decl2.c:3815
msgid " other type here"
msgstr ""
-#: cp/decl2.c:4338
+#: cp/decl2.c:3912
msgid "declaration of `%D' not in a namespace surrounding `%D'"
msgstr ""
-#: cp/decl2.c:4372
+#: cp/decl2.c:3946
msgid "`%D' should have been declared inside `%D'"
msgstr ""
-#: cp/decl2.c:4506
+#: cp/decl2.c:4079
msgid "`%D' is not a function,"
msgstr ""
-#: cp/decl2.c:4507
+#: cp/decl2.c:4080
msgid " conflict with `%D'"
msgstr ""
#. The parser did not find it, so it's not there.
-#: cp/decl2.c:4821
+#: cp/decl2.c:4396
msgid "unknown namespace `%D'"
msgstr ""
-#: cp/decl2.c:4855 cp/decl2.c:5125
+#: cp/decl2.c:4430 cp/decl2.c:4707
msgid "`%T' is not a namespace"
msgstr ""
-#: cp/decl2.c:4857
+#: cp/decl2.c:4432
msgid "`%D' is not a namespace"
msgstr ""
-#: cp/decl2.c:4866
+#: cp/decl2.c:4441
msgid "a using-declaration cannot specify a template-id. Try `using %D'"
msgstr ""
-#: cp/decl2.c:4880
+#: cp/decl2.c:4455
msgid "namespace `%D' not allowed in using-declaration"
msgstr ""
-#: cp/decl2.c:4909
+#: cp/decl2.c:4484
msgid "`%D' not declared"
msgstr ""
-#: cp/decl2.c:4960
+#: cp/decl2.c:4535
msgid "`%D' is already declared in this scope"
msgstr ""
-#: cp/decl2.c:4987
+#: cp/decl2.c:4562
msgid "using declaration `%D' introduced ambiguous type `%T'"
msgstr ""
-#: cp/decl2.c:5078
+#: cp/decl2.c:4653
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/decl2.c:5084
+#: cp/decl2.c:4659
msgid "using-declaration for destructor"
msgstr ""
-#: cp/decl2.c:5090
+#: cp/decl2.c:4665
msgid "a using-declaration cannot specify a template-id. Try `using %T::%D'"
msgstr ""
-#: cp/decl2.c:5119
+#: cp/decl2.c:4701
msgid "namespace `%T' undeclared"
msgstr ""
-#: cp/decl2.c:5148
+#: cp/decl2.c:4730
msgid "default argument missing for parameter %P of `%+#D'"
msgstr ""
-#: cp/decl2.c:5238
+#: cp/decl2.c:4829
msgid "extra qualification `%T::' on member `%D' ignored"
msgstr ""
-#: cp/decl2.c:5242
+#: cp/decl2.c:4833
msgid "`%T' does not have a class or union named `%D'"
msgstr ""
-#: cp/decl2.c:5255
+#: cp/decl2.c:4848
msgid "`%T' is not a class or union type"
msgstr ""
-#: cp/error.c:36
+#: cp/decl2.c:4862
+msgid "template argument is required for `%T'"
+msgstr ""
+
+#: cp/error.c:35
#, c-format
msgid "`%s' not supported by %s"
msgstr ""
-#: cp/error.c:576
+#: cp/error.c:571
#, c-format
msgid "<anonymous %s>"
msgstr ""
-#: cp/error.c:813
+#: cp/error.c:808
#, c-format
msgid "(static %s for %s)"
msgstr ""
-#: cp/error.c:2434
+#: cp/error.c:1482
+#, c-format
+msgid "\\x%x"
+msgstr ""
+
+#: cp/error.c:2430
#, c-format
msgid "In %s `%s':"
msgstr ""
-#: cp/error.c:2489
+#: cp/error.c:2487
#, c-format
msgid "%s: In instantiation of `%s':\n"
msgstr ""
-#: cp/error.c:2513
+#: cp/error.c:2511
#, c-format
msgid "%s:%d: instantiated from `%s'\n"
msgstr ""
-#: cp/error.c:2518
+#: cp/error.c:2516
#, c-format
msgid "%s:%d: instantiated from here\n"
msgstr ""
#. damn ICE suppression
-#: cp/error.c:2671
+#: cp/error.c:2670
#, c-format
msgid "unexpected letter `%c' in locate_error\n"
msgstr ""
#. Can't throw a reference.
-#: cp/except.c:245
+#: cp/except.c:240
msgid "type `%T' is disallowed in Java `throw' or `catch'"
msgstr ""
-#: cp/except.c:256
+#: cp/except.c:251
msgid "call to Java `catch' or `throw' with `jthrowable' undefined"
msgstr ""
#. Thrown object must be a Throwable.
-#: cp/except.c:263
+#: cp/except.c:258
msgid "type `%T' is not derived from `java::lang::Throwable'"
msgstr ""
-#: cp/except.c:327
+#: cp/except.c:322
msgid "mixing C++ and Java catches in a single translation unit"
msgstr ""
-#: cp/except.c:641
+#: cp/except.c:639
msgid "throwing NULL, which has integral, not pointer type"
msgstr ""
-#: cp/except.c:732
+#: cp/except.c:730
msgid " in thrown expression"
msgstr ""
-#: cp/except.c:858
+#: cp/except.c:856
msgid ""
"expression '%E' of abstract class type '%T' cannot be used in throw-"
"expression"
msgstr ""
-#: cp/except.c:946
+#: cp/except.c:944
msgid "exception of type `%T' will be caught"
msgstr ""
-#: cp/except.c:949
+#: cp/except.c:947
msgid " by earlier handler for `%T'"
msgstr ""
-#: cp/except.c:970
+#: cp/except.c:968
msgid "`...' handler must be the last handler for its try block"
msgstr ""
@@ -15432,140 +15867,127 @@ msgstr ""
msgid "previous friend declaration of `%D'"
msgstr ""
-#: cp/friend.c:197
+#: cp/friend.c:202
msgid "invalid type `%T' declared `friend'"
msgstr ""
#. [temp.friend]
-#.
#. Friend declarations shall not declare partial
#. specializations.
-#: cp/friend.c:209
+#: cp/friend.c:218
msgid "partial specialization `%T' declared `friend'"
msgstr ""
-#: cp/friend.c:221
+#: cp/friend.c:227
msgid "class `%T' is implicitly friends with itself"
msgstr ""
#. template <class T> friend typename S<T>::X;
-#: cp/friend.c:239
+#: cp/friend.c:245
msgid "typename type `%#T' declared `friend'"
msgstr ""
#. template <class T> friend class T;
-#: cp/friend.c:245
+#: cp/friend.c:251
msgid "template parameter type `%T' declared `friend'"
msgstr ""
#. template <class T> friend class A; where A is not a template
-#: cp/friend.c:251
+#: cp/friend.c:257
msgid "`%#T' is not a template"
msgstr ""
-#: cp/friend.c:266
+#: cp/friend.c:272
msgid "`%T' is already a friend of `%T'"
msgstr ""
-#: cp/friend.c:362
+#: cp/friend.c:370
msgid "member `%D' declared as friend before type `%T' defined"
msgstr ""
-#: cp/friend.c:417
+#: cp/friend.c:425
msgid "friend declaration `%#D' declares a non-template function"
msgstr ""
-#: cp/friend.c:420
+#: cp/friend.c:428
msgid ""
"(if this is not what you intended, make sure the function template has "
"already been declared and add <> after the function name here) -Wno-non-"
"template-friend disables this warning"
msgstr ""
-#: cp/g++spec.c:198 java/jvspec.c:424
+#: cp/g++spec.c:209 java/jvspec.c:423
#, c-format
msgid "argument to `%s' missing\n"
msgstr ""
-#: cp/init.c:264
+#: cp/init.c:320
+msgid "`%D' should be initialized in the member initialization list"
+msgstr ""
+
+#: cp/init.c:369
msgid "default-initialization of `%#D', which has reference type"
msgstr ""
-#: cp/init.c:269
+#: cp/init.c:374
msgid "uninitialized reference member `%D'"
msgstr ""
-#: cp/init.c:277
+#: cp/init.c:382
msgid "initializer list treated as compound expression"
msgstr ""
-#: cp/init.c:389
-msgid "member initializers for `%#D'"
+#: cp/init.c:523
+msgid "`%D' will be initialized after"
msgstr ""
-#: cp/init.c:391
-msgid " and `%#D'"
+#: cp/init.c:526
+msgid "base `%T' will be initialized after"
msgstr ""
-#: cp/init.c:392
-msgid " will be re-ordered to match declaration order"
+#: cp/init.c:529
+msgid " `%#D'"
msgstr ""
-#: cp/init.c:407
-msgid "multiple initializations given for member `%D'"
+#: cp/init.c:531
+msgid " base `%T'"
msgstr ""
-#: cp/init.c:479
-msgid "initializations for multiple members of `%T'"
-msgstr ""
-
-#: cp/init.c:596
-msgid "base initializers for `%#T'"
+#: cp/init.c:549
+msgid "multiple initializations given for base `%T'"
msgstr ""
-#: cp/init.c:597
-msgid " and `%#T'"
-msgstr ""
-
-#: cp/init.c:598
-msgid " will be re-ordered to match inheritance order"
-msgstr ""
-
-#: cp/init.c:610
-msgid "base class `%T' already initialized"
+#: cp/init.c:616
+msgid "initializations for multiple members of `%T'"
msgstr ""
-#: cp/init.c:681
+#: cp/init.c:671
msgid ""
"base class `%#T' should be explicitly initialized in the copy constructor"
msgstr ""
-#: cp/init.c:724
-msgid "`%D' should be initialized in the member initialization list"
-msgstr ""
-
-#: cp/init.c:966
+#: cp/init.c:916
msgid "class `%T' does not have any field named `%D'"
msgstr ""
-#: cp/init.c:972
+#: cp/init.c:922
msgid ""
"field `%#D' is static; the only point of initialization is its definition"
msgstr ""
-#: cp/init.c:1011
+#: cp/init.c:956
msgid "unnamed initializer for `%T', which has no base classes"
msgstr ""
-#: cp/init.c:1018
+#: cp/init.c:963
msgid "unnamed initializer for `%T', which uses multiple inheritance"
msgstr ""
-#: cp/init.c:1047
+#: cp/init.c:1000
msgid "type `%D' is not a direct or virtual base of `%T'"
msgstr ""
-#: cp/init.c:1050
+#: cp/init.c:1003
msgid "type `%D' is not a direct base of `%T'"
msgstr ""
@@ -15581,554 +16003,522 @@ msgstr ""
#. COMPLEX zees(1.0, 0.0)[10];
#. }
#.
-#: cp/init.c:1144
+#: cp/init.c:1097
msgid "bad array initializer"
msgstr ""
-#: cp/init.c:1356
+#: cp/init.c:1304
msgid "`%T' is not an aggregate type"
msgstr ""
-#: cp/init.c:1379
+#: cp/init.c:1327
msgid "`%T' fails to be an aggregate typedef"
msgstr ""
-#: cp/init.c:1388
+#: cp/init.c:1336
msgid "type `%T' is of non-aggregate type"
msgstr ""
-#: cp/init.c:1490
+#: cp/init.c:1439
msgid "cannot call destructor `%T::~%T' without object"
msgstr ""
-#: cp/init.c:1529
+#: cp/init.c:1483
msgid "invalid use of non-static field `%D'"
msgstr ""
#. We can get here when processing a bad default
#. argument, like:
#. struct S { int a; void f(int i = a); }
-#: cp/init.c:1538 cp/method.c:163
+#: cp/init.c:1492 cp/method.c:160
msgid "invalid use of member `%D'"
msgstr ""
-#: cp/init.c:1548
+#: cp/init.c:1502
msgid "no method `%T::%D'"
msgstr ""
-#: cp/init.c:1641
+#: cp/init.c:1595
msgid "incomplete type `%T' does not have member `%D'"
msgstr ""
-#: cp/init.c:1710
+#: cp/init.c:1669
msgid "`%D' is not a member of type `%T'"
msgstr ""
-#: cp/init.c:1729
-msgid "illegal pointer to bit-field `%D'"
+#: cp/init.c:1688
+msgid "invalid pointer to bit-field `%D'"
msgstr ""
-#: cp/init.c:1768
+#: cp/init.c:1727
msgid "object missing in use of pointer-to-member construct"
msgstr ""
-#: cp/init.c:1808
+#: cp/init.c:1767
msgid "member `%D' is non-static but referenced as a static member"
msgstr ""
-#: cp/init.c:1810 cp/typeck.c:3142 cp/typeck.c:3250
+#: cp/init.c:1769 cp/typeck.c:2828 cp/typeck.c:2932
msgid "at this point in file"
msgstr ""
-#: cp/init.c:1845 cp/typeck.c:2941
+#: cp/init.c:1806
#, c-format
msgid "object missing in `%E'"
msgstr ""
-#: cp/init.c:1976
+#: cp/init.c:1937
msgid "new of array type fails to specify size"
msgstr ""
-#: cp/init.c:1987
+#: cp/init.c:1948
msgid "size in array new must have integral type"
msgstr ""
-#: cp/init.c:1993
+#: cp/init.c:1954
msgid "zero size array reserves no space"
msgstr ""
-#: cp/init.c:2058
+#: cp/init.c:2019
msgid "new cannot be applied to a reference type"
msgstr ""
-#: cp/init.c:2064
+#: cp/init.c:2025
msgid "new cannot be applied to a function type"
msgstr ""
-#: cp/init.c:2111
+#: cp/init.c:2072
msgid "call to Java constructor, while `jclass' undefined"
msgstr ""
-#: cp/init.c:2127
+#: cp/init.c:2088
msgid "can't find class$"
msgstr ""
-#: cp/init.c:2241
+#: cp/init.c:2202
msgid "invalid type `void' for new"
msgstr ""
-#: cp/init.c:2293
+#: cp/init.c:2254
#, c-format
msgid "call to Java constructor with `%s' undefined"
msgstr ""
-#: cp/init.c:2400
+#: cp/init.c:2362
msgid "ISO C++ forbids initialization in array new"
msgstr ""
-#: cp/init.c:2418 cp/typeck2.c:359 cp/typeck2.c:1224
+#: cp/init.c:2380 cp/typeck2.c:360 cp/typeck2.c:1223
msgid "initializer list being treated as compound expression"
msgstr ""
-#: cp/init.c:2424
+#: cp/init.c:2386
msgid "ISO C++ forbids aggregate initializer to new"
msgstr ""
-#: cp/init.c:2510
+#: cp/init.c:2474
msgid "uninitialized const in `new' of `%#T'"
msgstr ""
-#: cp/init.c:2874
+#: cp/init.c:2840
msgid "initializer ends prematurely"
msgstr ""
-#: cp/init.c:2944
+#: cp/init.c:2910
msgid "cannot initialize multi-dimensional array with initializer"
msgstr ""
-#: cp/init.c:3119
+#: cp/init.c:3100
msgid "unknown array size in delete"
msgstr ""
-#: cp/init.c:3380
+#: cp/init.c:3365
msgid "type to vector delete is neither pointer or array type"
msgstr ""
-#: cp/lex.c:144
+#: cp/lex.c:136
msgid "type name expected before `*'"
msgstr ""
-#: cp/lex.c:166
+#: cp/lex.c:158
msgid "cannot declare references to references"
msgstr ""
-#: cp/lex.c:171
+#: cp/lex.c:163
msgid "cannot declare pointers to references"
msgstr ""
-#: cp/lex.c:175
+#: cp/lex.c:167
msgid "type name expected before `&'"
msgstr ""
-#: cp/lex.c:948
+#: cp/lex.c:894
#, c-format
msgid "semicolon missing after %s declaration"
msgstr ""
-#: cp/lex.c:951
+#: cp/lex.c:897
msgid "semicolon missing after declaration of `%T'"
msgstr ""
-#: cp/lex.c:999
+#: cp/lex.c:945
#, c-format
msgid "junk at end of #pragma %s"
msgstr ""
-#: cp/lex.c:1006
+#: cp/lex.c:952
#, c-format
msgid "invalid #pragma %s"
msgstr ""
-#: cp/lex.c:1015
+#: cp/lex.c:961
msgid "#pragma vtable no longer supported"
msgstr ""
-#: cp/lex.c:1092
+#: cp/lex.c:1038
#, c-format
msgid "#pragma implementation for %s appears after file is included"
msgstr ""
-#: cp/lex.c:1117
+#: cp/lex.c:1063
msgid "junk at end of #pragma GCC java_exceptions"
msgstr ""
-#: cp/lex.c:1205
+#: cp/lex.c:1107
msgid "`%D' not defined"
msgstr ""
-#: cp/lex.c:1210
+#: cp/lex.c:1110
msgid "`%D' was not declared in this scope"
msgstr ""
-#: cp/lex.c:1220
+#: cp/lex.c:1118
msgid "`%D' undeclared (first use this function)"
msgstr ""
-#: cp/lex.c:1224
+#: cp/lex.c:1122
msgid ""
"(Each undeclared identifier is reported only once for each function it "
"appears in.)"
msgstr ""
-#: cp/lex.c:1247
-#, c-format
-msgid "name lookup of `%s' changed"
-msgstr ""
-
-#: cp/lex.c:1249
-msgid " matches this `%D' under ISO standard rules"
-msgstr ""
-
-#: cp/lex.c:1251
-msgid " matches this `%D' under old rules"
-msgstr ""
-
-#: cp/lex.c:1261 cp/lex.c:1268
-#, c-format
-msgid "name lookup of `%s' changed for new ISO `for' scoping"
-msgstr ""
-
-#: cp/lex.c:1263
-msgid " cannot use obsolete binding at `%D' because it has a destructor"
-msgstr ""
-
-#: cp/lex.c:1270
-msgid " using obsolete binding at `%D'"
-msgstr ""
-
-#: cp/lex.c:1336
+#: cp/lex.c:1239
msgid "`::%D' undeclared (first use here)"
msgstr ""
-#: cp/mangle.c:1918
+#: cp/mangle.c:2061
msgid "real-valued template parameters when cross-compiling"
msgstr ""
-#: cp/method.c:157
+#: cp/mangle.c:2325
+msgid "the mangled name of `%D' will change in a future version of GCC"
+msgstr ""
+
+#: cp/method.c:154
msgid "invalid use of member `%D' in static member function"
msgstr ""
-#: cp/method.c:205
+#: cp/method.c:216
msgid "use of namespace `%D' as expression"
msgstr ""
-#: cp/method.c:210
+#: cp/method.c:221
msgid "use of class template `%T' as expression"
msgstr ""
-#: cp/method.c:223
+#: cp/method.c:234
#, c-format
msgid "use of %s from containing function"
msgstr ""
-#: cp/method.c:226
+#: cp/method.c:237
msgid " `%#D' declared here"
msgstr ""
-#: cp/method.c:244
+#: cp/method.c:255
msgid "request for member `%D' is ambiguous in multiple inheritance lattice"
msgstr ""
-#: cp/method.c:297
-msgid "implementation-reserved name `%D' used"
-msgstr ""
-
-#: cp/method.c:428
+#: cp/method.c:455
msgid "generic thunk code fails for method `%#D' which uses `...'"
msgstr ""
-#: cp/method.c:653
+#: cp/method.c:694
msgid "non-static const member `%#D', can't use default assignment operator"
msgstr ""
-#: cp/method.c:658
+#: cp/method.c:699
msgid ""
"non-static reference member `%#D', can't use default assignment operator"
msgstr ""
-#: parse.y:218
+#: parse.y:261
msgid "`%s' tag used in naming `%#T'"
msgstr ""
-#: parse.y:507
+#: parse.y:541
msgid "keyword `export' not implemented, and will be ignored"
msgstr ""
-#: parse.y:612
+#: parse.y:645
msgid "use of linkage spec `%D' is different from previous spec `%D'"
msgstr ""
-#: parse.y:685
-msgid "invalid default template argument"
-msgstr ""
-
-#: parse.y:916
-msgid "only constructors take base initializers"
-msgstr ""
-
-#: parse.y:918
+#: parse.y:942
msgid "no base or member initializers given following ':'"
msgstr ""
-#: parse.y:960 parse.y:966
+#: parse.y:983 parse.y:989
msgid "anachronistic old style base class initializer"
msgstr ""
#. Handle `Class<Class<Type>>' without space in the `>>'
-#: parse.y:1092
+#: parse.y:1115
msgid "`>>' should be `> >' in template class name"
msgstr ""
-#: parse.y:1130
+#: parse.y:1153
msgid "use of template qualifier outside template"
msgstr ""
-#: parse.y:1159 parse.y:1168
+#: parse.y:1182 parse.y:1191
#, c-format
msgid "ISO C++ forbids an empty condition for `%s'"
msgstr ""
-#: parse.y:1191
+#: parse.y:1214
msgid "definition of class `%T' in condition"
msgstr ""
-#: parse.y:1193
+#: parse.y:1216
msgid "definition of enum `%T' in condition"
msgstr ""
-#: parse.y:1204
+#: parse.y:1227
msgid "definition of array `%#D' in condition"
msgstr ""
-#: parse.y:1313
+#: parse.y:1340
msgid "old style placement syntax, use () instead"
msgstr ""
-#: parse.y:1324
+#: parse.y:1351
msgid "`%T' is not a valid expression"
msgstr ""
-#: parse.y:1335
-msgid "ISO C++ forbids initialization of new expression with `='"
+#. This was previously allowed as an extension, but
+#. was removed in G++ 3.3.
+#: parse.y:1358
+msgid "initialization of new expression with `='"
msgstr ""
-#: parse.y:1366
+#: parse.y:1384
msgid "ISO C++ forbids compound literals"
msgstr ""
-#: parse.y:1608
+#: parse.y:1631
msgid "ISO C++ forbids braced-groups within expressions"
msgstr ""
-#: parse.y:2010 parse.y:2025
+#: parse.y:2035 parse.y:2050
msgid "sigof type specifier"
msgstr ""
-#: parse.y:2015
+#: parse.y:2040
msgid "`sigof' applied to non-aggregate expression"
msgstr ""
-#: parse.y:2030
+#: parse.y:2055
msgid "`sigof' applied to non-aggregate type"
msgstr ""
-#: parse.y:2296
+#: parse.y:2321
msgid "using `typename' outside of template"
msgstr ""
-#: parse.y:2367
+#: parse.y:2391
#, c-format
msgid "storage class specifier `%s' not allowed after struct or class"
msgstr ""
-#: parse.y:2369
+#: parse.y:2393
#, c-format
msgid "type specifier `%s' not allowed after struct or class"
msgstr ""
-#: parse.y:2371
+#: parse.y:2395
#, c-format
msgid "type qualifier `%s' not allowed after struct or class"
msgstr ""
-#: parse.y:2373
+#: parse.y:2397
msgid "no body nor ';' separates two class, struct or union declarations"
msgstr ""
-#: parse.y:2505
+#: parse.y:2537
msgid "no bases given following `:'"
msgstr ""
-#: parse.y:2536 parse.y:2551
+#: parse.y:2568 parse.y:2583
msgid "`%D' access"
msgstr ""
-#: parse.y:2541
+#: parse.y:2573
msgid "multiple access specifiers"
msgstr ""
-#: parse.y:2559
+#: parse.y:2591
msgid "multiple `virtual' specifiers"
msgstr ""
-#: parse.y:2596
+#: parse.y:2628
msgid "missing ';' before right brace"
msgstr ""
-#: parse.y:2817
+#: parse.y:2849
msgid "ISO C++ forbids array dimensions with parenthesized type in new"
msgstr ""
-#: parse.y:3104 parse.y:3124 parse.y:3133 parse.y:3162
+#: parse.y:3136 parse.y:3156 parse.y:3165 parse.y:3194
msgid "`%T' is not a class or namespace"
msgstr ""
-#: parse.y:3329
+#: parse.y:3361
msgid "ISO C++ forbids label declarations"
msgstr ""
-#: parse.y:3489
+#: parse.y:3521
msgid "ISO C++ forbids computed gotos"
msgstr ""
-#: parse.y:3497
+#: parse.y:3529
msgid "label must be followed by statement"
msgstr ""
-#: parse.y:3542
+#: parse.y:3574
msgid "must have at least one catch per try block"
msgstr ""
-#: parse.y:3602
+#: parse.y:3634
msgid "ISO C++ forbids compound statements inside for initializations"
msgstr ""
#. This helps us recover from really nasty
#. parse errors, for example, a missing right
#. parenthesis.
-#: parse.y:3689 parse.y:3699
+#: parse.y:3721 parse.y:3731
msgid "possibly missing ')'"
msgstr ""
-#: parse.y:3792
+#: parse.y:3824
msgid "type specifier omitted for parameter"
msgstr ""
-#: parse.y:3801
+#: parse.y:3833
#, c-format
msgid "`%E' is not a type, use `typename %E' to make it one"
msgstr ""
-#: parse.y:3803
+#: parse.y:3835
msgid "no type `%D' in `%T'"
msgstr ""
-#: parse.y:3806
+#: parse.y:3838
#, c-format
msgid "type specifier omitted for parameter `%E'"
msgstr ""
-#: parse.y:3814
+#: parse.y:3846
msgid "'%D' is used as a type, but is not defined as a type."
msgstr ""
-#: cp/pt.c:212
+#: cp/pt.c:198
msgid "data member `%D' cannot be a member template"
msgstr ""
-#: cp/pt.c:224
+#: cp/pt.c:210
msgid "invalid member template declaration `%D'"
msgstr ""
-#: cp/pt.c:619
+#: cp/pt.c:605
msgid "explicit specialization in non-namespace scope `%D'"
msgstr ""
-#: cp/pt.c:631
+#: cp/pt.c:617
msgid "enclosing class templates are not explicitly specialized"
msgstr ""
-#: cp/pt.c:706
+#: cp/pt.c:692
msgid "specializing `%#T' in different namespace"
msgstr ""
-#: cp/pt.c:707
+#: cp/pt.c:693
msgid " from definition of `%#D'"
msgstr ""
-#: cp/pt.c:715
+#: cp/pt.c:701
msgid "specialization of `%T' after instantiation"
msgstr ""
-#: cp/pt.c:718
+#: cp/pt.c:704
msgid "explicit specialization of non-template `%T'"
msgstr ""
-#: cp/pt.c:850
+#: cp/pt.c:836
msgid "specialization of %D after instantiation"
msgstr ""
-#: cp/pt.c:953
+#: cp/pt.c:939
msgid "%s %+#D"
msgstr ""
-#: cp/pt.c:1004
+#: cp/pt.c:990
msgid "`%D' is not a function template"
msgstr ""
-#: cp/pt.c:1127
+#: cp/pt.c:1129
msgid "template-id `%D' for `%+D' does not match any template declaration"
msgstr ""
-#: cp/pt.c:1135
+#: cp/pt.c:1137
msgid "ambiguous template specialization `%D' for `%+D'"
msgstr ""
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
-#: cp/pt.c:1362 cp/pt.c:1436
+#: cp/pt.c:1364 cp/pt.c:1438
msgid "template-id `%D' in declaration of primary template"
msgstr ""
-#: cp/pt.c:1375
+#: cp/pt.c:1377
msgid "template parameter list used in explicit instantiation"
msgstr ""
-#: cp/pt.c:1381
+#: cp/pt.c:1383
msgid "definition provided for explicit instantiation"
msgstr ""
-#: cp/pt.c:1387
+#: cp/pt.c:1389
msgid "too many template parameter lists in declaration of `%D'"
msgstr ""
-#: cp/pt.c:1403
+#: cp/pt.c:1405
msgid "too few template parameter lists in declaration of `%D'"
msgstr ""
-#: cp/pt.c:1420
+#: cp/pt.c:1422
msgid "explicit specialization not preceded by `template <>'"
msgstr ""
-#: cp/pt.c:1433
+#: cp/pt.c:1435
msgid "partial specialization `%D' of function template"
msgstr ""
-#: cp/pt.c:1465
+#: cp/pt.c:1467
msgid "default argument specified in explicit specialization"
msgstr ""
-#: cp/pt.c:1469
+#: cp/pt.c:1471
msgid "template specialization with C linkage"
msgstr ""
@@ -16140,99 +16530,99 @@ msgstr ""
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
-#: cp/pt.c:1557
+#: cp/pt.c:1558
msgid "specialization of implicitly-declared special member function"
msgstr ""
-#: cp/pt.c:1601
+#: cp/pt.c:1602
msgid "no member function `%D' declared in `%T'"
msgstr ""
#. There are two many template parameter lists.
-#: cp/pt.c:1749
+#: cp/pt.c:1750
msgid "too many template parameter lists in declaration of `%T'"
msgstr ""
-#: cp/pt.c:1845
+#: cp/pt.c:1846
msgid " shadows template parm `%#D'"
msgstr ""
-#: cp/pt.c:2249
+#: cp/pt.c:2250
msgid "template parameters not used in partial specialization:"
msgstr ""
-#: cp/pt.c:2253
+#: cp/pt.c:2254
msgid " `%D'"
msgstr ""
-#: cp/pt.c:2265
+#: cp/pt.c:2266
msgid "partial specialization `%T' does not specialize any template arguments"
msgstr ""
-#: cp/pt.c:2290
+#: cp/pt.c:2291
#, c-format
msgid "template argument `%E' involves template parameter(s)"
msgstr ""
-#: cp/pt.c:2333
+#: cp/pt.c:2335
msgid "type `%T' of template argument `%E' depends on template parameter(s)"
msgstr ""
-#: cp/pt.c:2421
+#: cp/pt.c:2423
msgid "no default argument for `%D'"
msgstr ""
-#: cp/pt.c:2574
+#: cp/pt.c:2576
msgid "template with C linkage"
msgstr ""
-#: cp/pt.c:2577
+#: cp/pt.c:2579
msgid "template class without a name"
msgstr ""
-#: cp/pt.c:2654
+#: cp/pt.c:2656
msgid "`%D' does not declare a template type"
msgstr ""
-#: cp/pt.c:2660
+#: cp/pt.c:2662
msgid "template definition of non-template `%#D'"
msgstr ""
-#: cp/pt.c:2701
+#: cp/pt.c:2703
msgid "expected %d levels of template parms for `%#D', got %d"
msgstr ""
-#: cp/pt.c:2713
+#: cp/pt.c:2715
msgid "got %d template parameters for `%#D'"
msgstr ""
-#: cp/pt.c:2716
+#: cp/pt.c:2718
msgid "got %d template parameters for `%#T'"
msgstr ""
-#: cp/pt.c:2718
+#: cp/pt.c:2720
#, c-format
msgid " but %d required"
msgstr ""
-#: cp/pt.c:2799
+#: cp/pt.c:2803
msgid "`%T' is not a template type"
msgstr ""
-#: cp/pt.c:2815
+#: cp/pt.c:2819
msgid "previous declaration `%D'"
msgstr ""
-#: cp/pt.c:2816
+#: cp/pt.c:2820
#, c-format
msgid "used %d template parameter%s instead of %d"
msgstr ""
-#: cp/pt.c:2832
+#: cp/pt.c:2836
msgid "template parameter `%#D'"
msgstr ""
-#: cp/pt.c:2833
+#: cp/pt.c:2837
msgid "redeclared here as `%#D'"
msgstr ""
@@ -16240,613 +16630,603 @@ msgstr ""
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
-#: cp/pt.c:2843
+#: cp/pt.c:2847
msgid "redefinition of default argument for `%#D'"
msgstr ""
-#: cp/pt.c:2844
+#: cp/pt.c:2848
msgid " original definition appeared here"
msgstr ""
-#: cp/pt.c:2937
+#: cp/pt.c:2941
#, c-format
msgid "`%E' is not a valid template argument"
msgstr ""
-#: cp/pt.c:2941
+#: cp/pt.c:2945
msgid "it must be the address of a function with external linkage"
msgstr ""
-#: cp/pt.c:2943
+#: cp/pt.c:2947
msgid "it must be the address of an object with external linkage"
msgstr ""
-#: cp/pt.c:2947
+#: cp/pt.c:2951
msgid "it must be a pointer-to-member of the form `&X::Y'"
msgstr ""
-#: cp/pt.c:2958
+#: cp/pt.c:2962
#, c-format
msgid ""
"string literal %E is not a valid template argument because it is the address "
"of an object with static linkage"
msgstr ""
-#: cp/pt.c:2970
+#: cp/pt.c:2974
#, c-format
msgid "address of non-extern `%E' cannot be used as template argument"
msgstr ""
-#: cp/pt.c:2981
+#: cp/pt.c:2985
#, c-format
msgid "non-constant `%E' cannot be used as template argument"
msgstr ""
-#: cp/pt.c:2988
+#: cp/pt.c:2992
#, c-format
msgid "object `%E' cannot be used as template argument"
msgstr ""
-#: cp/pt.c:3368
+#: cp/pt.c:3367
#, c-format
msgid "to refer to a type member of a template parameter, use `typename %E'"
msgstr ""
-#: cp/pt.c:3381 cp/pt.c:3397 cp/pt.c:3436
+#: cp/pt.c:3380 cp/pt.c:3396 cp/pt.c:3435
msgid "type/value mismatch at argument %d in template parameter list for `%D'"
msgstr ""
-#: cp/pt.c:3384
+#: cp/pt.c:3383
msgid " expected a constant of type `%T', got `%T'"
msgstr ""
-#: cp/pt.c:3388
+#: cp/pt.c:3387
#, c-format
msgid " expected a type, got `%E'"
msgstr ""
-#: cp/pt.c:3400
+#: cp/pt.c:3399
msgid " expected a type, got `%T'"
msgstr ""
-#: cp/pt.c:3402
+#: cp/pt.c:3401
msgid " expected a class template, got `%T'"
msgstr ""
-#: cp/pt.c:3438
+#: cp/pt.c:3437
msgid " expected a template of type `%D', got `%D'"
msgstr ""
-#: cp/pt.c:3460
+#: cp/pt.c:3459
msgid "template-argument `%T' uses anonymous type"
msgstr ""
-#: cp/pt.c:3463
+#: cp/pt.c:3462
msgid "template-argument `%T' uses local type `%T'"
msgstr ""
-#: cp/pt.c:3498
+#: cp/pt.c:3472
+msgid "template-argument `%T' is a variably modified type"
+msgstr ""
+
+#: cp/pt.c:3507
msgid "could not convert template argument `%E' to `%T'"
msgstr ""
-#: cp/pt.c:3542
+#: cp/pt.c:3551
#, c-format
msgid "wrong number of template arguments (%d, should be %d)"
msgstr ""
-#: cp/pt.c:3546
+#: cp/pt.c:3555
msgid "provided for `%D'"
msgstr ""
-#: cp/pt.c:3593
+#: cp/pt.c:3602
#, c-format
msgid "template argument %d is invalid"
msgstr ""
-#: cp/pt.c:3825
+#: cp/pt.c:3837
msgid "non-template used as template"
msgstr ""
-#: cp/pt.c:3943
+#: cp/pt.c:3968
msgid "`%T' is not a template"
msgstr ""
-#: cp/pt.c:3956
+#: cp/pt.c:3981
msgid "non-template type `%T' used as a template"
msgstr ""
-#: cp/pt.c:3958
+#: cp/pt.c:3983
msgid "for template declaration `%D'"
msgstr ""
-#: cp/pt.c:4521
+#: cp/pt.c:4598
msgid ""
"template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN "
"to increase the maximum) instantiating `%D'"
msgstr ""
-#: cp/pt.c:4961
+#: cp/pt.c:5074
msgid "ambiguous class template instantiation for `%#T'"
msgstr ""
-#: cp/pt.c:4968
+#: cp/pt.c:5081
msgid "%s %+#T"
msgstr ""
-#: cp/pt.c:5993 cp/pt.c:6098
+#: cp/pt.c:6104 cp/pt.c:6214
msgid "instantiation of `%D' as type `%T'"
msgstr ""
-#: cp/pt.c:6140
+#: cp/pt.c:6258
msgid "invalid parameter type `%T'"
msgstr ""
-#: cp/pt.c:6142
+#: cp/pt.c:6260
msgid "in declaration `%D'"
msgstr ""
-#: cp/pt.c:6217
+#: cp/pt.c:6335
msgid "creating pointer to member function of non-class type `%T'"
msgstr ""
-#: cp/pt.c:6380
+#: cp/pt.c:6498
msgid "creating array with size zero"
msgstr ""
-#: cp/pt.c:6394
+#: cp/pt.c:6512
#, c-format
msgid "creating array with size zero (`%E')"
msgstr ""
-#: cp/pt.c:6633
+#: cp/pt.c:6751
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:6635
+#: cp/pt.c:6753
msgid "forming %s to reference type `%T'"
msgstr ""
-#: cp/pt.c:6673
+#: cp/pt.c:6791
msgid "creating pointer to member of non-class type `%T'"
msgstr ""
-#: cp/pt.c:6679
+#: cp/pt.c:6797
msgid "creating pointer to member reference type `%T'"
msgstr ""
-#: cp/pt.c:6757
+#: cp/pt.c:6875
msgid "creating array of `%T'"
msgstr ""
-#: cp/pt.c:6800
+#: cp/pt.c:6918
msgid "`%T' is not a class, struct, or union type"
msgstr ""
-#: cp/pt.c:6910
+#: cp/pt.c:7028
#, c-format
msgid "use of `%s' in template"
msgstr ""
-#: cp/pt.c:7669
+#: cp/pt.c:7790
msgid "type `%T' composed from a local class is not a valid template-argument"
msgstr ""
-#: cp/pt.c:7670
+#: cp/pt.c:7791
msgid " trying to instantiate `%D'"
msgstr ""
-#: cp/pt.c:8100
+#: cp/pt.c:8230
msgid "incomplete type unification"
msgstr ""
-#: cp/pt.c:9067
+#: cp/pt.c:9178
#, c-format
msgid "use of `%s' in template type unification"
msgstr ""
-#: cp/pt.c:9487 cp/pt.c:9555
+#: cp/pt.c:9596 cp/pt.c:9668
msgid "explicit instantiation of non-template `%#D'"
msgstr ""
-#: cp/pt.c:9503 cp/pt.c:9550
+#: cp/pt.c:9612 cp/pt.c:9663
msgid "no matching template for `%D' found"
msgstr ""
-#: cp/pt.c:9509
+#: cp/pt.c:9618
msgid "explicit instantiation of `%#D'"
msgstr ""
-#. [temp.spec]
-#.
-#. No program shall both explicitly instantiate and explicitly
-#. specialize a template.
-#: cp/pt.c:9526
-msgid "explicit instantiation of `%#D' after"
-msgstr ""
-
-#: cp/pt.c:9527 cp/pt.c:9664
-msgid "explicit specialization here"
-msgstr ""
-
-#: cp/pt.c:9542
+#: cp/pt.c:9655
msgid "duplicate explicit instantiation of `%#D'"
msgstr ""
-#: cp/pt.c:9567
+#: cp/pt.c:9680
msgid "ISO C++ forbids the use of `extern' on explicit instantiations"
msgstr ""
-#: cp/pt.c:9571 cp/pt.c:9649
+#: cp/pt.c:9684 cp/pt.c:9762
msgid "storage class `%D' applied to template instantiation"
msgstr ""
-#: cp/pt.c:9616
+#: cp/pt.c:9729
msgid "explicit instantiation of non-template type `%T'"
msgstr ""
-#: cp/pt.c:9630
+#: cp/pt.c:9743
msgid "explicit instantiation of `%#T' before definition of template"
msgstr ""
-#: cp/pt.c:9638
+#: cp/pt.c:9751
#, c-format
msgid "ISO C++ forbids the use of `%s' on explicit instantiations"
msgstr ""
-#: cp/pt.c:9663
-msgid "explicit instantiation of `%#T' after"
-msgstr ""
-
-#: cp/pt.c:9681
+#: cp/pt.c:9795
msgid "duplicate explicit instantiation of `%#T'"
msgstr ""
-#: cp/pt.c:10043
+#: cp/pt.c:10177
msgid "explicit instantiation of `%D' but no definition available"
msgstr ""
-#: cp/pt.c:10415
+#: cp/pt.c:10551
msgid "`%#T' is not a valid type for a template constant parameter"
msgstr ""
-#: cp/repo.c:272
+#: cp/repo.c:271
msgid "-frepo must be used with -c"
msgstr ""
-#: cp/repo.c:366
+#: cp/repo.c:361
#, c-format
msgid "mysterious repository information in %s"
msgstr ""
-#: cp/repo.c:381
+#: cp/repo.c:376
#, c-format
msgid "can't create repository information file `%s'"
msgstr ""
-#: cp/rtti.c:200
+#: cp/rtti.c:240
msgid "cannot use typeid with -fno-rtti"
msgstr ""
-#: cp/rtti.c:206
+#: cp/rtti.c:246
msgid "must #include <typeinfo> before using typeid"
msgstr ""
-#: cp/rtti.c:280
+#: cp/rtti.c:320
msgid ""
"cannot create type information for type `%T' because its size is variable"
msgstr ""
-#: cp/rtti.c:525 cp/rtti.c:539
+#: cp/rtti.c:585 cp/rtti.c:599
msgid "dynamic_cast of `%#D' to `%#T' can never succeed"
msgstr ""
-#: cp/rtti.c:614
+#: cp/rtti.c:675
msgid "cannot dynamic_cast `%E' (of type `%#T') to type `%#T' (%s)"
msgstr ""
-#: cp/search.c:340
+#: cp/search.c:348
msgid "`%T' is an inaccessible base of `%T'"
msgstr ""
-#: cp/search.c:350
+#: cp/search.c:358
msgid "`%T' is an ambiguous base of `%T'"
msgstr ""
-#: cp/search.c:1818
+#: cp/search.c:1925
msgid "adjusting pointers for covariant returns"
msgstr ""
-#: cp/search.c:1822 cp/search.c:1829
+#: cp/search.c:1929 cp/search.c:1936
msgid "invalid covariant return type for `%#D'"
msgstr ""
-#: cp/search.c:1823
+#: cp/search.c:1930
msgid " overriding `%#D' (must be pointer or reference to class)"
msgstr ""
-#: cp/search.c:1830
+#: cp/search.c:1937
msgid " overriding `%#D' (must use pointer or reference)"
msgstr ""
-#: cp/search.c:1835
+#: cp/search.c:1942
msgid "conflicting return type specified for `%#D'"
msgstr ""
-#: cp/search.c:1836
+#: cp/search.c:1943
msgid " overriding `%#D'"
msgstr ""
-#: cp/search.c:1845
+#: cp/search.c:1952
#, c-format
msgid "looser throw specifier for `%#F'"
msgstr ""
-#: cp/search.c:1846
+#: cp/search.c:1953
#, c-format
msgid " overriding `%#F'"
msgstr ""
#. A static member function cannot match an inherited
#. virtual member function.
-#: cp/search.c:1936
+#: cp/search.c:2042
msgid "`%#D' cannot be declared"
msgstr ""
-#: cp/search.c:1937
+#: cp/search.c:2043
msgid " since `%#D' declared in base class"
msgstr ""
-#: cp/search.c:2078
+#: cp/search.c:2184
msgid "`%#D' needs a final overrider"
msgstr ""
-#: cp/semantics.c:894
+#: cp/semantics.c:919
#, c-format
msgid "type of asm operand `%E' could not be determined"
msgstr ""
-#: cp/semantics.c:1026
+#: cp/semantics.c:1051
msgid "ISO C++ does not permit named return values"
msgstr ""
-#: cp/semantics.c:1035
+#: cp/semantics.c:1060
msgid "return identifier `%D' already in place"
msgstr ""
-#: cp/semantics.c:1043
+#: cp/semantics.c:1068
msgid "can't redefine default return value for constructors"
msgstr ""
-#: cp/semantics.c:1110
-msgid "base initializer for `%T'"
-msgstr ""
-
-#: cp/semantics.c:1112
-msgid " will be re-ordered to precede member initializations"
+#: cp/semantics.c:1100
+msgid "only constructors take base initializers"
msgstr ""
-#: cp/semantics.c:1300
+#: cp/semantics.c:1342
msgid "`this' is unavailable for static member functions"
msgstr ""
-#: cp/semantics.c:1306
+#: cp/semantics.c:1348
msgid "invalid use of `this' in non-member function"
msgstr ""
-#: cp/semantics.c:1308
+#: cp/semantics.c:1350
msgid "invalid use of `this' at top level"
msgstr ""
-#: cp/semantics.c:1346
+#: cp/semantics.c:1380
msgid "calling type `%T' like a method"
msgstr ""
-#: cp/semantics.c:1382
+#: cp/semantics.c:1418
msgid "destructor specifier `%T::~%T()' must have matching names"
msgstr ""
-#: cp/semantics.c:1388
+#: cp/semantics.c:1424
msgid "`%E' is not of type `%T'"
msgstr ""
-#: cp/semantics.c:1581
+#: cp/semantics.c:1612
msgid "template type parameters must use the keyword `class' or `typename'"
msgstr ""
-#: cp/semantics.c:1643
+#: cp/semantics.c:1651
+msgid "invalid default template argument"
+msgstr ""
+
+#: cp/semantics.c:1693
msgid "definition of `%#T' inside template parameter list"
msgstr ""
-#: cp/semantics.c:1659
+#: cp/semantics.c:1709
msgid "invalid definition of qualified type `%T'"
msgstr ""
-#: cp/semantics.c:2008
+#: cp/semantics.c:2051
msgid "invalid base-class specification"
msgstr ""
-#: cp/semantics.c:2017
+#: cp/semantics.c:2060
msgid "base class `%T' has cv qualifiers"
msgstr ""
-#: cp/semantics.c:2050
+#: cp/semantics.c:2091
msgid "multiple declarators in template declaration"
msgstr ""
-#: cp/spew.c:239
+#: cp/spew.c:225
#, c-format
msgid "identifier name `%s' conflicts with GNU C++ internal naming strategy"
msgstr ""
-#: cp/spew.c:1017 cp/spew.c:1292
+#: cp/spew.c:1002 cp/spew.c:1336
msgid "parse error at end of saved function text"
msgstr ""
-#: cp/spew.c:1062
+#: cp/spew.c:1090 cp/spew.c:1178
+msgid "%Hend of file read inside definition"
+msgstr ""
+
+#: cp/spew.c:1121
msgid "parse error in method specification"
msgstr ""
-#: cp/spew.c:1104
+#: cp/spew.c:1161
msgid "function body for constructor missing"
msgstr ""
-#: cp/spew.c:1371
+#: cp/spew.c:1258
+msgid "%Hend of file read inside default argument"
+msgstr ""
+
+#: cp/spew.c:1415
msgid "circular dependency in default args of `%#D'"
msgstr ""
-#: cp/spew.c:1435
+#: cp/spew.c:1479
msgid "invalid type `%T' for default argument to `%T'"
msgstr ""
-#: cp/spew.c:1495
+#: cp/spew.c:1539
#, c-format
msgid "%s before `%s'"
msgstr ""
-#: cp/spew.c:1497
+#: cp/spew.c:1541
#, c-format
msgid "%s before `%c'"
msgstr ""
-#: cp/spew.c:1499
+#: cp/spew.c:1543
#, c-format
msgid "%s before `\\%o'"
msgstr ""
-#: cp/spew.c:1502
+#: cp/spew.c:1546
#, c-format
msgid "%s before `%s' token"
msgstr ""
-#: cp/tree.c:223
+#: cp/tree.c:251 cp/tree.c:263
#, c-format
msgid "non-lvalue in %s"
msgstr ""
-#: cp/tree.c:577
+#: cp/tree.c:635
msgid "`%V' qualifiers cannot be applied to `%T'"
msgstr ""
-#: cp/tree.c:580
-msgid "ignoring `%V' qualifiers on `%T'"
-msgstr ""
-
-#: cp/tree.c:1921
+#: cp/tree.c:2012
#, c-format
msgid "`%s' attribute can only be applied to Java class definitions"
msgstr ""
-#: cp/tree.c:1951
+#: cp/tree.c:2042
#, c-format
msgid "`%s' attribute can only be applied to class definitions"
msgstr ""
-#: cp/tree.c:1957
+#: cp/tree.c:2048
#, c-format
msgid "`%s' is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:1982
+#: cp/tree.c:2073
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:2003
+#: cp/tree.c:2094
#, c-format
msgid ""
"can only use `%s' attribute on file-scope definitions of objects of class "
"type"
msgstr ""
-#: cp/tree.c:2011
+#: cp/tree.c:2102
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:2021
+#: cp/tree.c:2112
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:2031
+#: cp/tree.c:2122
#, c-format
msgid "`%s' attribute is not supported on this platform"
msgstr ""
-#: cp/typeck.c:518
+#: cp/tree.c:2659
+#, c-format
+msgid "lang_* check: failed in %s, at %s:%d"
+msgstr ""
+
+#: cp/typeck.c:524
#, c-format
msgid ""
"ISO C++ forbids %s between pointer of type `void *' and pointer-to-function"
msgstr ""
-#: cp/typeck.c:539
+#: cp/typeck.c:545
msgid "%s between distinct pointer types `%T' and `%T' lacks a cast"
msgstr ""
-#: cp/typeck.c:1432
+#: cp/typeck.c:1438
msgid "ISO C++ prohibits conversion from `%#T' to `(...)'"
msgstr ""
-#: cp/typeck.c:1502
-msgid "ISO C++ forbids applying `sizeof' to a function type"
-msgstr ""
-
-#: cp/typeck.c:1508
-msgid "ISO C++ forbids applying `sizeof' to a member function"
-msgstr ""
-
-#: cp/typeck.c:1514
-msgid ""
-"ISO C++ forbids applying `sizeof' to type `void' which is an incomplete type"
-msgstr ""
-
-#: cp/typeck.c:1528
-msgid "`sizeof' applied to non-static member"
+#: cp/typeck.c:1516
+#, c-format
+msgid "invalid application of `%s' to a member function"
msgstr ""
-#: cp/typeck.c:1533
-msgid "`sizeof' applied to incomplete type `%T'"
+#: cp/typeck.c:1522
+#, c-format
+msgid "invalid application of `%s' to non-static member"
msgstr ""
-#: cp/typeck.c:1563
+#: cp/typeck.c:1540
msgid "sizeof applied to a bit-field"
msgstr ""
-#: cp/typeck.c:1566
+#: cp/typeck.c:1543
msgid "ISO C++ forbids applying `sizeof' to an expression of function type"
msgstr ""
-#: cp/typeck.c:1713
+#: cp/typeck.c:1655
msgid "invalid use of non-lvalue array"
msgstr ""
-#: cp/typeck.c:1819
+#: cp/typeck.c:1761
msgid "deprecated conversion from string constant to `%T'"
msgstr ""
-#: cp/typeck.c:1837
-msgid "request for member `%T::%D' in expression of non-aggregate type `%T'"
+#: cp/typeck.c:1892 cp/typeck.c:2115
+msgid "request for member `%D' in `%E', which is of non-class type `%T'"
msgstr ""
-#: cp/typeck.c:2031
-msgid "destructor specifier `%T::~%T' must have matching names"
+#: cp/typeck.c:1918
+msgid "`%D' is not a member of `%T'"
msgstr ""
-#: cp/typeck.c:2037
-msgid "type `%T' has no destructor"
+#: cp/typeck.c:1958 cp/typeck.c:1979
+msgid "invalid access to non-static data member `%D' of NULL object"
msgstr ""
-#: cp/typeck.c:2054 cp/typeck.c:2145
-msgid "invalid use of type decl `%#D' as expression"
+#: cp/typeck.c:1960 cp/typeck.c:1981
+msgid "(perhaps the `offsetof' macro was used incorrectly)"
msgstr ""
-#: cp/typeck.c:2059
-msgid "invalid use of template `%#D' as expression"
+#: cp/typeck.c:2161
+msgid "`%D::%D' is not a member of `%T'"
msgstr ""
-#: cp/typeck.c:2136
-msgid "`%#T' has no member named `%D'"
+#: cp/typeck.c:2187
+msgid "destructor specifier `%T::~%T' must have matching names"
+msgstr ""
+
+#: cp/typeck.c:2193
+msgid "type `%T' has no destructor"
msgstr ""
-#: cp/typeck.c:2186 cp/typeck.c:2215
-msgid "invalid offsetof from non-POD type `%#T'; use pointer to member instead"
+#: cp/typeck.c:2232
+msgid "`%D' is not a member template function"
msgstr ""
#. A pointer to incomplete type (other than cv void) can be
@@ -16872,99 +17252,84 @@ msgstr ""
msgid "subscripting array declared `register'"
msgstr ""
-#: cp/typeck.c:2648 cp/typeck.c:2803
-msgid "pointer to member function called, but not in class scope"
-msgstr ""
-
-#: cp/typeck.c:2672
-msgid "object missing in call to method `%D'"
-msgstr ""
-
-#: cp/typeck.c:2721
-msgid ""
-"function `%D' declared overloaded, but no definitions appear with which to "
-"resolve it?!?"
-msgstr ""
-
-#: cp/typeck.c:2801
-msgid ""
-"invalid call to member function needing `this' in static member function "
-"scope"
+#: cp/typeck.c:2558
+#, c-format
+msgid "object missing in use of `%E'"
msgstr ""
-#: cp/typeck.c:2977
+#: cp/typeck.c:2663
msgid "ISO C++ forbids calling `::main' from within program"
msgstr ""
-#: cp/typeck.c:3002
+#: cp/typeck.c:2688
#, c-format
msgid "must use .* or ->* to call pointer-to-member function in `%E (...)'"
msgstr ""
-#: cp/typeck.c:3015
+#: cp/typeck.c:2701
#, c-format
msgid "`%E' cannot be used as a function"
msgstr ""
-#: cp/typeck.c:3140
+#: cp/typeck.c:2826
msgid "too many arguments to %s `%+#D'"
msgstr ""
-#: cp/typeck.c:3181
+#: cp/typeck.c:2867
msgid "parameter type of called function is incomplete"
msgstr ""
-#: cp/typeck.c:3248
+#: cp/typeck.c:2930
msgid "too few arguments to %s `%+#D'"
msgstr ""
-#: cp/typeck.c:3376 cp/typeck.c:3386
+#: cp/typeck.c:3058 cp/typeck.c:3068
msgid "assuming cast to type `%T' from overloaded function"
msgstr ""
-#: cp/typeck.c:3446
+#: cp/typeck.c:3128
#, c-format
msgid "division by zero in `%E / 0'"
msgstr ""
-#: cp/typeck.c:3448
+#: cp/typeck.c:3130
#, c-format
msgid "division by zero in `%E / 0.'"
msgstr ""
-#: cp/typeck.c:3478
+#: cp/typeck.c:3160
#, c-format
msgid "division by zero in `%E %% 0'"
msgstr ""
-#: cp/typeck.c:3480
+#: cp/typeck.c:3162
#, c-format
msgid "division by zero in `%E %% 0.'"
msgstr ""
-#: cp/typeck.c:3560
+#: cp/typeck.c:3242
#, c-format
msgid "%s rotate count is negative"
msgstr ""
-#: cp/typeck.c:3563
+#: cp/typeck.c:3245
#, c-format
msgid "%s rotate count >= width of type"
msgstr ""
-#: cp/typeck.c:3594 cp/typeck.c:3599 cp/typeck.c:3690 cp/typeck.c:3695
+#: cp/typeck.c:3276 cp/typeck.c:3281 cp/typeck.c:3372 cp/typeck.c:3377
msgid "ISO C++ forbids comparison between pointer and integer"
msgstr ""
-#: cp/typeck.c:3873
+#: cp/typeck.c:3555
msgid "comparison between types `%#T' and `%#T'"
msgstr ""
-#: cp/typeck.c:3909
+#: cp/typeck.c:3591
msgid "comparison between signed and unsigned integer expressions"
msgstr ""
-#: cp/typeck.c:3974
+#: cp/typeck.c:3656
msgid "invalid operands of types `%T' and `%T' to binary `%O'"
msgstr ""
@@ -16972,287 +17337,296 @@ msgstr ""
#. performed. Note that pointer-difference and pointer-addition
#. have already been handled above, and so we don't end up here in
#. that case.
-#: cp/typeck.c:3996
+#: cp/typeck.c:3678
msgid "NULL used in arithmetic"
msgstr ""
-#: cp/typeck.c:4063
+#: cp/typeck.c:3745
msgid "ISO C++ forbids using pointer of type `void *' in subtraction"
msgstr ""
-#: cp/typeck.c:4065
+#: cp/typeck.c:3747
msgid "ISO C++ forbids using pointer to a function in subtraction"
msgstr ""
-#: cp/typeck.c:4067
+#: cp/typeck.c:3749
msgid "ISO C++ forbids using pointer to a method in subtraction"
msgstr ""
-#: cp/typeck.c:4069
+#: cp/typeck.c:3751
msgid "ISO C++ forbids using pointer to a member in subtraction"
msgstr ""
-#: cp/typeck.c:4081
+#: cp/typeck.c:3763
msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr ""
-#: cp/typeck.c:4118
-msgid "attempt to take address of bit-field structure member `%D'"
+#: cp/typeck.c:3823
+#, c-format
+msgid ""
+"invalid use of '%E' to form a pointer-to-member-function. Use a qualified-"
+"id."
msgstr ""
-#: cp/typeck.c:4195
+#: cp/typeck.c:3829
+#, c-format
+msgid ""
+"parenthesis around '%E' cannot be used to form a pointer-to-member-function"
+msgstr ""
+
+#: cp/typeck.c:3852
msgid "taking address of temporary"
msgstr ""
-#: cp/typeck.c:4398
+#: cp/typeck.c:4055
#, c-format
msgid "ISO C++ forbids %sing an enum"
msgstr ""
-#: cp/typeck.c:4410
+#: cp/typeck.c:4067
msgid "cannot %s a pointer to incomplete type `%T'"
msgstr ""
-#: cp/typeck.c:4417
+#: cp/typeck.c:4074
msgid "ISO C++ forbids %sing a pointer of type `%T'"
msgstr ""
-#: cp/typeck.c:4442
+#: cp/typeck.c:4099
msgid "cast to non-reference type used as lvalue"
msgstr ""
-#: cp/typeck.c:4476
+#: cp/typeck.c:4133
msgid "invalid use of `--' on bool variable `%D'"
msgstr ""
#. ARM $3.4
-#: cp/typeck.c:4509
+#: cp/typeck.c:4166
msgid "ISO C++ forbids taking address of function `::main'"
msgstr ""
#. An expression like &memfn.
-#: cp/typeck.c:4576
+#: cp/typeck.c:4233
msgid ""
"ISO C++ forbids taking the address of an unqualified non-static member "
"function to form a pointer to member function. Say `&%T::%D'"
msgstr ""
-#: cp/typeck.c:4578
+#: cp/typeck.c:4235
msgid ""
"ISO C++ forbids taking the address of a bound member function to form a "
"pointer to member function. Say `&%T::%D'"
msgstr ""
-#: cp/typeck.c:4602
+#: cp/typeck.c:4259
msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression"
msgstr ""
-#: cp/typeck.c:4618
-msgid "unary `&'"
+#: cp/typeck.c:4290
+msgid "attempt to take address of bit-field structure member `%D'"
msgstr ""
-#: cp/typeck.c:4738
+#: cp/typeck.c:4418
msgid "taking address of destructor"
msgstr ""
-#: cp/typeck.c:4751
+#: cp/typeck.c:4431
msgid "taking address of bound pointer-to-member expression"
msgstr ""
-#: cp/typeck.c:4767
+#: cp/typeck.c:4447
msgid "cannot create pointer to reference member `%D'"
msgstr ""
-#: cp/typeck.c:4835
+#: cp/typeck.c:4510
msgid "cannot take the address of `this', which is an rvalue expression"
msgstr ""
-#: cp/typeck.c:4851
+#: cp/typeck.c:4529
msgid "address requested for `%D', which is declared `register'"
msgstr ""
-#: cp/typeck.c:5071
+#: cp/typeck.c:4750
msgid "static_cast from type `%T' to type `%T' casts away constness"
msgstr ""
-#: cp/typeck.c:5079
+#: cp/typeck.c:4758
msgid "invalid static_cast from type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:5118
+#: cp/typeck.c:4797
msgid ""
"invalid reinterpret_cast of an rvalue expression of type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:5138
+#: cp/typeck.c:4817
msgid "reinterpret_cast from `%T' to `%T' loses precision"
msgstr ""
-#: cp/typeck.c:5151
+#: cp/typeck.c:4830
msgid "reinterpret_cast from `%T' to `%T' casts away const (or volatile)"
msgstr ""
-#: cp/typeck.c:5160
+#: cp/typeck.c:4839
msgid ""
"ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr ""
-#: cp/typeck.c:5166
+#: cp/typeck.c:4845
msgid "invalid reinterpret_cast from type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:5193
+#: cp/typeck.c:4872
msgid ""
"invalid use of const_cast with type `%T', which is not a pointer, reference, "
"nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:5196
+#: cp/typeck.c:4875
msgid ""
"invalid use of const_cast with type `%T', which is a pointer or reference to "
"a function type"
msgstr ""
-#: cp/typeck.c:5219
+#: cp/typeck.c:4898
msgid "invalid const_cast of an rvalue of type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:5235
+#: cp/typeck.c:4914
msgid "invalid const_cast from type `%T' to type `%T'"
msgstr ""
-#: cp/typeck.c:5277 cp/typeck.c:5282
+#: cp/typeck.c:4956 cp/typeck.c:4961
msgid "ISO C++ forbids casting to an array type `%T'"
msgstr ""
-#: cp/typeck.c:5290
+#: cp/typeck.c:4969
msgid "invalid cast to function type `%T'"
msgstr ""
-#: cp/typeck.c:5342
+#: cp/typeck.c:5021
msgid "cast from `%T' to `%T' discards qualifiers from pointer target type"
msgstr ""
-#: cp/typeck.c:5388
+#: cp/typeck.c:5067
msgid "cast from `%T' to `%T' increases required alignment of target type"
msgstr ""
-#: cp/typeck.c:5557
+#: cp/typeck.c:5235
msgid " in evaluation of `%Q(%#T, %#T)'"
msgstr ""
-#: cp/typeck.c:5599
+#: cp/typeck.c:5277
msgid "ISO C++ forbids cast to non-reference type used as lvalue"
msgstr ""
-#: cp/typeck.c:5670
+#: cp/typeck.c:5349
msgid "incompatible types in assignment of `%T' to `%T'"
msgstr ""
-#: cp/typeck.c:5677
+#: cp/typeck.c:5356
msgid "ISO C++ forbids assignment of arrays"
msgstr ""
-#: cp/typeck.c:5820
+#: cp/typeck.c:5499
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:5828
+#: cp/typeck.c:5507
msgid " in pointer to member conversion"
msgstr ""
#. This is a reinterpret cast, we choose to do nothing.
-#: cp/typeck.c:5839 cp/typeck.c:5858
+#: cp/typeck.c:5518 cp/typeck.c:5537
msgid "pointer to member cast via virtual base `%T' of `%T'"
msgstr ""
-#: cp/typeck.c:5862
+#: cp/typeck.c:5541
msgid "pointer to member conversion via virtual base `%T' of `%T'"
msgstr ""
-#: cp/typeck.c:5932
+#: cp/typeck.c:5611
msgid "invalid conversion to type `%T' from type `%T'"
msgstr ""
-#: cp/typeck.c:6097
+#: cp/typeck.c:5776
msgid "passing NULL used for non-pointer %s %P of `%D'"
msgstr ""
-#: cp/typeck.c:6100
+#: cp/typeck.c:5779
msgid "%s to non-pointer type `%T' from NULL"
msgstr ""
-#: cp/typeck.c:6108
+#: cp/typeck.c:5787
msgid "passing `%T' for %s %P of `%D'"
msgstr ""
-#: cp/typeck.c:6111
+#: cp/typeck.c:5790
msgid "%s to `%T' from `%T'"
msgstr ""
-#: cp/typeck.c:6121
+#: cp/typeck.c:5800
msgid "passing negative value `%E' for %s %P of `%D'"
msgstr ""
-#: cp/typeck.c:6124
+#: cp/typeck.c:5803
msgid "%s of negative value `%E' to `%T'"
msgstr ""
-#: cp/typeck.c:6211
+#: cp/typeck.c:5898
msgid "cannot convert `%T' to `%T' for argument `%P' to `%D'"
msgstr ""
-#: cp/typeck.c:6214
+#: cp/typeck.c:5901
msgid "cannot convert `%T' to `%T' in %s"
msgstr ""
-#: cp/typeck.c:6301 cp/typeck.c:6303
+#: cp/typeck.c:5988 cp/typeck.c:5990
msgid "in passing argument %P of `%+D'"
msgstr ""
-#: cp/typeck.c:6417
+#: cp/typeck.c:6105
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:6424
+#: cp/typeck.c:6112
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:6436
+#: cp/typeck.c:6124
msgid "reference to local variable `%D' returned"
msgstr ""
-#: cp/typeck.c:6439
+#: cp/typeck.c:6127
msgid "address of local variable `%D' returned"
msgstr ""
-#: cp/typeck.c:6470
+#: cp/typeck.c:6158
msgid "returning a value from a destructor"
msgstr ""
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:6478
+#: cp/typeck.c:6166
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr ""
#. You can't return a value from a constructor.
-#: cp/typeck.c:6481
+#: cp/typeck.c:6169
msgid "returning a value from a constructor"
msgstr ""
-#: cp/typeck.c:6498
+#: cp/typeck.c:6186
msgid ""
"return-statement with no value, in function declared with a non-void return "
"type"
msgstr ""
-#: cp/typeck.c:6514
+#: cp/typeck.c:6202
msgid ""
"return-statement with a value, in function declared with a void return type"
msgstr ""
-#: cp/typeck.c:6535
+#: cp/typeck.c:6223
msgid ""
"`operator new' must not return NULL unless it is declared `throw()' (or -"
"fcheck-new is in effect)"
@@ -17298,194 +17672,150 @@ msgstr ""
msgid " since type `%T' has abstract virtual functions"
msgstr ""
-#: cp/typeck2.c:213
-msgid "invalid use of undefined type `%#T'"
-msgstr ""
-
-#: cp/typeck2.c:214
-msgid "forward declaration of `%#T'"
-msgstr ""
-
-#: cp/typeck2.c:218
-msgid "invalid use of `%T'"
-msgstr ""
-
-#: cp/typeck2.c:232
-msgid "invalid use of member (did you forget the `&' ?)"
-msgstr ""
-
-#: cp/typeck2.c:236
-msgid "invalid use of template type parameter"
-msgstr ""
-
-#: cp/typeck2.c:243
-msgid "address of overloaded function with no contextual type information"
-msgstr ""
-
-#: cp/typeck2.c:245
-msgid "overloaded function with no contextual type information"
-msgstr ""
-
-#: cp/typeck2.c:247
-msgid "insufficient contextual information to determine type"
-msgstr ""
-
-#: cp/typeck2.c:301
+#: cp/typeck2.c:331
msgid "constructor syntax used, but no constructor declared for type `%T'"
msgstr ""
-#: cp/typeck2.c:311
-msgid "initializer list construction invalid for derived class object `%D'"
-msgstr ""
-
-#: cp/typeck2.c:313
-msgid "initializer list construction invalid for polymorphic class object `%D'"
-msgstr ""
-
-#: cp/typeck2.c:316 cp/typeck2.c:322 cp/typeck2.c:328
-msgid "initializer list construction invalid for `%D'"
-msgstr ""
-
-#: cp/typeck2.c:317
-msgid "due to the presence of a constructor"
-msgstr ""
-
-#: cp/typeck2.c:323 cp/typeck2.c:329
-msgid "due to non-public access of member `%D'"
-msgstr ""
-
-#: cp/typeck2.c:341
+#: cp/typeck2.c:342
msgid "comma expression used to initialize return value"
msgstr ""
-#: cp/typeck2.c:350
+#: cp/typeck2.c:351
msgid "cannot initialize arrays using this syntax"
msgstr ""
-#: cp/typeck2.c:412
+#: cp/typeck2.c:406
msgid "ISO C++ forbids non-constant aggregate initializer expressions"
msgstr ""
-#: cp/typeck2.c:498
+#: cp/typeck2.c:490
msgid "initializing array with parameter list"
msgstr ""
-#: cp/typeck2.c:554
+#: cp/typeck2.c:546
msgid "initializer for scalar variable requires one element"
msgstr ""
-#: cp/typeck2.c:561
+#: cp/typeck2.c:553
msgid "braces around scalar initializer for `%T'"
msgstr ""
-#: cp/typeck2.c:564
+#: cp/typeck2.c:556
msgid "ignoring extra initializers for `%T'"
msgstr ""
-#: cp/typeck2.c:576
+#: cp/typeck2.c:568
msgid "variable-sized object of type `%T' may not be initialized"
msgstr ""
-#: cp/typeck2.c:586
+#: cp/typeck2.c:578
msgid "subobject of type `%T' must be initialized by constructor, not by `%E'"
msgstr ""
-#: cp/typeck2.c:652
+#: cp/typeck2.c:644
msgid "aggregate has a partly bracketed initializer"
msgstr ""
-#: cp/typeck2.c:690 cp/typeck2.c:791
+#: cp/typeck2.c:682 cp/typeck2.c:786
msgid "non-trivial labeled initializers"
msgstr ""
-#: cp/typeck2.c:707
+#: cp/typeck2.c:699
msgid "non-empty initializer for array of empty elements"
msgstr ""
-#: cp/typeck2.c:757
+#: cp/typeck2.c:752
msgid "initializer list for object of class with virtual base classes"
msgstr ""
-#: cp/typeck2.c:763
+#: cp/typeck2.c:758
msgid "initializer list for object of class with base classes"
msgstr ""
-#: cp/typeck2.c:769
+#: cp/typeck2.c:764
msgid "initializer list for object using virtual functions"
msgstr ""
-#: cp/typeck2.c:832 cp/typeck2.c:849
+#: cp/typeck2.c:827 cp/typeck2.c:843
msgid "missing initializer for member `%D'"
msgstr ""
-#: cp/typeck2.c:837
+#: cp/typeck2.c:832
msgid "uninitialized const member `%D'"
msgstr ""
-#: cp/typeck2.c:840
+#: cp/typeck2.c:834
msgid "member `%D' with uninitialized const fields"
msgstr ""
-#: cp/typeck2.c:843
+#: cp/typeck2.c:837
msgid "member `%D' is uninitialized reference"
msgstr ""
-#: cp/typeck2.c:886
+#: cp/typeck2.c:883
msgid "index value instead of field name in union initializer"
msgstr ""
-#: cp/typeck2.c:898
+#: cp/typeck2.c:895
msgid "no field `%D' in union being initialized"
msgstr ""
-#: cp/typeck2.c:906
+#: cp/typeck2.c:903
msgid "union `%T' with no named members cannot be initialized"
msgstr ""
-#: cp/typeck2.c:942
+#: cp/typeck2.c:939
msgid "excess elements in aggregate initializer"
msgstr ""
-#: cp/typeck2.c:1054
+#: cp/typeck2.c:1053
msgid "circular pointer delegation detected"
msgstr ""
-#: cp/typeck2.c:1067
+#: cp/typeck2.c:1066
msgid "base operand of `->' has non-pointer type `%T'"
msgstr ""
-#: cp/typeck2.c:1081
+#: cp/typeck2.c:1080
msgid "result of `operator->()' yields non-pointer result"
msgstr ""
-#: cp/typeck2.c:1083
+#: cp/typeck2.c:1082
msgid "base operand of `->' is not a pointer"
msgstr ""
-#: cp/typeck2.c:1149
+#: cp/typeck2.c:1148
msgid "`%E' cannot be used as a member pointer, since it is of type `%T'"
msgstr ""
-#: cp/typeck2.c:1156
+#: cp/typeck2.c:1155
msgid ""
"cannot apply member pointer `%E' to `%E', which is of non-aggregate type `%T'"
msgstr ""
-#: cp/typeck2.c:1165
+#: cp/typeck2.c:1164
msgid "member type `%T::' incompatible with object type `%T'"
msgstr ""
-#: cp/typeck2.c:1202
+#: cp/typeck2.c:1201
msgid "`%T' fails to be a typedef or built-in type"
msgstr ""
-#: cp/typeck2.c:1275
+#: cp/typeck2.c:1274
#, c-format
msgid "ISO C++ forbids defining types within %s"
msgstr ""
+#: cp/typeck2.c:1399
+msgid "call to function `%D' which throws incomplete type `%#T'"
+msgstr ""
+
+#: cp/typeck2.c:1402
+msgid "call to function which throws incomplete type `%#T'"
+msgstr ""
+
#. XXX Not i18n clean.
-#: cp/cp-tree.h:3874
+#: cp/cp-tree.h:3846
#, c-format
msgid "%s is deprecated, please see the documentation for details"
msgstr ""
@@ -17652,134 +17982,134 @@ msgstr ""
msgid "Don't announce deprecation of compiler features"
msgstr ""
-#: f/bad.c:386
+#: f/bad.c:387
msgid "note:"
msgstr ""
-#: f/bad.c:390
+#: f/bad.c:391
msgid "warning:"
msgstr ""
-#: f/bad.c:394
+#: f/bad.c:395
msgid "fatal:"
msgstr ""
-#: f/bad.c:436
+#: f/bad.c:437
msgid "(continued):"
msgstr ""
-#: f/bad.c:486 f/bad.c:504
+#: f/bad.c:487 f/bad.c:505
msgid "[REPORT BUG!!] %"
msgstr ""
-#: f/bad.c:493 f/bad.c:525
+#: f/bad.c:494 f/bad.c:526
msgid "[REPORT BUG!!]"
msgstr ""
-#: f/com.c:3130
+#: f/com.c:3132
#, no-c-format
msgid "ASSIGN'ed label cannot fit into `%A' at %0 -- using wider sibling"
msgstr ""
-#: f/com.c:11614
+#: f/com.c:11551
msgid "no INTEGER type can hold a pointer on this configuration"
msgstr ""
-#: f/com.c:11835
+#: f/com.c:11772
#, c-format
msgid "configuration: REAL, INTEGER, and LOGICAL are %d bits wide,"
msgstr ""
-#: f/com.c:11837
+#: f/com.c:11774
#, c-format
msgid "and pointers are %d bits wide, but g77 doesn't yet work"
msgstr ""
-#: f/com.c:11839
+#: f/com.c:11776
msgid "properly unless they all are 32 bits wide"
msgstr ""
-#: f/com.c:11840
+#: f/com.c:11777
msgid "Please keep this in mind before you report bugs."
msgstr ""
#. I/O will probably crash.
-#: f/com.c:11848
+#: f/com.c:11785
#, c-format
msgid "configuration: char * holds %d bits, but ftnlen only %d"
msgstr ""
#. ASSIGN 10 TO I will crash.
-#: f/com.c:11857
+#: f/com.c:11794
#, c-format
msgid ""
"configuration: char * holds %d bits, but INTEGER only %d --\n"
" ASSIGN statement might fail"
msgstr ""
-#: f/com.c:13691
+#: f/com.c:13609
msgid "In statement function"
msgstr ""
-#: f/com.c:13701
+#: f/com.c:13619
msgid "Outside of any program unit:\n"
msgstr ""
-#: f/com.c:15408
+#: f/com.c:15248
#, no-c-format
msgid "%A from %B at %0%C"
msgstr ""
-#: f/com.c:15585
+#: f/com.c:15425
msgid "directory name must immediately follow -I"
msgstr ""
-#: f/com.c:15728
+#: f/com.c:15568
#, no-c-format
msgid "At %0, INCLUDE file %A exists, but is not readable"
msgstr ""
-#: f/com.c:15763
+#: f/com.c:15603
#, no-c-format
msgid "At %0, INCLUDE nesting too deep"
msgstr ""
-#: f/expr.c:9613
+#: f/expr.c:9614
#, no-c-format
msgid "Two arithmetic operators in a row at %0 and %1 -- use parentheses"
msgstr ""
-#: f/expr.c:9663
+#: f/expr.c:9664
#, no-c-format
msgid "Operator at %0 has lower precedence than that at %1 -- use parentheses"
msgstr ""
-#: f/expr.c:10524
+#: f/expr.c:10525
#, no-c-format
msgid ""
"Use .EQV./.NEQV. instead of .EQ./.NE. at %0 for LOGICAL operands at %1 and %2"
msgstr ""
-#: f/expr.c:10895
+#: f/expr.c:10896
#, no-c-format
msgid "Unsupported operand for ** at %1 -- converting to default INTEGER"
msgstr ""
-#: f/g77spec.c:256
+#: f/g77spec.c:255
#, c-format
msgid "overflowed output arg list for `%s'"
msgstr ""
-#: f/g77spec.c:395
+#: f/g77spec.c:394
msgid "--driver no longer supported"
msgstr ""
-#: f/g77spec.c:408
+#: f/g77spec.c:407
#, c-format
msgid "argument to `%s' missing"
msgstr ""
-#: f/g77spec.c:412
+#: f/g77spec.c:411
msgid "no input files; unwilling to write output files"
msgstr ""
@@ -17894,21 +18224,21 @@ msgstr ""
msgid "INCLUDE at %0 not the only statement on the source line"
msgstr ""
-#: f/ste.c:1404 f/ste.c:1755
+#: f/ste.c:1400 f/ste.c:1747
msgid "ASSIGNed FORMAT specifier is too small"
msgstr ""
#. ~~~Someday handle CHARACTER*1, CHARACTER*N
-#: f/ste.c:2636
+#: f/ste.c:2624
#, no-c-format
msgid "SELECT CASE on CHARACTER type (at %0) not supported -- sorry"
msgstr ""
-#: f/ste.c:2965
+#: f/ste.c:2953
msgid "ASSIGN to variable that is too small"
msgstr ""
-#: f/ste.c:2993
+#: f/ste.c:2981
msgid "ASSIGNed GOTO target variable is too small"
msgstr ""
@@ -17917,7 +18247,7 @@ msgstr ""
msgid "Local adjustable symbol `%A' at %0"
msgstr ""
-#: f/target.c:2560
+#: f/target.c:2550
msgid "data initializer on host with different endianness"
msgstr ""
@@ -19242,226 +19572,226 @@ msgstr ""
msgid "In anything"
msgstr ""
-#: java/check-init.c:915
+#: java/check-init.c:917
#, c-format
msgid "internal error in check-init: tree code not implemented: %s"
msgstr ""
-#: java/check-init.c:988
+#: java/check-init.c:990
#, c-format
msgid "final field '%s' may not have been initialized"
msgstr ""
-#: java/class.c:568 java/class.c:593
+#: java/class.c:539 java/class.c:564
msgid "internal error - too many interface type"
msgstr ""
-#: java/class.c:744
+#: java/class.c:677
msgid "bad method signature"
msgstr ""
-#: java/class.c:793
+#: java/class.c:726
msgid "misplaced ConstantValue attribute (not in any field)"
msgstr ""
-#: java/class.c:795
+#: java/class.c:728
#, c-format
msgid "duplicate ConstantValue attribute for field '%s'"
msgstr ""
-#: java/class.c:806
+#: java/class.c:739
#, c-format
msgid "ConstantValue attribute of field '%s' has wrong type"
msgstr ""
-#: java/class.c:1170
+#: java/class.c:1103
#, c-format
msgid "field '%s' not found in class"
msgstr ""
-#: java/class.c:1432
+#: java/class.c:1365
msgid "abstract method in non-abstract class"
msgstr ""
-#: java/class.c:2138
+#: java/class.c:2067
#, c-format
msgid "non-static method '%s' overrides static method"
msgstr ""
-#: java/decl.c:1509
+#: java/decl.c:1537
#, c-format
msgid "In %s: overlapped variable and exception ranges at %d"
msgstr ""
-#: java/decl.c:1593
+#: java/decl.c:1618
msgid "bad type in parameter debug info"
msgstr ""
-#: java/decl.c:1603
+#: java/decl.c:1628
#, c-format
msgid "bad PC range for debug info for local `%s'"
msgstr ""
-#: java/expr.c:549
+#: java/expr.c:530
msgid "stack underflow - dup* operation"
msgstr ""
-#: java/expr.c:1537
+#: java/expr.c:1536
#, c-format
msgid ""
"reference `%s' is ambiguous: appears in interface `%s' and interface `%s'"
msgstr ""
-#: java/expr.c:1566
+#: java/expr.c:1565
#, c-format
msgid "field `%s' not found"
msgstr ""
-#: java/expr.c:1721
+#: java/expr.c:1717
msgid "ret instruction not implemented"
msgstr ""
-#: java/expr.c:1858
+#: java/expr.c:1852
#, c-format
msgid "method '%s' not found in class"
msgstr ""
-#: java/expr.c:2062
+#: java/expr.c:2055
#, c-format
msgid "failed to find class '%s'"
msgstr ""
-#: java/expr.c:2074
+#: java/expr.c:2065
#, c-format
msgid "class '%s' has no method named '%s' matching signature '%s'"
msgstr ""
-#: java/expr.c:2084
+#: java/expr.c:2075
msgid "invokestatic on non static method"
msgstr ""
-#: java/expr.c:2089
+#: java/expr.c:2080
msgid "invokestatic on abstract method"
msgstr ""
-#: java/expr.c:2097
+#: java/expr.c:2088
msgid "invoke[non-static] on static method"
msgstr ""
-#: java/expr.c:2382
+#: java/expr.c:2373
#, c-format
msgid "missing field '%s' in '%s'"
msgstr ""
-#: java/expr.c:2388
+#: java/expr.c:2379
#, c-format
msgid "mismatching signature for field '%s' in '%s'"
msgstr ""
-#: java/expr.c:2411
+#: java/expr.c:2402
#, c-format
msgid "assignment to final field `%s' not in field's class"
msgstr ""
-#: java/expr.c:2416
+#: java/expr.c:2407
#, c-format
msgid "assignment to final static field `%s' not in class initializer"
msgstr ""
-#: java/expr.c:2423
+#: java/expr.c:2414
#, c-format
msgid "assignment to final field `%s' not in constructor"
msgstr ""
-#: java/expr.c:2664
+#: java/expr.c:2661
#, c-format
msgid "can't expand %s"
msgstr ""
-#: java/expr.c:2840
+#: java/expr.c:2838
msgid "invalid PC in line number table"
msgstr ""
#. We've just reached the end of a region of dead code.
-#: java/expr.c:2885
+#: java/expr.c:2883
#, c-format
msgid "unreachable bytecode from %d to before %d"
msgstr ""
#. We've just reached the end of a region of dead code.
-#: java/expr.c:2922
+#: java/expr.c:2920
#, c-format
msgid "unreachable bytecode from %d to the end of the method"
msgstr ""
#. duplicate code from LOAD macro
-#: java/expr.c:3236
+#: java/expr.c:3238
msgid "unrecogized wide sub-instruction"
msgstr ""
-#: java/jcf-io.c:410
+#: java/jcf-io.c:537
#, c-format
msgid ""
"source file for class `%s' is newer than its matching class file. Source "
"file `%s' used instead"
msgstr ""
-#: java/jcf-parse.c:361
+#: java/jcf-parse.c:338
msgid "bad string constant"
msgstr ""
-#: java/jcf-parse.c:379
+#: java/jcf-parse.c:356
#, c-format
msgid "bad value constant type %d, index %d"
msgstr ""
-#: java/jcf-parse.c:551
+#: java/jcf-parse.c:528
#, c-format
msgid "can't reopen %s"
msgstr ""
-#: java/jcf-parse.c:556
+#: java/jcf-parse.c:533
#, c-format
msgid "can't close %s"
msgstr ""
-#: java/jcf-parse.c:638
+#: java/jcf-parse.c:615
#, c-format
msgid "cannot find file for class %s"
msgstr ""
-#: java/jcf-parse.c:650
+#: java/jcf-parse.c:627
msgid "not a valid Java .class file"
msgstr ""
-#: java/jcf-parse.c:653
+#: java/jcf-parse.c:630
msgid "error while parsing constant pool"
msgstr ""
-#: java/jcf-parse.c:656
+#: java/jcf-parse.c:633
#, c-format
msgid "error in constant pool entry #%d\n"
msgstr ""
#. FIXME - where was first time
-#: java/jcf-parse.c:668
+#: java/jcf-parse.c:645
#, c-format
msgid "reading class %s for the second time from %s"
msgstr ""
-#: java/jcf-parse.c:686
+#: java/jcf-parse.c:663
msgid "error while parsing fields"
msgstr ""
-#: java/jcf-parse.c:689
+#: java/jcf-parse.c:666
msgid "error while parsing methods"
msgstr ""
-#: java/jcf-parse.c:692
+#: java/jcf-parse.c:669
msgid "error while parsing final attributes"
msgstr ""
-#: java/jcf-parse.c:706
+#: java/jcf-parse.c:683
#, c-format
msgid ""
"the `java.lang.Object' that was found in `%s' didn't have the special zero-"
@@ -19470,99 +19800,104 @@ msgid ""
"info page describing how to set the classpath"
msgstr ""
-#: java/jcf-parse.c:796
+#: java/jcf-parse.c:773
msgid "missing Code attribute"
msgstr ""
-#: java/jcf-parse.c:1032
+#: java/jcf-parse.c:1010
msgid "source file seen twice on command line and will be compiled only once"
msgstr ""
-#: java/jcf-parse.c:1048
+#: java/jcf-parse.c:1026
msgid "no input file specified"
msgstr ""
-#: java/jcf-parse.c:1077
+#: java/jcf-parse.c:1055
#, c-format
msgid "can't close input file %s"
msgstr ""
-#: java/jcf-parse.c:1114
+#: java/jcf-parse.c:1092
#, c-format
msgid "bad zip/jar file %s"
msgstr ""
-#: java/jcf-write.c:2636
+#: java/jcf-write.c:2641
#, c-format
msgid ""
"internal error in generate_bytecode_insn - tree code not implemented: %s"
msgstr ""
-#: java/jcf-write.c:2943
+#: java/jcf-write.c:2979
msgid "field initializer type mismatch"
msgstr ""
-#: java/jcf-write.c:3352
+#: java/jcf-write.c:3387
#, c-format
msgid "can't create directory %s"
msgstr ""
-#: java/jv-scan.c:183
+#: java/jcf-write.c:3441
+#, c-format
+msgid "can't create %s"
+msgstr ""
+
+#: java/jv-scan.c:187
msgid "only one of `--print-main', `--list-class', and `--complexity' allowed"
msgstr ""
-#: java/jv-scan.c:186
+#: java/jv-scan.c:190
#, c-format
msgid "can't open output file `%s'"
msgstr ""
-#: java/jv-scan.c:220
+#: java/jv-scan.c:224
#, c-format
msgid "file not found `%s'"
msgstr ""
-#: java/jvspec.c:427
+#: java/jvspec.c:426
msgid "can't specify `-D' without `--main'\n"
msgstr ""
-#: java/jvspec.c:430
+#: java/jvspec.c:429
#, c-format
msgid "`%s' is not a valid class name"
msgstr ""
-#: java/jvspec.c:436
-msgid "-R requires -o"
+#: java/jvspec.c:435
+msgid "--resource requires -o"
msgstr ""
-#: java/jvspec.c:443
+#: java/jvspec.c:442
msgid "warning: already-compiled .class files ignored with -C"
msgstr ""
-#: java/jvspec.c:450
+#: java/jvspec.c:449
msgid "cannot specify both -C and -o"
msgstr ""
-#: java/jvspec.c:462
+#: java/jvspec.c:461
msgid "cannot create temporary file"
msgstr ""
-#: java/jvspec.c:490
+#: java/jvspec.c:489
msgid "using both @FILE with multiple files not implemented"
msgstr ""
-#: java/jvspec.c:548
+#: java/jvspec.c:538
msgid "cannot specify `main' class when not linking"
msgstr ""
-#: java/lang.c:487
+#: java/lang.c:543
msgid "can't do dependency tracking with input from stdin"
msgstr ""
-#: java/lang.c:503
+#: java/lang.c:559
msgid "couldn't determine target name for dependency tracking"
msgstr ""
-#: java/lex.c:308
+#: java/lex.c:303
#, c-format
msgid ""
"unknown encoding: `%s'\n"
@@ -19577,268 +19912,266 @@ msgstr ""
msgid "can't mangle %s"
msgstr ""
-#: java/mangle_name.c:145 java/mangle_name.c:217
+#: java/mangle_name.c:144 java/mangle_name.c:216
msgid "internal error - invalid Utf8 name"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:747 /var/repo/gcc/gcc/java/parse.y:785
-msgid "Missing name"
+#: ../../gcc-cvs/gcc/java/parse-scan.y:881 ../../gcc-3cvs/gcc/java/parse.y:962
+#: ../../gcc-3cvs/gcc/java/parse.y:1303 ../../gcc-3cvs/gcc/java/parse.y:1364
+#: ../../gcc-3cvs/gcc/java/parse.y:1574 ../../gcc-3cvs/gcc/java/parse.y:1796
+#: ../../gcc-3cvs/gcc/java/parse.y:1805 ../../gcc-3cvs/gcc/java/parse.y:1816
+#: ../../gcc-3cvs/gcc/java/parse.y:1827 ../../gcc-3cvs/gcc/java/parse.y:1839
+#: ../../gcc-3cvs/gcc/java/parse.y:1854 ../../gcc-3cvs/gcc/java/parse.y:1871
+#: ../../gcc-3cvs/gcc/java/parse.y:1873 ../../gcc-3cvs/gcc/java/parse.y:1945
+#: ../../gcc-3cvs/gcc/java/parse.y:2116 ../../gcc-3cvs/gcc/java/parse.y:2178
+#: ../../gcc-3cvs/gcc/java/parse.y:2330 ../../gcc-3cvs/gcc/java/parse.y:2342
+#: ../../gcc-3cvs/gcc/java/parse.y:2349 ../../gcc-3cvs/gcc/java/parse.y:2356
+#: ../../gcc-3cvs/gcc/java/parse.y:2367 ../../gcc-3cvs/gcc/java/parse.y:2369
+#: ../../gcc-3cvs/gcc/java/parse.y:2407 ../../gcc-3cvs/gcc/java/parse.y:2409
+#: ../../gcc-3cvs/gcc/java/parse.y:2411 ../../gcc-3cvs/gcc/java/parse.y:2432
+#: ../../gcc-3cvs/gcc/java/parse.y:2434 ../../gcc-3cvs/gcc/java/parse.y:2436
+#: ../../gcc-3cvs/gcc/java/parse.y:2452 ../../gcc-3cvs/gcc/java/parse.y:2454
+#: ../../gcc-3cvs/gcc/java/parse.y:2475 ../../gcc-3cvs/gcc/java/parse.y:2477
+#: ../../gcc-3cvs/gcc/java/parse.y:2479 ../../gcc-3cvs/gcc/java/parse.y:2507
+#: ../../gcc-3cvs/gcc/java/parse.y:2509 ../../gcc-3cvs/gcc/java/parse.y:2511
+#: ../../gcc-3cvs/gcc/java/parse.y:2513 ../../gcc-3cvs/gcc/java/parse.y:2531
+#: ../../gcc-3cvs/gcc/java/parse.y:2533 ../../gcc-3cvs/gcc/java/parse.y:2544
+#: ../../gcc-3cvs/gcc/java/parse.y:2555 ../../gcc-3cvs/gcc/java/parse.y:2566
+#: ../../gcc-3cvs/gcc/java/parse.y:2577 ../../gcc-3cvs/gcc/java/parse.y:2588
+#: ../../gcc-3cvs/gcc/java/parse.y:2601 ../../gcc-3cvs/gcc/java/parse.y:2605
+#: ../../gcc-3cvs/gcc/java/parse.y:2607 ../../gcc-3cvs/gcc/java/parse.y:2620
+msgid "Missing term"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:749 /var/repo/gcc/gcc/java/parse.y:787
-#: /var/repo/gcc/gcc/java/parse.y:812 /var/repo/gcc/gcc/java/parse.y:996
-#: /var/repo/gcc/gcc/java/parse.y:1343 /var/repo/gcc/gcc/java/parse.y:1554
-#: /var/repo/gcc/gcc/java/parse.y:1556 /var/repo/gcc/gcc/java/parse.y:1785
-#: /var/repo/gcc/gcc/java/parse.y:1811 /var/repo/gcc/gcc/java/parse.y:1822
-#: /var/repo/gcc/gcc/java/parse.y:1833 /var/repo/gcc/gcc/java/parse.y:1845
+#: ../../gcc-cvs/gcc/java/parse-scan.y:883 ../../gcc-3cvs/gcc/java/parse.y:734
+#: ../../gcc-3cvs/gcc/java/parse.y:772 ../../gcc-3cvs/gcc/java/parse.y:797
+#: ../../gcc-3cvs/gcc/java/parse.y:983 ../../gcc-3cvs/gcc/java/parse.y:1338
+#: ../../gcc-3cvs/gcc/java/parse.y:1550 ../../gcc-3cvs/gcc/java/parse.y:1552
+#: ../../gcc-3cvs/gcc/java/parse.y:1781 ../../gcc-3cvs/gcc/java/parse.y:1807
+#: ../../gcc-3cvs/gcc/java/parse.y:1818 ../../gcc-3cvs/gcc/java/parse.y:1829
+#: ../../gcc-3cvs/gcc/java/parse.y:1841 ../../gcc-3cvs/gcc/java/parse.y:1856
msgid "';' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:810
+#: ../../gcc-3cvs/gcc/java/parse.y:732 ../../gcc-3cvs/gcc/java/parse.y:770
+msgid "Missing name"
+msgstr ""
+
+#: ../../gcc-3cvs/gcc/java/parse.y:795
msgid "'*' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:824
+#: ../../gcc-3cvs/gcc/java/parse.y:809
msgid "Class or interface declaration expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:859 /var/repo/gcc/gcc/java/parse.y:861
+#: ../../gcc-3cvs/gcc/java/parse.y:846 ../../gcc-3cvs/gcc/java/parse.y:848
msgid "Missing class name"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:864 /var/repo/gcc/gcc/java/parse.y:868
-#: /var/repo/gcc/gcc/java/parse.y:876 /var/repo/gcc/gcc/java/parse.y:1041
-#: /var/repo/gcc/gcc/java/parse.y:1289 /var/repo/gcc/gcc/java/parse.y:1291
-#: /var/repo/gcc/gcc/java/parse.y:1620 /var/repo/gcc/gcc/java/parse.y:1856
-#: /var/repo/gcc/gcc/java/parse.y:1888 /var/repo/gcc/gcc/java/parse.y:1940
+#: ../../gcc-3cvs/gcc/java/parse.y:851 ../../gcc-3cvs/gcc/java/parse.y:855
+#: ../../gcc-3cvs/gcc/java/parse.y:863 ../../gcc-3cvs/gcc/java/parse.y:1023
+#: ../../gcc-3cvs/gcc/java/parse.y:1284 ../../gcc-3cvs/gcc/java/parse.y:1286
+#: ../../gcc-3cvs/gcc/java/parse.y:1616 ../../gcc-3cvs/gcc/java/parse.y:1867
+#: ../../gcc-3cvs/gcc/java/parse.y:1899 ../../gcc-3cvs/gcc/java/parse.y:1952
msgid "'{' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:878
+#: ../../gcc-3cvs/gcc/java/parse.y:865
msgid "Missing super class name"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:888 /var/repo/gcc/gcc/java/parse.y:904
+#: ../../gcc-3cvs/gcc/java/parse.y:875 ../../gcc-3cvs/gcc/java/parse.y:891
msgid "Missing interface name"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:975 /var/repo/gcc/gcc/java/parse.y:1308
-#: /var/repo/gcc/gcc/java/parse.y:1369 /var/repo/gcc/gcc/java/parse.y:1578
-#: /var/repo/gcc/gcc/java/parse.y:1800 /var/repo/gcc/gcc/java/parse.y:1809
-#: /var/repo/gcc/gcc/java/parse.y:1820 /var/repo/gcc/gcc/java/parse.y:1831
-#: /var/repo/gcc/gcc/java/parse.y:1843 /var/repo/gcc/gcc/java/parse.y:1860
-#: /var/repo/gcc/gcc/java/parse.y:1862 /var/repo/gcc/gcc/java/parse.y:1933
-#: /var/repo/gcc/gcc/java/parse.y:2104 /var/repo/gcc/gcc/java/parse.y:2166
-#: /var/repo/gcc/gcc/java/parse.y:2318 /var/repo/gcc/gcc/java/parse.y:2330
-#: /var/repo/gcc/gcc/java/parse.y:2337 /var/repo/gcc/gcc/java/parse.y:2344
-#: /var/repo/gcc/gcc/java/parse.y:2355 /var/repo/gcc/gcc/java/parse.y:2357
-#: /var/repo/gcc/gcc/java/parse.y:2395 /var/repo/gcc/gcc/java/parse.y:2397
-#: /var/repo/gcc/gcc/java/parse.y:2399 /var/repo/gcc/gcc/java/parse.y:2420
-#: /var/repo/gcc/gcc/java/parse.y:2422 /var/repo/gcc/gcc/java/parse.y:2424
-#: /var/repo/gcc/gcc/java/parse.y:2440 /var/repo/gcc/gcc/java/parse.y:2442
-#: /var/repo/gcc/gcc/java/parse.y:2463 /var/repo/gcc/gcc/java/parse.y:2465
-#: /var/repo/gcc/gcc/java/parse.y:2467 /var/repo/gcc/gcc/java/parse.y:2495
-#: /var/repo/gcc/gcc/java/parse.y:2497 /var/repo/gcc/gcc/java/parse.y:2499
-#: /var/repo/gcc/gcc/java/parse.y:2501 /var/repo/gcc/gcc/java/parse.y:2519
-#: /var/repo/gcc/gcc/java/parse.y:2521 /var/repo/gcc/gcc/java/parse.y:2532
-#: /var/repo/gcc/gcc/java/parse.y:2543 /var/repo/gcc/gcc/java/parse.y:2554
-#: /var/repo/gcc/gcc/java/parse.y:2565 /var/repo/gcc/gcc/java/parse.y:2576
-#: /var/repo/gcc/gcc/java/parse.y:2589 /var/repo/gcc/gcc/java/parse.y:2593
-#: /var/repo/gcc/gcc/java/parse.y:2595 /var/repo/gcc/gcc/java/parse.y:2608
-msgid "Missing term"
-msgstr ""
-
-#: /var/repo/gcc/gcc/java/parse.y:990
+#: ../../gcc-3cvs/gcc/java/parse.y:977
msgid "Missing variable initializer"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1007
+#: ../../gcc-3cvs/gcc/java/parse.y:994
msgid "Invalid declaration"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1013
-msgid "Can't specify array dimension in a declaration"
-msgstr ""
-
-#: /var/repo/gcc/gcc/java/parse.y:1015 /var/repo/gcc/gcc/java/parse.y:1091
-#: /var/repo/gcc/gcc/java/parse.y:2141 /var/repo/gcc/gcc/java/parse.y:2163
-#: /var/repo/gcc/gcc/java/parse.y:2167 /var/repo/gcc/gcc/java/parse.y:2202
-#: /var/repo/gcc/gcc/java/parse.y:2279 /var/repo/gcc/gcc/java/parse.y:2289
+#: ../../gcc-3cvs/gcc/java/parse.y:997 ../../gcc-3cvs/gcc/java/parse.y:1082
+#: ../../gcc-3cvs/gcc/java/parse.y:2153 ../../gcc-3cvs/gcc/java/parse.y:2175
+#: ../../gcc-3cvs/gcc/java/parse.y:2179 ../../gcc-3cvs/gcc/java/parse.y:2214
+#: ../../gcc-3cvs/gcc/java/parse.y:2291 ../../gcc-3cvs/gcc/java/parse.y:2301
msgid "']' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1019
+#: ../../gcc-3cvs/gcc/java/parse.y:1001
msgid "Unbalanced ']'"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1055
+#: ../../gcc-3cvs/gcc/java/parse.y:1037
msgid "Invalid method declaration, method name required"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1061 /var/repo/gcc/gcc/java/parse.y:1063
-#: /var/repo/gcc/gcc/java/parse.y:2024
+#: ../../gcc-3cvs/gcc/java/parse.y:1042 ../../gcc-3cvs/gcc/java/parse.y:1047
+#: ../../gcc-3cvs/gcc/java/parse.y:1052 ../../gcc-3cvs/gcc/java/parse.y:2036
msgid "Identifier expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1066
+#: ../../gcc-3cvs/gcc/java/parse.y:1057
msgid "Invalid method declaration, return type required"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1089 /var/repo/gcc/gcc/java/parse.y:1534
-#: /var/repo/gcc/gcc/java/parse.y:1541 /var/repo/gcc/gcc/java/parse.y:1550
-#: /var/repo/gcc/gcc/java/parse.y:1552 /var/repo/gcc/gcc/java/parse.y:1580
-#: /var/repo/gcc/gcc/java/parse.y:1688 /var/repo/gcc/gcc/java/parse.y:1969
-#: /var/repo/gcc/gcc/java/parse.y:2022
+#: ../../gcc-3cvs/gcc/java/parse.y:1080 ../../gcc-3cvs/gcc/java/parse.y:1530
+#: ../../gcc-3cvs/gcc/java/parse.y:1537 ../../gcc-3cvs/gcc/java/parse.y:1546
+#: ../../gcc-3cvs/gcc/java/parse.y:1548 ../../gcc-3cvs/gcc/java/parse.y:1576
+#: ../../gcc-3cvs/gcc/java/parse.y:1684 ../../gcc-3cvs/gcc/java/parse.y:1981
+#: ../../gcc-3cvs/gcc/java/parse.y:2034
msgid "')' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1105
+#: ../../gcc-3cvs/gcc/java/parse.y:1096
msgid "Missing formal parameter term"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1120 /var/repo/gcc/gcc/java/parse.y:1125
+#: ../../gcc-3cvs/gcc/java/parse.y:1111 ../../gcc-3cvs/gcc/java/parse.y:1116
msgid "Missing identifier"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1145 /var/repo/gcc/gcc/java/parse.y:1154
+#: ../../gcc-3cvs/gcc/java/parse.y:1136 ../../gcc-3cvs/gcc/java/parse.y:1145
msgid "Missing class type term"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1306
+#: ../../gcc-3cvs/gcc/java/parse.y:1301
msgid "Invalid interface type"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1498 /var/repo/gcc/gcc/java/parse.y:1667
-#: /var/repo/gcc/gcc/java/parse.y:1669
+#: ../../gcc-3cvs/gcc/java/parse.y:1494 ../../gcc-3cvs/gcc/java/parse.y:1663
+#: ../../gcc-3cvs/gcc/java/parse.y:1665
msgid "':' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1520 /var/repo/gcc/gcc/java/parse.y:1525
-#: /var/repo/gcc/gcc/java/parse.y:1530
+#: ../../gcc-3cvs/gcc/java/parse.y:1516 ../../gcc-3cvs/gcc/java/parse.y:1521
+#: ../../gcc-3cvs/gcc/java/parse.y:1526
msgid "Invalid expression statement"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1548 /var/repo/gcc/gcc/java/parse.y:1576
-#: /var/repo/gcc/gcc/java/parse.y:1616 /var/repo/gcc/gcc/java/parse.y:1684
-#: /var/repo/gcc/gcc/java/parse.y:1752 /var/repo/gcc/gcc/java/parse.y:1858
-#: /var/repo/gcc/gcc/java/parse.y:1926 /var/repo/gcc/gcc/java/parse.y:2016
-#: /var/repo/gcc/gcc/java/parse.y:2018 /var/repo/gcc/gcc/java/parse.y:2026
-#: /var/repo/gcc/gcc/java/parse.y:2262 /var/repo/gcc/gcc/java/parse.y:2264
+#: ../../gcc-3cvs/gcc/java/parse.y:1544 ../../gcc-3cvs/gcc/java/parse.y:1572
+#: ../../gcc-3cvs/gcc/java/parse.y:1612 ../../gcc-3cvs/gcc/java/parse.y:1680
+#: ../../gcc-3cvs/gcc/java/parse.y:1748 ../../gcc-3cvs/gcc/java/parse.y:1869
+#: ../../gcc-3cvs/gcc/java/parse.y:1938 ../../gcc-3cvs/gcc/java/parse.y:2028
+#: ../../gcc-3cvs/gcc/java/parse.y:2030 ../../gcc-3cvs/gcc/java/parse.y:2038
+#: ../../gcc-3cvs/gcc/java/parse.y:2274 ../../gcc-3cvs/gcc/java/parse.y:2276
msgid "'(' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1618
+#: ../../gcc-3cvs/gcc/java/parse.y:1614
msgid "Missing term or ')'"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1665
+#: ../../gcc-3cvs/gcc/java/parse.y:1661
msgid "Missing or invalid constant expression"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1686
+#: ../../gcc-3cvs/gcc/java/parse.y:1682
msgid "Missing term and ')' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1725
+#: ../../gcc-3cvs/gcc/java/parse.y:1721
msgid "Invalid control expression"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1727 /var/repo/gcc/gcc/java/parse.y:1729
+#: ../../gcc-3cvs/gcc/java/parse.y:1723 ../../gcc-3cvs/gcc/java/parse.y:1725
msgid "Invalid update expression"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1754
+#: ../../gcc-3cvs/gcc/java/parse.y:1750
msgid "Invalid init statement"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1929
+#: ../../gcc-3cvs/gcc/java/parse.y:1941
msgid "Missing term or ')' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1971
+#: ../../gcc-3cvs/gcc/java/parse.y:1983
msgid "'class' or 'this' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:1973 /var/repo/gcc/gcc/java/parse.y:1975
+#: ../../gcc-3cvs/gcc/java/parse.y:1985 ../../gcc-3cvs/gcc/java/parse.y:1987
msgid "'class' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:2020
+#: ../../gcc-3cvs/gcc/java/parse.y:2032
msgid "')' or term expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:2139
+#: ../../gcc-3cvs/gcc/java/parse.y:2151
msgid "'[' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:2217
+#: ../../gcc-3cvs/gcc/java/parse.y:2229
msgid "Field expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:2274 /var/repo/gcc/gcc/java/parse.y:2284
+#: ../../gcc-3cvs/gcc/java/parse.y:2286 ../../gcc-3cvs/gcc/java/parse.y:2296
msgid "Missing term and ']' expected"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:2388
+#: ../../gcc-3cvs/gcc/java/parse.y:2400
msgid "']' expected, invalid type expression"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:2391
+#: ../../gcc-3cvs/gcc/java/parse.y:2403
msgid "Invalid type expression"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:2503
+#: ../../gcc-3cvs/gcc/java/parse.y:2515
msgid "Invalid reference type"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:2981
+#: ../../gcc-3cvs/gcc/java/parse.y:2993
msgid "Constructor invocation must be first thing in a constructor"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:2983
+#: ../../gcc-3cvs/gcc/java/parse.y:2995
msgid "Only constructors can invoke constructors"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:2992
+#: ../../gcc-3cvs/gcc/java/parse.y:3004
#, c-format
msgid ": `%s' JDK1.1(TM) feature"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:3052 /var/repo/gcc/gcc/java/parse.y:3054
+#: ../../gcc-3cvs/gcc/java/parse.y:3064 ../../gcc-3cvs/gcc/java/parse.y:3066
#, c-format
msgid ""
"%s.\n"
"%s"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:6833
+#: ../../gcc-3cvs/gcc/java/parse.y:6867
#, c-format
msgid "malformed .zip archive in CLASSPATH: %s"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:6904
+#: ../../gcc-3cvs/gcc/java/parse.y:6938
#, c-format
msgid ""
"Can't find default package `%s'. Check the CLASSPATH environment variable "
"and the access to the archives"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:12228
+#: ../../gcc-3cvs/gcc/java/parse.y:12266
#, c-format
msgid "missing static field `%s'"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:12233
+#: ../../gcc-3cvs/gcc/java/parse.y:12271
#, c-format
msgid "not a static field `%s'"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:12276
+#: ../../gcc-3cvs/gcc/java/parse.y:12314
#, c-format
msgid "No case for %s"
msgstr ""
-#: /var/repo/gcc/gcc/java/parse.y:13122
+#: ../../gcc-3cvs/gcc/java/parse.y:13240
#, c-format
msgid "unregistered operator %s"
msgstr ""
@@ -19847,16 +20180,20 @@ msgstr ""
msgid "junk at end of signature string"
msgstr ""
-#: java/verify.c:480
+#: java/verify.c:479
msgid "bad pc in exception_table"
msgstr ""
-#: java/verify.c:1392
+#: java/verify.c:485
+msgid "exception handler inside code that is being protected"
+msgstr ""
+
+#: java/verify.c:1395
#, c-format
msgid "unknown opcode %d@pc=%d during verification"
msgstr ""
-#: java/verify.c:1462 java/verify.c:1475 java/verify.c:1479
+#: java/verify.c:1465 java/verify.c:1478 java/verify.c:1482
#, c-format
msgid "verification error at PC=%d"
msgstr ""
@@ -19925,122 +20262,132 @@ msgstr ""
msgid "Use offset tables for virtual method calls"
msgstr ""
-#: objc/objc-act.c:567
-msgid "no class name specified as argument to -fconstant-string-class"
-msgstr ""
-
-#: objc/objc-act.c:718
+#: objc/objc-act.c:651
#, c-format
msgid "object does not conform to the `%s' protocol"
msgstr ""
-#: objc/objc-act.c:762
+#: objc/objc-act.c:737 objc/objc-act.c:810
#, c-format
msgid "class `%s' does not implement the `%s' protocol"
msgstr ""
-#: objc/objc-act.c:843
+#: objc/objc-act.c:914
#, c-format
msgid "`%s' cannot be statically allocated"
msgstr ""
-#: objc/objc-act.c:900
+#: objc/objc-act.c:963
#, c-format
msgid "unexpected type for `id' (%s)"
msgstr ""
-#: objc/objc-act.c:905
+#: objc/objc-act.c:968
msgid "undefined type `id', please import <objc/objc.h>"
msgstr ""
-#: objc/objc-act.c:957
+#: objc/objc-act.c:1019
#, c-format
msgid "protocol `%s' has circular dependency"
msgstr ""
-#: objc/objc-act.c:979 objc/objc-act.c:5187
+#: objc/objc-act.c:1041 objc/objc-act.c:5301
#, c-format
msgid "cannot find protocol declaration for `%s'"
msgstr ""
-#: objc/objc-act.c:1237 objc/objc-act.c:5705 objc/objc-act.c:6035
-#: objc/objc-act.c:6084 objc/objc-act.c:6120 objc-parse.y:1764
+#: objc/objc-act.c:1289 objc/objc-act.c:5877 objc/objc-act.c:6195
+#: objc/objc-act.c:6244 objc/objc-act.c:6280 objc-parse.y:1800
#, c-format
msgid "cannot find interface declaration for `%s'"
msgstr ""
-#: objc/objc-act.c:1262
+#: objc/objc-act.c:1328
#, c-format
msgid "cannot find reference tag for class `%s'"
msgstr ""
-#: objc/objc-act.c:2272
+#: objc/objc-act.c:2050
+#, c-format
+msgid "creating selector for non existant method %s"
+msgstr ""
+
+#: objc/objc-act.c:2364
#, c-format
msgid "cannot find class `%s'"
msgstr ""
-#: objc/objc-act.c:2274
+#: objc/objc-act.c:2366
#, c-format
msgid "class `%s' already exists"
msgstr ""
#. fatal did not work with 2 args...should fix
-#: objc/objc-act.c:2398
+#: objc/objc-act.c:2473
#, c-format
msgid "cannot find interface declaration for `%s', superclass of `%s'"
msgstr ""
-#: objc/objc-act.c:2405
+#: objc/objc-act.c:2480
#, c-format
msgid "circular inheritance in interface declaration for `%s'"
msgstr ""
-#: objc/objc-act.c:3458 objc/objc-act.c:3475
+#: objc/objc-act.c:3566 objc/objc-act.c:3583
msgid "inconsistent instance variable specification"
msgstr ""
-#: objc/objc-act.c:4668
+#: objc/objc-act.c:4580
+msgid "can not use an object as parameter to a method\n"
+msgstr ""
+
+#: objc/objc-act.c:4780
#, c-format
msgid "multiple declarations for method `%s'"
msgstr ""
-#: objc/objc-act.c:4834
+#: objc/objc-act.c:4946
#, c-format
msgid "invalid receiver type `%s'"
msgstr ""
-#: objc/objc-act.c:4865 objc/objc-act.c:4891 objc/objc-act.c:4939
+#: objc/objc-act.c:4977 objc/objc-act.c:5003 objc/objc-act.c:5051
#, c-format
msgid "`%s' does not respond to `%s'"
msgstr ""
-#: objc/objc-act.c:4871 objc/objc-act.c:7155
+#: objc/objc-act.c:4983 objc/objc-act.c:7318
#, c-format
msgid "no super class declared in interface for `%s'"
msgstr ""
-#: objc/objc-act.c:4969
+#: objc/objc-act.c:5081
msgid "cannot find class (factory) method"
msgstr ""
-#: objc/objc-act.c:4970 objc/objc-act.c:5014
+#: objc/objc-act.c:5082 objc/objc-act.c:5126
#, c-format
msgid "return type for `%s' defaults to id"
msgstr ""
-#: objc/objc-act.c:4987
+#: objc/objc-act.c:5099
#, c-format
msgid "method `%s' not implemented by protocol"
msgstr ""
-#: objc/objc-act.c:4996
+#: objc/objc-act.c:5108
msgid "return type defaults to id"
msgstr ""
-#: objc/objc-act.c:5013
+#: objc/objc-act.c:5125
msgid "cannot find method"
msgstr ""
+#: objc/objc-act.c:5399
+#, c-format
+msgid "undeclared selector `%s'"
+msgstr ""
+
#. Historically, a class method that produced objects (factory
#. method) would assign `self' to the instance that it
#. allocated. This would effectively turn the class method into
@@ -20050,108 +20397,108 @@ msgstr ""
#. to an instance variable. It's better to catch the cases
#. where this is done unknowingly than to support the above
#. paradigm.
-#: objc/objc-act.c:5256
+#: objc/objc-act.c:5443
#, c-format
msgid "instance variable `%s' accessed in class method"
msgstr ""
-#: objc/objc-act.c:5506
+#: objc/objc-act.c:5678
#, c-format
msgid "duplicate definition of class method `%s'"
msgstr ""
-#: objc/objc-act.c:5512
+#: objc/objc-act.c:5684
#, c-format
msgid "duplicate declaration of class method `%s'"
msgstr ""
-#: objc/objc-act.c:5548
+#: objc/objc-act.c:5720
#, c-format
msgid "duplicate definition of instance method `%s'"
msgstr ""
-#: objc/objc-act.c:5554
+#: objc/objc-act.c:5726
#, c-format
msgid "duplicate declaration of instance method `%s'"
msgstr ""
-#: objc/objc-act.c:5594
+#: objc/objc-act.c:5766
#, c-format
msgid "duplicate interface declaration for category `%s(%s)'"
msgstr ""
-#: objc/objc-act.c:5680
+#: objc/objc-act.c:5852
#, c-format
msgid "instance variable `%s' is declared private"
msgstr ""
-#: objc/objc-act.c:5727
+#: objc/objc-act.c:5899
#, c-format
msgid "instance variable `%s' is declared %s"
msgstr ""
-#: objc/objc-act.c:5737
+#: objc/objc-act.c:5909
msgid "static access to object of type `id'"
msgstr ""
-#: objc/objc-act.c:5774 objc/objc-act.c:5867
+#: objc/objc-act.c:5934 objc/objc-act.c:6027
#, c-format
msgid "incomplete implementation of class `%s'"
msgstr ""
-#: objc/objc-act.c:5778 objc/objc-act.c:5872
+#: objc/objc-act.c:5938 objc/objc-act.c:6032
#, c-format
msgid "incomplete implementation of category `%s'"
msgstr ""
-#: objc/objc-act.c:5783 objc/objc-act.c:5877
+#: objc/objc-act.c:5943 objc/objc-act.c:6037
#, c-format
msgid "method definition for `%c%s' not found"
msgstr ""
-#: objc/objc-act.c:5921
+#: objc/objc-act.c:6081
#, c-format
msgid "%s `%s' does not fully implement the `%s' protocol"
msgstr ""
-#: objc/objc-act.c:5979 objc/objc-act.c:8060
+#: objc/objc-act.c:6139 objc/objc-act.c:8249
msgid "`@end' missing in implementation context"
msgstr ""
-#: objc/objc-act.c:6007
+#: objc/objc-act.c:6167
#, c-format
msgid "reimplementation of class `%s'"
msgstr ""
-#: objc/objc-act.c:6049
+#: objc/objc-act.c:6209
#, c-format
msgid "conflicting super class name `%s'"
msgstr ""
-#: objc/objc-act.c:6064
+#: objc/objc-act.c:6224
#, c-format
msgid "duplicate interface declaration for class `%s'"
msgstr ""
-#: objc/objc-act.c:6346
+#: objc/objc-act.c:6506
#, c-format
msgid "duplicate declaration for protocol `%s'"
msgstr ""
-#: objc/objc-act.c:7196
+#: objc/objc-act.c:7363
msgid "[super ...] must appear in a method context"
msgstr ""
-#: objc/objc-act.c:8162 objc/objc-act.c:8178
+#: objc/objc-act.c:8354 objc/objc-act.c:8370
#, c-format
msgid "potential selector conflict for method `%s'"
msgstr ""
-#: objc-parse.y:2617
+#: objc-parse.y:2656
msgid "`@end' must appear in an implementation context"
msgstr ""
-#: objc-parse.y:2891
+#: objc-parse.y:2932
msgid "method definition not in class context"
msgstr ""
@@ -20183,87 +20530,105 @@ msgstr ""
msgid "Specify the name of the class for constant strings"
msgstr ""
-#: config/nextstep.h:160 config/nextstep.h:163
-msgid "-p profiling is no longer supported. Use -pg instead"
+#. This is the contribution to the `lang_options' array in gcc.c for
+#. treelang.
+#: treelang/lang-options.h:26
+msgid "(debug) trace parsing process"
msgstr ""
-#: config/arm/arm.h:211
-msgid "-mapcs-26 and -mapcs-32 may not be used together"
+#: treelang/lang-options.h:27
+msgid "(debug) trace lexical analysis"
msgstr ""
-#: config/arm/arm.h:223
-msgid "-msoft-float and -mhard_float may not be used together"
+#: config/darwin.h:212
+msgid "-current_version only allowed with -dynamiclib"
msgstr ""
-#: config/arm/arm.h:234
-msgid "-mbig-endian and -mlittle-endian may not be used together"
+#: config/darwin.h:215
+msgid "-install_name only allowed with -dynamiclib"
msgstr ""
-#: config/arm/arm.h:252
-msgid "incompatible interworking options"
+#: config/darwin.h:220
+msgid "-bundle not allowed with -dynamiclib"
msgstr ""
-#: config/sparc/freebsd.h:31 config/ia64/freebsd.h:23
-#: config/alpha/freebsd.h:35 config/i386/freebsd-aout.h:223
-msgid "`-p' not supported; use `-pg' and gprof(1)"
+#: config/darwin.h:221
+msgid "-bundle_loader not allowed with -dynamiclib"
msgstr ""
-#: config/sparc/linux64.h:254 config/sparc/linux64.h:265
-#: config/sparc/netbsd-elf.h:153 config/sparc/netbsd-elf.h:172
-#: config/sparc/sol2-bi.h:238 config/sparc/sol2-bi.h:248
-msgid "may not use both -m32 and -m64"
+#: config/darwin.h:222
+msgid "-client_name not allowed with -dynamiclib"
msgstr ""
-#: config/mcore/mcore.h:60
-msgid "choose either big or little endian, not both"
+#: config/darwin.h:225
+msgid "-force_cpusubtype_ALL not allowed with -dynamiclib"
msgstr ""
-#: config/mcore/mcore.h:63
-msgid "choose either m340 or m210 not both"
+#: config/darwin.h:226
+msgid "-force_flat_namespace not allowed with -dynamiclib"
msgstr ""
-#: config/mcore/mcore.h:64
-msgid "the m210 does not have little endian support"
+#: config/darwin.h:228
+msgid "-keep_private_externs not allowed with -dynamiclib"
msgstr ""
-#: gcc.c:673 f/lang-specs.h:35
+#: config/darwin.h:229
+msgid "-private_bundle not allowed with -dynamiclib"
+msgstr ""
+
+#: f/lang-specs.h:38 gcc.c:689
msgid "GNU C does not support -C without using -E"
msgstr ""
-#: gcc.c:674 f/lang-specs.h:36
+#: f/lang-specs.h:39 gcc.c:690
msgid "GNU C does not support -CC without using -E"
msgstr ""
-#: gcc.c:701 java/jvspec.c:77 ada/lang-specs.h:38
-msgid "-pg and -fomit-frame-pointer are incompatible"
+#: config/sparc/sol2-bi.h:168 config/sparc/sol2-bi.h:178
+#: config/sparc/linux64.h:197 config/sparc/linux64.h:208
+#: config/sparc/netbsd-elf.h:163 config/sparc/netbsd-elf.h:182
+msgid "may not use both -m32 and -m64"
msgstr ""
-#: gcc.c:846
-msgid "-E required when input is from standard input"
+#: config/ia64/freebsd.h:23 config/sparc/freebsd.h:33
+#: config/i386/freebsd-aout.h:203 config/alpha/freebsd.h:42
+msgid "`-p' not supported; use `-pg' and gprof(1)"
msgstr ""
-#: gcc.c:850
-msgid "compilation of header file requested"
+#: config/vax/vax.h:50 config/vax/vax.h:51
+msgid "profiling not supported with -mg\n"
msgstr ""
-#: config/mips/r3900.h:36 config/mips/r3900.h:42
-msgid "-mhard-float not supported"
+#: config/mips/mips.h:954
+msgid "-pipe is not supported"
msgstr ""
-#: config/mips/r3900.h:38 config/mips/r3900.h:44
-msgid "-msingle-float and -msoft-float can not both be specified"
+#: config/mips/mips.h:1147 config/arc/arc.h:63
+msgid "may not use both -EB and -EL"
msgstr ""
-#: config/i386/cygwin.h:106
+#: java/jvspec.c:77 gcc.c:716 ada/lang-specs.h:38
+msgid "-pg and -fomit-frame-pointer are incompatible"
+msgstr ""
+
+#: config/rs6000/darwin.h:62
+msgid " conflicting code gen style switches are used"
+msgstr ""
+
+#: config/i386/cygwin.h:115
msgid "mno-cygwin and mno-win32 are not compatible"
msgstr ""
-#: config/i386/cygwin.h:161 config/i386/mingw32.h:69
+#: config/i386/cygwin.h:170 config/i386/mingw32.h:84
msgid "shared and mdll are not compatible"
msgstr ""
-#: ada/lang-specs.h:41
-msgid "-c or -S required for Ada"
+#: gcc.c:867
+msgid "-E required when input is from standard input"
+msgstr ""
+
+#: gcc.c:871
+msgid "compilation of header file requested"
msgstr ""
#: java/lang-specs.h:33
@@ -20278,74 +20643,74 @@ msgstr ""
msgid "-femit-class-file should used along with -fsyntax-only"
msgstr ""
-#: config/i860/fx2800.h:290
-msgid "-p option not supported: use -pg instead"
+#: treelang/lang-specs.h:52
+msgid "-pg or -p and -fomit-frame-pointer are incompatible"
+msgstr ""
+
+#: config/vax/netbsd-elf.h:42
+msgid "The -shared option is not currently supported for VAX ELF."
msgstr ""
-#: config/arm/riscix.h:73 config/arm/riscix.h:133
-msgid "-mbsd and -pedantic incompatible"
+#: config/mcore/mcore.h:60
+msgid "choose either big or little endian, not both"
msgstr ""
-#: config/arm/riscix.h:74 config/arm/riscix.h:134
-msgid "-mbsd and -mxopen incompatible"
+#: config/mcore/mcore.h:63
+msgid "choose either m340 or m210 not both"
msgstr ""
-#: config/arm/riscix.h:75 config/arm/riscix.h:135
-msgid "-mxopen and -pedantic incompatible"
+#: config/mcore/mcore.h:64
+msgid "the m210 does not have little endian support"
msgstr ""
-#: config/arc/arc.h:59 config/mips/mips.h:1004
-msgid "may not use both -EB and -EL"
+#: config/arm/arm.h:178
+msgid "-mapcs-26 and -mapcs-32 may not be used together"
msgstr ""
-#: config/vax/vax.h:42 config/vax/vax.h:43
-msgid "profiling not supported with -mg\n"
+#: config/arm/arm.h:180
+msgid "-msoft-float and -mhard_float may not be used together"
msgstr ""
-#: config/mips/mips.h:834
-msgid "-pipe is not supported"
+#: config/arm/arm.h:182
+msgid "-mbig-endian and -mlittle-endian may not be used together"
msgstr ""
-#: config/mips/mips.h:1000
-msgid "may not use both -mfp64 and -msingle-float"
+#: config/mips/r3900.h:35
+msgid "-mhard-float not supported"
msgstr ""
-#: config/mips/mips.h:1001
-msgid "may not use both -mfp64 and -m4650"
+#: config/mips/r3900.h:37
+msgid "-msingle-float and -msoft-float can not both be specified"
msgstr ""
-#: config/mips/mips.h:1003
-msgid "may not use both -mgp32 and -mfp64"
+#: ada/lang-specs.h:41
+msgid "-c or -S required for Ada"
msgstr ""
-#: config/i386/sco5.h:658 config/i386/sco5.h:729
+#: config/i386/sco5.h:585 config/i386/sco5.h:666
msgid "-static not valid with -mcoff"
msgstr ""
-#: config/i386/sco5.h:659 config/i386/sco5.h:730
+#: config/i386/sco5.h:586 config/i386/sco5.h:667
msgid "-shared not valid with -mcoff"
msgstr ""
-#: config/i386/sco5.h:660 config/i386/sco5.h:731
+#: config/i386/sco5.h:587 config/i386/sco5.h:668
msgid "-symbolic not valid with -mcoff"
msgstr ""
-#: config/i386/sco5.h:696
+#: config/i386/sco5.h:636
msgid "-fpic is not valid with -mcoff"
msgstr ""
-#: config/i386/sco5.h:697
+#: config/i386/sco5.h:637
msgid "-fPIC is not valid with -mcoff"
msgstr ""
-#: config/i386/sco5.h:732
+#: config/i386/sco5.h:669
msgid "-fpic not valid with -mcoff"
msgstr ""
-#: config/i386/sco5.h:733
+#: config/i386/sco5.h:670
msgid "-fPIC not valid with -mcoff"
msgstr ""
-
-#: config/mmix/mmix.h:112
-msgid "options -mabi=mmixware and -mabi=gnu are mutually exclusive"
-msgstr ""
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7fc603cc378..976a33c2639 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,61 @@
+2002-12-26 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/warn/inline1.C: New test.
+ * g++.old-deja/g++.brendan/crash64.C: Remove spurious inlines.
+ * g++.old-deja/g++.jason/synth10.C: Likewise.
+ * g++.old-deja/g++.mike/net31.C: Likewise.
+ * g++.old-deja/g++.mike/p8786.C: Likewise.
+
+ * g++.dg/template/friend10.C: New test.
+ * g++.dg/template/conv5.C: New test.
+
+2002-12-24 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/lookup/scoped3.C: New test.
+
+ * g++.dg/lookup/decl1.C: New test.
+ * g++.dg/lookup/decl2.C: New test.
+
+2002-12-24 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * g++.dg/init/new1.C, g++.dg/template/alignof1.C,
+ gcc.c-torture/compile/20021015-1.c,
+ gcc.c-torture/compile/20021015-2.c,
+ gcc.c-torture/compile/20021123-1.c,
+ gcc.c-torture/compile/20021123-2.c,
+ gcc.c-torture/compile/20021123-3.c,
+ gcc.c-torture/compile/20021123-4.c,
+ gcc.c-torture/execute/20021024-1.c: Add tests previously added
+ only to 3.1 or 3.2 branch.
+
+2002-12-22 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/parse/conv_op1.C: New test.
+
+2002-12-19 Devang Patel <dpatel@apple.com>
+
+ * gcc.dg/darwin-ld-5.c: Rewrite test to test -dynamic.
+
+2002-12-19 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.c-torture/execute/20021219-1.c: New test.
+
+2002-12-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/8099
+ * g++.dg/template/friend9.C: New test.
+
+2002-12-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/3663
+ * g++.dg/template/access7.C: New test.
+
+2002-12-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/8442
+ * g++.dg/template/type2.C: New test.
+ * g++.dg/template/ttp3.C: Change expected error message.
+
2002-12-12 Devang Patel <dpatel@apple.com>
* gcc.dg/darwin-ld-1.c: New test.
* gcc.dg/darwin-ld-2.c: New test.
diff --git a/gcc/testsuite/g++.dg/init/new1.C b/gcc/testsuite/g++.dg/init/new1.C
new file mode 100644
index 00000000000..24b60d3c409
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/new1.C
@@ -0,0 +1,20 @@
+// Origin: asharji@uwaterloo.ca
+
+// { dg-do compile }
+// { dg-options "-fvolatile" }
+
+typedef __SIZE_TYPE__ size_t;
+
+class bar {
+ int i;
+ public :
+ void * operator new ( size_t , void * storage );
+};
+
+class foo {
+ int storage[ 5 ];
+ public:
+ void mem ( ) {
+ bar *s = new ( ( void * ) & storage ) bar;
+ }
+};
diff --git a/gcc/testsuite/g++.dg/lookup/decl1.C b/gcc/testsuite/g++.dg/lookup/decl1.C
new file mode 100644
index 00000000000..d9af65604cb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/decl1.C
@@ -0,0 +1,32 @@
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
+
+// PR 8702. Failure to match templates.
+
+template <typename X> struct C1{};
+
+template <typename X>
+struct C2 {
+ template<typename Y> operator C1<Y>();
+ template<typename Y> operator C2<Y>();
+};
+
+template<typename X> template<typename Y>
+C2<X>::operator C1<Y>()
+{
+ return C1<Y>();
+}
+
+struct A
+{
+ operator int (); // { dg-error "operator" "" }
+ operator float (); // { dg-error "operator" "" }
+ operator float () const; // { dg-error "operator" "" }
+ template <typename T> operator T * (); // { dg-error "candidates" "" }
+};
+
+A::operator short () { // { dg-error "prototype for" "" }
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/lookup/decl2.C b/gcc/testsuite/g++.dg/lookup/decl2.C
new file mode 100644
index 00000000000..75ce0967a4b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/decl2.C
@@ -0,0 +1,27 @@
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
+// Source Martin Buchholz martin@xemacs.org
+
+// PR 9053. Failed to consider templates that are disambiguated by
+// return type.
+
+template <typename T> class bar;
+template <> struct bar<const char*> { typedef void type; };
+template <typename T> class qux;
+template <> struct qux<int> { typedef void type; };
+
+template <typename T>
+typename bar<T>::type foo (T t) { }
+
+template <typename T>
+typename qux<T>::type foo (T t) { }
+
+
+int
+main (int argc, char *argv[])
+{
+ foo ("foo");
+ foo (7);
+}
diff --git a/gcc/testsuite/g++.dg/lookup/scoped3.C b/gcc/testsuite/g++.dg/lookup/scoped3.C
new file mode 100644
index 00000000000..992f1d12809
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/scoped3.C
@@ -0,0 +1,23 @@
+
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
+
+// PR 7964. ICE with scoped method call
+
+struct A {
+ virtual void ostr() const;
+};
+
+class B : public virtual A {};
+
+template<typename T>
+struct C : public B
+{
+ void ostr() const
+ { B::ostr(); }
+};
+
+
+template C<int>;
diff --git a/gcc/testsuite/g++.dg/parse/conv_op1.C b/gcc/testsuite/g++.dg/parse/conv_op1.C
new file mode 100644
index 00000000000..e892f01aadd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/conv_op1.C
@@ -0,0 +1,30 @@
+
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 21 Dec 2002 <nathan@codesourcery.com>
+
+// PR 8572. ICE with templated conversion operators.
+
+template <typename T> struct A
+{
+ struct B { };
+ operator B* () const;
+ B *Foo ();
+};
+
+template <typename T> typename A<T>::B *A<T>::Foo ()
+{
+ return 0;
+}
+
+template <typename T> A<T>::operator typename A<T>::B* () const
+{
+ return 0;
+}
+
+void Foo (A<int> &p)
+{
+ p.Foo ();
+ static_cast <A<int>::B *> (p);
+}
diff --git a/gcc/testsuite/g++.dg/template/access7.C b/gcc/testsuite/g++.dg/template/access7.C
new file mode 100644
index 00000000000..92d4c68db39
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/access7.C
@@ -0,0 +1,18 @@
+// { dg-do compile }
+
+// PR c++/3663
+// Enforce access of nested type.
+
+template <typename A>
+class S {
+ class T {}; // { dg-error "private" }
+};
+
+template <typename A>
+typename A::T* f (A) { // { dg-error "this context" }
+ return 0;
+}
+
+void g () {
+ f (S<int> ()); // { dg-error "context|instantiated" }
+}
diff --git a/gcc/testsuite/g++.dg/template/alignof1.C b/gcc/testsuite/g++.dg/template/alignof1.C
new file mode 100644
index 00000000000..50a32183cfc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/alignof1.C
@@ -0,0 +1,13 @@
+template<typename T>
+int my_alignof()
+{
+ return __alignof__(T);
+}
+
+template<typename>
+struct X { };
+
+int main()
+{
+ return my_alignof<X<void> >();
+}
diff --git a/gcc/testsuite/g++.dg/template/conv5.C b/gcc/testsuite/g++.dg/template/conv5.C
new file mode 100644
index 00000000000..80835437a98
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/conv5.C
@@ -0,0 +1,22 @@
+// { dg-do compile }
+
+// Copyright (C) 2001 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 26 Dec 2002 <nathan@codesourcery.com>
+
+// PR 764. Failed to find friend in overload resolution
+
+template <class T>
+struct S
+{
+ friend bool operator== (const S&, const S&) {
+ return true;
+ }
+};
+
+int main ()
+{
+ // S<int> s;
+
+ const S<int> *p = 0;
+ *p == *p; // error
+}
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
new file mode 100644
index 00000000000..cab5e346f0b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -0,0 +1,45 @@
+// { dg-do run }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
+
+// PR 5116. template instantiation can add a friend into a namespace,
+// and thus change overload resolution.
+
+#include <iostream>
+
+static int right;
+static int wrong;
+
+struct Buggy {};
+
+template <typename T>struct Handle
+{
+ Handle(T* p) {}
+
+ operator bool() const { wrong++; return true; }
+
+ friend std::ostream& operator<<(std::ostream& ostr, const Handle& r)
+ {
+ right++;
+
+ return ostr << "in operator<<(ostream&, const Handle&)";
+ }
+};
+
+typedef Handle<Buggy> Buggy_h;
+
+bool cmp (const Buggy_h& b1, const Buggy_h& b2)
+{
+ std::cout << b1 << " " << b2 << std::endl;
+ return false;
+}
+
+int main()
+{
+ Buggy o;
+
+ cmp (&o, &o);
+
+ return !(right == 2 && !wrong);
+}
diff --git a/gcc/testsuite/g++.dg/template/friend9.C b/gcc/testsuite/g++.dg/template/friend9.C
new file mode 100644
index 00000000000..4464e5f8ee8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/friend9.C
@@ -0,0 +1,18 @@
+// { dg-do compile }
+// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
+
+// PR c++/8099
+// Partial specialization as friend class
+
+template <int N, typename T> struct X;
+template <typename T> struct X<1,T>;
+
+template <typename P> class Y {
+ static int i;
+ template <int N, typename T> friend struct X;
+ friend struct X<1,P>;
+};
+
+template <typename T> struct X<1,T> {
+ X () { Y<T>::i; }; // access private field
+};
diff --git a/gcc/testsuite/g++.dg/template/ttp3.C b/gcc/testsuite/g++.dg/template/ttp3.C
index 05bd44a172e..fe9bd9eb382 100644
--- a/gcc/testsuite/g++.dg/template/ttp3.C
+++ b/gcc/testsuite/g++.dg/template/ttp3.C
@@ -14,7 +14,7 @@ class OUTER {
template <class T>
class List { };
- vector<class List> data; // { dg-error "type/value mismatch|expected a type|ISO C" "" }
+ vector<class List> data; // { dg-error "argument is required|ISO C" "" }
};
template <class T>
diff --git a/gcc/testsuite/g++.dg/template/type2.C b/gcc/testsuite/g++.dg/template/type2.C
new file mode 100644
index 00000000000..509c4820d6b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/type2.C
@@ -0,0 +1,16 @@
+// { dg-do compile }
+// Origin: Juan Carlos Arevalo-Baeza <jcab@JCABs-Rumblings.com>
+
+// PR c++/8442
+// Type template parameter incorrectly treated as template template
+// parameter.
+
+template <typename T> struct A {};
+
+template <typename T> struct B
+{
+ template <typename U> struct C {};
+ template <typename U> A<C<U> > foo(U);
+};
+
+B<void> b;
diff --git a/gcc/testsuite/g++.dg/warn/inline1.C b/gcc/testsuite/g++.dg/warn/inline1.C
new file mode 100644
index 00000000000..24836e744eb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/inline1.C
@@ -0,0 +1,23 @@
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 26 Dec 2002 <nathan@codesourcery.com>
+
+// PR 4803. Used inline functions must have a definition.
+
+inline void Foo1 (); // { dg-warning "inline function" "" }
+inline void Bar1 ();
+template <typename T> inline void Foo2(T); // { dg-warning "inline function" "" }
+template <typename T> inline void Bar2(T);
+
+void Baz ()
+{
+ Foo1 ();
+ Foo2 (1);
+
+ Bar1 ();
+ Bar2 (1);
+}
+
+inline void Bar1 () {}
+template <typename T> inline void Bar2(T) {}
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash64.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash64.C
index ccba22e245a..6c2825802f4 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash64.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash64.C
@@ -4,8 +4,8 @@ typedef long unsigned int size_t;
typedef void (*RF_Ptr)(void *);
struct _im_pers_mem_spec {
- inline _im_pers_mem_spec(void );
- inline _im_pers_mem_spec(auto int of, auto int n);
+ _im_pers_mem_spec(void );
+ _im_pers_mem_spec(auto int of, auto int n);
};
struct _type_desc {
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/synth10.C b/gcc/testsuite/g++.old-deja/g++.jason/synth10.C
index d94e6bdebe9..07a372586c0 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/synth10.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/synth10.C
@@ -7,14 +7,14 @@ class A;
class AH
{
public:
- inline AH ( A * p = 0 );
+ AH ( A * p = 0 );
AH ( const AH & from )
: pointer( from.pointer ) { inc(); }
~ AH () { dec(); }
private:
A * pointer;
- inline void inc() const;
- inline void dec() const;
+ void inc() const;
+ void dec() const;
};
class A
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net31.C b/gcc/testsuite/g++.old-deja/g++.mike/net31.C
index 3ecf81c7349..05617a8b4ff 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net31.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net31.C
@@ -13,7 +13,7 @@ class foo_b {
foo_b();
~foo_b();
foo_b(const foo_b&);
- inline double& operator()(int);
+ double& operator()(int);
foo_b& operator=(foo_b&);
void bar_a(int);
};
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p8786.C b/gcc/testsuite/g++.old-deja/g++.mike/p8786.C
index b5443c0fa6b..0565fb2558a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p8786.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p8786.C
@@ -4,7 +4,7 @@
class B {
public:
- inline ~B();
+ ~B();
};
class D : public B {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb42.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb42.C
deleted file mode 100644
index c27aa8d2df7..00000000000
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb42.C
+++ /dev/null
@@ -1,19 +0,0 @@
-//Build don't link:
-#include <vector>
-#include <algorithm>
-
-template <class T> class Expr
-{
-public :
-Expr(){};
-Expr(const T&){};
-};
-
-template <class T >
-inline bool compare(const Expr<T> a, const Expr<T> b){ return true; };
-
-int main()
-{
- std::vector<int> a(3);
- std::sort( a.begin(), a.end(), compare ); // ERROR - no matching function
-}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20021015-1.c b/gcc/testsuite/gcc.c-torture/compile/20021015-1.c
new file mode 100644
index 00000000000..789b8a8b176
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20021015-1.c
@@ -0,0 +1,12 @@
+/* PR target/7370. */
+
+int g (int *x, int *y);
+
+void f ()
+{
+ int x, y;
+ char a[4000];
+
+ g (&x, &y);
+ x = x/y + x;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20021015-2.c b/gcc/testsuite/gcc.c-torture/compile/20021015-2.c
new file mode 100644
index 00000000000..6b158c5bdc8
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20021015-2.c
@@ -0,0 +1,7 @@
+/* PR target/8232. */
+
+int f (char *p, char *q, int i)
+{
+ return bcmp (p, q, i);
+}
+
diff --git a/gcc/testsuite/gcc.c-torture/compile/20021123-1.c b/gcc/testsuite/gcc.c-torture/compile/20021123-1.c
new file mode 100644
index 00000000000..dd2aa7e09dd
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20021123-1.c
@@ -0,0 +1,10 @@
+/* PR c/8439 */
+/* Verify that GCC properly handles null increments. */
+
+struct empty {
+};
+
+void foo(struct empty *p)
+{
+ p++;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20021123-2.c b/gcc/testsuite/gcc.c-torture/compile/20021123-2.c
new file mode 100644
index 00000000000..423f8ec1964
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20021123-2.c
@@ -0,0 +1,9 @@
+/* PR c/8518 */
+/* Contributed by Volker Reichelt. */
+
+/* Verify that GCC doesn't get confused by the
+ redefinition of an extern inline function. */
+
+extern int inline foo () { return 0; }
+extern int inline bar () { return 0; }
+static int inline bar () { return foo(); }
diff --git a/gcc/testsuite/gcc.c-torture/compile/20021123-3.c b/gcc/testsuite/gcc.c-torture/compile/20021123-3.c
new file mode 100644
index 00000000000..51f0e257dfd
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20021123-3.c
@@ -0,0 +1,9 @@
+/* PR c/8518 */
+/* Contributed by Volker Reichelt. */
+
+/* Verify that GCC doesn't get confused by the
+ redefinition of an extern inline function. */
+
+extern int inline foo () { return 0; }
+extern int inline bar () { return 0; }
+static int bar () { return foo(); }
diff --git a/gcc/testsuite/gcc.c-torture/compile/20021123-4.c b/gcc/testsuite/gcc.c-torture/compile/20021123-4.c
new file mode 100644
index 00000000000..d4306b89b99
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20021123-4.c
@@ -0,0 +1,11 @@
+/* PR c/8588 */
+/* Contributed by Volker Reichelt. */
+
+/* Verify that GCC converts integer constants
+ in shift operations. */
+
+void foo()
+{
+ unsigned int i, j;
+ j = (i >> 0xf0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20021024-1.c b/gcc/testsuite/gcc.c-torture/execute/20021024-1.c
new file mode 100644
index 00000000000..f7d98e929a2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20021024-1.c
@@ -0,0 +1,43 @@
+/* Origin: PR target/6981 from Mattias Engdegaard <mattias@virtutech.se>. */
+
+void exit (int);
+void abort (void);
+
+unsigned long long *cp, m;
+
+void foo (void)
+{
+}
+
+void bar (unsigned rop, unsigned long long *r)
+{
+ unsigned rs1, rs2, rd;
+
+top:
+ rs2 = (rop >> 23) & 0x1ff;
+ rs1 = (rop >> 9) & 0x1ff;
+ rd = rop & 0x1ff;
+
+ *cp = 1;
+ m = r[rs1] + r[rs2];
+ *cp = 2;
+ foo();
+ if (!rd)
+ goto top;
+ r[rd] = 1;
+}
+
+int main(void)
+{
+ static unsigned long long r[64];
+ unsigned long long cr;
+ cp = &cr;
+
+ r[4] = 47;
+ r[8] = 11;
+ bar((8 << 23) | (4 << 9) | 15, r);
+
+ if (m != 47 + 11)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20021219-1.c b/gcc/testsuite/gcc.c-torture/execute/20021219-1.c
new file mode 100644
index 00000000000..2e658a5a885
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20021219-1.c
@@ -0,0 +1,18 @@
+/* PR optimization/8988 */
+/* Contributed by Kevin Easton */
+
+void foo(char *p1, char **p2)
+{}
+
+int main(void)
+{
+ char str[] = "foo { xx }";
+ char *ptr = str + 5;
+
+ foo(ptr, &ptr);
+
+ while (*ptr && (*ptr == 13 || *ptr == 32))
+ ptr++;
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/darwin-ld-5.c b/gcc/testsuite/gcc.dg/darwin-ld-5.c
index e32f1d9d3ca..0540f92bcbb 100644
--- a/gcc/testsuite/gcc.dg/darwin-ld-5.c
+++ b/gcc/testsuite/gcc.dg/darwin-ld-5.c
@@ -1,7 +1,7 @@
-/* Test Darwin linker option -bundle_loader. */
+/* Test Darwin linker option -dynamic. */
/* Developed by Devang Patel <dpatel@apple.com>. */
-/* { dg-options "-bundle -bundle_loader foo" } */
+/* { dg-options "-dynamic" } */
/* { dg-do link { target *-*-darwin* } } */
int main()
diff --git a/gcc/treelang/ChangeLog b/gcc/treelang/ChangeLog
index 138a96dd8fa..e44009f4bee 100644
--- a/gcc/treelang/ChangeLog
+++ b/gcc/treelang/ChangeLog
@@ -1,3 +1,18 @@
+2002-12-28 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * treelang.texi: Use @copying.
+
+2002-12-23 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * treelang.texi: Include gcc-common.texi.
+ * Make-lang.in ($(srcdir)/treelang/treelang.info, treelang.dvi):
+ Depend on gcc-common.texi. Add other missing dependencies.
+ (treelang.dvi): Use texi2dvi.
+
+2002-12-22 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * treelang.texi: Use @ifnottex instead of @ifinfo.
+
2002-09-09 Tim Josling <tej@melbpc.org.au>
* treetree.c (objc_is_id): New.
diff --git a/gcc/treelang/Make-lang.in b/gcc/treelang/Make-lang.in
index a1337672872..0b22a41a854 100644
--- a/gcc/treelang/Make-lang.in
+++ b/gcc/treelang/Make-lang.in
@@ -134,15 +134,21 @@ treelang.rest.encap:
.phony:treelang.info
treelang.info: $(srcdir)/treelang/treelang.info
-$(srcdir)/treelang/treelang.info: $(srcdir)/treelang/treelang.texi
+$(srcdir)/treelang/treelang.info: $(srcdir)/treelang/treelang.texi \
+ $(srcdir)/doc/include/gcc-common.texi \
+ $(srcdir)/doc/include/gpl.texi \
+ $(srcdir)/doc/include/fdl.texi \
+ $(srcdir)/doc/include/funding.texi
cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -Idoc/include \
-o treelang/treelang.info treelang/treelang.texi
-treelang.dvi: $(srcdir)/treelang/treelang.texi
- TEXINPUTS=$(srcdir)/treelang:$(srcdir):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/treelang/treelang.texi; \
- texindex treelang.??; \
- TEXINPUTS=$(srcdir)/treelang:$(srcdir):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/treelang/treelang.texi; \
- mv treelang.dvi treelang;
+treelang.dvi: $(srcdir)/treelang/treelang.texi \
+ $(srcdir)/doc/include/gcc-common.texi \
+ $(srcdir)/doc/include/gpl.texi \
+ $(srcdir)/doc/include/fdl.texi \
+ $(srcdir)/doc/include/funding.texi
+ s=`cd $(srcdir); ${PWD}`; export s; \
+ cd treelang && $(TEXI2DVI) -I $$s/doc/include $$s/treelang/treelang.texi
treelang.generated-manpages:
diff --git a/gcc/treelang/treelang.texi b/gcc/treelang/treelang.texi
index 52bcb7ddd23..fc8d6d41502 100644
--- a/gcc/treelang/treelang.texi
+++ b/gcc/treelang/treelang.texi
@@ -8,15 +8,12 @@
@c %**start of header
@setfilename treelang.info
+@include gcc-common.texi
+
+@set version-treelang 1.0
+
@set last-update 2001-07-30
@set copyrights-treelang 1995,1996,1997,1998,1999,2000,2001,2002
-@c DEVELOPMENT is set to indicate an in-development version,
-@c as compared to a release version. When making a release
-@c (e.g. a release branch in the CVS repository for GCC),
-@c clear this and set the version information correctly.
-@clear DEVELOPMENT
-@set version-treelang 1.0
-@set version-GCC 3.0
@set email-general gcc@@gcc.gnu.org
@set email-bugs gcc-bugs@@gcc.gnu.org or bug-gcc@@gnu.org
@@ -46,14 +43,6 @@
@c and make sure the following does NOT begin with '@c':
@c @clear USING
-@c 6/27/96 FSF DO wants smallbook fmt for 1st bound edition. (from gcc.texi)
-@c @smallbook
-
-@c i also commented out the finalout command, so if there *are* any
-@c overfulls, you'll (hopefully) see the rectangle in the right hand
-@c margin. -- burley 1999-03-13 (from mew's comment in GCC.texi).
-@c @finalout
-
@ifset INTERNALS
@ifset USING
@settitle Using and Maintaining GNU Treelang
@@ -92,7 +81,29 @@
@c \global\normaloffset =0.75in
@c @end tex
-@ifinfo
+@copying
+Copyright @copyright{} @value{copyrights-treelang} Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``GNU General Public License'', the Front-Cover
+texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+``GNU Free Documentation License''.
+
+(a) The FSF's Front-Cover Text is:
+
+ A GNU Manual
+
+(b) The FSF's Back-Cover Text is:
+
+ You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development.
+@end copying
+
+@ifnottex
@dircategory Programming
@direntry
* treelang: (treelang). The GNU Treelang compiler.
@@ -118,26 +129,8 @@ Published by the Free Software Foundation
59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
-Copyright (C) @value{copyrights-treelang} Free Software Foundation, Inc.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being ``GNU General Public License'', the Front-Cover
-texts being (a) (see below), and with the Back-Cover Texts being (b)
-(see below). A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-(a) The FSF's Front-Cover Text is:
-
- A GNU Manual
-
-(b) The FSF's Back-Cover Text is:
-
- You have freedom to copy and modify this GNU Manual, like GNU
- software. Copies published by the Free Software Foundation raise
- funds for GNU development.
-@end ifinfo
+@insertcopying
+@end ifnottex
treelang was Contributed by Tim Josling (@email{@value{email-josling}}).
Inspired by and based on the 'toy' language, written by Richard Kenner.
@@ -168,8 +161,6 @@ documentation.
@center for version @value{version-treelang}
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} @value{copyrights-treelang} Free Software Foundation, Inc.
-@sp 2
For the @value{which-treelang} Version*
@sp 1
Published by the Free Software Foundation @*
@@ -179,27 +170,11 @@ Boston, MA 02111-1307, USA@*
@c Printed copies are available for $? each.@*
@c ISBN ???
@sp 1
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being ``GNU General Public License'', the Front-Cover
-texts being (a) (see below), and with the Back-Cover Texts being (b)
-(see below). A copy of the license is included in the section entitled
-``GNU Free Documentation License''.
-
-(a) The FSF's Front-Cover Text is:
-
- A GNU Manual
-
-(b) The FSF's Back-Cover Text is:
-
- You have freedom to copy and modify this GNU Manual, like GNU
- software. Copies published by the Free Software Foundation raise
- funds for GNU development.
+@insertcopying
@end titlepage
@page
-@ifinfo
+@ifnottex
@node Top, Copying,, (dir)
@top Introduction
@@ -226,7 +201,7 @@ new features and incompatibilities, and how to report bugs. It
corresponds to the @value{which-treelang} version of @code{treelang}.
@end ifclear
-@end ifinfo
+@end ifnottex
@ifset DEVELOPMENT
@emph{Warning:} This document is still under development, and might not
diff --git a/gcc/version.c b/gcc/version.c
index 0e2662e910f..02855a892d3 100644
--- a/gcc/version.c
+++ b/gcc/version.c
@@ -6,7 +6,7 @@
please modify this string to indicate that, e.g. by putting your
organization's name in parentheses at the end of the string. */
-const char version_string[] = "3.3 20021213 (experimental)";
+const char version_string[] = "3.3 20021231 (prerelease)";
/* This is the location of the online document giving instructions for
reporting bugs. If you distribute a modified version of GCC,
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index d9c65cc89b1..99cf6df3f3b 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,87 @@
+2002-12-30 Tom Tromey <tromey@redhat.com>
+
+ * gcj/javaprims.h: Updated class list.
+
+2002-12-30 Mark Wielaard <mark@klomp.org>
+
+ * java/net/URLStreamHandler.java (toExternalForm): Ignore port
+ if zero or smaller.
+
+2002-12-30 Mark Wielaard <mark@klomp.org>
+
+ * java/util/Properties (formatForOutput): Don't fall through to
+ default case after escaping character.
+
+2002-11-30 Mark Wielaard <mark@klomp.org>
+
+ * java/lang/StringBuffer.java (getChars): Remove wrong dstOffset check
+ against count.
+
+2002-11-21 Anthony Green <green@redhat.com>
+
+ * Makefile.am: Move org.xml.sax and org.w3c.dom into their own
+ libraries.
+ * Makefile.in: Rebuilt.
+
+2002-12-19 Anthony Green <green@redhat.com>
+
+ * Makefile.am (ordinary_java_source_files): Add
+ org/xml/sax/helpers/NewInstance.java.
+ * Makefile.in: Rebuilt.
+ * org/xml/sax/package.html, org/xml/sax/ext/package.html,
+ org/xml/sax/helpers/package.html: New files.
+ * org/xml/sax/*: Upgrade to SAX 2.0.1 release from
+ http://www.saxproject.org.
+
+2002-12-19 Andrew Haley <aph@redhat.com>
+
+ * java/util/natResourceBundle.cc: Include
+ ArrayIndexOutOfBoundsException.h.
+ (getCallingClassLoader): Don't put upper bound on stack search.
+ Catch ArrayIndexOutOfBoundsException.
+
+2002-12-19 Tom Tromey <tromey@redhat.com>
+
+ * libtool-version: Increased `current'.
+
+2002-12-19 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/natClassLoader.cc (defineClass0): Removed erroneous
+ comment.
+ * java/lang/ClassLoader.java (defineClass): Use chained
+ exception when rethrowing.
+ * defineclass.cc (handleClassBegin): Mark class as interpreted.
+ * java/lang/reflect/Modifier.java (INVISIBLE, INTERPRETED): New
+ constants.
+ * resolve.cc (_Jv_PrepareMissingMethods): New function.
+ (_Jv_PrepareClass): Use it.
+ * include/java-interp.h (_Jv_IsInterpretedClass): Rewrote.
+ (_Jv_InterpClass): _Jv_PrepareMissingMethods now friend.
+ * java/lang/Class.h (Class::getModifiers): Mask with ALL_FLAGS.
+ (Class): _Jv_PrepareMissingMethods now friend.
+ * java/lang/natClassLoader.cc (defineClass0): Use JvSynchronize.
+ Record `NULL' for system class loader.
+ (_Jv_RegisterInitiatingLoader): Use JvSynchronize. Special case
+ system class loader.
+ (_Jv_FindClassInCache): Likewise.
+ (_Jv_UnregisterClass): Use JvSynchronize. Free old loader info.
+ (_Jv_FindClass): Special case system class loader.
+ * java/lang/natClass.cc (_Jv_abstractMethodError): New function.
+ (_Jv_SetVTableEntries): Put _Jv_abstractMethodError into empty
+ vtable slots.
+ (_Jv_LayoutVTableMethods): Don't generate vtable slot for a method
+ in a final class.
+ (_getDeclaredMethod): Don't return synthetic methods.
+ (getDeclaredMethods): Likewise.
+ (_getMethod): Likewise.
+ (_getMethods): Likewise.
+
+2002-12-18 Raif Naffah <raif@fl.net.au>
+
+ * java/math/BigInteger.java (euclidInv): Make sure quot and rem are in
+ canonical form after divide().
+ (modInverse): Likewise.
+
2002-12-13 Casey Marshall <rsdio@metastatic.org>
Mark Wielaard <mark@klomp.org>
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index 0db820f360f..cbacaf3f77f 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -29,7 +29,7 @@ else
cond_x_ltlibrary =
endif
-toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary)
+toolexeclib_LTLIBRARIES = libgcj.la lib-org-xml-sax.la lib-org-w3c-dom.la $(cond_x_ltlibrary)
toolexeclib_DATA = libgcj.spec
jardir = $(datadir)/java
@@ -147,6 +147,63 @@ libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version`
libgcj_la_LINK = $(LIBLINK)
+lib_org_w3c_dom_la_SOURCES = org/w3c/dom/Attr.java \
+org/w3c/dom/CDATASection.java \
+org/w3c/dom/CharacterData.java \
+org/w3c/dom/Comment.java \
+org/w3c/dom/DOMException.java \
+org/w3c/dom/DOMImplementation.java \
+org/w3c/dom/Document.java \
+org/w3c/dom/DocumentFragment.java \
+org/w3c/dom/DocumentType.java \
+org/w3c/dom/Element.java \
+org/w3c/dom/Entity.java \
+org/w3c/dom/EntityReference.java \
+org/w3c/dom/NamedNodeMap.java \
+org/w3c/dom/Node.java \
+org/w3c/dom/NodeList.java \
+org/w3c/dom/Notation.java \
+org/w3c/dom/ProcessingInstruction.java \
+org/w3c/dom/Text.java \
+org/w3c/dom/ranges/DocumentRange.java \
+org/w3c/dom/ranges/Range.java \
+org/w3c/dom/ranges/RangeException.java \
+org/w3c/dom/traversal/DocumentTraversal.java \
+org/w3c/dom/traversal/NodeFilter.java \
+org/w3c/dom/traversal/NodeIterator.java \
+org/w3c/dom/traversal/TreeWalker.java
+
+lib_org_xml_sax_la_SOURCES = org/xml/sax/ext/DeclHandler.java \
+org/xml/sax/ext/LexicalHandler.java \
+org/xml/sax/helpers/AttributeListImpl.java \
+org/xml/sax/helpers/AttributesImpl.java \
+org/xml/sax/helpers/DefaultHandler.java \
+org/xml/sax/helpers/LocatorImpl.java \
+org/xml/sax/helpers/NamespaceSupport.java \
+org/xml/sax/helpers/NewInstance.java \
+org/xml/sax/helpers/ParserAdapter.java \
+org/xml/sax/helpers/ParserFactory.java \
+org/xml/sax/helpers/XMLFilterImpl.java \
+org/xml/sax/helpers/XMLReaderAdapter.java \
+org/xml/sax/helpers/XMLReaderFactory.java \
+org/xml/sax/AttributeList.java \
+org/xml/sax/Attributes.java \
+org/xml/sax/ContentHandler.java \
+org/xml/sax/DTDHandler.java \
+org/xml/sax/DocumentHandler.java \
+org/xml/sax/EntityResolver.java \
+org/xml/sax/ErrorHandler.java \
+org/xml/sax/HandlerBase.java \
+org/xml/sax/InputSource.java \
+org/xml/sax/Locator.java \
+org/xml/sax/Parser.java \
+org/xml/sax/SAXException.java \
+org/xml/sax/SAXNotRecognizedException.java \
+org/xml/sax/SAXNotSupportedException.java \
+org/xml/sax/SAXParseException.java \
+org/xml/sax/XMLFilter.java \
+org/xml/sax/XMLReader.java
+
libgcjx_la_SOURCES = $(x_nat_source_files)
EXTRA_libgcjx_la_SOURCES = $(x_java_source_files)
libgcjx_la_DEPENDENCIES = libgcj-@gcc_version@.jar $(x_javao_files)
@@ -168,6 +225,8 @@ install-exec-hook:
all_java_source_files = \
$(java_source_files) \
$(built_java_source_files) \
+ $(lib_org_xml_sax_la_SOURCES) \
+ $(lib_org_w3c_dom_la_SOURCES) \
$(x_java_source_files)
all_java_class_files = $(all_java_source_files:.java=.class)
@@ -218,7 +277,7 @@ $(c_files): %.lo: %.c
$(c_files): java/lang/fdlibm.h java/lang/ieeefp.h java/lang/mprec.h
## FIXME: GNU make.
-$(javao_files) $(x_javao_files): %.lo: %.java
+$(javao_files) $(x_javao_files) $(lib_org_w3c_dom_la_OBJECTS) $(lib_org_xml_sax_la_OBJECTS): %.lo: %.java
$(GCJCOMPILE) -o $@ $<
## Pass the list of object files to libtool in a temporary file to
@@ -2220,60 +2279,6 @@ java/util/zip/ZipException.java \
java/util/zip/ZipFile.java \
java/util/zip/ZipInputStream.java \
java/util/zip/ZipOutputStream.java \
-org/w3c/dom/Attr.java \
-org/w3c/dom/CDATASection.java \
-org/w3c/dom/CharacterData.java \
-org/w3c/dom/Comment.java \
-org/w3c/dom/DOMException.java \
-org/w3c/dom/DOMImplementation.java \
-org/w3c/dom/Document.java \
-org/w3c/dom/DocumentFragment.java \
-org/w3c/dom/DocumentType.java \
-org/w3c/dom/Element.java \
-org/w3c/dom/Entity.java \
-org/w3c/dom/EntityReference.java \
-org/w3c/dom/NamedNodeMap.java \
-org/w3c/dom/Node.java \
-org/w3c/dom/NodeList.java \
-org/w3c/dom/Notation.java \
-org/w3c/dom/ProcessingInstruction.java \
-org/w3c/dom/Text.java \
-org/w3c/dom/ranges/DocumentRange.java \
-org/w3c/dom/ranges/Range.java \
-org/w3c/dom/ranges/RangeException.java \
-org/w3c/dom/traversal/DocumentTraversal.java \
-org/w3c/dom/traversal/NodeFilter.java \
-org/w3c/dom/traversal/NodeIterator.java \
-org/w3c/dom/traversal/TreeWalker.java \
-org/xml/sax/ext/DeclHandler.java \
-org/xml/sax/ext/LexicalHandler.java \
-org/xml/sax/helpers/AttributeListImpl.java \
-org/xml/sax/helpers/AttributesImpl.java \
-org/xml/sax/helpers/DefaultHandler.java \
-org/xml/sax/helpers/LocatorImpl.java \
-org/xml/sax/helpers/NamespaceSupport.java \
-org/xml/sax/helpers/ParserAdapter.java \
-org/xml/sax/helpers/ParserFactory.java \
-org/xml/sax/helpers/XMLFilterImpl.java \
-org/xml/sax/helpers/XMLReaderAdapter.java \
-org/xml/sax/helpers/XMLReaderFactory.java \
-org/xml/sax/AttributeList.java \
-org/xml/sax/Attributes.java \
-org/xml/sax/ContentHandler.java \
-org/xml/sax/DTDHandler.java \
-org/xml/sax/DocumentHandler.java \
-org/xml/sax/EntityResolver.java \
-org/xml/sax/ErrorHandler.java \
-org/xml/sax/HandlerBase.java \
-org/xml/sax/InputSource.java \
-org/xml/sax/Locator.java \
-org/xml/sax/Parser.java \
-org/xml/sax/SAXException.java \
-org/xml/sax/SAXNotRecognizedException.java \
-org/xml/sax/SAXNotSupportedException.java \
-org/xml/sax/SAXParseException.java \
-org/xml/sax/XMLFilter.java \
-org/xml/sax/XMLReader.java \
$(rmi_java_source_files) \
$(awt_java_source_files) \
$(convert_source_files) \
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index c8d722f0521..295fd893b4c 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -137,7 +137,7 @@ AUTOMAKE_OPTIONS = foreign
@XLIB_AWT_TRUE@cond_x_ltlibrary = @XLIB_AWT_TRUE@libgcjx.la
@XLIB_AWT_FALSE@cond_x_ltlibrary =
-toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary)
+toolexeclib_LTLIBRARIES = libgcj.la lib-org-xml-sax.la lib-org-w3c-dom.la $(cond_x_ltlibrary)
toolexeclib_DATA = libgcj.spec
jardir = $(datadir)/java
@@ -218,6 +218,65 @@ libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \
libgcj_la_LINK = $(LIBLINK)
+lib_org_w3c_dom_la_SOURCES = org/w3c/dom/Attr.java \
+org/w3c/dom/CDATASection.java \
+org/w3c/dom/CharacterData.java \
+org/w3c/dom/Comment.java \
+org/w3c/dom/DOMException.java \
+org/w3c/dom/DOMImplementation.java \
+org/w3c/dom/Document.java \
+org/w3c/dom/DocumentFragment.java \
+org/w3c/dom/DocumentType.java \
+org/w3c/dom/Element.java \
+org/w3c/dom/Entity.java \
+org/w3c/dom/EntityReference.java \
+org/w3c/dom/NamedNodeMap.java \
+org/w3c/dom/Node.java \
+org/w3c/dom/NodeList.java \
+org/w3c/dom/Notation.java \
+org/w3c/dom/ProcessingInstruction.java \
+org/w3c/dom/Text.java \
+org/w3c/dom/ranges/DocumentRange.java \
+org/w3c/dom/ranges/Range.java \
+org/w3c/dom/ranges/RangeException.java \
+org/w3c/dom/traversal/DocumentTraversal.java \
+org/w3c/dom/traversal/NodeFilter.java \
+org/w3c/dom/traversal/NodeIterator.java \
+org/w3c/dom/traversal/TreeWalker.java
+
+
+lib_org_xml_sax_la_SOURCES = org/xml/sax/ext/DeclHandler.java \
+org/xml/sax/ext/LexicalHandler.java \
+org/xml/sax/helpers/AttributeListImpl.java \
+org/xml/sax/helpers/AttributesImpl.java \
+org/xml/sax/helpers/DefaultHandler.java \
+org/xml/sax/helpers/LocatorImpl.java \
+org/xml/sax/helpers/NamespaceSupport.java \
+org/xml/sax/helpers/NewInstance.java \
+org/xml/sax/helpers/ParserAdapter.java \
+org/xml/sax/helpers/ParserFactory.java \
+org/xml/sax/helpers/XMLFilterImpl.java \
+org/xml/sax/helpers/XMLReaderAdapter.java \
+org/xml/sax/helpers/XMLReaderFactory.java \
+org/xml/sax/AttributeList.java \
+org/xml/sax/Attributes.java \
+org/xml/sax/ContentHandler.java \
+org/xml/sax/DTDHandler.java \
+org/xml/sax/DocumentHandler.java \
+org/xml/sax/EntityResolver.java \
+org/xml/sax/ErrorHandler.java \
+org/xml/sax/HandlerBase.java \
+org/xml/sax/InputSource.java \
+org/xml/sax/Locator.java \
+org/xml/sax/Parser.java \
+org/xml/sax/SAXException.java \
+org/xml/sax/SAXNotRecognizedException.java \
+org/xml/sax/SAXNotSupportedException.java \
+org/xml/sax/SAXParseException.java \
+org/xml/sax/XMLFilter.java \
+org/xml/sax/XMLReader.java
+
+
libgcjx_la_SOURCES = $(x_nat_source_files)
EXTRA_libgcjx_la_SOURCES = $(x_java_source_files)
libgcjx_la_DEPENDENCIES = libgcj-@gcc_version@.jar $(x_javao_files)
@@ -231,6 +290,8 @@ libgcjx_la_LINK = $(LIBLINK)
all_java_source_files = \
$(java_source_files) \
$(built_java_source_files) \
+ $(lib_org_xml_sax_la_SOURCES) \
+ $(lib_org_w3c_dom_la_SOURCES) \
$(x_java_source_files)
@@ -1970,60 +2031,6 @@ java/util/zip/ZipException.java \
java/util/zip/ZipFile.java \
java/util/zip/ZipInputStream.java \
java/util/zip/ZipOutputStream.java \
-org/w3c/dom/Attr.java \
-org/w3c/dom/CDATASection.java \
-org/w3c/dom/CharacterData.java \
-org/w3c/dom/Comment.java \
-org/w3c/dom/DOMException.java \
-org/w3c/dom/DOMImplementation.java \
-org/w3c/dom/Document.java \
-org/w3c/dom/DocumentFragment.java \
-org/w3c/dom/DocumentType.java \
-org/w3c/dom/Element.java \
-org/w3c/dom/Entity.java \
-org/w3c/dom/EntityReference.java \
-org/w3c/dom/NamedNodeMap.java \
-org/w3c/dom/Node.java \
-org/w3c/dom/NodeList.java \
-org/w3c/dom/Notation.java \
-org/w3c/dom/ProcessingInstruction.java \
-org/w3c/dom/Text.java \
-org/w3c/dom/ranges/DocumentRange.java \
-org/w3c/dom/ranges/Range.java \
-org/w3c/dom/ranges/RangeException.java \
-org/w3c/dom/traversal/DocumentTraversal.java \
-org/w3c/dom/traversal/NodeFilter.java \
-org/w3c/dom/traversal/NodeIterator.java \
-org/w3c/dom/traversal/TreeWalker.java \
-org/xml/sax/ext/DeclHandler.java \
-org/xml/sax/ext/LexicalHandler.java \
-org/xml/sax/helpers/AttributeListImpl.java \
-org/xml/sax/helpers/AttributesImpl.java \
-org/xml/sax/helpers/DefaultHandler.java \
-org/xml/sax/helpers/LocatorImpl.java \
-org/xml/sax/helpers/NamespaceSupport.java \
-org/xml/sax/helpers/ParserAdapter.java \
-org/xml/sax/helpers/ParserFactory.java \
-org/xml/sax/helpers/XMLFilterImpl.java \
-org/xml/sax/helpers/XMLReaderAdapter.java \
-org/xml/sax/helpers/XMLReaderFactory.java \
-org/xml/sax/AttributeList.java \
-org/xml/sax/Attributes.java \
-org/xml/sax/ContentHandler.java \
-org/xml/sax/DTDHandler.java \
-org/xml/sax/DocumentHandler.java \
-org/xml/sax/EntityResolver.java \
-org/xml/sax/ErrorHandler.java \
-org/xml/sax/HandlerBase.java \
-org/xml/sax/InputSource.java \
-org/xml/sax/Locator.java \
-org/xml/sax/Parser.java \
-org/xml/sax/SAXException.java \
-org/xml/sax/SAXNotRecognizedException.java \
-org/xml/sax/SAXNotSupportedException.java \
-org/xml/sax/SAXParseException.java \
-org/xml/sax/XMLFilter.java \
-org/xml/sax/XMLReader.java \
$(rmi_java_source_files) \
$(awt_java_source_files) \
$(convert_source_files) \
@@ -2257,6 +2264,46 @@ java/net/natPlainDatagramSocketImpl.lo java/net/natPlainSocketImpl.lo \
java/text/natCollator.lo java/util/natResourceBundle.lo \
java/util/natTimeZone.lo java/util/zip/natDeflater.lo \
java/util/zip/natInflater.lo
+lib_org_xml_sax_la_LDFLAGS =
+lib_org_xml_sax_la_LIBADD =
+lib_org_xml_sax_la_OBJECTS = org/xml/sax/ext/DeclHandler.lo \
+org/xml/sax/ext/LexicalHandler.lo \
+org/xml/sax/helpers/AttributeListImpl.lo \
+org/xml/sax/helpers/AttributesImpl.lo \
+org/xml/sax/helpers/DefaultHandler.lo \
+org/xml/sax/helpers/LocatorImpl.lo \
+org/xml/sax/helpers/NamespaceSupport.lo \
+org/xml/sax/helpers/NewInstance.lo org/xml/sax/helpers/ParserAdapter.lo \
+org/xml/sax/helpers/ParserFactory.lo \
+org/xml/sax/helpers/XMLFilterImpl.lo \
+org/xml/sax/helpers/XMLReaderAdapter.lo \
+org/xml/sax/helpers/XMLReaderFactory.lo org/xml/sax/AttributeList.lo \
+org/xml/sax/Attributes.lo org/xml/sax/ContentHandler.lo \
+org/xml/sax/DTDHandler.lo org/xml/sax/DocumentHandler.lo \
+org/xml/sax/EntityResolver.lo org/xml/sax/ErrorHandler.lo \
+org/xml/sax/HandlerBase.lo org/xml/sax/InputSource.lo \
+org/xml/sax/Locator.lo org/xml/sax/Parser.lo \
+org/xml/sax/SAXException.lo org/xml/sax/SAXNotRecognizedException.lo \
+org/xml/sax/SAXNotSupportedException.lo \
+org/xml/sax/SAXParseException.lo org/xml/sax/XMLFilter.lo \
+org/xml/sax/XMLReader.lo
+lib_org_w3c_dom_la_LDFLAGS =
+lib_org_w3c_dom_la_LIBADD =
+lib_org_w3c_dom_la_OBJECTS = org/w3c/dom/Attr.lo \
+org/w3c/dom/CDATASection.lo org/w3c/dom/CharacterData.lo \
+org/w3c/dom/Comment.lo org/w3c/dom/DOMException.lo \
+org/w3c/dom/DOMImplementation.lo org/w3c/dom/Document.lo \
+org/w3c/dom/DocumentFragment.lo org/w3c/dom/DocumentType.lo \
+org/w3c/dom/Element.lo org/w3c/dom/Entity.lo \
+org/w3c/dom/EntityReference.lo org/w3c/dom/NamedNodeMap.lo \
+org/w3c/dom/Node.lo org/w3c/dom/NodeList.lo org/w3c/dom/Notation.lo \
+org/w3c/dom/ProcessingInstruction.lo org/w3c/dom/Text.lo \
+org/w3c/dom/ranges/DocumentRange.lo org/w3c/dom/ranges/Range.lo \
+org/w3c/dom/ranges/RangeException.lo \
+org/w3c/dom/traversal/DocumentTraversal.lo \
+org/w3c/dom/traversal/NodeFilter.lo \
+org/w3c/dom/traversal/NodeIterator.lo \
+org/w3c/dom/traversal/TreeWalker.lo
libgcjx_la_OBJECTS = gnu/gcj/xlib/natClip.lo \
gnu/gcj/xlib/natColormap.lo gnu/gcj/xlib/natDisplay.lo \
gnu/gcj/xlib/natDrawable.lo gnu/gcj/xlib/natFont.lo \
@@ -3701,6 +3748,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/org/xml/sax/helpers/DefaultHandler.P \
.deps/org/xml/sax/helpers/LocatorImpl.P \
.deps/org/xml/sax/helpers/NamespaceSupport.P \
+.deps/org/xml/sax/helpers/NewInstance.P \
.deps/org/xml/sax/helpers/ParserAdapter.P \
.deps/org/xml/sax/helpers/ParserFactory.P \
.deps/org/xml/sax/helpers/XMLFilterImpl.P \
@@ -3708,8 +3756,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/org/xml/sax/helpers/XMLReaderFactory.P .deps/posix-threads.P \
.deps/posix.P .deps/prims.P .deps/resolve.P .deps/verify.P \
.deps/win32-threads.P .deps/win32.P
-SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(libgcjx_la_SOURCES) $(EXTRA_libgcjx_la_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) $(gij_SOURCES) $(rmic_SOURCES) $(EXTRA_rmic_SOURCES) $(rmiregistry_SOURCES) $(EXTRA_rmiregistry_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES)
-OBJECTS = $(libgcj_la_OBJECTS) $(libgcjx_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(rmic_OBJECTS) $(rmiregistry_OBJECTS) $(gen_from_JIS_OBJECTS)
+SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(lib_org_xml_sax_la_SOURCES) $(lib_org_w3c_dom_la_SOURCES) $(libgcjx_la_SOURCES) $(EXTRA_libgcjx_la_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) $(gij_SOURCES) $(rmic_SOURCES) $(EXTRA_rmic_SOURCES) $(rmiregistry_SOURCES) $(EXTRA_rmiregistry_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES)
+OBJECTS = $(libgcj_la_OBJECTS) $(lib_org_xml_sax_la_OBJECTS) $(lib_org_w3c_dom_la_OBJECTS) $(libgcjx_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(rmic_OBJECTS) $(rmiregistry_OBJECTS) $(gen_from_JIS_OBJECTS)
all: all-redirect
.SUFFIXES:
@@ -3796,6 +3844,12 @@ distclean-libtool:
maintainer-clean-libtool:
+lib-org-xml-sax.la: $(lib_org_xml_sax_la_OBJECTS) $(lib_org_xml_sax_la_DEPENDENCIES)
+ $(LINK) -rpath $(toolexeclibdir) $(lib_org_xml_sax_la_LDFLAGS) $(lib_org_xml_sax_la_OBJECTS) $(lib_org_xml_sax_la_LIBADD) $(LIBS)
+
+lib-org-w3c-dom.la: $(lib_org_w3c_dom_la_OBJECTS) $(lib_org_w3c_dom_la_DEPENDENCIES)
+ $(LINK) -rpath $(toolexeclibdir) $(lib_org_w3c_dom_la_LDFLAGS) $(lib_org_w3c_dom_la_OBJECTS) $(lib_org_w3c_dom_la_LIBADD) $(LIBS)
+
mostlyclean-binPROGRAMS:
clean-binPROGRAMS:
@@ -4264,7 +4318,7 @@ $(c_files): %.lo: %.c
$(c_files): java/lang/fdlibm.h java/lang/ieeefp.h java/lang/mprec.h
-$(javao_files) $(x_javao_files): %.lo: %.java
+$(javao_files) $(x_javao_files) $(lib_org_w3c_dom_la_OBJECTS) $(lib_org_xml_sax_la_OBJECTS): %.lo: %.java
$(GCJCOMPILE) -o $@ $<
libgcj.la: $(libgcj_la_OBJECTS) $(libgcj_la_DEPENDENCIES)
diff --git a/libjava/defineclass.cc b/libjava/defineclass.cc
index dc350028cdd..81de5ad7da2 100644
--- a/libjava/defineclass.cc
+++ b/libjava/defineclass.cc
@@ -890,7 +890,7 @@ _Jv_ClassReader::handleClassBegin
throw_no_class_def_found_error (msg);
}
- def->accflags = access_flags;
+ def->accflags = access_flags | java::lang::reflect::Modifier::INTERPRETED;
pool_data[this_class].clazz = def;
pool_tags[this_class] = JV_CONSTANT_ResolvedClass;
diff --git a/libjava/gcj/javaprims.h b/libjava/gcj/javaprims.h
index 8ed649432a2..3a1c29f6cc3 100644
--- a/libjava/gcj/javaprims.h
+++ b/libjava/gcj/javaprims.h
@@ -230,16 +230,18 @@ extern "Java"
class Array;
class Constructor;
class Field;
- class InvocationHandler;
+ class InvocationHandler;
class InvocationTargetException;
class Member;
class Method;
class Modifier;
- class Proxy;
- class Proxy$ProxyData;
- class Proxy$ProxyType;
+ class Proxy;
+ class Proxy$ClassFactory;
+ class Proxy$ProxyData;
+ class Proxy$ProxySignature;
+ class Proxy$ProxyType;
class ReflectPermission;
- class UndeclaredThrowableException;
+ class UndeclaredThrowableException;
};
};
@@ -334,7 +336,6 @@ extern "Java"
class RandomAccess;
class RandomAccessSubList;
class ResourceBundle;
- class ResourceBundle$Security;
class Set;
class SimpleTimeZone;
class SortedMap;
@@ -371,6 +372,13 @@ extern "Java"
class Manifest;
};
+ namespace regex
+ {
+ class Matcher;
+ class Pattern;
+ class PatternSyntaxException;
+ };
+
namespace zip
{
class Adler32;
diff --git a/libjava/include/java-interp.h b/libjava/include/java-interp.h
index a44db38ca85..a00f4db0a1d 100644
--- a/libjava/include/java-interp.h
+++ b/libjava/include/java-interp.h
@@ -21,6 +21,7 @@ details. */
#include <java/lang/Class.h>
#include <java/lang/ClassLoader.h>
+#include <java/lang/reflect/Modifier.h>
#include <gnu/gcj/runtime/StackTrace.h>
extern "C" {
@@ -30,7 +31,7 @@ extern "C" {
extern inline jboolean
_Jv_IsInterpretedClass (jclass c)
{
- return (c->loader != 0);
+ return (c->accflags & java::lang::reflect::Modifier::INTERPRETED) != 0;
}
struct _Jv_ResolvedMethod;
@@ -158,6 +159,7 @@ class _Jv_InterpClass : public java::lang::Class
friend class _Jv_ClassReader;
friend class _Jv_InterpMethod;
friend void _Jv_PrepareClass(jclass);
+ friend void _Jv_PrepareMissingMethods (jclass base2, jclass iface_class);
friend void _Jv_InitField (jobject, jclass, int);
#ifdef JV_MARKOBJ_DECL
friend JV_MARKOBJ_DECL;
diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h
index 4ccf3886431..d59899a8182 100644
--- a/libjava/java/lang/Class.h
+++ b/libjava/java/lang/Class.h
@@ -182,9 +182,9 @@ public:
JArray<java::lang::reflect::Method *> *getMethods (void);
inline jint getModifiers (void)
- {
- return accflags;
- }
+ {
+ return accflags & java::lang::reflect::Modifier::ALL_FLAGS;
+ }
jstring getName (void);
@@ -348,6 +348,7 @@ private:
_Jv_Utf8Const *method_signature);
friend void _Jv_PrepareClass (jclass);
+ friend void _Jv_PrepareMissingMethods (jclass base, jclass iface_class);
friend class _Jv_ClassReader;
friend class _Jv_InterpClass;
diff --git a/libjava/java/lang/ClassLoader.java b/libjava/java/lang/ClassLoader.java
index 033b2cc4a6e..8c99897cd1a 100644
--- a/libjava/java/lang/ClassLoader.java
+++ b/libjava/java/lang/ClassLoader.java
@@ -468,17 +468,18 @@ public abstract class ClassLoader
{
throw x; // rethrow
}
- catch (java.lang.VirtualMachineError x)
+ catch (VirtualMachineError x)
{
throw x; // rethrow
}
- catch (java.lang.Throwable x)
+ catch (Throwable x)
{
// This should never happen, or we are beyond spec.
- throw new InternalError ("Unexpected exception "
- + "while defining class "
- + name + ": "
- + x.toString ());
+ InternalError r = new InternalError ("Unexpected exception "
+ + "while defining class "
+ + name);
+ r.initCause(x);
+ throw r;
}
}
diff --git a/libjava/java/lang/StringBuffer.java b/libjava/java/lang/StringBuffer.java
index bfaaaf92f23..922d6bb6d24 100644
--- a/libjava/java/lang/StringBuffer.java
+++ b/libjava/java/lang/StringBuffer.java
@@ -308,26 +308,27 @@ public final class StringBuffer implements Serializable, CharSequence
}
}
- /** Get the specified array of characters.
- * The characters will be copied into the array you pass in.
- * @param srcOffset the index to start copying from in the
- * <code>StringBuffer</code>.
- * @param srcEnd the number of characters to copy.
- * @param dst the array to copy into.
- * @param dstOffset the index to start copying into <code>dst</code>.
- * @exception NullPointerException if dst is null.
- * @exception IndexOutOfBoundsException if any source or target
- * indices are out of range.
- * @see java.lang.System#arraycopy(java.lang.Object,int,java.lang.Object,int,int)
- */
- public synchronized void getChars (int srcOffset, int srcEnd,
- char[] dst, int dstOffset)
- {
- if (srcOffset < 0 || srcOffset > srcEnd)
- throw new StringIndexOutOfBoundsException (srcOffset);
+ /**
+ * Get the specified array of characters. <code>srcOffset - srcEnd</code>
+ * characters will be copied into the array you pass in.
+ *
+ * @param srcOffset the index to start copying from (inclusive)
+ * @param srcEnd the index to stop copying from (exclusive)
+ * @param dst the array to copy into
+ * @param dstOffset the index to start copying into
+ * @throws NullPointerException if dst is null
+ * @throws IndexOutOfBoundsException if any source or target indices are
+ * out of range (while unspecified, source problems cause a
+ * StringIndexOutOfBoundsException, and dest problems cause an
+ * ArrayIndexOutOfBoundsException)
+ * @see System#arraycopy(Object, int, Object, int, int)
+ */
+ public synchronized void getChars(int srcOffset, int srcEnd,
+ char[] dst, int dstOffset)
+ {
int todo = srcEnd - srcOffset;
- if (srcEnd > count || dstOffset + todo > count)
- throw new StringIndexOutOfBoundsException (srcEnd);
+ if (srcOffset < 0 || srcEnd > count || todo < 0)
+ throw new StringIndexOutOfBoundsException();
System.arraycopy(value, srcOffset, dst, dstOffset, todo);
}
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc
index bafac789b0d..768ced611ac 100644
--- a/libjava/java/lang/natClass.cc
+++ b/libjava/java/lang/natClass.cc
@@ -343,7 +343,9 @@ java::lang::Class::_getDeclaredMethod (jstring name,
while (--i >= 0)
{
if (_Jv_equalUtf8Consts (methods[i].name, utf_name)
- && _Jv_equaln (methods[i].signature, partial_sig, p_len))
+ && _Jv_equaln (methods[i].signature, partial_sig, p_len)
+ && (methods[i].accflags
+ & java::lang::reflect::Modifier::INVISIBLE) == 0)
{
// Found it.
using namespace java::lang::reflect;
@@ -368,7 +370,9 @@ java::lang::Class::getDeclaredMethods (void)
if (method->name == NULL
|| _Jv_equalUtf8Consts (method->name, clinit_name)
|| _Jv_equalUtf8Consts (method->name, init_name)
- || _Jv_equalUtf8Consts (method->name, finit_name))
+ || _Jv_equalUtf8Consts (method->name, finit_name)
+ || (methods[i].accflags
+ & java::lang::reflect::Modifier::INVISIBLE) != 0)
continue;
numMethods++;
}
@@ -382,7 +386,9 @@ java::lang::Class::getDeclaredMethods (void)
if (method->name == NULL
|| _Jv_equalUtf8Consts (method->name, clinit_name)
|| _Jv_equalUtf8Consts (method->name, init_name)
- || _Jv_equalUtf8Consts (method->name, finit_name))
+ || _Jv_equalUtf8Consts (method->name, finit_name)
+ || (methods[i].accflags
+ & java::lang::reflect::Modifier::INVISIBLE) != 0)
continue;
java::lang::reflect::Method* rmethod
= new java::lang::reflect::Method ();
@@ -514,7 +520,9 @@ java::lang::Class::_getMethod (jstring name, JArray<jclass> *param_types)
{
// FIXME: access checks.
if (_Jv_equalUtf8Consts (klass->methods[i].name, utf_name)
- && _Jv_equaln (klass->methods[i].signature, partial_sig, p_len))
+ && _Jv_equaln (klass->methods[i].signature, partial_sig, p_len)
+ && (klass->methods[i].accflags
+ & java::lang::reflect::Modifier::INVISIBLE) == 0)
{
// Found it.
using namespace java::lang::reflect;
@@ -565,7 +573,9 @@ java::lang::Class::_getMethods (JArray<java::lang::reflect::Method *> *result,
if (method->name == NULL
|| _Jv_equalUtf8Consts (method->name, clinit_name)
|| _Jv_equalUtf8Consts (method->name, init_name)
- || _Jv_equalUtf8Consts (method->name, finit_name))
+ || _Jv_equalUtf8Consts (method->name, finit_name)
+ || (method->accflags
+ & java::lang::reflect::Modifier::INVISIBLE) != 0)
continue;
// Only want public methods.
if (! java::lang::reflect::Modifier::isPublic (method->accflags))
@@ -1564,6 +1574,13 @@ isVirtualMethod (_Jv_Method *meth)
&& meth->name->data[0] != '<');
}
+// This is put in empty vtable slots.
+static void
+_Jv_abstractMethodError (void)
+{
+ throw new java::lang::AbstractMethodError();
+}
+
// Prepare virtual method declarations in KLASS, and any superclasses as
// required, by determining their vtable index, setting method->index, and
// finally setting the class's vtable_method_count. Must be called with the
@@ -1594,13 +1611,16 @@ _Jv_LayoutVTableMethods (jclass klass)
continue;
if (superclass != NULL)
- super_meth = _Jv_LookupDeclaredMethod (superclass, meth->name,
- meth->signature);
+ {
+ super_meth = _Jv_LookupDeclaredMethod (superclass, meth->name,
+ meth->signature);
+ }
if (super_meth)
meth->index = super_meth->index;
- else if (! (meth->accflags & java::lang::reflect::Modifier::FINAL))
- meth->index = index++;
+ else if (! (meth->accflags & java::lang::reflect::Modifier::FINAL)
+ && ! (klass->accflags & java::lang::reflect::Modifier::FINAL))
+ meth->index = index++;
}
klass->vtable_method_count = index;
@@ -1626,8 +1646,7 @@ _Jv_SetVTableEntries (jclass klass, _Jv_VTable *vtable, jboolean *flags)
continue;
if ((meth->accflags & Modifier::ABSTRACT))
{
- // FIXME: we should set abstract slots to a function that
- // throws AbstractMethodError. How can we do that on IA-64?
+ vtable->set_method(meth->index, (void *) &_Jv_abstractMethodError);
flags[meth->index] = false;
}
else
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc
index aeee08a6265..96a81812219 100644
--- a/libjava/java/lang/natClassLoader.cc
+++ b/libjava/java/lang/natClassLoader.cc
@@ -56,17 +56,18 @@ java::lang::ClassLoader::defineClass0 (jstring name,
sizeof (_Jv_InterpClass));
_Jv_InitNewClassFields (klass);
- // synchronize on the class, so that it is not
- // attempted initialized until we're done loading.
- _Jv_MonitorEnter (klass);
+ // Synchronize on the class, so that it is not attempted initialized
+ // until we're done loading.
+ JvSynchronize sync (klass);
- // record which is the defining loader
- klass->loader = this;
+ // Record the defining loader. For the system class loader, we
+ // record NULL.
+ if (this != java::lang::ClassLoader::getSystemClassLoader())
+ klass->loader = this;
- // register that we are the initiating loader...
if (name != 0)
{
- _Jv_Utf8Const * name2 = _Jv_makeUtf8Const (name);
+ _Jv_Utf8Const *name2 = _Jv_makeUtf8Const (name);
if (! _Jv_VerifyClassName (name2))
throw new java::lang::ClassFormatError
@@ -86,16 +87,8 @@ java::lang::ClassLoader::defineClass0 (jstring name,
_Jv_UnregisterClass (klass);
- _Jv_MonitorExit (klass);
-
- // FIXME: Here we may want to test that EX does
- // indeed represent a valid exception. That is,
- // anything but ClassNotFoundException,
- // or some kind of Error.
-
- // FIXME: Rewrite this as a cleanup instead of
- // as a catch handler.
-
+ // If EX is not a ClassNotFoundException, that's ok, because we
+ // account for the possibility in defineClass().
throw ex;
}
@@ -104,10 +97,6 @@ java::lang::ClassLoader::defineClass0 (jstring name,
// if everything proceeded sucessfully, we're loaded.
JvAssert (klass->state == JV_STATE_LOADED);
- // if an exception is generated, this is initially missed.
- // however, we come back here in handleException0 below...
- _Jv_MonitorExit (klass);
-
return klass;
#else // INTERPRETER
@@ -293,10 +282,11 @@ _Jv_PrepareCompiledClass (jclass klass)
// Hash function for Utf8Consts.
#define HASH_UTF(Utf) (((Utf)->hash) % HASH_LEN)
-struct _Jv_LoaderInfo {
- _Jv_LoaderInfo *next;
- java::lang::Class *klass;
- java::lang::ClassLoader *loader;
+struct _Jv_LoaderInfo
+{
+ _Jv_LoaderInfo *next;
+ java::lang::Class *klass;
+ java::lang::ClassLoader *loader;
};
static _Jv_LoaderInfo *initiated_classes[HASH_LEN];
@@ -309,9 +299,12 @@ static jclass loaded_classes[HASH_LEN];
jclass
_Jv_FindClassInCache (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
{
- _Jv_MonitorEnter (&java::lang::Class::class$);
+ JvSynchronize sync (&java::lang::Class::class$);
jint hash = HASH_UTF (name);
+ if (loader && loader == java::lang::ClassLoader::getSystemClassLoader())
+ loader = NULL;
+
// first, if LOADER is a defining loader, then it is also initiating
jclass klass;
for (klass = loaded_classes[hash]; klass; klass = klass->next)
@@ -337,15 +330,13 @@ _Jv_FindClassInCache (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
}
}
- _Jv_MonitorExit (&java::lang::Class::class$);
-
return klass;
}
void
_Jv_UnregisterClass (jclass the_class)
{
- _Jv_MonitorEnter (&java::lang::Class::class$);
+ JvSynchronize sync (&java::lang::Class::class$);
jint hash = HASH_UTF(the_class->name);
jclass *klass = &(loaded_classes[hash]);
@@ -363,29 +354,32 @@ _Jv_UnregisterClass (jclass the_class)
{
while (*info && (*info)->klass == the_class)
{
+ _Jv_LoaderInfo *old = *info;
*info = (*info)->next;
+ _Jv_Free (old);
}
if (*info == NULL)
break;
}
-
- _Jv_MonitorExit (&java::lang::Class::class$);
}
void
_Jv_RegisterInitiatingLoader (jclass klass, java::lang::ClassLoader *loader)
{
- // non-gc alloc!
- _Jv_LoaderInfo *info = (_Jv_LoaderInfo *) _Jv_Malloc (sizeof(_Jv_LoaderInfo));
+ if (loader && loader == java::lang::ClassLoader::getSystemClassLoader())
+ loader = NULL;
+
+ // This information can't be visible to the GC.
+ _Jv_LoaderInfo *info
+ = (_Jv_LoaderInfo *) _Jv_Malloc (sizeof(_Jv_LoaderInfo));
jint hash = HASH_UTF(klass->name);
- _Jv_MonitorEnter (&java::lang::Class::class$);
+ JvSynchronize sync (&java::lang::Class::class$);
info->loader = loader;
info->klass = klass;
info->next = initiated_classes[hash];
initiated_classes[hash] = info;
- _Jv_MonitorExit (&java::lang::Class::class$);
}
// This function is called many times during startup, before main() is
@@ -471,6 +465,9 @@ _Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
{
jstring sname = _Jv_NewStringUTF (name->data);
+ java::lang::ClassLoader *sys
+ = java::lang::ClassLoader::getSystemClassLoader ();
+
if (loader)
{
// Load using a user-defined loader, jvmspec 5.3.2
@@ -479,14 +476,14 @@ _Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
// If "loader" delegated the loadClass operation to another
// loader, explicitly register that it is also an initiating
// loader of the given class.
- if (klass && (klass->getClassLoader () != loader))
+ java::lang::ClassLoader *delegate = (loader == sys
+ ? NULL
+ : loader);
+ if (klass && klass->getClassLoaderInternal () != delegate)
_Jv_RegisterInitiatingLoader (klass, loader);
}
else
{
- java::lang::ClassLoader *sys
- = java::lang::ClassLoader::getSystemClassLoader ();
-
// Load using the bootstrap loader jvmspec 5.3.1.
klass = sys->loadClass (sname, false);
diff --git a/libjava/java/lang/reflect/Modifier.java b/libjava/java/lang/reflect/Modifier.java
index 75d0c9b47f5..8171a88feb5 100644
--- a/libjava/java/lang/reflect/Modifier.java
+++ b/libjava/java/lang/reflect/Modifier.java
@@ -1,5 +1,5 @@
/* java.lang.reflect.Modifier
- Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -158,6 +158,17 @@ public class Modifier
static final int ALL_FLAGS = 0xfff;
/**
+ * GCJ-LOCAL: This access flag is set on methods we declare
+ * internally but which must not be visible to reflection.
+ */
+ static final int INVISIBLE = 0x1000;
+
+ /**
+ * GCJ-LOCAL: This access flag is set on interpreted classes.
+ */
+ static final int INTERPRETED = 0x1000;
+
+ /**
* Check whether the given modifier is abstract.
* @param mod the modifier.
* @return <code>true</code> if abstract, <code>false</code> otherwise.
diff --git a/libjava/java/math/BigInteger.java b/libjava/java/math/BigInteger.java
index e8c6b1dfdc9..ac21eccc518 100644
--- a/libjava/java/math/BigInteger.java
+++ b/libjava/java/math/BigInteger.java
@@ -1113,6 +1113,9 @@ public class BigInteger extends Number implements Comparable
BigInteger rem = new BigInteger();
BigInteger quot = new BigInteger();
divide(a, b, quot, rem, FLOOR);
+ // quot and rem may not be in canonical form. ensure
+ rem.canonicalize();
+ quot.canonicalize();
xy = euclidInv(b, rem, quot);
}
@@ -1192,6 +1195,9 @@ public class BigInteger extends Number implements Comparable
BigInteger rem = new BigInteger();
BigInteger quot = new BigInteger();
divide(x, y, quot, rem, FLOOR);
+ // quot and rem may not be in canonical form. ensure
+ rem.canonicalize();
+ quot.canonicalize();
result = euclidInv(y, rem, quot)[swapped ? 0 : 1];
// Result can't be negative, so make it positive by adding the
diff --git a/libjava/java/net/URLStreamHandler.java b/libjava/java/net/URLStreamHandler.java
index 128a0d2d3da..7f866440f2f 100644
--- a/libjava/java/net/URLStreamHandler.java
+++ b/libjava/java/net/URLStreamHandler.java
@@ -436,7 +436,7 @@ public abstract class URLStreamHandler
// ignores a non-default port if host is null or "". That is inconsistent
// with the spec since the result of this method is spec'ed so it can be
// used to construct a new URL that is equivalent to the original.
- boolean port_needed = port >= 0 && port != getDefaultPort();
+ boolean port_needed = port > 0 && port != getDefaultPort();
if (port_needed)
sb.append(':').append(port);
diff --git a/libjava/java/util/Properties.java b/libjava/java/util/Properties.java
index adad25055ac..cb77661a397 100644
--- a/libjava/java/util/Properties.java
+++ b/libjava/java/util/Properties.java
@@ -540,6 +540,7 @@ label = Name:\\u0020</pre>
case '=':
case ':':
buffer.append('\\').append(c);
+ break;
default:
if (c < ' ' || c > '~')
{
diff --git a/libjava/java/util/natResourceBundle.cc b/libjava/java/util/natResourceBundle.cc
index 21a9565c996..adb83f92b26 100644
--- a/libjava/java/util/natResourceBundle.cc
+++ b/libjava/java/util/natResourceBundle.cc
@@ -16,17 +16,24 @@ details. */
#include <java/lang/SecurityManager.h>
#include <java/lang/ClassLoader.h>
#include <java/lang/Class.h>
+#include <java/lang/ArrayIndexOutOfBoundsException.h>
#include <gnu/gcj/runtime/StackTrace.h>
java::lang::ClassLoader *
java::util::ResourceBundle::getCallingClassLoader ()
{
gnu::gcj::runtime::StackTrace *t = new gnu::gcj::runtime::StackTrace(6);
- for (int i = 3; i < 6; ++i)
+ try
+ {
+ for (int i = 3; ; ++i)
+ {
+ jclass klass = t->classAt(i);
+ if (klass != NULL)
+ return klass->getClassLoaderInternal();
+ }
+ }
+ catch (::java::lang::ArrayIndexOutOfBoundsException *e)
{
- jclass klass = t->classAt(i);
- if (klass != NULL)
- return klass->getClassLoaderInternal();
}
return NULL;
}
diff --git a/libjava/libtool-version b/libjava/libtool-version
index 318fd04b258..8c0164a94a0 100644
--- a/libjava/libtool-version
+++ b/libjava/libtool-version
@@ -3,4 +3,4 @@
# a separate file so that version updates don't involve re-running
# automake.
# CURRENT:REVISION:AGE
-3:0:0
+4:0:0
diff --git a/libjava/org/xml/sax/AttributeList.java b/libjava/org/xml/sax/AttributeList.java
index 9ea9295e191..b1a647aa16e 100644
--- a/libjava/org/xml/sax/AttributeList.java
+++ b/libjava/org/xml/sax/AttributeList.java
@@ -1,191 +1,193 @@
-// SAX Attribute List Interface.
-// No warranty; no copyright -- use this as you will.
-// $Id: AttributeList.java,v 1.1 2000/10/02 02:43:16 sboag Exp $
-
-package org.xml.sax;
-
-/**
- * Interface for an element's attribute specifications.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This is the original SAX1 interface for reporting an element's
- * attributes. Unlike the new {@link org.xml.sax.Attributes Attributes}
- * interface, it does not support Namespace-related information.</p>
- *
- * <p>When an attribute list is supplied as part of a
- * {@link org.xml.sax.DocumentHandler#startElement startElement}
- * event, the list will return valid results only during the
- * scope of the event; once the event handler returns control
- * to the parser, the attribute list is invalid. To save a
- * persistent copy of the attribute list, use the SAX1
- * {@link org.xml.sax.helpers.AttributeListImpl AttributeListImpl}
- * helper class.</p>
- *
- * <p>An attribute list includes only attributes that have been
- * specified or defaulted: #IMPLIED attributes will not be included.</p>
- *
- * <p>There are two ways for the SAX application to obtain information
- * from the AttributeList. First, it can iterate through the entire
- * list:</p>
- *
- * <pre>
- * public void startElement (String name, AttributeList atts) {
- * for (int i = 0; i < atts.getLength(); i++) {
- * String name = atts.getName(i);
- * String type = atts.getType(i);
- * String value = atts.getValue(i);
- * [...]
- * }
- * }
- * </pre>
- *
- * <p>(Note that the result of getLength() will be zero if there
- * are no attributes.)
- *
- * <p>As an alternative, the application can request the value or
- * type of specific attributes:</p>
- *
- * <pre>
- * public void startElement (String name, AttributeList atts) {
- * String identifier = atts.getValue("id");
- * String label = atts.getValue("label");
- * [...]
- * }
- * </pre>
- *
- * @deprecated This interface has been replaced by the SAX2
- * {@link org.xml.sax.Attributes Attributes}
- * interface, which includes Namespace support.
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.DocumentHandler#startElement startElement
- * @see org.xml.sax.helpers.AttributeListImpl AttributeListImpl
- */
-public interface AttributeList {
-
-
- ////////////////////////////////////////////////////////////////////
- // Iteration methods.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Return the number of attributes in this list.
- *
- * <p>The SAX parser may provide attributes in any
- * arbitrary order, regardless of the order in which they were
- * declared or specified. The number of attributes may be
- * zero.</p>
- *
- * @return The number of attributes in the list.
- */
- public abstract int getLength ();
-
-
- /**
- * Return the name of an attribute in this list (by position).
- *
- * <p>The names must be unique: the SAX parser shall not include the
- * same attribute twice. Attributes without values (those declared
- * #IMPLIED without a value specified in the start tag) will be
- * omitted from the list.</p>
- *
- * <p>If the attribute name has a namespace prefix, the prefix
- * will still be attached.</p>
- *
- * @param i The index of the attribute in the list (starting at 0).
- * @return The name of the indexed attribute, or null
- * if the index is out of range.
- * @see #getLength
- */
- public abstract String getName (int i);
-
-
- /**
- * Return the type of an attribute in the list (by position).
- *
- * <p>The attribute type is one of the strings "CDATA", "ID",
- * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES",
- * or "NOTATION" (always in upper case).</p>
- *
- * <p>If the parser has not read a declaration for the attribute,
- * or if the parser does not report attribute types, then it must
- * return the value "CDATA" as stated in the XML 1.0 Recommentation
- * (clause 3.3.3, "Attribute-Value Normalization").</p>
- *
- * <p>For an enumerated attribute that is not a notation, the
- * parser will report the type as "NMTOKEN".</p>
- *
- * @param i The index of the attribute in the list (starting at 0).
- * @return The attribute type as a string, or
- * null if the index is out of range.
- * @see #getLength
- * @see #getType(java.lang.String)
- */
- public abstract String getType (int i);
-
-
- /**
- * Return the value of an attribute in the list (by position).
- *
- * <p>If the attribute value is a list of tokens (IDREFS,
- * ENTITIES, or NMTOKENS), the tokens will be concatenated
- * into a single string separated by whitespace.</p>
- *
- * @param i The index of the attribute in the list (starting at 0).
- * @return The attribute value as a string, or
- * null if the index is out of range.
- * @see #getLength
- * @see #getValue(java.lang.String)
- */
- public abstract String getValue (int i);
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Lookup methods.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Return the type of an attribute in the list (by name).
- *
- * <p>The return value is the same as the return value for
- * getType(int).</p>
- *
- * <p>If the attribute name has a namespace prefix in the document,
- * the application must include the prefix here.</p>
- *
- * @param name The name of the attribute.
- * @return The attribute type as a string, or null if no
- * such attribute exists.
- * @see #getType(int)
- */
- public abstract String getType (String name);
-
-
- /**
- * Return the value of an attribute in the list (by name).
- *
- * <p>The return value is the same as the return value for
- * getValue(int).</p>
- *
- * <p>If the attribute name has a namespace prefix in the document,
- * the application must include the prefix here.</p>
- *
- * @param i The index of the attribute in the list.
- * @return The attribute value as a string, or null if
- * no such attribute exists.
- * @see #getValue(int)
- */
- public abstract String getValue (String name);
-
-}
-
-// end of AttributeList.java
+// SAX Attribute List Interface.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: AttributeList.java,v 1.3.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+/**
+ * Interface for an element's attribute specifications.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This is the original SAX1 interface for reporting an element's
+ * attributes. Unlike the new {@link org.xml.sax.Attributes Attributes}
+ * interface, it does not support Namespace-related information.</p>
+ *
+ * <p>When an attribute list is supplied as part of a
+ * {@link org.xml.sax.DocumentHandler#startElement startElement}
+ * event, the list will return valid results only during the
+ * scope of the event; once the event handler returns control
+ * to the parser, the attribute list is invalid. To save a
+ * persistent copy of the attribute list, use the SAX1
+ * {@link org.xml.sax.helpers.AttributeListImpl AttributeListImpl}
+ * helper class.</p>
+ *
+ * <p>An attribute list includes only attributes that have been
+ * specified or defaulted: #IMPLIED attributes will not be included.</p>
+ *
+ * <p>There are two ways for the SAX application to obtain information
+ * from the AttributeList. First, it can iterate through the entire
+ * list:</p>
+ *
+ * <pre>
+ * public void startElement (String name, AttributeList atts) {
+ * for (int i = 0; i < atts.getLength(); i++) {
+ * String name = atts.getName(i);
+ * String type = atts.getType(i);
+ * String value = atts.getValue(i);
+ * [...]
+ * }
+ * }
+ * </pre>
+ *
+ * <p>(Note that the result of getLength() will be zero if there
+ * are no attributes.)
+ *
+ * <p>As an alternative, the application can request the value or
+ * type of specific attributes:</p>
+ *
+ * <pre>
+ * public void startElement (String name, AttributeList atts) {
+ * String identifier = atts.getValue("id");
+ * String label = atts.getValue("label");
+ * [...]
+ * }
+ * </pre>
+ *
+ * @deprecated This interface has been replaced by the SAX2
+ * {@link org.xml.sax.Attributes Attributes}
+ * interface, which includes Namespace support.
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.DocumentHandler#startElement startElement
+ * @see org.xml.sax.helpers.AttributeListImpl AttributeListImpl
+ */
+public interface AttributeList {
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Iteration methods.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Return the number of attributes in this list.
+ *
+ * <p>The SAX parser may provide attributes in any
+ * arbitrary order, regardless of the order in which they were
+ * declared or specified. The number of attributes may be
+ * zero.</p>
+ *
+ * @return The number of attributes in the list.
+ */
+ public abstract int getLength ();
+
+
+ /**
+ * Return the name of an attribute in this list (by position).
+ *
+ * <p>The names must be unique: the SAX parser shall not include the
+ * same attribute twice. Attributes without values (those declared
+ * #IMPLIED without a value specified in the start tag) will be
+ * omitted from the list.</p>
+ *
+ * <p>If the attribute name has a namespace prefix, the prefix
+ * will still be attached.</p>
+ *
+ * @param i The index of the attribute in the list (starting at 0).
+ * @return The name of the indexed attribute, or null
+ * if the index is out of range.
+ * @see #getLength
+ */
+ public abstract String getName (int i);
+
+
+ /**
+ * Return the type of an attribute in the list (by position).
+ *
+ * <p>The attribute type is one of the strings "CDATA", "ID",
+ * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES",
+ * or "NOTATION" (always in upper case).</p>
+ *
+ * <p>If the parser has not read a declaration for the attribute,
+ * or if the parser does not report attribute types, then it must
+ * return the value "CDATA" as stated in the XML 1.0 Recommentation
+ * (clause 3.3.3, "Attribute-Value Normalization").</p>
+ *
+ * <p>For an enumerated attribute that is not a notation, the
+ * parser will report the type as "NMTOKEN".</p>
+ *
+ * @param i The index of the attribute in the list (starting at 0).
+ * @return The attribute type as a string, or
+ * null if the index is out of range.
+ * @see #getLength
+ * @see #getType(java.lang.String)
+ */
+ public abstract String getType (int i);
+
+
+ /**
+ * Return the value of an attribute in the list (by position).
+ *
+ * <p>If the attribute value is a list of tokens (IDREFS,
+ * ENTITIES, or NMTOKENS), the tokens will be concatenated
+ * into a single string separated by whitespace.</p>
+ *
+ * @param i The index of the attribute in the list (starting at 0).
+ * @return The attribute value as a string, or
+ * null if the index is out of range.
+ * @see #getLength
+ * @see #getValue(java.lang.String)
+ */
+ public abstract String getValue (int i);
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Lookup methods.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Return the type of an attribute in the list (by name).
+ *
+ * <p>The return value is the same as the return value for
+ * getType(int).</p>
+ *
+ * <p>If the attribute name has a namespace prefix in the document,
+ * the application must include the prefix here.</p>
+ *
+ * @param name The name of the attribute.
+ * @return The attribute type as a string, or null if no
+ * such attribute exists.
+ * @see #getType(int)
+ */
+ public abstract String getType (String name);
+
+
+ /**
+ * Return the value of an attribute in the list (by name).
+ *
+ * <p>The return value is the same as the return value for
+ * getValue(int).</p>
+ *
+ * <p>If the attribute name has a namespace prefix in the document,
+ * the application must include the prefix here.</p>
+ *
+ * @param i The index of the attribute in the list.
+ * @return The attribute value as a string, or null if
+ * no such attribute exists.
+ * @see #getValue(int)
+ */
+ public abstract String getValue (String name);
+
+}
+
+// end of AttributeList.java
diff --git a/libjava/org/xml/sax/Attributes.java b/libjava/org/xml/sax/Attributes.java
index f10067a9288..251fe206a00 100644
--- a/libjava/org/xml/sax/Attributes.java
+++ b/libjava/org/xml/sax/Attributes.java
@@ -1,243 +1,252 @@
-// Attributes.java - attribute list with Namespace support
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the public domain.
-
-// $Id: Attributes.java,v 1.1 2000/10/02 02:43:16 sboag Exp $
-
-
-package org.xml.sax;
-
-
-/**
- * Interface for a list of XML attributes.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This interface allows access to a list of attributes in
- * three different ways:</p>
- *
- * <ol>
- * <li>by attribute index;</li>
- * <li>by Namespace-qualified name; or</li>
- * <li>by qualified (prefixed) name.</li>
- * </ol>
- *
- * <p>The list will not contain attributes that were declared
- * #IMPLIED but not specified in the start tag. It will also not
- * contain attributes used as Namespace declarations (xmlns*) unless
- * the <code>http://xml.org/sax/features/namespace-prefixes</code>
- * feature is set to <var>true</var> (it is <var>false</var> by
- * default).</p>
- *
- * <p>If the namespace-prefixes feature (see above) is <var>false</var>,
- * access by qualified name may not be available; if the
- * <code>http://xml.org/sax/features/namespaces</code>
- * feature is <var>false</var>, access by Namespace-qualified names
- * may not be available.</p>
- *
- * <p>This interface replaces the now-deprecated SAX1 {@link
- * org.xml.sax.AttributeList AttributeList} interface, which does not
- * contain Namespace support. In addition to Namespace support, it
- * adds the <var>getIndex</var> methods (below).</p>
- *
- * <p>The order of attributes in the list is unspecified, and will
- * vary from implementation to implementation.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.helpers.AttributeListImpl
- */
-public interface Attributes
-{
-
-
- ////////////////////////////////////////////////////////////////////
- // Indexed access.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Return the number of attributes in the list.
- *
- * <p>Once you know the number of attributes, you can iterate
- * through the list.</p>
- *
- * @return The number of attributes in the list.
- * @see #getURI(int)
- * @see #getLocalName(int)
- * @see #getQName(int)
- * @see #getType(int)
- * @see #getValue(int)
- */
- public abstract int getLength ();
-
-
- /**
- * Look up an attribute's Namespace URI by index.
- *
- * @param index The attribute index (zero-based).
- * @return The Namespace URI, or the empty string if none
- * is available, or null if the index is out of
- * range.
- * @see #getLength
- */
- public abstract String getURI (int index);
-
-
- /**
- * Look up an attribute's local name by index.
- *
- * @param index The attribute index (zero-based).
- * @return The local name, or the empty string if Namespace
- * processing is not being performed, or null
- * if the index is out of range.
- * @see #getLength
- */
- public abstract String getLocalName (int index);
-
-
- /**
- * Look up an attribute's XML 1.0 qualified name by index.
- *
- * @param index The attribute index (zero-based).
- * @return The XML 1.0 qualified name, or the empty string
- * if none is available, or null if the index
- * is out of range.
- * @see #getLength
- */
- public abstract String getQName (int index);
-
-
- /**
- * Look up an attribute's type by index.
- *
- * <p>The attribute type is one of the strings "CDATA", "ID",
- * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES",
- * or "NOTATION" (always in upper case).</p>
- *
- * <p>If the parser has not read a declaration for the attribute,
- * or if the parser does not report attribute types, then it must
- * return the value "CDATA" as stated in the XML 1.0 Recommentation
- * (clause 3.3.3, "Attribute-Value Normalization").</p>
- *
- * <p>For an enumerated attribute that is not a notation, the
- * parser will report the type as "NMTOKEN".</p>
- *
- * @param index The attribute index (zero-based).
- * @return The attribute's type as a string, or null if the
- * index is out of range.
- * @see #getLength
- */
- public abstract String getType (int index);
-
-
- /**
- * Look up an attribute's value by index.
- *
- * <p>If the attribute value is a list of tokens (IDREFS,
- * ENTITIES, or NMTOKENS), the tokens will be concatenated
- * into a single string with each token separated by a
- * single space.</p>
- *
- * @param index The attribute index (zero-based).
- * @return The attribute's value as a string, or null if the
- * index is out of range.
- * @see #getLength
- */
- public abstract String getValue (int index);
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Name-based query.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Look up the index of an attribute by Namespace name.
- *
- * @param uri The Namespace URI, or the empty string if
- * the name has no Namespace URI.
- * @param localName The attribute's local name.
- * @return The index of the attribute, or -1 if it does not
- * appear in the list.
- */
- public int getIndex (String uri, String localPart);
-
-
- /**
- * Look up the index of an attribute by XML 1.0 qualified name.
- *
- * @param qName The qualified (prefixed) name.
- * @return The index of the attribute, or -1 if it does not
- * appear in the list.
- */
- public int getIndex (String qName);
-
-
- /**
- * Look up an attribute's type by Namespace name.
- *
- * <p>See {@link #getType(int) getType(int)} for a description
- * of the possible types.</p>
- *
- * @param uri The Namespace URI, or the empty String if the
- * name has no Namespace URI.
- * @param localName The local name of the attribute.
- * @return The attribute type as a string, or null if the
- * attribute is not in the list or if Namespace
- * processing is not being performed.
- */
- public abstract String getType (String uri, String localName);
-
-
- /**
- * Look up an attribute's type by XML 1.0 qualified name.
- *
- * <p>See {@link #getType(int) getType(int)} for a description
- * of the possible types.</p>
- *
- * @param qName The XML 1.0 qualified name.
- * @return The attribute type as a string, or null if the
- * attribute is not in the list or if qualified names
- * are not available.
- */
- public abstract String getType (String qName);
-
-
- /**
- * Look up an attribute's value by Namespace name.
- *
- * <p>See {@link #getValue(int) getValue(int)} for a description
- * of the possible values.</p>
- *
- * @param uri The Namespace URI, or the empty String if the
- * name has no Namespace URI.
- * @param localName The local name of the attribute.
- * @return The attribute value as a string, or null if the
- * attribute is not in the list.
- */
- public abstract String getValue (String uri, String localName);
-
-
- /**
- * Look up an attribute's value by XML 1.0 qualified name.
- *
- * <p>See {@link #getValue(int) getValue(int)} for a description
- * of the possible values.</p>
- *
- * @param qName The XML 1.0 qualified name.
- * @return The attribute value as a string, or null if the
- * attribute is not in the list or if qualified names
- * are not available.
- */
- public abstract String getValue (String qName);
-
-}
-
-// end of Attributes.java
+// Attributes.java - attribute list with Namespace support
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the public domain.
+
+// $Id: Attributes.java,v 1.5.2.4 2002/01/29 21:34:14 dbrownell Exp $
+
+
+package org.xml.sax;
+
+
+/**
+ * Interface for a list of XML attributes.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This interface allows access to a list of attributes in
+ * three different ways:</p>
+ *
+ * <ol>
+ * <li>by attribute index;</li>
+ * <li>by Namespace-qualified name; or</li>
+ * <li>by qualified (prefixed) name.</li>
+ * </ol>
+ *
+ * <p>The list will not contain attributes that were declared
+ * #IMPLIED but not specified in the start tag. It will also not
+ * contain attributes used as Namespace declarations (xmlns*) unless
+ * the <code>http://xml.org/sax/features/namespace-prefixes</code>
+ * feature is set to <var>true</var> (it is <var>false</var> by
+ * default).
+ * Because SAX2 conforms to the "Namespaces in XML" specification,
+ * it does not give namespace declaration attributes a namespace URI.
+ * Some other W3C specifications are in conflict with that, expecting
+ * these declarations to be in a namespace.
+ * Handler code may need to resolve that conflict.
+ * </p>
+ *
+ * <p>If the namespace-prefixes feature (see above) is <var>false</var>,
+ * access by qualified name may not be available; if the
+ * <code>http://xml.org/sax/features/namespaces</code>
+ * feature is <var>false</var>, access by Namespace-qualified names
+ * may not be available.</p>
+ *
+ * <p>This interface replaces the now-deprecated SAX1 {@link
+ * org.xml.sax.AttributeList AttributeList} interface, which does not
+ * contain Namespace support. In addition to Namespace support, it
+ * adds the <var>getIndex</var> methods (below).</p>
+ *
+ * <p>The order of attributes in the list is unspecified, and will
+ * vary from implementation to implementation.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.helpers.AttributesImpl
+ * @see org.xml.sax.ext.DeclHandler#attributeDecl
+ */
+public interface Attributes
+{
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Indexed access.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Return the number of attributes in the list.
+ *
+ * <p>Once you know the number of attributes, you can iterate
+ * through the list.</p>
+ *
+ * @return The number of attributes in the list.
+ * @see #getURI(int)
+ * @see #getLocalName(int)
+ * @see #getQName(int)
+ * @see #getType(int)
+ * @see #getValue(int)
+ */
+ public abstract int getLength ();
+
+
+ /**
+ * Look up an attribute's Namespace URI by index.
+ *
+ * @param index The attribute index (zero-based).
+ * @return The Namespace URI, or the empty string if none
+ * is available, or null if the index is out of
+ * range.
+ * @see #getLength
+ */
+ public abstract String getURI (int index);
+
+
+ /**
+ * Look up an attribute's local name by index.
+ *
+ * @param index The attribute index (zero-based).
+ * @return The local name, or the empty string if Namespace
+ * processing is not being performed, or null
+ * if the index is out of range.
+ * @see #getLength
+ */
+ public abstract String getLocalName (int index);
+
+
+ /**
+ * Look up an attribute's XML 1.0 qualified name by index.
+ *
+ * @param index The attribute index (zero-based).
+ * @return The XML 1.0 qualified name, or the empty string
+ * if none is available, or null if the index
+ * is out of range.
+ * @see #getLength
+ */
+ public abstract String getQName (int index);
+
+
+ /**
+ * Look up an attribute's type by index.
+ *
+ * <p>The attribute type is one of the strings "CDATA", "ID",
+ * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES",
+ * or "NOTATION" (always in upper case).</p>
+ *
+ * <p>If the parser has not read a declaration for the attribute,
+ * or if the parser does not report attribute types, then it must
+ * return the value "CDATA" as stated in the XML 1.0 Recommentation
+ * (clause 3.3.3, "Attribute-Value Normalization").</p>
+ *
+ * <p>For an enumerated attribute that is not a notation, the
+ * parser will report the type as "NMTOKEN".</p>
+ *
+ * @param index The attribute index (zero-based).
+ * @return The attribute's type as a string, or null if the
+ * index is out of range.
+ * @see #getLength
+ */
+ public abstract String getType (int index);
+
+
+ /**
+ * Look up an attribute's value by index.
+ *
+ * <p>If the attribute value is a list of tokens (IDREFS,
+ * ENTITIES, or NMTOKENS), the tokens will be concatenated
+ * into a single string with each token separated by a
+ * single space.</p>
+ *
+ * @param index The attribute index (zero-based).
+ * @return The attribute's value as a string, or null if the
+ * index is out of range.
+ * @see #getLength
+ */
+ public abstract String getValue (int index);
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Name-based query.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Look up the index of an attribute by Namespace name.
+ *
+ * @param uri The Namespace URI, or the empty string if
+ * the name has no Namespace URI.
+ * @param localName The attribute's local name.
+ * @return The index of the attribute, or -1 if it does not
+ * appear in the list.
+ */
+ public int getIndex (String uri, String localName);
+
+
+ /**
+ * Look up the index of an attribute by XML 1.0 qualified name.
+ *
+ * @param qName The qualified (prefixed) name.
+ * @return The index of the attribute, or -1 if it does not
+ * appear in the list.
+ */
+ public int getIndex (String qName);
+
+
+ /**
+ * Look up an attribute's type by Namespace name.
+ *
+ * <p>See {@link #getType(int) getType(int)} for a description
+ * of the possible types.</p>
+ *
+ * @param uri The Namespace URI, or the empty String if the
+ * name has no Namespace URI.
+ * @param localName The local name of the attribute.
+ * @return The attribute type as a string, or null if the
+ * attribute is not in the list or if Namespace
+ * processing is not being performed.
+ */
+ public abstract String getType (String uri, String localName);
+
+
+ /**
+ * Look up an attribute's type by XML 1.0 qualified name.
+ *
+ * <p>See {@link #getType(int) getType(int)} for a description
+ * of the possible types.</p>
+ *
+ * @param qName The XML 1.0 qualified name.
+ * @return The attribute type as a string, or null if the
+ * attribute is not in the list or if qualified names
+ * are not available.
+ */
+ public abstract String getType (String qName);
+
+
+ /**
+ * Look up an attribute's value by Namespace name.
+ *
+ * <p>See {@link #getValue(int) getValue(int)} for a description
+ * of the possible values.</p>
+ *
+ * @param uri The Namespace URI, or the empty String if the
+ * name has no Namespace URI.
+ * @param localName The local name of the attribute.
+ * @return The attribute value as a string, or null if the
+ * attribute is not in the list.
+ */
+ public abstract String getValue (String uri, String localName);
+
+
+ /**
+ * Look up an attribute's value by XML 1.0 qualified name.
+ *
+ * <p>See {@link #getValue(int) getValue(int)} for a description
+ * of the possible values.</p>
+ *
+ * @param qName The XML 1.0 qualified name.
+ * @return The attribute value as a string, or null if the
+ * attribute is not in the list or if qualified names
+ * are not available.
+ */
+ public abstract String getValue (String qName);
+
+}
+
+// end of Attributes.java
diff --git a/libjava/org/xml/sax/ContentHandler.java b/libjava/org/xml/sax/ContentHandler.java
index 0d84d0eae99..06462c51eec 100644
--- a/libjava/org/xml/sax/ContentHandler.java
+++ b/libjava/org/xml/sax/ContentHandler.java
@@ -1,374 +1,408 @@
-// ContentHandler.java - handle main document content.
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the public domain.
-
-// $Id: ContentHandler.java,v 1.1 2000/10/02 02:43:16 sboag Exp $
-
-package org.xml.sax;
-
-
-/**
- * Receive notification of the logical content of a document.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This is the main interface that most SAX applications
- * implement: if the application needs to be informed of basic parsing
- * events, it implements this interface and registers an instance with
- * the SAX parser using the {@link org.xml.sax.XMLReader#setContentHandler
- * setContentHandler} method. The parser uses the instance to report
- * basic document-related events like the start and end of elements
- * and character data.</p>
- *
- * <p>The order of events in this interface is very important, and
- * mirrors the order of information in the document itself. For
- * example, all of an element's content (character data, processing
- * instructions, and/or subelements) will appear, in order, between
- * the startElement event and the corresponding endElement event.</p>
- *
- * <p>This interface is similar to the now-deprecated SAX 1.0
- * DocumentHandler interface, but it adds support for Namespaces
- * and for reporting skipped entities (in non-validating XML
- * processors).</p>
- *
- * <p>Implementors should note that there is also a Java class
- * {@link java.net.ContentHandler ContentHandler} in the java.net
- * package; that means that it's probably a bad idea to do</p>
- *
- * <blockquote>
- * import java.net.*;
- * import org.xml.sax.*;
- * </blockquote>
- *
- * <p>In fact, "import ...*" is usually a sign of sloppy programming
- * anyway, so the user should consider this a feature rather than a
- * bug.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.XMLReader
- * @see org.xml.sax.DTDHandler
- * @see org.xml.sax.ErrorHandler
- */
-public interface ContentHandler
-{
-
- /**
- * Receive an object for locating the origin of SAX document events.
- *
- * <p>SAX parsers are strongly encouraged (though not absolutely
- * required) to supply a locator: if it does so, it must supply
- * the locator to the application by invoking this method before
- * invoking any of the other methods in the ContentHandler
- * interface.</p>
- *
- * <p>The locator allows the application to determine the end
- * position of any document-related event, even if the parser is
- * not reporting an error. Typically, the application will
- * use this information for reporting its own errors (such as
- * character content that does not match an application's
- * business rules). The information returned by the locator
- * is probably not sufficient for use with a search engine.</p>
- *
- * <p>Note that the locator will return correct information only
- * during the invocation of the events in this interface. The
- * application should not attempt to use it at any other time.</p>
- *
- * @param locator An object that can return the location of
- * any SAX document event.
- * @see org.xml.sax.Locator
- */
- public void setDocumentLocator (Locator locator);
-
-
- /**
- * Receive notification of the beginning of a document.
- *
- * <p>The SAX parser will invoke this method only once, before any
- * other methods in this interface or in {@link org.xml.sax.DTDHandler
- * DTDHandler} (except for {@link #setDocumentLocator
- * setDocumentLocator}).</p>
- *
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see #endDocument
- */
- public void startDocument ()
- throws SAXException;
-
-
- /**
- * Receive notification of the end of a document.
- *
- * <p>The SAX parser will invoke this method only once, and it will
- * be the last method invoked during the parse. The parser shall
- * not invoke this method until it has either abandoned parsing
- * (because of an unrecoverable error) or reached the end of
- * input.</p>
- *
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see #startDocument
- */
- public void endDocument()
- throws SAXException;
-
-
- /**
- * Begin the scope of a prefix-URI Namespace mapping.
- *
- * <p>The information from this event is not necessary for
- * normal Namespace processing: the SAX XML reader will
- * automatically replace prefixes for element and attribute
- * names when the <code>http://xml.org/sax/features/namespaces</code>
- * feature is <var>true</var> (the default).</p>
- *
- * <p>There are cases, however, when applications need to
- * use prefixes in character data or in attribute values,
- * where they cannot safely be expanded automatically; the
- * start/endPrefixMapping event supplies the information
- * to the application to expand prefixes in those contexts
- * itself, if necessary.</p>
- *
- * <p>Note that start/endPrefixMapping events are not
- * guaranteed to be properly nested relative to each-other:
- * all startPrefixMapping events will occur before the
- * corresponding {@link #startElement startElement} event,
- * and all {@link #endPrefixMapping endPrefixMapping}
- * events will occur after the corresponding {@link #endElement
- * endElement} event, but their order is not otherwise
- * guaranteed.</p>
- *
- * <p>There should never be start/endPrefixMapping events for the
- * "xml" prefix, since it is predeclared and immutable.</p>
- *
- * @param prefix The Namespace prefix being declared.
- * @param uri The Namespace URI the prefix is mapped to.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see #endPrefixMapping
- * @see #startElement
- */
- public void startPrefixMapping (String prefix, String uri)
- throws SAXException;
-
-
- /**
- * End the scope of a prefix-URI mapping.
- *
- * <p>See {@link #startPrefixMapping startPrefixMapping} for
- * details. This event will always occur after the corresponding
- * {@link #endElement endElement} event, but the order of
- * {@link #endPrefixMapping endPrefixMapping} events is not otherwise
- * guaranteed.</p>
- *
- * @param prefix The prefix that was being mapping.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see #startPrefixMapping
- * @see #endElement
- */
- public void endPrefixMapping (String prefix)
- throws SAXException;
-
-
- /**
- * Receive notification of the beginning of an element.
- *
- * <p>The Parser will invoke this method at the beginning of every
- * element in the XML document; there will be a corresponding
- * {@link #endElement endElement} event for every startElement event
- * (even when the element is empty). All of the element's content will be
- * reported, in order, before the corresponding endElement
- * event.</p>
- *
- * <p>This event allows up to three name components for each
- * element:</p>
- *
- * <ol>
- * <li>the Namespace URI;</li>
- * <li>the local name; and</li>
- * <li>the qualified (prefixed) name.</li>
- * </ol>
- *
- * <p>Any or all of these may be provided, depending on the
- * values of the <var>http://xml.org/sax/features/namespaces</var>
- * and the <var>http://xml.org/sax/features/namespace-prefixes</var>
- * properties:</p>
- *
- * <ul>
- * <li>the Namespace URI and local name are required when
- * the namespaces property is <var>true</var> (the default), and are
- * optional when the namespaces property is <var>false</var> (if one is
- * specified, both must be);</li>
- * <li>the qualified name is required when the namespace-prefixes property
- * is <var>true</var>, and is optional when the namespace-prefixes property
- * is <var>false</var> (the default).</li>
- * </ul>
- *
- * <p>Note that the attribute list provided will contain only
- * attributes with explicit values (specified or defaulted):
- * #IMPLIED attributes will be omitted. The attribute list
- * will contain attributes used for Namespace declarations
- * (xmlns* attributes) only if the
- * <code>http://xml.org/sax/features/namespace-prefixes</code>
- * property is true (it is false by default, and support for a
- * true value is optional).</p>
- *
- * @param uri The Namespace URI, or the empty string if the
- * element has no Namespace URI or if Namespace
- * processing is not being performed.
- * @param localName The local name (without prefix), or the
- * empty string if Namespace processing is not being
- * performed.
- * @param qName The qualified name (with prefix), or the
- * empty string if qualified names are not available.
- * @param atts The attributes attached to the element. If
- * there are no attributes, it shall be an empty
- * Attributes object.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see #endElement
- * @see org.xml.sax.Attributes
- */
- public void startElement (String namespaceURI, String localName,
- String qName, Attributes atts)
- throws SAXException;
-
-
- /**
- * Receive notification of the end of an element.
- *
- * <p>The SAX parser will invoke this method at the end of every
- * element in the XML document; there will be a corresponding
- * {@link #startElement startElement} event for every endElement
- * event (even when the element is empty).</p>
- *
- * <p>For information on the names, see startElement.</p>
- *
- * @param uri The Namespace URI, or the empty string if the
- * element has no Namespace URI or if Namespace
- * processing is not being performed.
- * @param localName The local name (without prefix), or the
- * empty string if Namespace processing is not being
- * performed.
- * @param qName The qualified XML 1.0 name (with prefix), or the
- * empty string if qualified names are not available.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- */
- public void endElement (String namespaceURI, String localName,
- String qName)
- throws SAXException;
-
-
- /**
- * Receive notification of character data.
- *
- * <p>The Parser will call this method to report each chunk of
- * character data. SAX parsers may return all contiguous character
- * data in a single chunk, or they may split it into several
- * chunks; however, all of the characters in any single event
- * must come from the same external entity so that the Locator
- * provides useful information.</p>
- *
- * <p>The application must not attempt to read from the array
- * outside of the specified range.</p>
- *
- * <p>Note that some parsers will report whitespace in element
- * content using the {@link #ignorableWhitespace ignorableWhitespace}
- * method rather than this one (validating parsers <em>must</em>
- * do so).</p>
- *
- * @param ch The characters from the XML document.
- * @param start The start position in the array.
- * @param length The number of characters to read from the array.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see #ignorableWhitespace
- * @see org.xml.sax.Locator
- */
- public void characters (char ch[], int start, int length)
- throws SAXException;
-
-
- /**
- * Receive notification of ignorable whitespace in element content.
- *
- * <p>Validating Parsers must use this method to report each chunk
- * of whitespace in element content (see the W3C XML 1.0 recommendation,
- * section 2.10): non-validating parsers may also use this method
- * if they are capable of parsing and using content models.</p>
- *
- * <p>SAX parsers may return all contiguous whitespace in a single
- * chunk, or they may split it into several chunks; however, all of
- * the characters in any single event must come from the same
- * external entity, so that the Locator provides useful
- * information.</p>
- *
- * <p>The application must not attempt to read from the array
- * outside of the specified range.</p>
- *
- * @param ch The characters from the XML document.
- * @param start The start position in the array.
- * @param length The number of characters to read from the array.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see #characters
- */
- public void ignorableWhitespace (char ch[], int start, int length)
- throws SAXException;
-
-
- /**
- * Receive notification of a processing instruction.
- *
- * <p>The Parser will invoke this method once for each processing
- * instruction found: note that processing instructions may occur
- * before or after the main document element.</p>
- *
- * <p>A SAX parser must never report an XML declaration (XML 1.0,
- * section 2.8) or a text declaration (XML 1.0, section 4.3.1)
- * using this method.</p>
- *
- * @param target The processing instruction target.
- * @param data The processing instruction data, or null if
- * none was supplied. The data does not include any
- * whitespace separating it from the target.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- */
- public void processingInstruction (String target, String data)
- throws SAXException;
-
-
- /**
- * Receive notification of a skipped entity.
- *
- * <p>The Parser will invoke this method once for each entity
- * skipped. Non-validating processors may skip entities if they
- * have not seen the declarations (because, for example, the
- * entity was declared in an external DTD subset). All processors
- * may skip external entities, depending on the values of the
- * <code>http://xml.org/sax/features/external-general-entities</code>
- * and the
- * <code>http://xml.org/sax/features/external-parameter-entities</code>
- * properties.</p>
- *
- * @param name The name of the skipped entity. If it is a
- * parameter entity, the name will begin with '%', and if
- * it is the external DTD subset, it will be the string
- * "[dtd]".
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- */
- public void skippedEntity (String name)
- throws SAXException;
-}
-
-// end of ContentHandler.java
+// ContentHandler.java - handle main document content.
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the public domain.
+
+// $Id: ContentHandler.java,v 1.4.2.9 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+
+/**
+ * Receive notification of the logical content of a document.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This is the main interface that most SAX applications
+ * implement: if the application needs to be informed of basic parsing
+ * events, it implements this interface and registers an instance with
+ * the SAX parser using the {@link org.xml.sax.XMLReader#setContentHandler
+ * setContentHandler} method. The parser uses the instance to report
+ * basic document-related events like the start and end of elements
+ * and character data.</p>
+ *
+ * <p>The order of events in this interface is very important, and
+ * mirrors the order of information in the document itself. For
+ * example, all of an element's content (character data, processing
+ * instructions, and/or subelements) will appear, in order, between
+ * the startElement event and the corresponding endElement event.</p>
+ *
+ * <p>This interface is similar to the now-deprecated SAX 1.0
+ * DocumentHandler interface, but it adds support for Namespaces
+ * and for reporting skipped entities (in non-validating XML
+ * processors).</p>
+ *
+ * <p>Implementors should note that there is also a Java class
+ * {@link java.net.ContentHandler ContentHandler} in the java.net
+ * package; that means that it's probably a bad idea to do</p>
+ *
+ * <blockquote>
+ * import java.net.*;
+ * import org.xml.sax.*;
+ * </blockquote>
+ *
+ * <p>In fact, "import ...*" is usually a sign of sloppy programming
+ * anyway, so the user should consider this a feature rather than a
+ * bug.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.XMLReader
+ * @see org.xml.sax.DTDHandler
+ * @see org.xml.sax.ErrorHandler
+ */
+public interface ContentHandler
+{
+
+ /**
+ * Receive an object for locating the origin of SAX document events.
+ *
+ * <p>SAX parsers are strongly encouraged (though not absolutely
+ * required) to supply a locator: if it does so, it must supply
+ * the locator to the application by invoking this method before
+ * invoking any of the other methods in the ContentHandler
+ * interface.</p>
+ *
+ * <p>The locator allows the application to determine the end
+ * position of any document-related event, even if the parser is
+ * not reporting an error. Typically, the application will
+ * use this information for reporting its own errors (such as
+ * character content that does not match an application's
+ * business rules). The information returned by the locator
+ * is probably not sufficient for use with a search engine.</p>
+ *
+ * <p>Note that the locator will return correct information only
+ * during the invocation of the events in this interface. The
+ * application should not attempt to use it at any other time.</p>
+ *
+ * @param locator An object that can return the location of
+ * any SAX document event.
+ * @see org.xml.sax.Locator
+ */
+ public void setDocumentLocator (Locator locator);
+
+
+ /**
+ * Receive notification of the beginning of a document.
+ *
+ * <p>The SAX parser will invoke this method only once, before any
+ * other event callbacks (except for {@link #setDocumentLocator
+ * setDocumentLocator}).</p>
+ *
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see #endDocument
+ */
+ public void startDocument ()
+ throws SAXException;
+
+
+ /**
+ * Receive notification of the end of a document.
+ *
+ * <p>The SAX parser will invoke this method only once, and it will
+ * be the last method invoked during the parse. The parser shall
+ * not invoke this method until it has either abandoned parsing
+ * (because of an unrecoverable error) or reached the end of
+ * input.</p>
+ *
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see #startDocument
+ */
+ public void endDocument()
+ throws SAXException;
+
+
+ /**
+ * Begin the scope of a prefix-URI Namespace mapping.
+ *
+ * <p>The information from this event is not necessary for
+ * normal Namespace processing: the SAX XML reader will
+ * automatically replace prefixes for element and attribute
+ * names when the <code>http://xml.org/sax/features/namespaces</code>
+ * feature is <var>true</var> (the default).</p>
+ *
+ * <p>There are cases, however, when applications need to
+ * use prefixes in character data or in attribute values,
+ * where they cannot safely be expanded automatically; the
+ * start/endPrefixMapping event supplies the information
+ * to the application to expand prefixes in those contexts
+ * itself, if necessary.</p>
+ *
+ * <p>Note that start/endPrefixMapping events are not
+ * guaranteed to be properly nested relative to each other:
+ * all startPrefixMapping events will occur immediately before the
+ * corresponding {@link #startElement startElement} event,
+ * and all {@link #endPrefixMapping endPrefixMapping}
+ * events will occur immediately after the corresponding
+ * {@link #endElement endElement} event,
+ * but their order is not otherwise
+ * guaranteed.</p>
+ *
+ * <p>There should never be start/endPrefixMapping events for the
+ * "xml" prefix, since it is predeclared and immutable.</p>
+ *
+ * @param prefix The Namespace prefix being declared.
+ * An empty string is used for the default element namespace,
+ * which has no prefix.
+ * @param uri The Namespace URI the prefix is mapped to.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ * @see #endPrefixMapping
+ * @see #startElement
+ */
+ public void startPrefixMapping (String prefix, String uri)
+ throws SAXException;
+
+
+ /**
+ * End the scope of a prefix-URI mapping.
+ *
+ * <p>See {@link #startPrefixMapping startPrefixMapping} for
+ * details. These events will always occur immediately after the
+ * corresponding {@link #endElement endElement} event, but the order of
+ * {@link #endPrefixMapping endPrefixMapping} events is not otherwise
+ * guaranteed.</p>
+ *
+ * @param prefix The prefix that was being mapping.
+ * This is the empty string when a default mapping scope ends.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ * @see #startPrefixMapping
+ * @see #endElement
+ */
+ public void endPrefixMapping (String prefix)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of the beginning of an element.
+ *
+ * <p>The Parser will invoke this method at the beginning of every
+ * element in the XML document; there will be a corresponding
+ * {@link #endElement endElement} event for every startElement event
+ * (even when the element is empty). All of the element's content will be
+ * reported, in order, before the corresponding endElement
+ * event.</p>
+ *
+ * <p>This event allows up to three name components for each
+ * element:</p>
+ *
+ * <ol>
+ * <li>the Namespace URI;</li>
+ * <li>the local name; and</li>
+ * <li>the qualified (prefixed) name.</li>
+ * </ol>
+ *
+ * <p>Any or all of these may be provided, depending on the
+ * values of the <var>http://xml.org/sax/features/namespaces</var>
+ * and the <var>http://xml.org/sax/features/namespace-prefixes</var>
+ * properties:</p>
+ *
+ * <ul>
+ * <li>the Namespace URI and local name are required when
+ * the namespaces property is <var>true</var> (the default), and are
+ * optional when the namespaces property is <var>false</var> (if one is
+ * specified, both must be);</li>
+ * <li>the qualified name is required when the namespace-prefixes property
+ * is <var>true</var>, and is optional when the namespace-prefixes property
+ * is <var>false</var> (the default).</li>
+ * </ul>
+ *
+ * <p>Note that the attribute list provided will contain only
+ * attributes with explicit values (specified or defaulted):
+ * #IMPLIED attributes will be omitted. The attribute list
+ * will contain attributes used for Namespace declarations
+ * (xmlns* attributes) only if the
+ * <code>http://xml.org/sax/features/namespace-prefixes</code>
+ * property is true (it is false by default, and support for a
+ * true value is optional).</p>
+ *
+ * <p>Like {@link #characters characters()}, attribute values may have
+ * characters that need more than one <code>char</code> value. </p>
+ *
+ * @param uri The Namespace URI, or the empty string if the
+ * element has no Namespace URI or if Namespace
+ * processing is not being performed.
+ * @param localName The local name (without prefix), or the
+ * empty string if Namespace processing is not being
+ * performed.
+ * @param qName The qualified name (with prefix), or the
+ * empty string if qualified names are not available.
+ * @param atts The attributes attached to the element. If
+ * there are no attributes, it shall be an empty
+ * Attributes object.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see #endElement
+ * @see org.xml.sax.Attributes
+ */
+ public void startElement (String uri, String localName,
+ String qName, Attributes atts)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of the end of an element.
+ *
+ * <p>The SAX parser will invoke this method at the end of every
+ * element in the XML document; there will be a corresponding
+ * {@link #startElement startElement} event for every endElement
+ * event (even when the element is empty).</p>
+ *
+ * <p>For information on the names, see startElement.</p>
+ *
+ * @param uri The Namespace URI, or the empty string if the
+ * element has no Namespace URI or if Namespace
+ * processing is not being performed.
+ * @param localName The local name (without prefix), or the
+ * empty string if Namespace processing is not being
+ * performed.
+ * @param qName The qualified XML 1.0 name (with prefix), or the
+ * empty string if qualified names are not available.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ */
+ public void endElement (String uri, String localName,
+ String qName)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of character data.
+ *
+ * <p>The Parser will call this method to report each chunk of
+ * character data. SAX parsers may return all contiguous character
+ * data in a single chunk, or they may split it into several
+ * chunks; however, all of the characters in any single event
+ * must come from the same external entity so that the Locator
+ * provides useful information.</p>
+ *
+ * <p>The application must not attempt to read from the array
+ * outside of the specified range.</p>
+ *
+ * <p>Individual characters may consist of more than one Java
+ * <code>char</code> value. There are two important cases where this
+ * happens, because characters can't be represented in just sixteen bits.
+ * In one case, characters are represented in a <em>Surrogate Pair</em>,
+ * using two special Unicode values. Such characters are in the so-called
+ * "Astral Planes", with a code point above U+FFFF. A second case involves
+ * composite characters, such as a base character combining with one or
+ * more accent characters. </p>
+ *
+ * <p> Your code should not assume that algorithms using
+ * <code>char</code>-at-a-time idioms will be working in character
+ * units; in some cases they will split characters. This is relevant
+ * wherever XML permits arbitrary characters, such as attribute values,
+ * processing instruction data, and comments as well as in data reported
+ * from this method. It's also generally relevant whenever Java code
+ * manipulates internationalized text; the issue isn't unique to XML.</p>
+ *
+ * <p>Note that some parsers will report whitespace in element
+ * content using the {@link #ignorableWhitespace ignorableWhitespace}
+ * method rather than this one (validating parsers <em>must</em>
+ * do so).</p>
+ *
+ * @param ch The characters from the XML document.
+ * @param start The start position in the array.
+ * @param length The number of characters to read from the array.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see #ignorableWhitespace
+ * @see org.xml.sax.Locator
+ */
+ public void characters (char ch[], int start, int length)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of ignorable whitespace in element content.
+ *
+ * <p>Validating Parsers must use this method to report each chunk
+ * of whitespace in element content (see the W3C XML 1.0 recommendation,
+ * section 2.10): non-validating parsers may also use this method
+ * if they are capable of parsing and using content models.</p>
+ *
+ * <p>SAX parsers may return all contiguous whitespace in a single
+ * chunk, or they may split it into several chunks; however, all of
+ * the characters in any single event must come from the same
+ * external entity, so that the Locator provides useful
+ * information.</p>
+ *
+ * <p>The application must not attempt to read from the array
+ * outside of the specified range.</p>
+ *
+ * @param ch The characters from the XML document.
+ * @param start The start position in the array.
+ * @param length The number of characters to read from the array.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see #characters
+ */
+ public void ignorableWhitespace (char ch[], int start, int length)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of a processing instruction.
+ *
+ * <p>The Parser will invoke this method once for each processing
+ * instruction found: note that processing instructions may occur
+ * before or after the main document element.</p>
+ *
+ * <p>A SAX parser must never report an XML declaration (XML 1.0,
+ * section 2.8) or a text declaration (XML 1.0, section 4.3.1)
+ * using this method.</p>
+ *
+ * <p>Like {@link #characters characters()}, processing instruction
+ * data may have characters that need more than one <code>char</code>
+ * value. </p>
+ *
+ * @param target The processing instruction target.
+ * @param data The processing instruction data, or null if
+ * none was supplied. The data does not include any
+ * whitespace separating it from the target.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ */
+ public void processingInstruction (String target, String data)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of a skipped entity.
+ * This is not called for entity references within markup constructs
+ * such as element start tags or markup declarations. (The XML
+ * recommendation requires reporting skipped external entities.
+ * SAX also reports internal entity expansion/non-expansion, except
+ * within markup constructs.)
+ *
+ * <p>The Parser will invoke this method each time the entity is
+ * skipped. Non-validating processors may skip entities if they
+ * have not seen the declarations (because, for example, the
+ * entity was declared in an external DTD subset). All processors
+ * may skip external entities, depending on the values of the
+ * <code>http://xml.org/sax/features/external-general-entities</code>
+ * and the
+ * <code>http://xml.org/sax/features/external-parameter-entities</code>
+ * properties.</p>
+ *
+ * @param name The name of the skipped entity. If it is a
+ * parameter entity, the name will begin with '%', and if
+ * it is the external DTD subset, it will be the string
+ * "[dtd]".
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ */
+ public void skippedEntity (String name)
+ throws SAXException;
+}
+
+// end of ContentHandler.java
diff --git a/libjava/org/xml/sax/DTDHandler.java b/libjava/org/xml/sax/DTDHandler.java
index 509a0069ba8..ee84bb24c45 100644
--- a/libjava/org/xml/sax/DTDHandler.java
+++ b/libjava/org/xml/sax/DTDHandler.java
@@ -1,108 +1,117 @@
-// SAX DTD handler.
-// No warranty; no copyright -- use this as you will.
-// $Id: DTDHandler.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-/**
- * Receive notification of basic DTD-related events.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>If a SAX application needs information about notations and
- * unparsed entities, then the application implements this
- * interface and registers an instance with the SAX parser using
- * the parser's setDTDHandler method. The parser uses the
- * instance to report notation and unparsed entity declarations to
- * the application.</p>
- *
- * <p>Note that this interface includes only those DTD events that
- * the XML recommendation <em>requires</em> processors to report:
- * notation and unparsed entity declarations.</p>
- *
- * <p>The SAX parser may report these events in any order, regardless
- * of the order in which the notations and unparsed entities were
- * declared; however, all DTD events must be reported after the
- * document handler's startDocument event, and before the first
- * startElement event.</p>
- *
- * <p>It is up to the application to store the information for
- * future use (perhaps in a hash table or object tree).
- * If the application encounters attributes of type "NOTATION",
- * "ENTITY", or "ENTITIES", it can use the information that it
- * obtained through this interface to find the entity and/or
- * notation corresponding with the attribute value.</p>
- *
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.Parser#setDTDHandler
- * @see org.xml.sax.HandlerBase
- */
-public interface DTDHandler {
-
-
- /**
- * Receive notification of a notation declaration event.
- *
- * <p>It is up to the application to record the notation for later
- * reference, if necessary.</p>
- *
- * <p>At least one of publicId and systemId must be non-null.
- * If a system identifier is present, and it is a URL, the SAX
- * parser must resolve it fully before passing it to the
- * application through this event.</p>
- *
- * <p>There is no guarantee that the notation declaration will be
- * reported before any unparsed entities that use it.</p>
- *
- * @param name The notation name.
- * @param publicId The notation's public identifier, or null if
- * none was given.
- * @param systemId The notation's system identifier, or null if
- * none was given.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see #unparsedEntityDecl
- * @see org.xml.sax.AttributeList
- */
- public abstract void notationDecl (String name,
- String publicId,
- String systemId)
- throws SAXException;
-
-
- /**
- * Receive notification of an unparsed entity declaration event.
- *
- * <p>Note that the notation name corresponds to a notation
- * reported by the {@link #notationDecl notationDecl} event.
- * It is up to the application to record the entity for later
- * reference, if necessary.</p>
- *
- * <p>If the system identifier is a URL, the parser must resolve it
- * fully before passing it to the application.</p>
- *
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @param name The unparsed entity's name.
- * @param publicId The entity's public identifier, or null if none
- * was given.
- * @param systemId The entity's system identifier.
- * @param notation name The name of the associated notation.
- * @see #notationDecl
- * @see org.xml.sax.AttributeList
- */
- public abstract void unparsedEntityDecl (String name,
- String publicId,
- String systemId,
- String notationName)
- throws SAXException;
-
-}
-
-// end of DTDHandler.java
+// SAX DTD handler.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: DTDHandler.java,v 1.5.2.4 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+/**
+ * Receive notification of basic DTD-related events.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>If a SAX application needs information about notations and
+ * unparsed entities, then the application implements this
+ * interface and registers an instance with the SAX parser using
+ * the parser's setDTDHandler method. The parser uses the
+ * instance to report notation and unparsed entity declarations to
+ * the application.</p>
+ *
+ * <p>Note that this interface includes only those DTD events that
+ * the XML recommendation <em>requires</em> processors to report:
+ * notation and unparsed entity declarations.</p>
+ *
+ * <p>The SAX parser may report these events in any order, regardless
+ * of the order in which the notations and unparsed entities were
+ * declared; however, all DTD events must be reported after the
+ * document handler's startDocument event, and before the first
+ * startElement event.
+ * (If the {@link org.xml.sax.ext.LexicalHandler LexicalHandler} is
+ * used, these events must also be reported before the endDTD event.)
+ * </p>
+ *
+ * <p>It is up to the application to store the information for
+ * future use (perhaps in a hash table or object tree).
+ * If the application encounters attributes of type "NOTATION",
+ * "ENTITY", or "ENTITIES", it can use the information that it
+ * obtained through this interface to find the entity and/or
+ * notation corresponding with the attribute value.</p>
+ *
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.XMLReader#setDTDHandler
+ */
+public interface DTDHandler {
+
+
+ /**
+ * Receive notification of a notation declaration event.
+ *
+ * <p>It is up to the application to record the notation for later
+ * reference, if necessary;
+ * notations may appear as attribute values and in unparsed entity
+ * declarations, and are sometime used with processing instruction
+ * target names.</p>
+ *
+ * <p>At least one of publicId and systemId must be non-null.
+ * If a system identifier is present, and it is a URL, the SAX
+ * parser must resolve it fully before passing it to the
+ * application through this event.</p>
+ *
+ * <p>There is no guarantee that the notation declaration will be
+ * reported before any unparsed entities that use it.</p>
+ *
+ * @param name The notation name.
+ * @param publicId The notation's public identifier, or null if
+ * none was given.
+ * @param systemId The notation's system identifier, or null if
+ * none was given.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see #unparsedEntityDecl
+ * @see org.xml.sax.Attributes
+ */
+ public abstract void notationDecl (String name,
+ String publicId,
+ String systemId)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of an unparsed entity declaration event.
+ *
+ * <p>Note that the notation name corresponds to a notation
+ * reported by the {@link #notationDecl notationDecl} event.
+ * It is up to the application to record the entity for later
+ * reference, if necessary;
+ * unparsed entities may appear as attribute values.
+ * </p>
+ *
+ * <p>If the system identifier is a URL, the parser must resolve it
+ * fully before passing it to the application.</p>
+ *
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @param name The unparsed entity's name.
+ * @param publicId The entity's public identifier, or null if none
+ * was given.
+ * @param systemId The entity's system identifier.
+ * @param notationName The name of the associated notation.
+ * @see #notationDecl
+ * @see org.xml.sax.Attributes
+ */
+ public abstract void unparsedEntityDecl (String name,
+ String publicId,
+ String systemId,
+ String notationName)
+ throws SAXException;
+
+}
+
+// end of DTDHandler.java
diff --git a/libjava/org/xml/sax/DocumentHandler.java b/libjava/org/xml/sax/DocumentHandler.java
index be0a189c45b..10c07b2f627 100644
--- a/libjava/org/xml/sax/DocumentHandler.java
+++ b/libjava/org/xml/sax/DocumentHandler.java
@@ -1,230 +1,232 @@
-// SAX document handler.
-// No warranty; no copyright -- use this as you will.
-// $Id: DocumentHandler.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-/**
- * Receive notification of general document events.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This was the main event-handling interface for SAX1; in
- * SAX2, it has been replaced by {@link org.xml.sax.ContentHandler
- * ContentHandler}, which provides Namespace support and reporting
- * of skipped entities. This interface is included in SAX2 only
- * to support legacy SAX1 applications.</p>
- *
- * <p>The order of events in this interface is very important, and
- * mirrors the order of information in the document itself. For
- * example, all of an element's content (character data, processing
- * instructions, and/or subelements) will appear, in order, between
- * the startElement event and the corresponding endElement event.</p>
- *
- * <p>Application writers who do not want to implement the entire
- * interface can derive a class from HandlerBase, which implements
- * the default functionality; parser writers can instantiate
- * HandlerBase to obtain a default handler. The application can find
- * the location of any document event using the Locator interface
- * supplied by the Parser through the setDocumentLocator method.</p>
- *
- * @deprecated This interface has been replaced by the SAX2
- * {@link org.xml.sax.ContentHandler ContentHandler}
- * interface, which includes Namespace support.
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.Parser#setDocumentHandler
- * @see org.xml.sax.Locator
- * @see org.xml.sax.HandlerBase
- */
-public interface DocumentHandler {
-
-
- /**
- * Receive an object for locating the origin of SAX document events.
- *
- * <p>SAX parsers are strongly encouraged (though not absolutely
- * required) to supply a locator: if it does so, it must supply
- * the locator to the application by invoking this method before
- * invoking any of the other methods in the DocumentHandler
- * interface.</p>
- *
- * <p>The locator allows the application to determine the end
- * position of any document-related event, even if the parser is
- * not reporting an error. Typically, the application will
- * use this information for reporting its own errors (such as
- * character content that does not match an application's
- * business rules). The information returned by the locator
- * is probably not sufficient for use with a search engine.</p>
- *
- * <p>Note that the locator will return correct information only
- * during the invocation of the events in this interface. The
- * application should not attempt to use it at any other time.</p>
- *
- * @param locator An object that can return the location of
- * any SAX document event.
- * @see org.xml.sax.Locator
- */
- public abstract void setDocumentLocator (Locator locator);
-
-
- /**
- * Receive notification of the beginning of a document.
- *
- * <p>The SAX parser will invoke this method only once, before any
- * other methods in this interface or in DTDHandler (except for
- * setDocumentLocator).</p>
- *
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- */
- public abstract void startDocument ()
- throws SAXException;
-
-
- /**
- * Receive notification of the end of a document.
- *
- * <p>The SAX parser will invoke this method only once, and it will
- * be the last method invoked during the parse. The parser shall
- * not invoke this method until it has either abandoned parsing
- * (because of an unrecoverable error) or reached the end of
- * input.</p>
- *
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- */
- public abstract void endDocument ()
- throws SAXException;
-
-
- /**
- * Receive notification of the beginning of an element.
- *
- * <p>The Parser will invoke this method at the beginning of every
- * element in the XML document; there will be a corresponding
- * endElement() event for every startElement() event (even when the
- * element is empty). All of the element's content will be
- * reported, in order, before the corresponding endElement()
- * event.</p>
- *
- * <p>If the element name has a namespace prefix, the prefix will
- * still be attached. Note that the attribute list provided will
- * contain only attributes with explicit values (specified or
- * defaulted): #IMPLIED attributes will be omitted.</p>
- *
- * @param name The element type name.
- * @param atts The attributes attached to the element, if any.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see #endElement
- * @see org.xml.sax.AttributeList
- */
- public abstract void startElement (String name, AttributeList atts)
- throws SAXException;
-
-
- /**
- * Receive notification of the end of an element.
- *
- * <p>The SAX parser will invoke this method at the end of every
- * element in the XML document; there will be a corresponding
- * startElement() event for every endElement() event (even when the
- * element is empty).</p>
- *
- * <p>If the element name has a namespace prefix, the prefix will
- * still be attached to the name.</p>
- *
- * @param name The element type name
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- */
- public abstract void endElement (String name)
- throws SAXException;
-
-
- /**
- * Receive notification of character data.
- *
- * <p>The Parser will call this method to report each chunk of
- * character data. SAX parsers may return all contiguous character
- * data in a single chunk, or they may split it into several
- * chunks; however, all of the characters in any single event
- * must come from the same external entity, so that the Locator
- * provides useful information.</p>
- *
- * <p>The application must not attempt to read from the array
- * outside of the specified range.</p>
- *
- * <p>Note that some parsers will report whitespace using the
- * ignorableWhitespace() method rather than this one (validating
- * parsers must do so).</p>
- *
- * @param ch The characters from the XML document.
- * @param start The start position in the array.
- * @param length The number of characters to read from the array.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see #ignorableWhitespace
- * @see org.xml.sax.Locator
- */
- public abstract void characters (char ch[], int start, int length)
- throws SAXException;
-
-
- /**
- * Receive notification of ignorable whitespace in element content.
- *
- * <p>Validating Parsers must use this method to report each chunk
- * of ignorable whitespace (see the W3C XML 1.0 recommendation,
- * section 2.10): non-validating parsers may also use this method
- * if they are capable of parsing and using content models.</p>
- *
- * <p>SAX parsers may return all contiguous whitespace in a single
- * chunk, or they may split it into several chunks; however, all of
- * the characters in any single event must come from the same
- * external entity, so that the Locator provides useful
- * information.</p>
- *
- * <p>The application must not attempt to read from the array
- * outside of the specified range.</p>
- *
- * @param ch The characters from the XML document.
- * @param start The start position in the array.
- * @param length The number of characters to read from the array.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see #characters
- */
- public abstract void ignorableWhitespace (char ch[], int start, int length)
- throws SAXException;
-
-
- /**
- * Receive notification of a processing instruction.
- *
- * <p>The Parser will invoke this method once for each processing
- * instruction found: note that processing instructions may occur
- * before or after the main document element.</p>
- *
- * <p>A SAX parser should never report an XML declaration (XML 1.0,
- * section 2.8) or a text declaration (XML 1.0, section 4.3.1)
- * using this method.</p>
- *
- * @param target The processing instruction target.
- * @param data The processing instruction data, or null if
- * none was supplied.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- */
- public abstract void processingInstruction (String target, String data)
- throws SAXException;
-
-}
-
-// end of DocumentHandler.java
+// SAX document handler.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: DocumentHandler.java,v 1.3.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+/**
+ * Receive notification of general document events.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This was the main event-handling interface for SAX1; in
+ * SAX2, it has been replaced by {@link org.xml.sax.ContentHandler
+ * ContentHandler}, which provides Namespace support and reporting
+ * of skipped entities. This interface is included in SAX2 only
+ * to support legacy SAX1 applications.</p>
+ *
+ * <p>The order of events in this interface is very important, and
+ * mirrors the order of information in the document itself. For
+ * example, all of an element's content (character data, processing
+ * instructions, and/or subelements) will appear, in order, between
+ * the startElement event and the corresponding endElement event.</p>
+ *
+ * <p>Application writers who do not want to implement the entire
+ * interface can derive a class from HandlerBase, which implements
+ * the default functionality; parser writers can instantiate
+ * HandlerBase to obtain a default handler. The application can find
+ * the location of any document event using the Locator interface
+ * supplied by the Parser through the setDocumentLocator method.</p>
+ *
+ * @deprecated This interface has been replaced by the SAX2
+ * {@link org.xml.sax.ContentHandler ContentHandler}
+ * interface, which includes Namespace support.
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.Parser#setDocumentHandler
+ * @see org.xml.sax.Locator
+ * @see org.xml.sax.HandlerBase
+ */
+public interface DocumentHandler {
+
+
+ /**
+ * Receive an object for locating the origin of SAX document events.
+ *
+ * <p>SAX parsers are strongly encouraged (though not absolutely
+ * required) to supply a locator: if it does so, it must supply
+ * the locator to the application by invoking this method before
+ * invoking any of the other methods in the DocumentHandler
+ * interface.</p>
+ *
+ * <p>The locator allows the application to determine the end
+ * position of any document-related event, even if the parser is
+ * not reporting an error. Typically, the application will
+ * use this information for reporting its own errors (such as
+ * character content that does not match an application's
+ * business rules). The information returned by the locator
+ * is probably not sufficient for use with a search engine.</p>
+ *
+ * <p>Note that the locator will return correct information only
+ * during the invocation of the events in this interface. The
+ * application should not attempt to use it at any other time.</p>
+ *
+ * @param locator An object that can return the location of
+ * any SAX document event.
+ * @see org.xml.sax.Locator
+ */
+ public abstract void setDocumentLocator (Locator locator);
+
+
+ /**
+ * Receive notification of the beginning of a document.
+ *
+ * <p>The SAX parser will invoke this method only once, before any
+ * other methods in this interface or in DTDHandler (except for
+ * setDocumentLocator).</p>
+ *
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ */
+ public abstract void startDocument ()
+ throws SAXException;
+
+
+ /**
+ * Receive notification of the end of a document.
+ *
+ * <p>The SAX parser will invoke this method only once, and it will
+ * be the last method invoked during the parse. The parser shall
+ * not invoke this method until it has either abandoned parsing
+ * (because of an unrecoverable error) or reached the end of
+ * input.</p>
+ *
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ */
+ public abstract void endDocument ()
+ throws SAXException;
+
+
+ /**
+ * Receive notification of the beginning of an element.
+ *
+ * <p>The Parser will invoke this method at the beginning of every
+ * element in the XML document; there will be a corresponding
+ * endElement() event for every startElement() event (even when the
+ * element is empty). All of the element's content will be
+ * reported, in order, before the corresponding endElement()
+ * event.</p>
+ *
+ * <p>If the element name has a namespace prefix, the prefix will
+ * still be attached. Note that the attribute list provided will
+ * contain only attributes with explicit values (specified or
+ * defaulted): #IMPLIED attributes will be omitted.</p>
+ *
+ * @param name The element type name.
+ * @param atts The attributes attached to the element, if any.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see #endElement
+ * @see org.xml.sax.AttributeList
+ */
+ public abstract void startElement (String name, AttributeList atts)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of the end of an element.
+ *
+ * <p>The SAX parser will invoke this method at the end of every
+ * element in the XML document; there will be a corresponding
+ * startElement() event for every endElement() event (even when the
+ * element is empty).</p>
+ *
+ * <p>If the element name has a namespace prefix, the prefix will
+ * still be attached to the name.</p>
+ *
+ * @param name The element type name
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ */
+ public abstract void endElement (String name)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of character data.
+ *
+ * <p>The Parser will call this method to report each chunk of
+ * character data. SAX parsers may return all contiguous character
+ * data in a single chunk, or they may split it into several
+ * chunks; however, all of the characters in any single event
+ * must come from the same external entity, so that the Locator
+ * provides useful information.</p>
+ *
+ * <p>The application must not attempt to read from the array
+ * outside of the specified range.</p>
+ *
+ * <p>Note that some parsers will report whitespace using the
+ * ignorableWhitespace() method rather than this one (validating
+ * parsers must do so).</p>
+ *
+ * @param ch The characters from the XML document.
+ * @param start The start position in the array.
+ * @param length The number of characters to read from the array.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see #ignorableWhitespace
+ * @see org.xml.sax.Locator
+ */
+ public abstract void characters (char ch[], int start, int length)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of ignorable whitespace in element content.
+ *
+ * <p>Validating Parsers must use this method to report each chunk
+ * of ignorable whitespace (see the W3C XML 1.0 recommendation,
+ * section 2.10): non-validating parsers may also use this method
+ * if they are capable of parsing and using content models.</p>
+ *
+ * <p>SAX parsers may return all contiguous whitespace in a single
+ * chunk, or they may split it into several chunks; however, all of
+ * the characters in any single event must come from the same
+ * external entity, so that the Locator provides useful
+ * information.</p>
+ *
+ * <p>The application must not attempt to read from the array
+ * outside of the specified range.</p>
+ *
+ * @param ch The characters from the XML document.
+ * @param start The start position in the array.
+ * @param length The number of characters to read from the array.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see #characters
+ */
+ public abstract void ignorableWhitespace (char ch[], int start, int length)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of a processing instruction.
+ *
+ * <p>The Parser will invoke this method once for each processing
+ * instruction found: note that processing instructions may occur
+ * before or after the main document element.</p>
+ *
+ * <p>A SAX parser should never report an XML declaration (XML 1.0,
+ * section 2.8) or a text declaration (XML 1.0, section 4.3.1)
+ * using this method.</p>
+ *
+ * @param target The processing instruction target.
+ * @param data The processing instruction data, or null if
+ * none was supplied.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ */
+ public abstract void processingInstruction (String target, String data)
+ throws SAXException;
+
+}
+
+// end of DocumentHandler.java
diff --git a/libjava/org/xml/sax/EntityResolver.java b/libjava/org/xml/sax/EntityResolver.java
index 3270471453a..acc365aad63 100644
--- a/libjava/org/xml/sax/EntityResolver.java
+++ b/libjava/org/xml/sax/EntityResolver.java
@@ -1,110 +1,119 @@
-// SAX entity resolver.
-// No warranty; no copyright -- use this as you will.
-// $Id: EntityResolver.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-import java.io.IOException;
-
-
-/**
- * Basic interface for resolving entities.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>If a SAX application needs to implement customized handling
- * for external entities, it must implement this interface and
- * register an instance with the SAX driver using the
- * {@link org.xml.sax.XMLReader#setEntityResolver setEntityResolver}
- * method.</p>
- *
- * <p>The XML reader will then allow the application to intercept any
- * external entities (including the external DTD subset and external
- * parameter entities, if any) before including them.</p>
- *
- * <p>Many SAX applications will not need to implement this interface,
- * but it will be especially useful for applications that build
- * XML documents from databases or other specialised input sources,
- * or for applications that use URI types other than URLs.</p>
- *
- * <p>The following resolver would provide the application
- * with a special character stream for the entity with the system
- * identifier "http://www.myhost.com/today":</p>
- *
- * <pre>
- * import org.xml.sax.EntityResolver;
- * import org.xml.sax.InputSource;
- *
- * public class MyResolver implements EntityResolver {
- * public InputSource resolveEntity (String publicId, String systemId)
- * {
- * if (systemId.equals("http://www.myhost.com/today")) {
- * // return a special input source
- * MyReader reader = new MyReader();
- * return new InputSource(reader);
- * } else {
- * // use the default behaviour
- * return null;
- * }
- * }
- * }
- * </pre>
- *
- * <p>The application can also use this interface to redirect system
- * identifiers to local URIs or to look up replacements in a catalog
- * (possibly by using the public identifier).</p>
- *
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.Parser#setEntityResolver
- * @see org.xml.sax.InputSource
- */
-public interface EntityResolver {
-
-
- /**
- * Allow the application to resolve external entities.
- *
- * <p>The Parser will call this method before opening any external
- * entity except the top-level document entity (including the
- * external DTD subset, external entities referenced within the
- * DTD, and external entities referenced within the document
- * element): the application may request that the parser resolve
- * the entity itself, that it use an alternative URI, or that it
- * use an entirely different input source.</p>
- *
- * <p>Application writers can use this method to redirect external
- * system identifiers to secure and/or local URIs, to look up
- * public identifiers in a catalogue, or to read an entity from a
- * database or other input source (including, for example, a dialog
- * box).</p>
- *
- * <p>If the system identifier is a URL, the SAX parser must
- * resolve it fully before reporting it to the application.</p>
- *
- * @param publicId The public identifier of the external entity
- * being referenced, or null if none was supplied.
- * @param systemId The system identifier of the external entity
- * being referenced.
- * @return An InputSource object describing the new input source,
- * or null to request that the parser open a regular
- * URI connection to the system identifier.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @exception java.io.IOException A Java-specific IO exception,
- * possibly the result of creating a new InputStream
- * or Reader for the InputSource.
- * @see org.xml.sax.InputSource
- */
- public abstract InputSource resolveEntity (String publicId,
- String systemId)
- throws SAXException, IOException;
-
-}
-
-// end of EntityResolver.java
+// SAX entity resolver.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: EntityResolver.java,v 1.7.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+import java.io.IOException;
+
+
+/**
+ * Basic interface for resolving entities.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>If a SAX application needs to implement customized handling
+ * for external entities, it must implement this interface and
+ * register an instance with the SAX driver using the
+ * {@link org.xml.sax.XMLReader#setEntityResolver setEntityResolver}
+ * method.</p>
+ *
+ * <p>The XML reader will then allow the application to intercept any
+ * external entities (including the external DTD subset and external
+ * parameter entities, if any) before including them.</p>
+ *
+ * <p>Many SAX applications will not need to implement this interface,
+ * but it will be especially useful for applications that build
+ * XML documents from databases or other specialised input sources,
+ * or for applications that use URI types other than URLs.</p>
+ *
+ * <p>The following resolver would provide the application
+ * with a special character stream for the entity with the system
+ * identifier "http://www.myhost.com/today":</p>
+ *
+ * <pre>
+ * import org.xml.sax.EntityResolver;
+ * import org.xml.sax.InputSource;
+ *
+ * public class MyResolver implements EntityResolver {
+ * public InputSource resolveEntity (String publicId, String systemId)
+ * {
+ * if (systemId.equals("http://www.myhost.com/today")) {
+ * // return a special input source
+ * MyReader reader = new MyReader();
+ * return new InputSource(reader);
+ * } else {
+ * // use the default behaviour
+ * return null;
+ * }
+ * }
+ * }
+ * </pre>
+ *
+ * <p>The application can also use this interface to redirect system
+ * identifiers to local URIs or to look up replacements in a catalog
+ * (possibly by using the public identifier).</p>
+ *
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.XMLReader#setEntityResolver
+ * @see org.xml.sax.InputSource
+ */
+public interface EntityResolver {
+
+
+ /**
+ * Allow the application to resolve external entities.
+ *
+ * <p>The parser will call this method before opening any external
+ * entity except the top-level document entity. Such entities include
+ * the external DTD subset and external parameter entities referenced
+ * within the DTD (in either case, only if the parser reads external
+ * parameter entities), and external general entities referenced
+ * within the document element (if the parser reads external general
+ * entities). The application may request that the parser locate
+ * the entity itself, that it use an alternative URI, or that it
+ * use data provided by the application (as a character or byte
+ * input stream).</p>
+ *
+ * <p>Application writers can use this method to redirect external
+ * system identifiers to secure and/or local URIs, to look up
+ * public identifiers in a catalogue, or to read an entity from a
+ * database or other input source (including, for example, a dialog
+ * box). Neither XML nor SAX specifies a preferred policy for using
+ * public or system IDs to resolve resources. However, SAX specifies
+ * how to interpret any InputSource returned by this method, and that
+ * if none is returned, then the system ID will be dereferenced as
+ * a URL. </p>
+ *
+ * <p>If the system identifier is a URL, the SAX parser must
+ * resolve it fully before reporting it to the application.</p>
+ *
+ * @param publicId The public identifier of the external entity
+ * being referenced, or null if none was supplied.
+ * @param systemId The system identifier of the external entity
+ * being referenced.
+ * @return An InputSource object describing the new input source,
+ * or null to request that the parser open a regular
+ * URI connection to the system identifier.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @exception java.io.IOException A Java-specific IO exception,
+ * possibly the result of creating a new InputStream
+ * or Reader for the InputSource.
+ * @see org.xml.sax.InputSource
+ */
+ public abstract InputSource resolveEntity (String publicId,
+ String systemId)
+ throws SAXException, IOException;
+
+}
+
+// end of EntityResolver.java
diff --git a/libjava/org/xml/sax/ErrorHandler.java b/libjava/org/xml/sax/ErrorHandler.java
index 8b3e090cd6d..e82302093ad 100644
--- a/libjava/org/xml/sax/ErrorHandler.java
+++ b/libjava/org/xml/sax/ErrorHandler.java
@@ -1,123 +1,125 @@
-// SAX error handler.
-// No warranty; no copyright -- use this as you will.
-// $Id: ErrorHandler.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-
-/**
- * Basic interface for SAX error handlers.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>If a SAX application needs to implement customized error
- * handling, it must implement this interface and then register an
- * instance with the XML reader using the
- * {@link org.xml.sax.XMLReader#setErrorHandler setErrorHandler}
- * method. The parser will then report all errors and warnings
- * through this interface.</p>
- *
- * <p><strong>WARNING:</strong> If an application does <em>not</em>
- * register an ErrorHandler, XML parsing errors will go unreported
- * and bizarre behaviour may result.</p>
- *
- * <p>For XML processing errors, a SAX driver must use this interface
- * instead of throwing an exception: it is up to the application
- * to decide whether to throw an exception for different types of
- * errors and warnings. Note, however, that there is no requirement that
- * the parser continue to provide useful information after a call to
- * {@link #fatalError fatalError} (in other words, a SAX driver class
- * could catch an exception and report a fatalError).</p>
- *
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.Parser#setErrorHandler
- * @see org.xml.sax.SAXParseException
- */
-public interface ErrorHandler {
-
-
- /**
- * Receive notification of a warning.
- *
- * <p>SAX parsers will use this method to report conditions that
- * are not errors or fatal errors as defined by the XML 1.0
- * recommendation. The default behaviour is to take no action.</p>
- *
- * <p>The SAX parser must continue to provide normal parsing events
- * after invoking this method: it should still be possible for the
- * application to process the document through to the end.</p>
- *
- * <p>Filters may use this method to report other, non-XML warnings
- * as well.</p>
- *
- * @param exception The warning information encapsulated in a
- * SAX parse exception.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.SAXParseException
- */
- public abstract void warning (SAXParseException exception)
- throws SAXException;
-
-
- /**
- * Receive notification of a recoverable error.
- *
- * <p>This corresponds to the definition of "error" in section 1.2
- * of the W3C XML 1.0 Recommendation. For example, a validating
- * parser would use this callback to report the violation of a
- * validity constraint. The default behaviour is to take no
- * action.</p>
- *
- * <p>The SAX parser must continue to provide normal parsing events
- * after invoking this method: it should still be possible for the
- * application to process the document through to the end. If the
- * application cannot do so, then the parser should report a fatal
- * error even if the XML 1.0 recommendation does not require it to
- * do so.</p>
- *
- * <p>Filters may use this method to report other, non-XML errors
- * as well.</p>
- *
- * @param exception The error information encapsulated in a
- * SAX parse exception.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.SAXParseException
- */
- public abstract void error (SAXParseException exception)
- throws SAXException;
-
-
- /**
- * Receive notification of a non-recoverable error.
- *
- * <p>This corresponds to the definition of "fatal error" in
- * section 1.2 of the W3C XML 1.0 Recommendation. For example, a
- * parser would use this callback to report the violation of a
- * well-formedness constraint.</p>
- *
- * <p>The application must assume that the document is unusable
- * after the parser has invoked this method, and should continue
- * (if at all) only for the sake of collecting addition error
- * messages: in fact, SAX parsers are free to stop reporting any
- * other events once this method has been invoked.</p>
- *
- * @param exception The error information encapsulated in a
- * SAX parse exception.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.SAXParseException
- */
- public abstract void fatalError (SAXParseException exception)
- throws SAXException;
-
-}
-
-// end of ErrorHandler.java
+// SAX error handler.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: ErrorHandler.java,v 1.4.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+
+/**
+ * Basic interface for SAX error handlers.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>If a SAX application needs to implement customized error
+ * handling, it must implement this interface and then register an
+ * instance with the XML reader using the
+ * {@link org.xml.sax.XMLReader#setErrorHandler setErrorHandler}
+ * method. The parser will then report all errors and warnings
+ * through this interface.</p>
+ *
+ * <p><strong>WARNING:</strong> If an application does <em>not</em>
+ * register an ErrorHandler, XML parsing errors will go unreported
+ * and bizarre behaviour may result.</p>
+ *
+ * <p>For XML processing errors, a SAX driver must use this interface
+ * instead of throwing an exception: it is up to the application
+ * to decide whether to throw an exception for different types of
+ * errors and warnings. Note, however, that there is no requirement that
+ * the parser continue to provide useful information after a call to
+ * {@link #fatalError fatalError} (in other words, a SAX driver class
+ * could catch an exception and report a fatalError).</p>
+ *
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.XMLReader#setErrorHandler
+ * @see org.xml.sax.SAXParseException
+ */
+public interface ErrorHandler {
+
+
+ /**
+ * Receive notification of a warning.
+ *
+ * <p>SAX parsers will use this method to report conditions that
+ * are not errors or fatal errors as defined by the XML 1.0
+ * recommendation. The default behaviour is to take no action.</p>
+ *
+ * <p>The SAX parser must continue to provide normal parsing events
+ * after invoking this method: it should still be possible for the
+ * application to process the document through to the end.</p>
+ *
+ * <p>Filters may use this method to report other, non-XML warnings
+ * as well.</p>
+ *
+ * @param exception The warning information encapsulated in a
+ * SAX parse exception.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.SAXParseException
+ */
+ public abstract void warning (SAXParseException exception)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of a recoverable error.
+ *
+ * <p>This corresponds to the definition of "error" in section 1.2
+ * of the W3C XML 1.0 Recommendation. For example, a validating
+ * parser would use this callback to report the violation of a
+ * validity constraint. The default behaviour is to take no
+ * action.</p>
+ *
+ * <p>The SAX parser must continue to provide normal parsing events
+ * after invoking this method: it should still be possible for the
+ * application to process the document through to the end. If the
+ * application cannot do so, then the parser should report a fatal
+ * error even if the XML 1.0 recommendation does not require it to
+ * do so.</p>
+ *
+ * <p>Filters may use this method to report other, non-XML errors
+ * as well.</p>
+ *
+ * @param exception The error information encapsulated in a
+ * SAX parse exception.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.SAXParseException
+ */
+ public abstract void error (SAXParseException exception)
+ throws SAXException;
+
+
+ /**
+ * Receive notification of a non-recoverable error.
+ *
+ * <p>This corresponds to the definition of "fatal error" in
+ * section 1.2 of the W3C XML 1.0 Recommendation. For example, a
+ * parser would use this callback to report the violation of a
+ * well-formedness constraint.</p>
+ *
+ * <p>The application must assume that the document is unusable
+ * after the parser has invoked this method, and should continue
+ * (if at all) only for the sake of collecting addition error
+ * messages: in fact, SAX parsers are free to stop reporting any
+ * other events once this method has been invoked.</p>
+ *
+ * @param exception The error information encapsulated in a
+ * SAX parse exception.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.SAXParseException
+ */
+ public abstract void fatalError (SAXParseException exception)
+ throws SAXException;
+
+}
+
+// end of ErrorHandler.java
diff --git a/libjava/org/xml/sax/HandlerBase.java b/libjava/org/xml/sax/HandlerBase.java
index 34a8f7675d9..42c3a07e0e8 100644
--- a/libjava/org/xml/sax/HandlerBase.java
+++ b/libjava/org/xml/sax/HandlerBase.java
@@ -1,368 +1,370 @@
-// SAX default handler base class.
-// No warranty; no copyright -- use this as you will.
-// $Id: HandlerBase.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-/**
- * Default base class for handlers.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class implements the default behaviour for four SAX1
- * interfaces: EntityResolver, DTDHandler, DocumentHandler,
- * and ErrorHandler. It is now obsolete, but is included in SAX2 to
- * support legacy SAX1 applications. SAX2 applications should use
- * the {@link org.xml.sax.helpers.DefaultHandler DefaultHandler}
- * class instead.</p>
- *
- * <p>Application writers can extend this class when they need to
- * implement only part of an interface; parser writers can
- * instantiate this class to provide default handlers when the
- * application has not supplied its own.</p>
- *
- * <p>Note that the use of this class is optional.</p>
- *
- * @deprecated This class works with the deprecated
- * {@link org.xml.sax.DocumentHandler DocumentHandler}
- * interface. It has been replaced by the SAX2
- * {@link org.xml.sax.helpers.DefaultHandler DefaultHandler}
- * class.
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.EntityResolver
- * @see org.xml.sax.DTDHandler
- * @see org.xml.sax.DocumentHandler
- * @see org.xml.sax.ErrorHandler
- */
-public class HandlerBase
- implements EntityResolver, DTDHandler, DocumentHandler, ErrorHandler
-{
-
-
- ////////////////////////////////////////////////////////////////////
- // Default implementation of the EntityResolver interface.
- ////////////////////////////////////////////////////////////////////
-
- /**
- * Resolve an external entity.
- *
- * <p>Always return null, so that the parser will use the system
- * identifier provided in the XML document. This method implements
- * the SAX default behaviour: application writers can override it
- * in a subclass to do special translations such as catalog lookups
- * or URI redirection.</p>
- *
- * @param publicId The public identifier, or null if none is
- * available.
- * @param systemId The system identifier provided in the XML
- * document.
- * @return The new input source, or null to require the
- * default behaviour.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.EntityResolver#resolveEntity
- */
- public InputSource resolveEntity (String publicId, String systemId)
- throws SAXException
- {
- return null;
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Default implementation of DTDHandler interface.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Receive notification of a notation declaration.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass if they wish to keep track of the notations
- * declared in a document.</p>
- *
- * @param name The notation name.
- * @param publicId The notation public identifier, or null if not
- * available.
- * @param systemId The notation system identifier.
- * @see org.xml.sax.DTDHandler#notationDecl
- */
- public void notationDecl (String name, String publicId, String systemId)
- {
- // no op
- }
-
-
- /**
- * Receive notification of an unparsed entity declaration.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to keep track of the unparsed entities
- * declared in a document.</p>
- *
- * @param name The entity name.
- * @param publicId The entity public identifier, or null if not
- * available.
- * @param systemId The entity system identifier.
- * @param notationName The name of the associated notation.
- * @see org.xml.sax.DTDHandler#unparsedEntityDecl
- */
- public void unparsedEntityDecl (String name, String publicId,
- String systemId, String notationName)
- {
- // no op
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Default implementation of DocumentHandler interface.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Receive a Locator object for document events.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass if they wish to store the locator for use
- * with other document events.</p>
- *
- * @param locator A locator for all SAX document events.
- * @see org.xml.sax.DocumentHandler#setDocumentLocator
- * @see org.xml.sax.Locator
- */
- public void setDocumentLocator (Locator locator)
- {
- // no op
- }
-
-
- /**
- * Receive notification of the beginning of the document.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions at the beginning
- * of a document (such as allocating the root node of a tree or
- * creating an output file).</p>
- *
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.DocumentHandler#startDocument
- */
- public void startDocument ()
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of the end of the document.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions at the beginning
- * of a document (such as finalising a tree or closing an output
- * file).</p>
- *
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.DocumentHandler#endDocument
- */
- public void endDocument ()
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of the start of an element.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions at the start of
- * each element (such as allocating a new tree node or writing
- * output to a file).</p>
- *
- * @param name The element type name.
- * @param attributes The specified or defaulted attributes.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.DocumentHandler#startElement
- */
- public void startElement (String name, AttributeList attributes)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of the end of an element.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions at the end of
- * each element (such as finalising a tree node or writing
- * output to a file).</p>
- *
- * @param name The element type name.
- * @param attributes The specified or defaulted attributes.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.DocumentHandler#endElement
- */
- public void endElement (String name)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of character data inside an element.
- *
- * <p>By default, do nothing. Application writers may override this
- * method to take specific actions for each chunk of character data
- * (such as adding the data to a node or buffer, or printing it to
- * a file).</p>
- *
- * @param ch The characters.
- * @param start The start position in the character array.
- * @param length The number of characters to use from the
- * character array.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.DocumentHandler#characters
- */
- public void characters (char ch[], int start, int length)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of ignorable whitespace in element content.
- *
- * <p>By default, do nothing. Application writers may override this
- * method to take specific actions for each chunk of ignorable
- * whitespace (such as adding data to a node or buffer, or printing
- * it to a file).</p>
- *
- * @param ch The whitespace characters.
- * @param start The start position in the character array.
- * @param length The number of characters to use from the
- * character array.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.DocumentHandler#ignorableWhitespace
- */
- public void ignorableWhitespace (char ch[], int start, int length)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of a processing instruction.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions for each
- * processing instruction, such as setting status variables or
- * invoking other methods.</p>
- *
- * @param target The processing instruction target.
- * @param data The processing instruction data, or null if
- * none is supplied.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.DocumentHandler#processingInstruction
- */
- public void processingInstruction (String target, String data)
- throws SAXException
- {
- // no op
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Default implementation of the ErrorHandler interface.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Receive notification of a parser warning.
- *
- * <p>The default implementation does nothing. Application writers
- * may override this method in a subclass to take specific actions
- * for each warning, such as inserting the message in a log file or
- * printing it to the console.</p>
- *
- * @param e The warning information encoded as an exception.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ErrorHandler#warning
- * @see org.xml.sax.SAXParseException
- */
- public void warning (SAXParseException e)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of a recoverable parser error.
- *
- * <p>The default implementation does nothing. Application writers
- * may override this method in a subclass to take specific actions
- * for each error, such as inserting the message in a log file or
- * printing it to the console.</p>
- *
- * @param e The warning information encoded as an exception.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ErrorHandler#warning
- * @see org.xml.sax.SAXParseException
- */
- public void error (SAXParseException e)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Report a fatal XML parsing error.
- *
- * <p>The default implementation throws a SAXParseException.
- * Application writers may override this method in a subclass if
- * they need to take specific actions for each fatal error (such as
- * collecting all of the errors into a single report): in any case,
- * the application must stop all regular processing when this
- * method is invoked, since the document is no longer reliable, and
- * the parser may no longer report parsing events.</p>
- *
- * @param e The error information encoded as an exception.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ErrorHandler#fatalError
- * @see org.xml.sax.SAXParseException
- */
- public void fatalError (SAXParseException e)
- throws SAXException
- {
- throw e;
- }
-
-}
-
-// end of HandlerBase.java
+// SAX default handler base class.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: HandlerBase.java,v 1.3.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+/**
+ * Default base class for handlers.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class implements the default behaviour for four SAX1
+ * interfaces: EntityResolver, DTDHandler, DocumentHandler,
+ * and ErrorHandler. It is now obsolete, but is included in SAX2 to
+ * support legacy SAX1 applications. SAX2 applications should use
+ * the {@link org.xml.sax.helpers.DefaultHandler DefaultHandler}
+ * class instead.</p>
+ *
+ * <p>Application writers can extend this class when they need to
+ * implement only part of an interface; parser writers can
+ * instantiate this class to provide default handlers when the
+ * application has not supplied its own.</p>
+ *
+ * <p>Note that the use of this class is optional.</p>
+ *
+ * @deprecated This class works with the deprecated
+ * {@link org.xml.sax.DocumentHandler DocumentHandler}
+ * interface. It has been replaced by the SAX2
+ * {@link org.xml.sax.helpers.DefaultHandler DefaultHandler}
+ * class.
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.EntityResolver
+ * @see org.xml.sax.DTDHandler
+ * @see org.xml.sax.DocumentHandler
+ * @see org.xml.sax.ErrorHandler
+ */
+public class HandlerBase
+ implements EntityResolver, DTDHandler, DocumentHandler, ErrorHandler
+{
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Default implementation of the EntityResolver interface.
+ ////////////////////////////////////////////////////////////////////
+
+ /**
+ * Resolve an external entity.
+ *
+ * <p>Always return null, so that the parser will use the system
+ * identifier provided in the XML document. This method implements
+ * the SAX default behaviour: application writers can override it
+ * in a subclass to do special translations such as catalog lookups
+ * or URI redirection.</p>
+ *
+ * @param publicId The public identifer, or null if none is
+ * available.
+ * @param systemId The system identifier provided in the XML
+ * document.
+ * @return The new input source, or null to require the
+ * default behaviour.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.EntityResolver#resolveEntity
+ */
+ public InputSource resolveEntity (String publicId, String systemId)
+ throws SAXException
+ {
+ return null;
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Default implementation of DTDHandler interface.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Receive notification of a notation declaration.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass if they wish to keep track of the notations
+ * declared in a document.</p>
+ *
+ * @param name The notation name.
+ * @param publicId The notation public identifier, or null if not
+ * available.
+ * @param systemId The notation system identifier.
+ * @see org.xml.sax.DTDHandler#notationDecl
+ */
+ public void notationDecl (String name, String publicId, String systemId)
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of an unparsed entity declaration.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to keep track of the unparsed entities
+ * declared in a document.</p>
+ *
+ * @param name The entity name.
+ * @param publicId The entity public identifier, or null if not
+ * available.
+ * @param systemId The entity system identifier.
+ * @param notationName The name of the associated notation.
+ * @see org.xml.sax.DTDHandler#unparsedEntityDecl
+ */
+ public void unparsedEntityDecl (String name, String publicId,
+ String systemId, String notationName)
+ {
+ // no op
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Default implementation of DocumentHandler interface.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Receive a Locator object for document events.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass if they wish to store the locator for use
+ * with other document events.</p>
+ *
+ * @param locator A locator for all SAX document events.
+ * @see org.xml.sax.DocumentHandler#setDocumentLocator
+ * @see org.xml.sax.Locator
+ */
+ public void setDocumentLocator (Locator locator)
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of the beginning of the document.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions at the beginning
+ * of a document (such as allocating the root node of a tree or
+ * creating an output file).</p>
+ *
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.DocumentHandler#startDocument
+ */
+ public void startDocument ()
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of the end of the document.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions at the beginning
+ * of a document (such as finalising a tree or closing an output
+ * file).</p>
+ *
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.DocumentHandler#endDocument
+ */
+ public void endDocument ()
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of the start of an element.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions at the start of
+ * each element (such as allocating a new tree node or writing
+ * output to a file).</p>
+ *
+ * @param name The element type name.
+ * @param attributes The specified or defaulted attributes.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.DocumentHandler#startElement
+ */
+ public void startElement (String name, AttributeList attributes)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of the end of an element.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions at the end of
+ * each element (such as finalising a tree node or writing
+ * output to a file).</p>
+ *
+ * @param name The element type name.
+ * @param attributes The specified or defaulted attributes.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.DocumentHandler#endElement
+ */
+ public void endElement (String name)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of character data inside an element.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method to take specific actions for each chunk of character data
+ * (such as adding the data to a node or buffer, or printing it to
+ * a file).</p>
+ *
+ * @param ch The characters.
+ * @param start The start position in the character array.
+ * @param length The number of characters to use from the
+ * character array.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.DocumentHandler#characters
+ */
+ public void characters (char ch[], int start, int length)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of ignorable whitespace in element content.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method to take specific actions for each chunk of ignorable
+ * whitespace (such as adding data to a node or buffer, or printing
+ * it to a file).</p>
+ *
+ * @param ch The whitespace characters.
+ * @param start The start position in the character array.
+ * @param length The number of characters to use from the
+ * character array.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.DocumentHandler#ignorableWhitespace
+ */
+ public void ignorableWhitespace (char ch[], int start, int length)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of a processing instruction.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions for each
+ * processing instruction, such as setting status variables or
+ * invoking other methods.</p>
+ *
+ * @param target The processing instruction target.
+ * @param data The processing instruction data, or null if
+ * none is supplied.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.DocumentHandler#processingInstruction
+ */
+ public void processingInstruction (String target, String data)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Default implementation of the ErrorHandler interface.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Receive notification of a parser warning.
+ *
+ * <p>The default implementation does nothing. Application writers
+ * may override this method in a subclass to take specific actions
+ * for each warning, such as inserting the message in a log file or
+ * printing it to the console.</p>
+ *
+ * @param e The warning information encoded as an exception.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ErrorHandler#warning
+ * @see org.xml.sax.SAXParseException
+ */
+ public void warning (SAXParseException e)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of a recoverable parser error.
+ *
+ * <p>The default implementation does nothing. Application writers
+ * may override this method in a subclass to take specific actions
+ * for each error, such as inserting the message in a log file or
+ * printing it to the console.</p>
+ *
+ * @param e The warning information encoded as an exception.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ErrorHandler#warning
+ * @see org.xml.sax.SAXParseException
+ */
+ public void error (SAXParseException e)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Report a fatal XML parsing error.
+ *
+ * <p>The default implementation throws a SAXParseException.
+ * Application writers may override this method in a subclass if
+ * they need to take specific actions for each fatal error (such as
+ * collecting all of the errors into a single report): in any case,
+ * the application must stop all regular processing when this
+ * method is invoked, since the document is no longer reliable, and
+ * the parser may no longer report parsing events.</p>
+ *
+ * @param e The error information encoded as an exception.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ErrorHandler#fatalError
+ * @see org.xml.sax.SAXParseException
+ */
+ public void fatalError (SAXParseException e)
+ throws SAXException
+ {
+ throw e;
+ }
+
+}
+
+// end of HandlerBase.java
diff --git a/libjava/org/xml/sax/InputSource.java b/libjava/org/xml/sax/InputSource.java
index 985ca220387..f6c09071d47 100644
--- a/libjava/org/xml/sax/InputSource.java
+++ b/libjava/org/xml/sax/InputSource.java
@@ -1,321 +1,336 @@
-// SAX input source.
-// No warranty; no copyright -- use this as you will.
-// $Id: InputSource.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-import java.io.Reader;
-import java.io.InputStream;
-
-/**
- * A single input source for an XML entity.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class allows a SAX application to encapsulate information
- * about an input source in a single object, which may include
- * a public identifier, a system identifier, a byte stream (possibly
- * with a specified encoding), and/or a character stream.</p>
- *
- * <p>There are two places that the application will deliver this
- * input source to the parser: as the argument to the Parser.parse
- * method, or as the return value of the EntityResolver.resolveEntity
- * method.</p>
- *
- * <p>The SAX parser will use the InputSource object to determine how
- * to read XML input. If there is a character stream available, the
- * parser will read that stream directly; if not, the parser will use
- * a byte stream, if available; if neither a character stream nor a
- * byte stream is available, the parser will attempt to open a URI
- * connection to the resource identified by the system
- * identifier.</p>
- *
- * <p>An InputSource object belongs to the application: the SAX parser
- * shall never modify it in any way (it may modify a copy if
- * necessary).</p>
- *
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.Parser#parse
- * @see org.xml.sax.EntityResolver#resolveEntity
- * @see java.io.InputStream
- * @see java.io.Reader
- */
-public class InputSource {
-
- /**
- * Zero-argument default constructor.
- *
- * @see #setPublicId
- * @see #setSystemId
- * @see #setByteStream
- * @see #setCharacterStream
- * @see #setEncoding
- */
- public InputSource ()
- {
- }
-
-
- /**
- * Create a new input source with a system identifier.
- *
- * <p>Applications may use setPublicId to include a
- * public identifier as well, or setEncoding to specify
- * the character encoding, if known.</p>
- *
- * <p>If the system identifier is a URL, it must be full resolved.</p>
- *
- * @param systemId The system identifier (URI).
- * @see #setPublicId
- * @see #setSystemId
- * @see #setByteStream
- * @see #setEncoding
- * @see #setCharacterStream
- */
- public InputSource (String systemId)
- {
- setSystemId(systemId);
- }
-
-
- /**
- * Create a new input source with a byte stream.
- *
- * <p>Application writers may use setSystemId to provide a base
- * for resolving relative URIs, setPublicId to include a
- * public identifier, and/or setEncoding to specify the object's
- * character encoding.</p>
- *
- * @param byteStream The raw byte stream containing the document.
- * @see #setPublicId
- * @see #setSystemId
- * @see #setEncoding
- * @see #setByteStream
- * @see #setCharacterStream
- */
- public InputSource (InputStream byteStream)
- {
- setByteStream(byteStream);
- }
-
-
- /**
- * Create a new input source with a character stream.
- *
- * <p>Application writers may use setSystemId() to provide a base
- * for resolving relative URIs, and setPublicId to include a
- * public identifier.</p>
- *
- * <p>The character stream shall not include a byte order mark.</p>
- *
- * @see #setPublicId
- * @see #setSystemId
- * @see #setByteStream
- * @see #setCharacterStream
- */
- public InputSource (Reader characterStream)
- {
- setCharacterStream(characterStream);
- }
-
-
- /**
- * Set the public identifier for this input source.
- *
- * <p>The public identifier is always optional: if the application
- * writer includes one, it will be provided as part of the
- * location information.</p>
- *
- * @param publicId The public identifier as a string.
- * @see #getPublicId
- * @see org.xml.sax.Locator#getPublicId
- * @see org.xml.sax.SAXParseException#getPublicId
- */
- public void setPublicId (String publicId)
- {
- this.publicId = publicId;
- }
-
-
- /**
- * Get the public identifier for this input source.
- *
- * @return The public identifier, or null if none was supplied.
- * @see #setPublicId
- */
- public String getPublicId ()
- {
- return publicId;
- }
-
-
- /**
- * Set the system identifier for this input source.
- *
- * <p>The system identifier is optional if there is a byte stream
- * or a character stream, but it is still useful to provide one,
- * since the application can use it to resolve relative URIs
- * and can include it in error messages and warnings (the parser
- * will attempt to open a connection to the URI only if
- * there is no byte stream or character stream specified).</p>
- *
- * <p>If the application knows the character encoding of the
- * object pointed to by the system identifier, it can register
- * the encoding using the setEncoding method.</p>
- *
- * <p>If the system ID is a URL, it must be fully resolved.</p>
- *
- * @param systemId The system identifier as a string.
- * @see #setEncoding
- * @see #getSystemId
- * @see org.xml.sax.Locator#getSystemId
- * @see org.xml.sax.SAXParseException#getSystemId
- */
- public void setSystemId (String systemId)
- {
- this.systemId = systemId;
- }
-
-
- /**
- * Get the system identifier for this input source.
- *
- * <p>The getEncoding method will return the character encoding
- * of the object pointed to, or null if unknown.</p>
- *
- * <p>If the system ID is a URL, it will be fully resolved.</p>
- *
- * @return The system identifier.
- * @see #setSystemId
- * @see #getEncoding
- */
- public String getSystemId ()
- {
- return systemId;
- }
-
-
- /**
- * Set the byte stream for this input source.
- *
- * <p>The SAX parser will ignore this if there is also a character
- * stream specified, but it will use a byte stream in preference
- * to opening a URI connection itself.</p>
- *
- * <p>If the application knows the character encoding of the
- * byte stream, it should set it with the setEncoding method.</p>
- *
- * @param byteStream A byte stream containing an XML document or
- * other entity.
- * @see #setEncoding
- * @see #getByteStream
- * @see #getEncoding
- * @see java.io.InputStream
- */
- public void setByteStream (InputStream byteStream)
- {
- this.byteStream = byteStream;
- }
-
-
- /**
- * Get the byte stream for this input source.
- *
- * <p>The getEncoding method will return the character
- * encoding for this byte stream, or null if unknown.</p>
- *
- * @return The byte stream, or null if none was supplied.
- * @see #getEncoding
- * @see #setByteStream
- */
- public InputStream getByteStream ()
- {
- return byteStream;
- }
-
-
- /**
- * Set the character encoding, if known.
- *
- * <p>The encoding must be a string acceptable for an
- * XML encoding declaration (see section 4.3.3 of the XML 1.0
- * recommendation).</p>
- *
- * <p>This method has no effect when the application provides a
- * character stream.</p>
- *
- * @param encoding A string describing the character encoding.
- * @see #setSystemId
- * @see #setByteStream
- * @see #getEncoding
- */
- public void setEncoding (String encoding)
- {
- this.encoding = encoding;
- }
-
-
- /**
- * Get the character encoding for a byte stream or URI.
- *
- * @return The encoding, or null if none was supplied.
- * @see #setByteStream
- * @see #getSystemId
- * @see #getByteStream
- */
- public String getEncoding ()
- {
- return encoding;
- }
-
-
- /**
- * Set the character stream for this input source.
- *
- * <p>If there is a character stream specified, the SAX parser
- * will ignore any byte stream and will not attempt to open
- * a URI connection to the system identifier.</p>
- *
- * @param characterStream The character stream containing the
- * XML document or other entity.
- * @see #getCharacterStream
- * @see java.io.Reader
- */
- public void setCharacterStream (Reader characterStream)
- {
- this.characterStream = characterStream;
- }
-
-
- /**
- * Get the character stream for this input source.
- *
- * @return The character stream, or null if none was supplied.
- * @see #setCharacterStream
- */
- public Reader getCharacterStream ()
- {
- return characterStream;
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal state.
- ////////////////////////////////////////////////////////////////////
-
- private String publicId;
- private String systemId;
- private InputStream byteStream;
- private String encoding;
- private Reader characterStream;
-
-}
-
-// end of InputSource.java
+// SAX input source.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: InputSource.java,v 1.5.2.4 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+import java.io.Reader;
+import java.io.InputStream;
+
+/**
+ * A single input source for an XML entity.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class allows a SAX application to encapsulate information
+ * about an input source in a single object, which may include
+ * a public identifier, a system identifier, a byte stream (possibly
+ * with a specified encoding), and/or a character stream.</p>
+ *
+ * <p>There are two places that the application can deliver an
+ * input source to the parser: as the argument to the Parser.parse
+ * method, or as the return value of the EntityResolver.resolveEntity
+ * method.</p>
+ *
+ * <p>The SAX parser will use the InputSource object to determine how
+ * to read XML input. If there is a character stream available, the
+ * parser will read that stream directly, disregarding any text
+ * encoding declaration found in that stream.
+ * If there is no character stream, but there is
+ * a byte stream, the parser will use that byte stream, using the
+ * encoding specified in the InputSource or else (if no encoding is
+ * specified) autodetecting the character encoding using an algorithm
+ * such as the one in the XML specification. If neither a character
+ * stream nor a
+ * byte stream is available, the parser will attempt to open a URI
+ * connection to the resource identified by the system
+ * identifier.</p>
+ *
+ * <p>An InputSource object belongs to the application: the SAX parser
+ * shall never modify it in any way (it may modify a copy if
+ * necessary). However, standard processing of both byte and
+ * character streams is to close them on as part of end-of-parse cleanup,
+ * so applications should not attempt to re-use such streams after they
+ * have been handed to a parser. </p>
+ *
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.XMLReader#parse(org.xml.sax.InputSource)
+ * @see org.xml.sax.EntityResolver#resolveEntity
+ * @see java.io.InputStream
+ * @see java.io.Reader
+ */
+public class InputSource {
+
+ /**
+ * Zero-argument default constructor.
+ *
+ * @see #setPublicId
+ * @see #setSystemId
+ * @see #setByteStream
+ * @see #setCharacterStream
+ * @see #setEncoding
+ */
+ public InputSource ()
+ {
+ }
+
+
+ /**
+ * Create a new input source with a system identifier.
+ *
+ * <p>Applications may use setPublicId to include a
+ * public identifier as well, or setEncoding to specify
+ * the character encoding, if known.</p>
+ *
+ * <p>If the system identifier is a URL, it must be fully
+ * resolved (it may not be a relative URL).</p>
+ *
+ * @param systemId The system identifier (URI).
+ * @see #setPublicId
+ * @see #setSystemId
+ * @see #setByteStream
+ * @see #setEncoding
+ * @see #setCharacterStream
+ */
+ public InputSource (String systemId)
+ {
+ setSystemId(systemId);
+ }
+
+
+ /**
+ * Create a new input source with a byte stream.
+ *
+ * <p>Application writers should use setSystemId() to provide a base
+ * for resolving relative URIs, may use setPublicId to include a
+ * public identifier, and may use setEncoding to specify the object's
+ * character encoding.</p>
+ *
+ * @param byteStream The raw byte stream containing the document.
+ * @see #setPublicId
+ * @see #setSystemId
+ * @see #setEncoding
+ * @see #setByteStream
+ * @see #setCharacterStream
+ */
+ public InputSource (InputStream byteStream)
+ {
+ setByteStream(byteStream);
+ }
+
+
+ /**
+ * Create a new input source with a character stream.
+ *
+ * <p>Application writers should use setSystemId() to provide a base
+ * for resolving relative URIs, and may use setPublicId to include a
+ * public identifier.</p>
+ *
+ * <p>The character stream shall not include a byte order mark.</p>
+ *
+ * @see #setPublicId
+ * @see #setSystemId
+ * @see #setByteStream
+ * @see #setCharacterStream
+ */
+ public InputSource (Reader characterStream)
+ {
+ setCharacterStream(characterStream);
+ }
+
+
+ /**
+ * Set the public identifier for this input source.
+ *
+ * <p>The public identifier is always optional: if the application
+ * writer includes one, it will be provided as part of the
+ * location information.</p>
+ *
+ * @param publicId The public identifier as a string.
+ * @see #getPublicId
+ * @see org.xml.sax.Locator#getPublicId
+ * @see org.xml.sax.SAXParseException#getPublicId
+ */
+ public void setPublicId (String publicId)
+ {
+ this.publicId = publicId;
+ }
+
+
+ /**
+ * Get the public identifier for this input source.
+ *
+ * @return The public identifier, or null if none was supplied.
+ * @see #setPublicId
+ */
+ public String getPublicId ()
+ {
+ return publicId;
+ }
+
+
+ /**
+ * Set the system identifier for this input source.
+ *
+ * <p>The system identifier is optional if there is a byte stream
+ * or a character stream, but it is still useful to provide one,
+ * since the application can use it to resolve relative URIs
+ * and can include it in error messages and warnings (the parser
+ * will attempt to open a connection to the URI only if
+ * there is no byte stream or character stream specified).</p>
+ *
+ * <p>If the application knows the character encoding of the
+ * object pointed to by the system identifier, it can register
+ * the encoding using the setEncoding method.</p>
+ *
+ * <p>If the system identifier is a URL, it must be fully
+ * resolved (it may not be a relative URL).</p>
+ *
+ * @param systemId The system identifier as a string.
+ * @see #setEncoding
+ * @see #getSystemId
+ * @see org.xml.sax.Locator#getSystemId
+ * @see org.xml.sax.SAXParseException#getSystemId
+ */
+ public void setSystemId (String systemId)
+ {
+ this.systemId = systemId;
+ }
+
+
+ /**
+ * Get the system identifier for this input source.
+ *
+ * <p>The getEncoding method will return the character encoding
+ * of the object pointed to, or null if unknown.</p>
+ *
+ * <p>If the system ID is a URL, it will be fully resolved.</p>
+ *
+ * @return The system identifier, or null if none was supplied.
+ * @see #setSystemId
+ * @see #getEncoding
+ */
+ public String getSystemId ()
+ {
+ return systemId;
+ }
+
+
+ /**
+ * Set the byte stream for this input source.
+ *
+ * <p>The SAX parser will ignore this if there is also a character
+ * stream specified, but it will use a byte stream in preference
+ * to opening a URI connection itself.</p>
+ *
+ * <p>If the application knows the character encoding of the
+ * byte stream, it should set it with the setEncoding method.</p>
+ *
+ * @param byteStream A byte stream containing an XML document or
+ * other entity.
+ * @see #setEncoding
+ * @see #getByteStream
+ * @see #getEncoding
+ * @see java.io.InputStream
+ */
+ public void setByteStream (InputStream byteStream)
+ {
+ this.byteStream = byteStream;
+ }
+
+
+ /**
+ * Get the byte stream for this input source.
+ *
+ * <p>The getEncoding method will return the character
+ * encoding for this byte stream, or null if unknown.</p>
+ *
+ * @return The byte stream, or null if none was supplied.
+ * @see #getEncoding
+ * @see #setByteStream
+ */
+ public InputStream getByteStream ()
+ {
+ return byteStream;
+ }
+
+
+ /**
+ * Set the character encoding, if known.
+ *
+ * <p>The encoding must be a string acceptable for an
+ * XML encoding declaration (see section 4.3.3 of the XML 1.0
+ * recommendation).</p>
+ *
+ * <p>This method has no effect when the application provides a
+ * character stream.</p>
+ *
+ * @param encoding A string describing the character encoding.
+ * @see #setSystemId
+ * @see #setByteStream
+ * @see #getEncoding
+ */
+ public void setEncoding (String encoding)
+ {
+ this.encoding = encoding;
+ }
+
+
+ /**
+ * Get the character encoding for a byte stream or URI.
+ * This value will be ignored when the application provides a
+ * character stream.
+ *
+ * @return The encoding, or null if none was supplied.
+ * @see #setByteStream
+ * @see #getSystemId
+ * @see #getByteStream
+ */
+ public String getEncoding ()
+ {
+ return encoding;
+ }
+
+
+ /**
+ * Set the character stream for this input source.
+ *
+ * <p>If there is a character stream specified, the SAX parser
+ * will ignore any byte stream and will not attempt to open
+ * a URI connection to the system identifier.</p>
+ *
+ * @param characterStream The character stream containing the
+ * XML document or other entity.
+ * @see #getCharacterStream
+ * @see java.io.Reader
+ */
+ public void setCharacterStream (Reader characterStream)
+ {
+ this.characterStream = characterStream;
+ }
+
+
+ /**
+ * Get the character stream for this input source.
+ *
+ * @return The character stream, or null if none was supplied.
+ * @see #setCharacterStream
+ */
+ public Reader getCharacterStream ()
+ {
+ return characterStream;
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal state.
+ ////////////////////////////////////////////////////////////////////
+
+ private String publicId;
+ private String systemId;
+ private InputStream byteStream;
+ private String encoding;
+ private Reader characterStream;
+
+}
+
+// end of InputSource.java
diff --git a/libjava/org/xml/sax/Locator.java b/libjava/org/xml/sax/Locator.java
index be55656042e..d94c3ea4abd 100644
--- a/libjava/org/xml/sax/Locator.java
+++ b/libjava/org/xml/sax/Locator.java
@@ -1,126 +1,136 @@
-// SAX locator interface for document events.
-// No warranty; no copyright -- use this as you will.
-// $Id: Locator.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-
-/**
- * Interface for associating a SAX event with a document location.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>If a SAX parser provides location information to the SAX
- * application, it does so by implementing this interface and then
- * passing an instance to the application using the content
- * handler's {@link org.xml.sax.ContentHandler#setDocumentLocator
- * setDocumentLocator} method. The application can use the
- * object to obtain the location of any other content handler event
- * in the XML source document.</p>
- *
- * <p>Note that the results returned by the object will be valid only
- * during the scope of each content handler method: the application
- * will receive unpredictable results if it attempts to use the
- * locator at any other time.</p>
- *
- * <p>SAX parsers are not required to supply a locator, but they are
- * very strongly encouraged to do so. If the parser supplies a
- * locator, it must do so before reporting any other document events.
- * If no locator has been set by the time the application receives
- * the {@link org.xml.sax.ContentHandler#startDocument startDocument}
- * event, the application should assume that a locator is not
- * available.</p>
- *
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.ContentHandler#setDocumentLocator
- */
-public interface Locator {
-
-
- /**
- * Return the public identifier for the current document event.
- *
- * <p>The return value is the public identifier of the document
- * entity or of the external parsed entity in which the markup
- * triggering the event appears.</p>
- *
- * @return A string containing the public identifier, or
- * null if none is available.
- * @see #getSystemId
- */
- public abstract String getPublicId ();
-
-
- /**
- * Return the system identifier for the current document event.
- *
- * <p>The return value is the system identifier of the document
- * entity or of the external parsed entity in which the markup
- * triggering the event appears.</p>
- *
- * <p>If the system identifier is a URL, the parser must resolve it
- * fully before passing it to the application.</p>
- *
- * @return A string containing the system identifier, or null
- * if none is available.
- * @see #getPublicId
- */
- public abstract String getSystemId ();
-
-
- /**
- * Return the line number where the current document event ends.
- *
- * <p><strong>Warning:</strong> The return value from the method
- * is intended only as an approximation for the sake of error
- * reporting; it is not intended to provide sufficient information
- * to edit the character content of the original XML document.</p>
- *
- * <p>The return value is an approximation of the line number
- * in the document entity or external parsed entity where the
- * markup triggering the event appears.</p>
- *
- * <p>If possible, the SAX driver should provide the line position
- * of the first character after the text associated with the document
- * event. The first line in the document is line 1.</p>
- *
- * @return The line number, or -1 if none is available.
- * @see #getColumnNumber
- */
- public abstract int getLineNumber ();
-
-
- /**
- * Return the column number where the current document event ends.
- *
- * <p><strong>Warning:</strong> The return value from the method
- * is intended only as an approximation for the sake of error
- * reporting; it is not intended to provide sufficient information
- * to edit the character content of the original XML document.</p>
- *
- * <p>The return value is an approximation of the column number
- * in the document entity or external parsed entity where the
- * markup triggering the event appears.</p>
- *
- * <p>If possible, the SAX driver should provide the line position
- * of the first character after the text associated with the document
- * event.</p>
- *
- * <p>If possible, the SAX driver should provide the line position
- * of the first character after the text associated with the document
- * event. The first column in each line is column 1.</p>
- *
- * @return The column number, or -1 if none is available.
- * @see #getLineNumber
- */
- public abstract int getColumnNumber ();
-
-}
-
-// end of Locator.java
+// SAX locator interface for document events.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: Locator.java,v 1.4.2.5 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+
+/**
+ * Interface for associating a SAX event with a document location.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>If a SAX parser provides location information to the SAX
+ * application, it does so by implementing this interface and then
+ * passing an instance to the application using the content
+ * handler's {@link org.xml.sax.ContentHandler#setDocumentLocator
+ * setDocumentLocator} method. The application can use the
+ * object to obtain the location of any other SAX event
+ * in the XML source document.</p>
+ *
+ * <p>Note that the results returned by the object will be valid only
+ * during the scope of each callback method: the application
+ * will receive unpredictable results if it attempts to use the
+ * locator at any other time, or after parsing completes.</p>
+ *
+ * <p>SAX parsers are not required to supply a locator, but they are
+ * very strongly encouraged to do so. If the parser supplies a
+ * locator, it must do so before reporting any other document events.
+ * If no locator has been set by the time the application receives
+ * the {@link org.xml.sax.ContentHandler#startDocument startDocument}
+ * event, the application should assume that a locator is not
+ * available.</p>
+ *
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.ContentHandler#setDocumentLocator
+ */
+public interface Locator {
+
+
+ /**
+ * Return the public identifier for the current document event.
+ *
+ * <p>The return value is the public identifier of the document
+ * entity or of the external parsed entity in which the markup
+ * triggering the event appears.</p>
+ *
+ * @return A string containing the public identifier, or
+ * null if none is available.
+ * @see #getSystemId
+ */
+ public abstract String getPublicId ();
+
+
+ /**
+ * Return the system identifier for the current document event.
+ *
+ * <p>The return value is the system identifier of the document
+ * entity or of the external parsed entity in which the markup
+ * triggering the event appears.</p>
+ *
+ * <p>If the system identifier is a URL, the parser must resolve it
+ * fully before passing it to the application. For example, a file
+ * name must always be provided as a <em>file:...</em> URL, and other
+ * kinds of relative URI are also resolved against their bases.</p>
+ *
+ * @return A string containing the system identifier, or null
+ * if none is available.
+ * @see #getPublicId
+ */
+ public abstract String getSystemId ();
+
+
+ /**
+ * Return the line number where the current document event ends.
+ * Lines are delimited by line ends, which are defined in
+ * the XML specification.
+ *
+ * <p><strong>Warning:</strong> The return value from the method
+ * is intended only as an approximation for the sake of diagnostics;
+ * it is not intended to provide sufficient information
+ * to edit the character content of the original XML document.
+ * In some cases, these "line" numbers match what would be displayed
+ * as columns, and in others they may not match the source text
+ * due to internal entity expansion. </p>
+ *
+ * <p>The return value is an approximation of the line number
+ * in the document entity or external parsed entity where the
+ * markup triggering the event appears.</p>
+ *
+ * <p>If possible, the SAX driver should provide the line position
+ * of the first character after the text associated with the document
+ * event. The first line is line 1.</p>
+ *
+ * @return The line number, or -1 if none is available.
+ * @see #getColumnNumber
+ */
+ public abstract int getLineNumber ();
+
+
+ /**
+ * Return the column number where the current document event ends.
+ * This is one-based number of Java <code>char</code> values since
+ * the last line end.
+ *
+ * <p><strong>Warning:</strong> The return value from the method
+ * is intended only as an approximation for the sake of diagnostics;
+ * it is not intended to provide sufficient information
+ * to edit the character content of the original XML document.
+ * For example, when lines contain combining character sequences, wide
+ * characters, surrogate pairs, or bi-directional text, the value may
+ * not correspond to the column in a text editor's display. </p>
+ *
+ * <p>The return value is an approximation of the column number
+ * in the document entity or external parsed entity where the
+ * markup triggering the event appears.</p>
+ *
+ * <p>If possible, the SAX driver should provide the line position
+ * of the first character after the text associated with the document
+ * event. The first column in each line is column 1.</p>
+ *
+ * @return The column number, or -1 if none is available.
+ * @see #getLineNumber
+ */
+ public abstract int getColumnNumber ();
+
+}
+
+// end of Locator.java
diff --git a/libjava/org/xml/sax/Parser.java b/libjava/org/xml/sax/Parser.java
index e775ca97c87..2999265c4c3 100644
--- a/libjava/org/xml/sax/Parser.java
+++ b/libjava/org/xml/sax/Parser.java
@@ -1,207 +1,209 @@
-// SAX parser interface.
-// No warranty; no copyright -- use this as you will.
-// $Id: Parser.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-import java.io.IOException;
-import java.util.Locale;
-
-
-/**
- * Basic interface for SAX (Simple API for XML) parsers.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This was the main event supplier interface for SAX1; it has
- * been replaced in SAX2 by {@link org.xml.sax.XMLReader XMLReader},
- * which includes Namespace support and sophisticated configurability
- * and extensibility.</p>
- *
- * <p>All SAX1 parsers must implement this basic interface: it allows
- * applications to register handlers for different types of events
- * and to initiate a parse from a URI, or a character stream.</p>
- *
- * <p>All SAX1 parsers must also implement a zero-argument constructor
- * (though other constructors are also allowed).</p>
- *
- * <p>SAX1 parsers are reusable but not re-entrant: the application
- * may reuse a parser object (possibly with a different input source)
- * once the first parse has completed successfully, but it may not
- * invoke the parse() methods recursively within a parse.</p>
- *
- * @deprecated This interface has been replaced by the SAX2
- * {@link org.xml.sax.XMLReader XMLReader}
- * interface, which includes Namespace support.
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.EntityResolver
- * @see org.xml.sax.DTDHandler
- * @see org.xml.sax.DocumentHandler
- * @see org.xml.sax.ErrorHandler
- * @see org.xml.sax.HandlerBase
- * @see org.xml.sax.InputSource
- */
-public interface Parser
-{
-
- /**
- * Allow an application to request a locale for errors and warnings.
- *
- * <p>SAX parsers are not required to provide localisation for errors
- * and warnings; if they cannot support the requested locale,
- * however, they must throw a SAX exception. Applications may
- * not request a locale change in the middle of a parse.</p>
- *
- * @param locale A Java Locale object.
- * @exception org.xml.sax.SAXException Throws an exception
- * (using the previous or default locale) if the
- * requested locale is not supported.
- * @see org.xml.sax.SAXException
- * @see org.xml.sax.SAXParseException
- */
- public abstract void setLocale (Locale locale)
- throws SAXException;
-
-
- /**
- * Allow an application to register a custom entity resolver.
- *
- * <p>If the application does not register an entity resolver, the
- * SAX parser will resolve system identifiers and open connections
- * to entities itself (this is the default behaviour implemented in
- * HandlerBase).</p>
- *
- * <p>Applications may register a new or different entity resolver
- * in the middle of a parse, and the SAX parser must begin using
- * the new resolver immediately.</p>
- *
- * @param resolver The object for resolving entities.
- * @see EntityResolver
- * @see HandlerBase
- */
- public abstract void setEntityResolver (EntityResolver resolver);
-
-
- /**
- * Allow an application to register a DTD event handler.
- *
- * <p>If the application does not register a DTD handler, all DTD
- * events reported by the SAX parser will be silently
- * ignored (this is the default behaviour implemented by
- * HandlerBase).</p>
- *
- * <p>Applications may register a new or different
- * handler in the middle of a parse, and the SAX parser must
- * begin using the new handler immediately.</p>
- *
- * @param handler The DTD handler.
- * @see DTDHandler
- * @see HandlerBase
- */
- public abstract void setDTDHandler (DTDHandler handler);
-
-
- /**
- * Allow an application to register a document event handler.
- *
- * <p>If the application does not register a document handler, all
- * document events reported by the SAX parser will be silently
- * ignored (this is the default behaviour implemented by
- * HandlerBase).</p>
- *
- * <p>Applications may register a new or different handler in the
- * middle of a parse, and the SAX parser must begin using the new
- * handler immediately.</p>
- *
- * @param handler The document handler.
- * @see DocumentHandler
- * @see HandlerBase
- */
- public abstract void setDocumentHandler (DocumentHandler handler);
-
-
- /**
- * Allow an application to register an error event handler.
- *
- * <p>If the application does not register an error event handler,
- * all error events reported by the SAX parser will be silently
- * ignored, except for fatalError, which will throw a SAXException
- * (this is the default behaviour implemented by HandlerBase).</p>
- *
- * <p>Applications may register a new or different handler in the
- * middle of a parse, and the SAX parser must begin using the new
- * handler immediately.</p>
- *
- * @param handler The error handler.
- * @see ErrorHandler
- * @see SAXException
- * @see HandlerBase
- */
- public abstract void setErrorHandler (ErrorHandler handler);
-
-
- /**
- * Parse an XML document.
- *
- * <p>The application can use this method to instruct the SAX parser
- * to begin parsing an XML document from any valid input
- * source (a character stream, a byte stream, or a URI).</p>
- *
- * <p>Applications may not invoke this method while a parse is in
- * progress (they should create a new Parser instead for each
- * additional XML document). Once a parse is complete, an
- * application may reuse the same Parser object, possibly with a
- * different input source.</p>
- *
- * @param source The input source for the top-level of the
- * XML document.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @exception java.io.IOException An IO exception from the parser,
- * possibly from a byte stream or character stream
- * supplied by the application.
- * @see org.xml.sax.InputSource
- * @see #parse(java.lang.String)
- * @see #setEntityResolver
- * @see #setDTDHandler
- * @see #setDocumentHandler
- * @see #setErrorHandler
- */
- public abstract void parse (InputSource source)
- throws SAXException, IOException;
-
-
- /**
- * Parse an XML document from a system identifier (URI).
- *
- * <p>This method is a shortcut for the common case of reading a
- * document from a system identifier. It is the exact
- * equivalent of the following:</p>
- *
- * <pre>
- * parse(new InputSource(systemId));
- * </pre>
- *
- * <p>If the system identifier is a URL, it must be fully resolved
- * by the application before it is passed to the parser.</p>
- *
- * @param systemId The system identifier (URI).
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @exception java.io.IOException An IO exception from the parser,
- * possibly from a byte stream or character stream
- * supplied by the application.
- * @see #parse(org.xml.sax.InputSource)
- */
- public abstract void parse (String systemId)
- throws SAXException, IOException;
-
-}
-
-// end of Parser.java
+// SAX parser interface.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: Parser.java,v 1.3.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+import java.io.IOException;
+import java.util.Locale;
+
+
+/**
+ * Basic interface for SAX (Simple API for XML) parsers.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This was the main event supplier interface for SAX1; it has
+ * been replaced in SAX2 by {@link org.xml.sax.XMLReader XMLReader},
+ * which includes Namespace support and sophisticated configurability
+ * and extensibility.</p>
+ *
+ * <p>All SAX1 parsers must implement this basic interface: it allows
+ * applications to register handlers for different types of events
+ * and to initiate a parse from a URI, or a character stream.</p>
+ *
+ * <p>All SAX1 parsers must also implement a zero-argument constructor
+ * (though other constructors are also allowed).</p>
+ *
+ * <p>SAX1 parsers are reusable but not re-entrant: the application
+ * may reuse a parser object (possibly with a different input source)
+ * once the first parse has completed successfully, but it may not
+ * invoke the parse() methods recursively within a parse.</p>
+ *
+ * @deprecated This interface has been replaced by the SAX2
+ * {@link org.xml.sax.XMLReader XMLReader}
+ * interface, which includes Namespace support.
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.EntityResolver
+ * @see org.xml.sax.DTDHandler
+ * @see org.xml.sax.DocumentHandler
+ * @see org.xml.sax.ErrorHandler
+ * @see org.xml.sax.HandlerBase
+ * @see org.xml.sax.InputSource
+ */
+public interface Parser
+{
+
+ /**
+ * Allow an application to request a locale for errors and warnings.
+ *
+ * <p>SAX parsers are not required to provide localisation for errors
+ * and warnings; if they cannot support the requested locale,
+ * however, they must throw a SAX exception. Applications may
+ * not request a locale change in the middle of a parse.</p>
+ *
+ * @param locale A Java Locale object.
+ * @exception org.xml.sax.SAXException Throws an exception
+ * (using the previous or default locale) if the
+ * requested locale is not supported.
+ * @see org.xml.sax.SAXException
+ * @see org.xml.sax.SAXParseException
+ */
+ public abstract void setLocale (Locale locale)
+ throws SAXException;
+
+
+ /**
+ * Allow an application to register a custom entity resolver.
+ *
+ * <p>If the application does not register an entity resolver, the
+ * SAX parser will resolve system identifiers and open connections
+ * to entities itself (this is the default behaviour implemented in
+ * HandlerBase).</p>
+ *
+ * <p>Applications may register a new or different entity resolver
+ * in the middle of a parse, and the SAX parser must begin using
+ * the new resolver immediately.</p>
+ *
+ * @param resolver The object for resolving entities.
+ * @see EntityResolver
+ * @see HandlerBase
+ */
+ public abstract void setEntityResolver (EntityResolver resolver);
+
+
+ /**
+ * Allow an application to register a DTD event handler.
+ *
+ * <p>If the application does not register a DTD handler, all DTD
+ * events reported by the SAX parser will be silently
+ * ignored (this is the default behaviour implemented by
+ * HandlerBase).</p>
+ *
+ * <p>Applications may register a new or different
+ * handler in the middle of a parse, and the SAX parser must
+ * begin using the new handler immediately.</p>
+ *
+ * @param handler The DTD handler.
+ * @see DTDHandler
+ * @see HandlerBase
+ */
+ public abstract void setDTDHandler (DTDHandler handler);
+
+
+ /**
+ * Allow an application to register a document event handler.
+ *
+ * <p>If the application does not register a document handler, all
+ * document events reported by the SAX parser will be silently
+ * ignored (this is the default behaviour implemented by
+ * HandlerBase).</p>
+ *
+ * <p>Applications may register a new or different handler in the
+ * middle of a parse, and the SAX parser must begin using the new
+ * handler immediately.</p>
+ *
+ * @param handler The document handler.
+ * @see DocumentHandler
+ * @see HandlerBase
+ */
+ public abstract void setDocumentHandler (DocumentHandler handler);
+
+
+ /**
+ * Allow an application to register an error event handler.
+ *
+ * <p>If the application does not register an error event handler,
+ * all error events reported by the SAX parser will be silently
+ * ignored, except for fatalError, which will throw a SAXException
+ * (this is the default behaviour implemented by HandlerBase).</p>
+ *
+ * <p>Applications may register a new or different handler in the
+ * middle of a parse, and the SAX parser must begin using the new
+ * handler immediately.</p>
+ *
+ * @param handler The error handler.
+ * @see ErrorHandler
+ * @see SAXException
+ * @see HandlerBase
+ */
+ public abstract void setErrorHandler (ErrorHandler handler);
+
+
+ /**
+ * Parse an XML document.
+ *
+ * <p>The application can use this method to instruct the SAX parser
+ * to begin parsing an XML document from any valid input
+ * source (a character stream, a byte stream, or a URI).</p>
+ *
+ * <p>Applications may not invoke this method while a parse is in
+ * progress (they should create a new Parser instead for each
+ * additional XML document). Once a parse is complete, an
+ * application may reuse the same Parser object, possibly with a
+ * different input source.</p>
+ *
+ * @param source The input source for the top-level of the
+ * XML document.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @exception java.io.IOException An IO exception from the parser,
+ * possibly from a byte stream or character stream
+ * supplied by the application.
+ * @see org.xml.sax.InputSource
+ * @see #parse(java.lang.String)
+ * @see #setEntityResolver
+ * @see #setDTDHandler
+ * @see #setDocumentHandler
+ * @see #setErrorHandler
+ */
+ public abstract void parse (InputSource source)
+ throws SAXException, IOException;
+
+
+ /**
+ * Parse an XML document from a system identifier (URI).
+ *
+ * <p>This method is a shortcut for the common case of reading a
+ * document from a system identifier. It is the exact
+ * equivalent of the following:</p>
+ *
+ * <pre>
+ * parse(new InputSource(systemId));
+ * </pre>
+ *
+ * <p>If the system identifier is a URL, it must be fully resolved
+ * by the application before it is passed to the parser.</p>
+ *
+ * @param systemId The system identifier (URI).
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @exception java.io.IOException An IO exception from the parser,
+ * possibly from a byte stream or character stream
+ * supplied by the application.
+ * @see #parse(org.xml.sax.InputSource)
+ */
+ public abstract void parse (String systemId)
+ throws SAXException, IOException;
+
+}
+
+// end of Parser.java
diff --git a/libjava/org/xml/sax/SAXException.java b/libjava/org/xml/sax/SAXException.java
index 69537e91706..b11d998edad 100644
--- a/libjava/org/xml/sax/SAXException.java
+++ b/libjava/org/xml/sax/SAXException.java
@@ -1,144 +1,153 @@
-// SAX exception class.
-// No warranty; no copyright -- use this as you will.
-// $Id: SAXException.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-/**
- * Encapsulate a general SAX error or warning.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class can contain basic error or warning information from
- * either the XML parser or the application: a parser writer or
- * application writer can subclass it to provide additional
- * functionality. SAX handlers may throw this exception or
- * any exception subclassed from it.</p>
- *
- * <p>If the application needs to pass through other types of
- * exceptions, it must wrap those exceptions in a SAXException
- * or an exception derived from a SAXException.</p>
- *
- * <p>If the parser or application needs to include information about a
- * specific location in an XML document, it should use the
- * {@link org.xml.sax.SAXParseException SAXParseException} subclass.</p>
- *
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.SAXParseException
- */
-public class SAXException extends Exception {
-
-
- /**
- * Create a new SAXException.
- *
- * @param message The error or warning message.
- * @see org.xml.sax.Parser#setLocale
- */
- public SAXException (String message) {
- super(message);
- this.exception = null;
- }
-
-
- /**
- * Create a new SAXException wrapping an existing exception.
- *
- * <p>The existing exception will be embedded in the new
- * one, and its message will become the default message for
- * the SAXException.</p>
- *
- * @param e The exception to be wrapped in a SAXException.
- */
- public SAXException (Exception e)
- {
- super();
- this.exception = e;
- }
-
-
- /**
- * Create a new SAXException from an existing exception.
- *
- * <p>The existing exception will be embedded in the new
- * one, but the new exception will have its own message.</p>
- *
- * @param message The detail message.
- * @param e The exception to be wrapped in a SAXException.
- * @see org.xml.sax.Parser#setLocale
- */
- public SAXException (String message, Exception e)
- {
- super(message);
- this.exception = e;
- }
-
-
- /**
- * Return a detail message for this exception.
- *
- * <p>If there is an embedded exception, and if the SAXException
- * has no detail message of its own, this method will return
- * the detail message from the embedded exception.</p>
- *
- * @return The error or warning message.
- * @see org.xml.sax.Parser#setLocale
- */
- public String getMessage ()
- {
- String message = super.getMessage();
-
- if (message == null && exception != null) {
- return exception.getMessage();
- } else {
- return message;
- }
- }
-
-
- /**
- * Return the embedded exception, if any.
- *
- * @return The embedded exception, or null if there is none.
- */
- public Exception getException ()
- {
- return exception;
- }
-
-
- /**
- * Override toString to pick up any embedded exception.
- *
- * @return A string representation of this exception.
- */
- public String toString ()
- {
- if (exception != null) {
- return exception.toString();
- } else {
- return super.toString();
- }
- }
-
-
-
- //////////////////////////////////////////////////////////////////////
- // Internal state.
- //////////////////////////////////////////////////////////////////////
-
-
- /**
- * @serial The embedded exception if tunnelling, or null.
- */
- private Exception exception;
-
-}
-
-// end of SAXException.java
+// SAX exception class.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: SAXException.java,v 1.4.2.4 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+/**
+ * Encapsulate a general SAX error or warning.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class can contain basic error or warning information from
+ * either the XML parser or the application: a parser writer or
+ * application writer can subclass it to provide additional
+ * functionality. SAX handlers may throw this exception or
+ * any exception subclassed from it.</p>
+ *
+ * <p>If the application needs to pass through other types of
+ * exceptions, it must wrap those exceptions in a SAXException
+ * or an exception derived from a SAXException.</p>
+ *
+ * <p>If the parser or application needs to include information about a
+ * specific location in an XML document, it should use the
+ * {@link org.xml.sax.SAXParseException SAXParseException} subclass.</p>
+ *
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.SAXParseException
+ */
+public class SAXException extends Exception {
+
+
+ /**
+ * Create a new SAXException.
+ */
+ public SAXException ()
+ {
+ super();
+ this.exception = null;
+ }
+
+
+ /**
+ * Create a new SAXException.
+ *
+ * @param message The error or warning message.
+ */
+ public SAXException (String message) {
+ super(message);
+ this.exception = null;
+ }
+
+
+ /**
+ * Create a new SAXException wrapping an existing exception.
+ *
+ * <p>The existing exception will be embedded in the new
+ * one, and its message will become the default message for
+ * the SAXException.</p>
+ *
+ * @param e The exception to be wrapped in a SAXException.
+ */
+ public SAXException (Exception e)
+ {
+ super();
+ this.exception = e;
+ }
+
+
+ /**
+ * Create a new SAXException from an existing exception.
+ *
+ * <p>The existing exception will be embedded in the new
+ * one, but the new exception will have its own message.</p>
+ *
+ * @param message The detail message.
+ * @param e The exception to be wrapped in a SAXException.
+ */
+ public SAXException (String message, Exception e)
+ {
+ super(message);
+ this.exception = e;
+ }
+
+
+ /**
+ * Return a detail message for this exception.
+ *
+ * <p>If there is an embedded exception, and if the SAXException
+ * has no detail message of its own, this method will return
+ * the detail message from the embedded exception.</p>
+ *
+ * @return The error or warning message.
+ */
+ public String getMessage ()
+ {
+ String message = super.getMessage();
+
+ if (message == null && exception != null) {
+ return exception.getMessage();
+ } else {
+ return message;
+ }
+ }
+
+
+ /**
+ * Return the embedded exception, if any.
+ *
+ * @return The embedded exception, or null if there is none.
+ */
+ public Exception getException ()
+ {
+ return exception;
+ }
+
+
+ /**
+ * Override toString to pick up any embedded exception.
+ *
+ * @return A string representation of this exception.
+ */
+ public String toString ()
+ {
+ if (exception != null) {
+ return exception.toString();
+ } else {
+ return super.toString();
+ }
+ }
+
+
+
+ //////////////////////////////////////////////////////////////////////
+ // Internal state.
+ //////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * @serial The embedded exception if tunnelling, or null.
+ */
+ private Exception exception;
+
+}
+
+// end of SAXException.java
diff --git a/libjava/org/xml/sax/SAXNotRecognizedException.java b/libjava/org/xml/sax/SAXNotRecognizedException.java
index 0fbc4c85ba9..83aac69a7d3 100644
--- a/libjava/org/xml/sax/SAXNotRecognizedException.java
+++ b/libjava/org/xml/sax/SAXNotRecognizedException.java
@@ -1,44 +1,55 @@
-// SAXNotRecognizedException.java - unrecognized feature or value.
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the Public Domain.
-
-// $Id: SAXNotRecognizedException.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-
-package org.xml.sax;
-
-
-/**
- * Exception class for an unrecognized identifier.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>An XMLReader will throw this exception when it finds an
- * unrecognized feature or property identifier; SAX applications and
- * extensions may use this class for other, similar purposes.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.SAXNotSupportedException
- */
-public class SAXNotRecognizedException extends SAXException
-{
-
- /**
- * Construct a new exception with the given message.
- *
- * @param message The text message of the exception.
- */
- public SAXNotRecognizedException (String message)
- {
- super(message);
- }
-
-}
-
-// end of SAXNotRecognizedException.java
+// SAXNotRecognizedException.java - unrecognized feature or value.
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the Public Domain.
+
+// $Id: SAXNotRecognizedException.java,v 1.4.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+
+package org.xml.sax;
+
+
+/**
+ * Exception class for an unrecognized identifier.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>An XMLReader will throw this exception when it finds an
+ * unrecognized feature or property identifier; SAX applications and
+ * extensions may use this class for other, similar purposes.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.SAXNotSupportedException
+ */
+public class SAXNotRecognizedException extends SAXException
+{
+
+ /**
+ * Default constructor.
+ */
+ public SAXNotRecognizedException ()
+ {
+ super();
+ }
+
+
+ /**
+ * Construct a new exception with the given message.
+ *
+ * @param message The text message of the exception.
+ */
+ public SAXNotRecognizedException (String message)
+ {
+ super(message);
+ }
+
+}
+
+// end of SAXNotRecognizedException.java
diff --git a/libjava/org/xml/sax/SAXNotSupportedException.java b/libjava/org/xml/sax/SAXNotSupportedException.java
index 3376d47cc5b..2939eb192a5 100644
--- a/libjava/org/xml/sax/SAXNotSupportedException.java
+++ b/libjava/org/xml/sax/SAXNotSupportedException.java
@@ -1,44 +1,55 @@
-// SAXNotSupportedException.java - unsupported feature or value.
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the Public Domain.
-
-// $Id: SAXNotSupportedException.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-
-package org.xml.sax;
-
-/**
- * Exception class for an unsupported operation.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>An XMLReader will throw this exception when it recognizes a
- * feature or property identifier, but cannot perform the requested
- * operation (setting a state or value). Other SAX2 applications and
- * extensions may use this class for similar purposes.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.SAXNotRecognizedException
- */
-public class SAXNotSupportedException extends SAXException
-{
-
- /**
- * Construct a new exception with the given message.
- *
- * @param message The text message of the exception.
- */
- public SAXNotSupportedException (String message)
- {
- super(message);
- }
-
-}
-
-// end of SAXNotSupportedException.java
+// SAXNotSupportedException.java - unsupported feature or value.
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the Public Domain.
+
+// $Id: SAXNotSupportedException.java,v 1.4.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+
+package org.xml.sax;
+
+/**
+ * Exception class for an unsupported operation.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>An XMLReader will throw this exception when it recognizes a
+ * feature or property identifier, but cannot perform the requested
+ * operation (setting a state or value). Other SAX2 applications and
+ * extensions may use this class for similar purposes.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.SAXNotRecognizedException
+ */
+public class SAXNotSupportedException extends SAXException
+{
+
+ /**
+ * Construct a new exception with no message.
+ */
+ public SAXNotSupportedException ()
+ {
+ super();
+ }
+
+
+ /**
+ * Construct a new exception with the given message.
+ *
+ * @param message The text message of the exception.
+ */
+ public SAXNotSupportedException (String message)
+ {
+ super(message);
+ }
+
+}
+
+// end of SAXNotSupportedException.java
diff --git a/libjava/org/xml/sax/SAXParseException.java b/libjava/org/xml/sax/SAXParseException.java
index a5dcc06f0fb..e87d79f3f74 100644
--- a/libjava/org/xml/sax/SAXParseException.java
+++ b/libjava/org/xml/sax/SAXParseException.java
@@ -1,264 +1,270 @@
-// SAX exception class.
-// No warranty; no copyright -- use this as you will.
-// $Id: SAXParseException.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-/**
- * Encapsulate an XML parse error or warning.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This exception will include information for locating the error
- * in the original XML document. Note that although the application
- * will receive a SAXParseException as the argument to the handlers
- * in the {@link org.xml.sax.ErrorHandler ErrorHandler} interface,
- * the application is not actually required to throw the exception;
- * instead, it can simply read the information in it and take a
- * different action.</p>
- *
- * <p>Since this exception is a subclass of {@link org.xml.sax.SAXException
- * SAXException}, it inherits the ability to wrap another exception.</p>
- *
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.SAXException
- * @see org.xml.sax.Locator
- * @see org.xml.sax.ErrorHandler
- */
-public class SAXParseException extends SAXException {
-
-
- //////////////////////////////////////////////////////////////////////
- // Constructors.
- //////////////////////////////////////////////////////////////////////
-
-
- /**
- * Create a new SAXParseException from a message and a Locator.
- *
- * <p>This constructor is especially useful when an application is
- * creating its own exception from within a {@link org.xml.sax.ContentHandler
- * ContentHandler} callback.</p>
- *
- * @param message The error or warning message.
- * @param locator The locator object for the error or warning (may be
- * null).
- * @see org.xml.sax.Locator
- * @see org.xml.sax.Parser#setLocale
- */
- public SAXParseException (String message, Locator locator) {
- super(message);
- if (locator != null) {
- init(locator.getPublicId(), locator.getSystemId(),
- locator.getLineNumber(), locator.getColumnNumber());
- } else {
- init(null, null, -1, -1);
- }
- }
-
-
- /**
- * Wrap an existing exception in a SAXParseException.
- *
- * <p>This constructor is especially useful when an application is
- * creating its own exception from within a {@link org.xml.sax.ContentHandler
- * ContentHandler} callback, and needs to wrap an existing exception that is not a
- * subclass of {@link org.xml.sax.SAXException SAXException}.</p>
- *
- * @param message The error or warning message, or null to
- * use the message from the embedded exception.
- * @param locator The locator object for the error or warning (may be
- * null).
- * @param e Any exception.
- * @see org.xml.sax.Locator
- * @see org.xml.sax.Parser#setLocale
- */
- public SAXParseException (String message, Locator locator,
- Exception e) {
- super(message, e);
- if (locator != null) {
- init(locator.getPublicId(), locator.getSystemId(),
- locator.getLineNumber(), locator.getColumnNumber());
- } else {
- init(null, null, -1, -1);
- }
- }
-
-
- /**
- * Create a new SAXParseException.
- *
- * <p>This constructor is most useful for parser writers.</p>
- *
- * <p>If the system identifier is a URL, the parser must resolve it
- * fully before creating the exception.</p>
- *
- * @param message The error or warning message.
- * @param publicId The public identifier of the entity that generated
- * the error or warning.
- * @param systemId The system identifier of the entity that generated
- * the error or warning.
- * @param lineNumber The line number of the end of the text that
- * caused the error or warning.
- * @param columnNumber The column number of the end of the text that
- * cause the error or warning.
- * @see org.xml.sax.Parser#setLocale
- */
- public SAXParseException (String message, String publicId, String systemId,
- int lineNumber, int columnNumber)
- {
- super(message);
- init(publicId, systemId, lineNumber, columnNumber);
- }
-
-
- /**
- * Create a new SAXParseException with an embedded exception.
- *
- * <p>This constructor is most useful for parser writers who
- * need to wrap an exception that is not a subclass of
- * {@link org.xml.sax.SAXException SAXException}.</p>
- *
- * <p>If the system identifier is a URL, the parser must resolve it
- * fully before creating the exception.</p>
- *
- * @param message The error or warning message, or null to use
- * the message from the embedded exception.
- * @param publicId The public identifier of the entity that generated
- * the error or warning.
- * @param systemId The system identifier of the entity that generated
- * the error or warning.
- * @param lineNumber The line number of the end of the text that
- * caused the error or warning.
- * @param columnNumber The column number of the end of the text that
- * cause the error or warning.
- * @param e Another exception to embed in this one.
- * @see org.xml.sax.Parser#setLocale
- */
- public SAXParseException (String message, String publicId, String systemId,
- int lineNumber, int columnNumber, Exception e)
- {
- super(message, e);
- init(publicId, systemId, lineNumber, columnNumber);
- }
-
-
- /**
- * Internal initialization method.
- *
- * @param publicId The public identifier of the entity which generated the exception,
- * or null.
- * @param systemId The system identifier of the entity which generated the exception,
- * or null.
- * @param lineNumber The line number of the error, or -1.
- * @param columnNumber The column number of the error, or -1.
- */
- private void init (String publicId, String systemId,
- int lineNumber, int columnNumber)
- {
- this.publicId = publicId;
- this.systemId = systemId;
- this.lineNumber = lineNumber;
- this.columnNumber = columnNumber;
- }
-
-
- /**
- * Get the public identifier of the entity where the exception occurred.
- *
- * @return A string containing the public identifier, or null
- * if none is available.
- * @see org.xml.sax.Locator#getPublicId
- */
- public String getPublicId ()
- {
- return this.publicId;
- }
-
-
- /**
- * Get the system identifier of the entity where the exception occurred.
- *
- * <p>If the system identifier is a URL, it will be resolved
- * fully.</p>
- *
- * @return A string containing the system identifier, or null
- * if none is available.
- * @see org.xml.sax.Locator#getSystemId
- */
- public String getSystemId ()
- {
- return this.systemId;
- }
-
-
- /**
- * The line number of the end of the text where the exception occurred.
- *
- * @return An integer representing the line number, or -1
- * if none is available.
- * @see org.xml.sax.Locator#getLineNumber
- */
- public int getLineNumber ()
- {
- return this.lineNumber;
- }
-
-
- /**
- * The column number of the end of the text where the exception occurred.
- *
- * <p>The first column in a line is position 1.</p>
- *
- * @return An integer representing the column number, or -1
- * if none is available.
- * @see org.xml.sax.Locator#getColumnNumber
- */
- public int getColumnNumber ()
- {
- return this.columnNumber;
- }
-
-
-
- //////////////////////////////////////////////////////////////////////
- // Internal state.
- //////////////////////////////////////////////////////////////////////
-
-
- /**
- * @serial The public identifier, or null.
- * @see #getPublicId
- */
- private String publicId;
-
-
- /**
- * @serial The system identifier, or null.
- * @see #getSystemId
- */
- private String systemId;
-
-
- /**
- * @serial The line number, or -1.
- * @see #getLineNumber
- */
- private int lineNumber;
-
-
- /**
- * @serial The column number, or -1.
- * @see #getColumnNumber
- */
- private int columnNumber;
-
-}
-
-// end of SAXParseException.java
+// SAX exception class.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: SAXParseException.java,v 1.3.2.5 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+/**
+ * Encapsulate an XML parse error or warning.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This exception may include information for locating the error
+ * in the original XML document, as if it came from a {@link Locator}
+ * object. Note that although the application
+ * will receive a SAXParseException as the argument to the handlers
+ * in the {@link org.xml.sax.ErrorHandler ErrorHandler} interface,
+ * the application is not actually required to throw the exception;
+ * instead, it can simply read the information in it and take a
+ * different action.</p>
+ *
+ * <p>Since this exception is a subclass of {@link org.xml.sax.SAXException
+ * SAXException}, it inherits the ability to wrap another exception.</p>
+ *
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.SAXException
+ * @see org.xml.sax.Locator
+ * @see org.xml.sax.ErrorHandler
+ */
+public class SAXParseException extends SAXException {
+
+
+ //////////////////////////////////////////////////////////////////////
+ // Constructors.
+ //////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Create a new SAXParseException from a message and a Locator.
+ *
+ * <p>This constructor is especially useful when an application is
+ * creating its own exception from within a {@link org.xml.sax.ContentHandler
+ * ContentHandler} callback.</p>
+ *
+ * @param message The error or warning message.
+ * @param locator The locator object for the error or warning (may be
+ * null).
+ * @see org.xml.sax.Locator
+ */
+ public SAXParseException (String message, Locator locator) {
+ super(message);
+ if (locator != null) {
+ init(locator.getPublicId(), locator.getSystemId(),
+ locator.getLineNumber(), locator.getColumnNumber());
+ } else {
+ init(null, null, -1, -1);
+ }
+ }
+
+
+ /**
+ * Wrap an existing exception in a SAXParseException.
+ *
+ * <p>This constructor is especially useful when an application is
+ * creating its own exception from within a {@link org.xml.sax.ContentHandler
+ * ContentHandler} callback, and needs to wrap an existing exception that is not a
+ * subclass of {@link org.xml.sax.SAXException SAXException}.</p>
+ *
+ * @param message The error or warning message, or null to
+ * use the message from the embedded exception.
+ * @param locator The locator object for the error or warning (may be
+ * null).
+ * @param e Any exception.
+ * @see org.xml.sax.Locator
+ */
+ public SAXParseException (String message, Locator locator,
+ Exception e) {
+ super(message, e);
+ if (locator != null) {
+ init(locator.getPublicId(), locator.getSystemId(),
+ locator.getLineNumber(), locator.getColumnNumber());
+ } else {
+ init(null, null, -1, -1);
+ }
+ }
+
+
+ /**
+ * Create a new SAXParseException.
+ *
+ * <p>This constructor is most useful for parser writers.</p>
+ *
+ * <p>All parameters except the message are as if
+ * they were provided by a {@link Locator}. For example, if the
+ * system identifier is a URL (including relative filename), the
+ * caller must resolve it fully before creating the exception.</p>
+ *
+ *
+ * @param message The error or warning message.
+ * @param publicId The public identifer of the entity that generated
+ * the error or warning.
+ * @param systemId The system identifer of the entity that generated
+ * the error or warning.
+ * @param lineNumber The line number of the end of the text that
+ * caused the error or warning.
+ * @param columnNumber The column number of the end of the text that
+ * cause the error or warning.
+ */
+ public SAXParseException (String message, String publicId, String systemId,
+ int lineNumber, int columnNumber)
+ {
+ super(message);
+ init(publicId, systemId, lineNumber, columnNumber);
+ }
+
+
+ /**
+ * Create a new SAXParseException with an embedded exception.
+ *
+ * <p>This constructor is most useful for parser writers who
+ * need to wrap an exception that is not a subclass of
+ * {@link org.xml.sax.SAXException SAXException}.</p>
+ *
+ * <p>All parameters except the message and exception are as if
+ * they were provided by a {@link Locator}. For example, if the
+ * system identifier is a URL (including relative filename), the
+ * caller must resolve it fully before creating the exception.</p>
+ *
+ * @param message The error or warning message, or null to use
+ * the message from the embedded exception.
+ * @param publicId The public identifer of the entity that generated
+ * the error or warning.
+ * @param systemId The system identifer of the entity that generated
+ * the error or warning.
+ * @param lineNumber The line number of the end of the text that
+ * caused the error or warning.
+ * @param columnNumber The column number of the end of the text that
+ * cause the error or warning.
+ * @param e Another exception to embed in this one.
+ */
+ public SAXParseException (String message, String publicId, String systemId,
+ int lineNumber, int columnNumber, Exception e)
+ {
+ super(message, e);
+ init(publicId, systemId, lineNumber, columnNumber);
+ }
+
+
+ /**
+ * Internal initialization method.
+ *
+ * @param publicId The public identifier of the entity which generated the exception,
+ * or null.
+ * @param systemId The system identifier of the entity which generated the exception,
+ * or null.
+ * @param lineNumber The line number of the error, or -1.
+ * @param columnNumber The column number of the error, or -1.
+ */
+ private void init (String publicId, String systemId,
+ int lineNumber, int columnNumber)
+ {
+ this.publicId = publicId;
+ this.systemId = systemId;
+ this.lineNumber = lineNumber;
+ this.columnNumber = columnNumber;
+ }
+
+
+ /**
+ * Get the public identifier of the entity where the exception occurred.
+ *
+ * @return A string containing the public identifier, or null
+ * if none is available.
+ * @see org.xml.sax.Locator#getPublicId
+ */
+ public String getPublicId ()
+ {
+ return this.publicId;
+ }
+
+
+ /**
+ * Get the system identifier of the entity where the exception occurred.
+ *
+ * <p>If the system identifier is a URL, it will have been resolved
+ * fully.</p>
+ *
+ * @return A string containing the system identifier, or null
+ * if none is available.
+ * @see org.xml.sax.Locator#getSystemId
+ */
+ public String getSystemId ()
+ {
+ return this.systemId;
+ }
+
+
+ /**
+ * The line number of the end of the text where the exception occurred.
+ *
+ * <p>The first line is line 1.</p>
+ *
+ * @return An integer representing the line number, or -1
+ * if none is available.
+ * @see org.xml.sax.Locator#getLineNumber
+ */
+ public int getLineNumber ()
+ {
+ return this.lineNumber;
+ }
+
+
+ /**
+ * The column number of the end of the text where the exception occurred.
+ *
+ * <p>The first column in a line is position 1.</p>
+ *
+ * @return An integer representing the column number, or -1
+ * if none is available.
+ * @see org.xml.sax.Locator#getColumnNumber
+ */
+ public int getColumnNumber ()
+ {
+ return this.columnNumber;
+ }
+
+
+
+ //////////////////////////////////////////////////////////////////////
+ // Internal state.
+ //////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * @serial The public identifier, or null.
+ * @see #getPublicId
+ */
+ private String publicId;
+
+
+ /**
+ * @serial The system identifier, or null.
+ * @see #getSystemId
+ */
+ private String systemId;
+
+
+ /**
+ * @serial The line number, or -1.
+ * @see #getLineNumber
+ */
+ private int lineNumber;
+
+
+ /**
+ * @serial The column number, or -1.
+ * @see #getColumnNumber
+ */
+ private int columnNumber;
+
+}
+
+// end of SAXParseException.java
diff --git a/libjava/org/xml/sax/XMLFilter.java b/libjava/org/xml/sax/XMLFilter.java
index b10e8647ff0..eaca11ca321 100644
--- a/libjava/org/xml/sax/XMLFilter.java
+++ b/libjava/org/xml/sax/XMLFilter.java
@@ -1,65 +1,67 @@
-// XMLFilter.java - filter SAX2 events.
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the Public Domain.
-
-// $Id: XMLFilter.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-
-package org.xml.sax;
-
-
-/**
- * Interface for an XML filter.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>An XML filter is like an XML reader, except that it obtains its
- * events from another XML reader rather than a primary source like
- * an XML document or database. Filters can modify a stream of
- * events as they pass on to the final application.</p>
- *
- * <p>The XMLFilterImpl helper class provides a convenient base
- * for creating SAX2 filters, by passing on all {@link org.xml.sax.EntityResolver
- * EntityResolver}, {@link org.xml.sax.DTDHandler DTDHandler},
- * {@link org.xml.sax.ContentHandler ContentHandler} and {@link org.xml.sax.ErrorHandler
- * ErrorHandler} events automatically.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.helpers.XMLFilterImpl
- */
-public interface XMLFilter extends XMLReader
-{
-
- /**
- * Set the parent reader.
- *
- * <p>This method allows the application to link the filter to
- * a parent reader (which may be another filter). The argument
- * may not be null.</p>
- *
- * @param parent The parent reader.
- */
- public abstract void setParent (XMLReader parent);
-
-
- /**
- * Get the parent reader.
- *
- * <p>This method allows the application to query the parent
- * reader (which may be another filter). It is generally a
- * bad idea to perform any operations on the parent reader
- * directly: they should all pass through this filter.</p>
- *
- * @return The parent filter, or null if none has been set.
- */
- public abstract XMLReader getParent ();
-
-}
-
-// end of XMLFilter.java
+// XMLFilter.java - filter SAX2 events.
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the Public Domain.
+
+// $Id: XMLFilter.java,v 1.3.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+
+package org.xml.sax;
+
+
+/**
+ * Interface for an XML filter.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>An XML filter is like an XML reader, except that it obtains its
+ * events from another XML reader rather than a primary source like
+ * an XML document or database. Filters can modify a stream of
+ * events as they pass on to the final application.</p>
+ *
+ * <p>The XMLFilterImpl helper class provides a convenient base
+ * for creating SAX2 filters, by passing on all {@link org.xml.sax.EntityResolver
+ * EntityResolver}, {@link org.xml.sax.DTDHandler DTDHandler},
+ * {@link org.xml.sax.ContentHandler ContentHandler} and {@link org.xml.sax.ErrorHandler
+ * ErrorHandler} events automatically.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.helpers.XMLFilterImpl
+ */
+public interface XMLFilter extends XMLReader
+{
+
+ /**
+ * Set the parent reader.
+ *
+ * <p>This method allows the application to link the filter to
+ * a parent reader (which may be another filter). The argument
+ * may not be null.</p>
+ *
+ * @param parent The parent reader.
+ */
+ public abstract void setParent (XMLReader parent);
+
+
+ /**
+ * Get the parent reader.
+ *
+ * <p>This method allows the application to query the parent
+ * reader (which may be another filter). It is generally a
+ * bad idea to perform any operations on the parent reader
+ * directly: they should all pass through this filter.</p>
+ *
+ * @return The parent filter, or null if none has been set.
+ */
+ public abstract XMLReader getParent ();
+
+}
+
+// end of XMLFilter.java
diff --git a/libjava/org/xml/sax/XMLReader.java b/libjava/org/xml/sax/XMLReader.java
index 26e382b9fa9..23f3daf3a9f 100644
--- a/libjava/org/xml/sax/XMLReader.java
+++ b/libjava/org/xml/sax/XMLReader.java
@@ -1,415 +1,398 @@
-// XMLReader.java - read an XML document.
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the Public Domain.
-
-// $Id: XMLReader.java,v 1.1 2000/10/02 02:43:17 sboag Exp $
-
-package org.xml.sax;
-
-import java.io.IOException;
-
-
-/**
- * Interface for reading an XML document using callbacks.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p><strong>Note:</strong> despite its name, this interface does
- * <em>not</em> extend the standard Java {@link java.io.Reader Reader}
- * interface, because reading XML is a fundamentally different activity
- * than reading character data.</p>
- *
- * <p>XMLReader is the interface that an XML parser's SAX2 driver must
- * implement. This interface allows an application to set and
- * query features and properties in the parser, to register
- * event handlers for document processing, and to initiate
- * a document parse.</p>
- *
- * <p>All SAX interfaces are assumed to be synchronous: the
- * {@link #parse parse} methods must not return until parsing
- * is complete, and readers must wait for an event-handler callback
- * to return before reporting the next event.</p>
- *
- * <p>This interface replaces the (now deprecated) SAX 1.0 {@link
- * org.xml.sax.Parser Parser} interface. The XMLReader interface
- * contains two important enhancements over the old Parser
- * interface:</p>
- *
- * <ol>
- * <li>it adds a standard way to query and set features and
- * properties; and</li>
- * <li>it adds Namespace support, which is required for many
- * higher-level XML standards.</li>
- * </ol>
- *
- * <p>There are adapters available to convert a SAX1 Parser to
- * a SAX2 XMLReader and vice-versa.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.XMLFilter
- * @see org.xml.sax.helpers.ParserAdapter
- * @see org.xml.sax.helpers.XMLReaderAdapter
- */
-public interface XMLReader
-{
-
-
- ////////////////////////////////////////////////////////////////////
- // Configuration.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Look up the value of a feature.
- *
- * <p>The feature name is any fully-qualified URI. It is
- * possible for an XMLReader to recognize a feature name but
- * to be unable to return its value; this is especially true
- * in the case of an adapter for a SAX1 Parser, which has
- * no way of knowing whether the underlying parser is
- * performing validation or expanding external entities.</p>
- *
- * <p>All XMLReaders are required to recognize the
- * http://xml.org/sax/features/namespaces and the
- * http://xml.org/sax/features/namespace-prefixes feature names.</p>
- *
- * <p>Some feature values may be available only in specific
- * contexts, such as before, during, or after a parse.</p>
- *
- * <p>Typical usage is something like this:</p>
- *
- * <pre>
- * XMLReader r = new MySAXDriver();
- *
- * // try to activate validation
- * try {
- * r.setFeature("http://xml.org/sax/features/validation", true);
- * } catch (SAXException e) {
- * System.err.println("Cannot activate validation.");
- * }
- *
- * // register event handlers
- * r.setContentHandler(new MyContentHandler());
- * r.setErrorHandler(new MyErrorHandler());
- *
- * // parse the first document
- * try {
- * r.parse("http://www.foo.com/mydoc.xml");
- * } catch (IOException e) {
- * System.err.println("I/O exception reading XML document");
- * } catch (SAXException e) {
- * System.err.println("XML exception reading document.");
- * }
- * </pre>
- *
- * <p>Implementors are free (and encouraged) to invent their own features,
- * using names built on their own URIs.</p>
- *
- * @param name The feature name, which is a fully-qualified URI.
- * @return The current state of the feature (true or false).
- * @exception org.xml.sax.SAXNotRecognizedException When the
- * XMLReader does not recognize the feature name.
- * @exception org.xml.sax.SAXNotSupportedException When the
- * XMLReader recognizes the feature name but
- * cannot determine its value at this time.
- * @see #setFeature
- */
- public boolean getFeature (String name)
- throws SAXNotRecognizedException, SAXNotSupportedException;
-
-
- /**
- * Set the state of a feature.
- *
- * <p>The feature name is any fully-qualified URI. It is
- * possible for an XMLReader to recognize a feature name but
- * to be unable to set its value; this is especially true
- * in the case of an adapter for a SAX1 {@link org.xml.sax.Parser Parser},
- * which has no way of affecting whether the underlying parser is
- * validating, for example.</p>
- *
- * <p>All XMLReaders are required to support setting
- * http://xml.org/sax/features/namespaces to true and
- * http://xml.org/sax/features/namespace-prefixes to false.</p>
- *
- * <p>Some feature values may be immutable or mutable only
- * in specific contexts, such as before, during, or after
- * a parse.</p>
- *
- * @param name The feature name, which is a fully-qualified URI.
- * @param state The requested state of the feature (true or false).
- * @exception org.xml.sax.SAXNotRecognizedException When the
- * XMLReader does not recognize the feature name.
- * @exception org.xml.sax.SAXNotSupportedException When the
- * XMLReader recognizes the feature name but
- * cannot set the requested value.
- * @see #getFeature
- */
- public void setFeature (String name, boolean value)
- throws SAXNotRecognizedException, SAXNotSupportedException;
-
-
- /**
- * Look up the value of a property.
- *
- * <p>The property name is any fully-qualified URI. It is
- * possible for an XMLReader to recognize a property name but
- * to be unable to return its state; this is especially true
- * in the case of an adapter for a SAX1 {@link org.xml.sax.Parser
- * Parser}.</p>
- *
- * <p>XMLReaders are not required to recognize any specific
- * property names, though an initial core set is documented for
- * SAX2.</p>
- *
- * <p>Some property values may be available only in specific
- * contexts, such as before, during, or after a parse.</p>
- *
- * <p>Implementors are free (and encouraged) to invent their own properties,
- * using names built on their own URIs.</p>
- *
- * @param name The property name, which is a fully-qualified URI.
- * @return The current value of the property.
- * @exception org.xml.sax.SAXNotRecognizedException When the
- * XMLReader does not recognize the property name.
- * @exception org.xml.sax.SAXNotSupportedException When the
- * XMLReader recognizes the property name but
- * cannot determine its value at this time.
- * @see #setProperty
- */
- public Object getProperty (String name)
- throws SAXNotRecognizedException, SAXNotSupportedException;
-
-
- /**
- * Set the value of a property.
- *
- * <p>The property name is any fully-qualified URI. It is
- * possible for an XMLReader to recognize a property name but
- * to be unable to set its value; this is especially true
- * in the case of an adapter for a SAX1 {@link org.xml.sax.Parser
- * Parser}.</p>
- *
- * <p>XMLReaders are not required to recognize setting
- * any specific property names, though a core set is provided with
- * SAX2.</p>
- *
- * <p>Some property values may be immutable or mutable only
- * in specific contexts, such as before, during, or after
- * a parse.</p>
- *
- * <p>This method is also the standard mechanism for setting
- * extended handlers.</p>
- *
- * @param name The property name, which is a fully-qualified URI.
- * @param state The requested value for the property.
- * @exception org.xml.sax.SAXNotRecognizedException When the
- * XMLReader does not recognize the property name.
- * @exception org.xml.sax.SAXNotSupportedException When the
- * XMLReader recognizes the property name but
- * cannot set the requested value.
- */
- public void setProperty (String name, Object value)
- throws SAXNotRecognizedException, SAXNotSupportedException;
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Event handlers.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Allow an application to register an entity resolver.
- *
- * <p>If the application does not register an entity resolver,
- * the XMLReader will perform its own default resolution.</p>
- *
- * <p>Applications may register a new or different resolver in the
- * middle of a parse, and the SAX parser must begin using the new
- * resolver immediately.</p>
- *
- * @param resolver The entity resolver.
- * @exception java.lang.NullPointerException If the resolver
- * argument is null.
- * @see #getEntityResolver
- */
- public void setEntityResolver (EntityResolver resolver);
-
-
- /**
- * Return the current entity resolver.
- *
- * @return The current entity resolver, or null if none
- * has been registered.
- * @see #setEntityResolver
- */
- public EntityResolver getEntityResolver ();
-
-
- /**
- * Allow an application to register a DTD event handler.
- *
- * <p>If the application does not register a DTD handler, all DTD
- * events reported by the SAX parser will be silently ignored.</p>
- *
- * <p>Applications may register a new or different handler in the
- * middle of a parse, and the SAX parser must begin using the new
- * handler immediately.</p>
- *
- * @param handler The DTD handler.
- * @exception java.lang.NullPointerException If the handler
- * argument is null.
- * @see #getDTDHandler
- */
- public void setDTDHandler (DTDHandler handler);
-
-
- /**
- * Return the current DTD handler.
- *
- * @return The current DTD handler, or null if none
- * has been registered.
- * @see #setDTDHandler
- */
- public DTDHandler getDTDHandler ();
-
-
- /**
- * Allow an application to register a content event handler.
- *
- * <p>If the application does not register a content handler, all
- * content events reported by the SAX parser will be silently
- * ignored.</p>
- *
- * <p>Applications may register a new or different handler in the
- * middle of a parse, and the SAX parser must begin using the new
- * handler immediately.</p>
- *
- * @param handler The content handler.
- * @exception java.lang.NullPointerException If the handler
- * argument is null.
- * @see #getContentHandler
- */
- public void setContentHandler (ContentHandler handler);
-
-
- /**
- * Return the current content handler.
- *
- * @return The current content handler, or null if none
- * has been registered.
- * @see #setContentHandler
- */
- public ContentHandler getContentHandler ();
-
-
- /**
- * Allow an application to register an error event handler.
- *
- * <p>If the application does not register an error handler, all
- * error events reported by the SAX parser will be silently
- * ignored; however, normal processing may not continue. It is
- * highly recommended that all SAX applications implement an
- * error handler to avoid unexpected bugs.</p>
- *
- * <p>Applications may register a new or different handler in the
- * middle of a parse, and the SAX parser must begin using the new
- * handler immediately.</p>
- *
- * @param handler The error handler.
- * @exception java.lang.NullPointerException If the handler
- * argument is null.
- * @see #getErrorHandler
- */
- public void setErrorHandler (ErrorHandler handler);
-
-
- /**
- * Return the current error handler.
- *
- * @return The current error handler, or null if none
- * has been registered.
- * @see #setErrorHandler
- */
- public ErrorHandler getErrorHandler ();
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Parsing.
- ////////////////////////////////////////////////////////////////////
-
- /**
- * Parse an XML document.
- *
- * <p>The application can use this method to instruct the XML
- * reader to begin parsing an XML document from any valid input
- * source (a character stream, a byte stream, or a URI).</p>
- *
- * <p>Applications may not invoke this method while a parse is in
- * progress (they should create a new XMLReader instead for each
- * nested XML document). Once a parse is complete, an
- * application may reuse the same XMLReader object, possibly with a
- * different input source.</p>
- *
- * <p>During the parse, the XMLReader will provide information
- * about the XML document through the registered event
- * handlers.</p>
- *
- * <p>This method is synchronous: it will not return until parsing
- * has ended. If a client application wants to terminate
- * parsing early, it should throw an exception.</p>
- *
- * @param source The input source for the top-level of the
- * XML document.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @exception java.io.IOException An IO exception from the parser,
- * possibly from a byte stream or character stream
- * supplied by the application.
- * @see org.xml.sax.InputSource
- * @see #parse(java.lang.String)
- * @see #setEntityResolver
- * @see #setDTDHandler
- * @see #setContentHandler
- * @see #setErrorHandler
- */
- public void parse (InputSource input)
- throws IOException, SAXException;
-
-
- /**
- * Parse an XML document from a system identifier (URI).
- *
- * <p>This method is a shortcut for the common case of reading a
- * document from a system identifier. It is the exact
- * equivalent of the following:</p>
- *
- * <pre>
- * parse(new InputSource(systemId));
- * </pre>
- *
- * <p>If the system identifier is a URL, it must be fully resolved
- * by the application before it is passed to the parser.</p>
- *
- * @param systemId The system identifier (URI).
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @exception java.io.IOException An IO exception from the parser,
- * possibly from a byte stream or character stream
- * supplied by the application.
- * @see #parse(org.xml.sax.InputSource)
- */
- public void parse (String systemId)
- throws IOException, SAXException;
-
-}
-
-// end of XMLReader.java
+// XMLReader.java - read an XML document.
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the Public Domain.
+
+// $Id: XMLReader.java,v 1.3.2.5 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax;
+
+import java.io.IOException;
+
+
+/**
+ * Interface for reading an XML document using callbacks.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p><strong>Note:</strong> despite its name, this interface does
+ * <em>not</em> extend the standard Java {@link java.io.Reader Reader}
+ * interface, because reading XML is a fundamentally different activity
+ * than reading character data.</p>
+ *
+ * <p>XMLReader is the interface that an XML parser's SAX2 driver must
+ * implement. This interface allows an application to set and
+ * query features and properties in the parser, to register
+ * event handlers for document processing, and to initiate
+ * a document parse.</p>
+ *
+ * <p>All SAX interfaces are assumed to be synchronous: the
+ * {@link #parse parse} methods must not return until parsing
+ * is complete, and readers must wait for an event-handler callback
+ * to return before reporting the next event.</p>
+ *
+ * <p>This interface replaces the (now deprecated) SAX 1.0 {@link
+ * org.xml.sax.Parser Parser} interface. The XMLReader interface
+ * contains two important enhancements over the old Parser
+ * interface (as well as some minor ones):</p>
+ *
+ * <ol>
+ * <li>it adds a standard way to query and set features and
+ * properties; and</li>
+ * <li>it adds Namespace support, which is required for many
+ * higher-level XML standards.</li>
+ * </ol>
+ *
+ * <p>There are adapters available to convert a SAX1 Parser to
+ * a SAX2 XMLReader and vice-versa.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.XMLFilter
+ * @see org.xml.sax.helpers.ParserAdapter
+ * @see org.xml.sax.helpers.XMLReaderAdapter
+ */
+public interface XMLReader
+{
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Configuration.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Look up the value of a feature flag.
+ *
+ * <p>The feature name is any fully-qualified URI. It is
+ * possible for an XMLReader to recognize a feature name but
+ * temporarily be unable to return its value.
+ * Some feature values may be available only in specific
+ * contexts, such as before, during, or after a parse.
+ * Also, some feature values may not be programmatically accessible.
+ * (In the case of an adapter for SAX1 {@link Parser}, there is no
+ * implementation-independent way to expose whether the underlying
+ * parser is performing validation, expanding external entities,
+ * and so forth.) </p>
+ *
+ * <p>All XMLReaders are required to recognize the
+ * http://xml.org/sax/features/namespaces and the
+ * http://xml.org/sax/features/namespace-prefixes feature names.</p>
+ *
+ * <p>Typical usage is something like this:</p>
+ *
+ * <pre>
+ * XMLReader r = new MySAXDriver();
+ *
+ * // try to activate validation
+ * try {
+ * r.setFeature("http://xml.org/sax/features/validation", true);
+ * } catch (SAXException e) {
+ * System.err.println("Cannot activate validation.");
+ * }
+ *
+ * // register event handlers
+ * r.setContentHandler(new MyContentHandler());
+ * r.setErrorHandler(new MyErrorHandler());
+ *
+ * // parse the first document
+ * try {
+ * r.parse("http://www.foo.com/mydoc.xml");
+ * } catch (IOException e) {
+ * System.err.println("I/O exception reading XML document");
+ * } catch (SAXException e) {
+ * System.err.println("XML exception reading document.");
+ * }
+ * </pre>
+ *
+ * <p>Implementors are free (and encouraged) to invent their own features,
+ * using names built on their own URIs.</p>
+ *
+ * @param name The feature name, which is a fully-qualified URI.
+ * @return The current value of the feature (true or false).
+ * @exception org.xml.sax.SAXNotRecognizedException If the feature
+ * value can't be assigned or retrieved.
+ * @exception org.xml.sax.SAXNotSupportedException When the
+ * XMLReader recognizes the feature name but
+ * cannot determine its value at this time.
+ * @see #setFeature
+ */
+ public boolean getFeature (String name)
+ throws SAXNotRecognizedException, SAXNotSupportedException;
+
+
+ /**
+ * Set the value of a feature flag.
+ *
+ * <p>The feature name is any fully-qualified URI. It is
+ * possible for an XMLReader to expose a feature value but
+ * to be unable to change the current value.
+ * Some feature values may be immutable or mutable only
+ * in specific contexts, such as before, during, or after
+ * a parse.</p>
+ *
+ * <p>All XMLReaders are required to support setting
+ * http://xml.org/sax/features/namespaces to true and
+ * http://xml.org/sax/features/namespace-prefixes to false.</p>
+ *
+ * @param name The feature name, which is a fully-qualified URI.
+ * @param value The requested value of the feature (true or false).
+ * @exception org.xml.sax.SAXNotRecognizedException If the feature
+ * value can't be assigned or retrieved.
+ * @exception org.xml.sax.SAXNotSupportedException When the
+ * XMLReader recognizes the feature name but
+ * cannot set the requested value.
+ * @see #getFeature
+ */
+ public void setFeature (String name, boolean value)
+ throws SAXNotRecognizedException, SAXNotSupportedException;
+
+
+ /**
+ * Look up the value of a property.
+ *
+ * <p>The property name is any fully-qualified URI. It is
+ * possible for an XMLReader to recognize a property name but
+ * temporarily be unable to return its value.
+ * Some property values may be available only in specific
+ * contexts, such as before, during, or after a parse.</p>
+ *
+ * <p>XMLReaders are not required to recognize any specific
+ * property names, though an initial core set is documented for
+ * SAX2.</p>
+ *
+ * <p>Implementors are free (and encouraged) to invent their own properties,
+ * using names built on their own URIs.</p>
+ *
+ * @param name The property name, which is a fully-qualified URI.
+ * @return The current value of the property.
+ * @exception org.xml.sax.SAXNotRecognizedException If the property
+ * value can't be assigned or retrieved.
+ * @exception org.xml.sax.SAXNotSupportedException When the
+ * XMLReader recognizes the property name but
+ * cannot determine its value at this time.
+ * @see #setProperty
+ */
+ public Object getProperty (String name)
+ throws SAXNotRecognizedException, SAXNotSupportedException;
+
+
+ /**
+ * Set the value of a property.
+ *
+ * <p>The property name is any fully-qualified URI. It is
+ * possible for an XMLReader to recognize a property name but
+ * to be unable to change the current value.
+ * Some property values may be immutable or mutable only
+ * in specific contexts, such as before, during, or after
+ * a parse.</p>
+ *
+ * <p>XMLReaders are not required to recognize setting
+ * any specific property names, though a core set is defined by
+ * SAX2.</p>
+ *
+ * <p>This method is also the standard mechanism for setting
+ * extended handlers.</p>
+ *
+ * @param name The property name, which is a fully-qualified URI.
+ * @param value The requested value for the property.
+ * @exception org.xml.sax.SAXNotRecognizedException If the property
+ * value can't be assigned or retrieved.
+ * @exception org.xml.sax.SAXNotSupportedException When the
+ * XMLReader recognizes the property name but
+ * cannot set the requested value.
+ */
+ public void setProperty (String name, Object value)
+ throws SAXNotRecognizedException, SAXNotSupportedException;
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Event handlers.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Allow an application to register an entity resolver.
+ *
+ * <p>If the application does not register an entity resolver,
+ * the XMLReader will perform its own default resolution.</p>
+ *
+ * <p>Applications may register a new or different resolver in the
+ * middle of a parse, and the SAX parser must begin using the new
+ * resolver immediately.</p>
+ *
+ * @param resolver The entity resolver.
+ * @see #getEntityResolver
+ */
+ public void setEntityResolver (EntityResolver resolver);
+
+
+ /**
+ * Return the current entity resolver.
+ *
+ * @return The current entity resolver, or null if none
+ * has been registered.
+ * @see #setEntityResolver
+ */
+ public EntityResolver getEntityResolver ();
+
+
+ /**
+ * Allow an application to register a DTD event handler.
+ *
+ * <p>If the application does not register a DTD handler, all DTD
+ * events reported by the SAX parser will be silently ignored.</p>
+ *
+ * <p>Applications may register a new or different handler in the
+ * middle of a parse, and the SAX parser must begin using the new
+ * handler immediately.</p>
+ *
+ * @param handler The DTD handler.
+ * @see #getDTDHandler
+ */
+ public void setDTDHandler (DTDHandler handler);
+
+
+ /**
+ * Return the current DTD handler.
+ *
+ * @return The current DTD handler, or null if none
+ * has been registered.
+ * @see #setDTDHandler
+ */
+ public DTDHandler getDTDHandler ();
+
+
+ /**
+ * Allow an application to register a content event handler.
+ *
+ * <p>If the application does not register a content handler, all
+ * content events reported by the SAX parser will be silently
+ * ignored.</p>
+ *
+ * <p>Applications may register a new or different handler in the
+ * middle of a parse, and the SAX parser must begin using the new
+ * handler immediately.</p>
+ *
+ * @param handler The content handler.
+ * @see #getContentHandler
+ */
+ public void setContentHandler (ContentHandler handler);
+
+
+ /**
+ * Return the current content handler.
+ *
+ * @return The current content handler, or null if none
+ * has been registered.
+ * @see #setContentHandler
+ */
+ public ContentHandler getContentHandler ();
+
+
+ /**
+ * Allow an application to register an error event handler.
+ *
+ * <p>If the application does not register an error handler, all
+ * error events reported by the SAX parser will be silently
+ * ignored; however, normal processing may not continue. It is
+ * highly recommended that all SAX applications implement an
+ * error handler to avoid unexpected bugs.</p>
+ *
+ * <p>Applications may register a new or different handler in the
+ * middle of a parse, and the SAX parser must begin using the new
+ * handler immediately.</p>
+ *
+ * @param handler The error handler.
+ * @see #getErrorHandler
+ */
+ public void setErrorHandler (ErrorHandler handler);
+
+
+ /**
+ * Return the current error handler.
+ *
+ * @return The current error handler, or null if none
+ * has been registered.
+ * @see #setErrorHandler
+ */
+ public ErrorHandler getErrorHandler ();
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Parsing.
+ ////////////////////////////////////////////////////////////////////
+
+ /**
+ * Parse an XML document.
+ *
+ * <p>The application can use this method to instruct the XML
+ * reader to begin parsing an XML document from any valid input
+ * source (a character stream, a byte stream, or a URI).</p>
+ *
+ * <p>Applications may not invoke this method while a parse is in
+ * progress (they should create a new XMLReader instead for each
+ * nested XML document). Once a parse is complete, an
+ * application may reuse the same XMLReader object, possibly with a
+ * different input source.</p>
+ *
+ * <p>During the parse, the XMLReader will provide information
+ * about the XML document through the registered event
+ * handlers.</p>
+ *
+ * <p>This method is synchronous: it will not return until parsing
+ * has ended. If a client application wants to terminate
+ * parsing early, it should throw an exception.</p>
+ *
+ * @param source The input source for the top-level of the
+ * XML document.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @exception java.io.IOException An IO exception from the parser,
+ * possibly from a byte stream or character stream
+ * supplied by the application.
+ * @see org.xml.sax.InputSource
+ * @see #parse(java.lang.String)
+ * @see #setEntityResolver
+ * @see #setDTDHandler
+ * @see #setContentHandler
+ * @see #setErrorHandler
+ */
+ public void parse (InputSource input)
+ throws IOException, SAXException;
+
+
+ /**
+ * Parse an XML document from a system identifier (URI).
+ *
+ * <p>This method is a shortcut for the common case of reading a
+ * document from a system identifier. It is the exact
+ * equivalent of the following:</p>
+ *
+ * <pre>
+ * parse(new InputSource(systemId));
+ * </pre>
+ *
+ * <p>If the system identifier is a URL, it must be fully resolved
+ * by the application before it is passed to the parser.</p>
+ *
+ * @param systemId The system identifier (URI).
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @exception java.io.IOException An IO exception from the parser,
+ * possibly from a byte stream or character stream
+ * supplied by the application.
+ * @see #parse(org.xml.sax.InputSource)
+ */
+ public void parse (String systemId)
+ throws IOException, SAXException;
+
+}
diff --git a/libjava/org/xml/sax/ext/DeclHandler.java b/libjava/org/xml/sax/ext/DeclHandler.java
index 1fede3428de..742f4648c90 100644
--- a/libjava/org/xml/sax/ext/DeclHandler.java
+++ b/libjava/org/xml/sax/ext/DeclHandler.java
@@ -1,131 +1,143 @@
-// DeclHandler.java - Optional handler for DTD declaration events.
-// Public Domain: no warranty.
-// $Id: DeclHandler.java,v 1.1 2000/10/02 02:43:19 sboag Exp $
-
-package org.xml.sax.ext;
-
-import org.xml.sax.SAXException;
-
-
-/**
- * SAX2 extension handler for DTD declaration events.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This is an optional extension handler for SAX2 to provide
- * information about DTD declarations in an XML document. XML
- * readers are not required to support this handler.</p>
- *
- * <p>Note that data-related DTD declarations (unparsed entities and
- * notations) are already reported through the {@link
- * org.xml.sax.DTDHandler DTDHandler} interface.</p>
- *
- * <p>If you are using the declaration handler together with a lexical
- * handler, all of the events will occur between the
- * {@link org.xml.sax.ext.LexicalHandler#startDTD startDTD} and the
- * {@link org.xml.sax.ext.LexicalHandler#endDTD endDTD} events.</p>
- *
- * <p>To set the DeclHandler for an XML reader, use the
- * {@link org.xml.sax.XMLReader#setProperty setProperty} method
- * with the propertyId "http://xml.org/sax/handlers/DeclHandler".
- * If the reader does not support declaration events, it will throw a
- * {@link org.xml.sax.SAXNotRecognizedException SAXNotRecognizedException}
- * or a
- * {@link org.xml.sax.SAXNotSupportedException SAXNotSupportedException}
- * when you attempt to register the handler.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0beta
- * @see org.xml.sax.XMLReader
- */
-public interface DeclHandler
-{
-
- /**
- * Report an element type declaration.
- *
- * <p>The content model will consist of the string "EMPTY", the
- * string "ANY", or a parenthesised group, optionally followed
- * by an occurrence indicator. The model will be normalized so
- * that all whitespace is removed,and will include the enclosing
- * parentheses.</p>
- *
- * @param name The element type name.
- * @param model The content model as a normalized string.
- * @exception SAXException The application may raise an exception.
- */
- public abstract void elementDecl (String name, String model)
- throws SAXException;
-
-
- /**
- * Report an attribute type declaration.
- *
- * <p>Only the effective (first) declaration for an attribute will
- * be reported. The type will be one of the strings "CDATA",
- * "ID", "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY",
- * "ENTITIES", or "NOTATION", or a parenthesized token group with
- * the separator "|" and all whitespace removed.</p>
- *
- * @param eName The name of the associated element.
- * @param aName The name of the attribute.
- * @param type A string representing the attribute type.
- * @param valueDefault A string representing the attribute default
- * ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if
- * none of these applies.
- * @param value A string representing the attribute's default value,
- * or null if there is none.
- * @exception SAXException The application may raise an exception.
- */
- public abstract void attributeDecl (String eName,
- String aName,
- String type,
- String valueDefault,
- String value)
- throws SAXException;
-
-
- /**
- * Report an internal entity declaration.
- *
- * <p>Only the effective (first) declaration for each entity
- * will be reported.</p>
- *
- * @param name The name of the entity. If it is a parameter
- * entity, the name will begin with '%'.
- * @param value The replacement text of the entity.
- * @exception SAXException The application may raise an exception.
- * @see #externalEntityDecl
- * @see org.xml.sax.DTDHandler#unparsedEntityDecl
- */
- public abstract void internalEntityDecl (String name, String value)
- throws SAXException;
-
-
- /**
- * Report a parsed external entity declaration.
- *
- * <p>Only the effective (first) declaration for each entity
- * will be reported.</p>
- *
- * @param name The name of the entity. If it is a parameter
- * entity, the name will begin with '%'.
- * @param publicId The declared public identifier of the entity, or
- * null if none was declared.
- * @param systemId The declared system identifier of the entity.
- * @exception SAXException The application may raise an exception.
- * @see #internalEntityDecl
- * @see org.xml.sax.DTDHandler#unparsedEntityDecl
- */
- public abstract void externalEntityDecl (String name, String publicId,
- String systemId)
- throws SAXException;
-
-}
-
-// end of DeclHandler.java
+// DeclHandler.java - Optional handler for DTD declaration events.
+// http://www.saxproject.org
+// Public Domain: no warranty.
+// $Id: DeclHandler.java,v 1.2.2.5 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax.ext;
+
+import org.xml.sax.SAXException;
+
+
+/**
+ * SAX2 extension handler for DTD declaration events.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This is an optional extension handler for SAX2 to provide more
+ * complete information about DTD declarations in an XML document.
+ * XML readers are not required to recognize this handler, and it
+ * is not part of core-only SAX2 distributions.</p>
+ *
+ * <p>Note that data-related DTD declarations (unparsed entities and
+ * notations) are already reported through the {@link
+ * org.xml.sax.DTDHandler DTDHandler} interface.</p>
+ *
+ * <p>If you are using the declaration handler together with a lexical
+ * handler, all of the events will occur between the
+ * {@link org.xml.sax.ext.LexicalHandler#startDTD startDTD} and the
+ * {@link org.xml.sax.ext.LexicalHandler#endDTD endDTD} events.</p>
+ *
+ * <p>To set the DeclHandler for an XML reader, use the
+ * {@link org.xml.sax.XMLReader#setProperty setProperty} method
+ * with the property name
+ * <code>http://xml.org/sax/properties/declaration-handler</code>
+ * and an object implementing this interface (or null) as the value.
+ * If the reader does not report declaration events, it will throw a
+ * {@link org.xml.sax.SAXNotRecognizedException SAXNotRecognizedException}
+ * when you attempt to register the handler.</p>
+ *
+ * @since SAX 2.0 (extensions 1.0)
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ */
+public interface DeclHandler
+{
+
+ /**
+ * Report an element type declaration.
+ *
+ * <p>The content model will consist of the string "EMPTY", the
+ * string "ANY", or a parenthesised group, optionally followed
+ * by an occurrence indicator. The model will be normalized so
+ * that all parameter entities are fully resolved and all whitespace
+ * is removed,and will include the enclosing parentheses. Other
+ * normalization (such as removing redundant parentheses or
+ * simplifying occurrence indicators) is at the discretion of the
+ * parser.</p>
+ *
+ * @param name The element type name.
+ * @param model The content model as a normalized string.
+ * @exception SAXException The application may raise an exception.
+ */
+ public abstract void elementDecl (String name, String model)
+ throws SAXException;
+
+
+ /**
+ * Report an attribute type declaration.
+ *
+ * <p>Only the effective (first) declaration for an attribute will
+ * be reported. The type will be one of the strings "CDATA",
+ * "ID", "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY",
+ * "ENTITIES", a parenthesized token group with
+ * the separator "|" and all whitespace removed, or the word
+ * "NOTATION" followed by a space followed by a parenthesized
+ * token group with all whitespace removed.</p>
+ *
+ * <p>The value will be the value as reported to applications,
+ * appropriately normalized and with entity and character
+ * references expanded. </p>
+ *
+ * @param eName The name of the associated element.
+ * @param aName The name of the attribute.
+ * @param type A string representing the attribute type.
+ * @param mode A string representing the attribute defaulting mode
+ * ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if
+ * none of these applies.
+ * @param value A string representing the attribute's default value,
+ * or null if there is none.
+ * @exception SAXException The application may raise an exception.
+ */
+ public abstract void attributeDecl (String eName,
+ String aName,
+ String type,
+ String mode,
+ String value)
+ throws SAXException;
+
+
+ /**
+ * Report an internal entity declaration.
+ *
+ * <p>Only the effective (first) declaration for each entity
+ * will be reported. All parameter entities in the value
+ * will be expanded, but general entities will not.</p>
+ *
+ * @param name The name of the entity. If it is a parameter
+ * entity, the name will begin with '%'.
+ * @param value The replacement text of the entity.
+ * @exception SAXException The application may raise an exception.
+ * @see #externalEntityDecl
+ * @see org.xml.sax.DTDHandler#unparsedEntityDecl
+ */
+ public abstract void internalEntityDecl (String name, String value)
+ throws SAXException;
+
+
+ /**
+ * Report a parsed external entity declaration.
+ *
+ * <p>Only the effective (first) declaration for each entity
+ * will be reported.</p>
+ *
+ * @param name The name of the entity. If it is a parameter
+ * entity, the name will begin with '%'.
+ * @param publicId The declared public identifier of the entity, or
+ * null if none was declared.
+ * @param systemId The declared system identifier of the entity.
+ * @exception SAXException The application may raise an exception.
+ * @see #internalEntityDecl
+ * @see org.xml.sax.DTDHandler#unparsedEntityDecl
+ */
+ public abstract void externalEntityDecl (String name, String publicId,
+ String systemId)
+ throws SAXException;
+
+}
+
+// end of DeclHandler.java
diff --git a/libjava/org/xml/sax/ext/LexicalHandler.java b/libjava/org/xml/sax/ext/LexicalHandler.java
index 4ac1617ca00..15b2557c504 100644
--- a/libjava/org/xml/sax/ext/LexicalHandler.java
+++ b/libjava/org/xml/sax/ext/LexicalHandler.java
@@ -1,161 +1,212 @@
-// LexicalHandler.java - optional handler for lexical parse events.
-// Public Domain: no warranty.
-// $Id: LexicalHandler.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
-
-package org.xml.sax.ext;
-
-import org.xml.sax.SAXException;
-
-/**
- * SAX2 extension handler for lexical events.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This is an optional extension handler for SAX2 to provide
- * lexical information about an XML document, such as comments
- * and CDATA section boundaries; XML readers are not required to
- * support this handler.</p>
- *
- * <p>The events in the lexical handler apply to the entire document,
- * not just to the document element, and all lexical handler events
- * must appear between the content handler's startDocument and
- * endDocument events.</p>
- *
- * <p>To set the LexicalHandler for an XML reader, use the
- * {@link org.xml.sax.XMLReader#setProperty setProperty} method
- * with the propertyId "http://xml.org/sax/handlers/LexicalHandler".
- * If the reader does not support lexical events, it will throw a
- * {@link org.xml.sax.SAXNotRecognizedException SAXNotRecognizedException}
- * or a
- * {@link org.xml.sax.SAXNotSupportedException SAXNotSupportedException}
- * when you attempt to register the handler.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0beta
- * @see org.xml.sax.XMLReader#setProperty
- * @see org.xml.sax.SAXNotRecognizedException
- * @see org.xml.sax.SAXNotSupportedException
- */
-public interface LexicalHandler
-{
-
- /**
- * Report the start of DTD declarations, if any.
- *
- * <p>Any declarations are assumed to be in the internal subset
- * unless otherwise indicated by a {@link #startEntity startEntity}
- * event.</p>
- *
- * <p>Note that the start/endDTD events will appear within
- * the start/endDocument events from ContentHandler and
- * before the first startElement event.</p>
- *
- * @param name The document type name.
- * @param publicId The declared public identifier for the
- * external DTD subset, or null if none was declared.
- * @param systemId The declared system identifier for the
- * external DTD subset, or null if none was declared.
- * @exception SAXException The application may raise an
- * exception.
- * @see #endDTD
- * @see #startEntity
- */
- public abstract void startDTD (String name, String publicId,
- String systemId)
- throws SAXException;
-
-
- /**
- * Report the end of DTD declarations.
- *
- * @exception SAXException The application may raise an exception.
- * @see #startDTD
- */
- public abstract void endDTD ()
- throws SAXException;
-
-
- /**
- * Report the beginning of an entity in content.
- *
- * <p><strong>NOTE:</entity> entity references in attribute
- * values -- and the start and end of the document entity --
- * are never reported.</p>
- *
- * <p>The start and end of the external DTD subset are reported
- * using the pseudo-name "[dtd]". All other events must be
- * properly nested within start/end entity events.</p>
- *
- * <p>Note that skipped entities will be reported through the
- * {@link org.xml.sax.ContentHandler#skippedEntity skippedEntity}
- * event, which is part of the ContentHandler interface.</p>
- *
- * @param name The name of the entity. If it is a parameter
- * entity, the name will begin with '%'.
- * @exception SAXException The application may raise an exception.
- * @see #endEntity
- * @see org.xml.sax.ext.DeclHandler#internalEntityDecl
- * @see org.xml.sax.ext.DeclHandler#externalEntityDecl
- */
- public abstract void startEntity (String name)
- throws SAXException;
-
-
- /**
- * Report the end of an entity.
- *
- * @param name The name of the entity that is ending.
- * @exception SAXException The application may raise an exception.
- * @see #startEntity
- */
- public abstract void endEntity (String name)
- throws SAXException;
-
-
- /**
- * Report the start of a CDATA section.
- *
- * <p>The contents of the CDATA section will be reported through
- * the regular {@link org.xml.sax.ContentHandler#characters
- * characters} event.</p>
- *
- * @exception SAXException The application may raise an exception.
- * @see #endCDATA
- */
- public abstract void startCDATA ()
- throws SAXException;
-
-
- /**
- * Report the end of a CDATA section.
- *
- * @exception SAXException The application may raise an exception.
- * @see #startCDATA
- */
- public abstract void endCDATA ()
- throws SAXException;
-
-
- /**
- * Report an XML comment anywhere in the document.
- *
- * <p>This callback will be used for comments inside or outside the
- * document element, including comments in the external DTD
- * subset (if read).</p>
- *
- * @param ch An array holding the characters in the comment.
- * @param start The starting position in the array.
- * @param length The number of characters to use from the array.
- * @exception SAXException The application may raise an exception.
- */
- public abstract void comment (char ch[], int start, int length)
- throws SAXException;
-
-}
-
-// end of LexicalHandler.java
+// LexicalHandler.java - optional handler for lexical parse events.
+// http://www.saxproject.org
+// Public Domain: no warranty.
+// $Id: LexicalHandler.java,v 1.2.2.4 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax.ext;
+
+import org.xml.sax.SAXException;
+
+/**
+ * SAX2 extension handler for lexical events.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This is an optional extension handler for SAX2 to provide
+ * lexical information about an XML document, such as comments
+ * and CDATA section boundaries.
+ * XML readers are not required to recognize this handler, and it
+ * is not part of core-only SAX2 distributions.</p>
+ *
+ * <p>The events in the lexical handler apply to the entire document,
+ * not just to the document element, and all lexical handler events
+ * must appear between the content handler's startDocument and
+ * endDocument events.</p>
+ *
+ * <p>To set the LexicalHandler for an XML reader, use the
+ * {@link org.xml.sax.XMLReader#setProperty setProperty} method
+ * with the property name
+ * <code>http://xml.org/sax/properties/lexical-handler</code>
+ * and an object implementing this interface (or null) as the value.
+ * If the reader does not report lexical events, it will throw a
+ * {@link org.xml.sax.SAXNotRecognizedException SAXNotRecognizedException}
+ * when you attempt to register the handler.</p>
+ *
+ * @since SAX 2.0 (extensions 1.0)
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ */
+public interface LexicalHandler
+{
+
+ /**
+ * Report the start of DTD declarations, if any.
+ *
+ * <p>This method is intended to report the beginning of the
+ * DOCTYPE declaration; if the document has no DOCTYPE declaration,
+ * this method will not be invoked.</p>
+ *
+ * <p>All declarations reported through
+ * {@link org.xml.sax.DTDHandler DTDHandler} or
+ * {@link org.xml.sax.ext.DeclHandler DeclHandler} events must appear
+ * between the startDTD and {@link #endDTD endDTD} events.
+ * Declarations are assumed to belong to the internal DTD subset
+ * unless they appear between {@link #startEntity startEntity}
+ * and {@link #endEntity endEntity} events. Comments and
+ * processing instructions from the DTD should also be reported
+ * between the startDTD and endDTD events, in their original
+ * order of (logical) occurrence; they are not required to
+ * appear in their correct locations relative to DTDHandler
+ * or DeclHandler events, however.</p>
+ *
+ * <p>Note that the start/endDTD events will appear within
+ * the start/endDocument events from ContentHandler and
+ * before the first
+ * {@link org.xml.sax.ContentHandler#startElement startElement}
+ * event.</p>
+ *
+ * @param name The document type name.
+ * @param publicId The declared public identifier for the
+ * external DTD subset, or null if none was declared.
+ * @param systemId The declared system identifier for the
+ * external DTD subset, or null if none was declared.
+ * (Note that this is not resolved against the document
+ * base URI.)
+ * @exception SAXException The application may raise an
+ * exception.
+ * @see #endDTD
+ * @see #startEntity
+ */
+ public abstract void startDTD (String name, String publicId,
+ String systemId)
+ throws SAXException;
+
+
+ /**
+ * Report the end of DTD declarations.
+ *
+ * <p>This method is intended to report the end of the
+ * DOCTYPE declaration; if the document has no DOCTYPE declaration,
+ * this method will not be invoked.</p>
+ *
+ * @exception SAXException The application may raise an exception.
+ * @see #startDTD
+ */
+ public abstract void endDTD ()
+ throws SAXException;
+
+
+ /**
+ * Report the beginning of some internal and external XML entities.
+ *
+ * <p>The reporting of parameter entities (including
+ * the external DTD subset) is optional, and SAX2 drivers that
+ * report LexicalHandler events may not implement it; you can use the
+ * <code
+ * >http://xml.org/sax/features/lexical-handler/parameter-entities</code>
+ * feature to query or control the reporting of parameter entities.</p>
+ *
+ * <p>General entities are reported with their regular names,
+ * parameter entities have '%' prepended to their names, and
+ * the external DTD subset has the pseudo-entity name "[dtd]".</p>
+ *
+ * <p>When a SAX2 driver is providing these events, all other
+ * events must be properly nested within start/end entity
+ * events. There is no additional requirement that events from
+ * {@link org.xml.sax.ext.DeclHandler DeclHandler} or
+ * {@link org.xml.sax.DTDHandler DTDHandler} be properly ordered.</p>
+ *
+ * <p>Note that skipped entities will be reported through the
+ * {@link org.xml.sax.ContentHandler#skippedEntity skippedEntity}
+ * event, which is part of the ContentHandler interface.</p>
+ *
+ * <p>Because of the streaming event model that SAX uses, some
+ * entity boundaries cannot be reported under any
+ * circumstances:</p>
+ *
+ * <ul>
+ * <li>general entities within attribute values</li>
+ * <li>parameter entities within declarations</li>
+ * </ul>
+ *
+ * <p>These will be silently expanded, with no indication of where
+ * the original entity boundaries were.</p>
+ *
+ * <p>Note also that the boundaries of character references (which
+ * are not really entities anyway) are not reported.</p>
+ *
+ * <p>All start/endEntity events must be properly nested.
+ *
+ * @param name The name of the entity. If it is a parameter
+ * entity, the name will begin with '%', and if it is the
+ * external DTD subset, it will be "[dtd]".
+ * @exception SAXException The application may raise an exception.
+ * @see #endEntity
+ * @see org.xml.sax.ext.DeclHandler#internalEntityDecl
+ * @see org.xml.sax.ext.DeclHandler#externalEntityDecl
+ */
+ public abstract void startEntity (String name)
+ throws SAXException;
+
+
+ /**
+ * Report the end of an entity.
+ *
+ * @param name The name of the entity that is ending.
+ * @exception SAXException The application may raise an exception.
+ * @see #startEntity
+ */
+ public abstract void endEntity (String name)
+ throws SAXException;
+
+
+ /**
+ * Report the start of a CDATA section.
+ *
+ * <p>The contents of the CDATA section will be reported through
+ * the regular {@link org.xml.sax.ContentHandler#characters
+ * characters} event; this event is intended only to report
+ * the boundary.</p>
+ *
+ * @exception SAXException The application may raise an exception.
+ * @see #endCDATA
+ */
+ public abstract void startCDATA ()
+ throws SAXException;
+
+
+ /**
+ * Report the end of a CDATA section.
+ *
+ * @exception SAXException The application may raise an exception.
+ * @see #startCDATA
+ */
+ public abstract void endCDATA ()
+ throws SAXException;
+
+
+ /**
+ * Report an XML comment anywhere in the document.
+ *
+ * <p>This callback will be used for comments inside or outside the
+ * document element, including comments in the external DTD
+ * subset (if read). Comments in the DTD must be properly
+ * nested inside start/endDTD and start/endEntity events (if
+ * used).</p>
+ *
+ * @param ch An array holding the characters in the comment.
+ * @param start The starting position in the array.
+ * @param length The number of characters to use from the array.
+ * @exception SAXException The application may raise an exception.
+ */
+ public abstract void comment (char ch[], int start, int length)
+ throws SAXException;
+
+}
+
+// end of LexicalHandler.java
diff --git a/libjava/org/xml/sax/ext/package.html b/libjava/org/xml/sax/ext/package.html
new file mode 100644
index 00000000000..bbb02f9276b
--- /dev/null
+++ b/libjava/org/xml/sax/ext/package.html
@@ -0,0 +1,49 @@
+<HTML><HEAD>
+
+</HEAD><BODY>
+
+<p>
+This package contains interfaces to optional SAX2 handlers.
+
+<p>See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+for more information about SAX.</p>
+
+<p>
+The package is independent of the SAX2 core, though the functionality
+exposed generally needs to be implemented within a parser.
+That independence has several consequences:</p>
+
+<ul>
+
+<li>SAX2 drivers are <em>not</em> required to recognize these handlers,
+and you cannot assume that the class files will be present in every SAX2
+installation.</li>
+
+<li>This package may be updated independently of SAX2 (i.e. new
+handlers may be added without updating SAX2 itself).</li>
+
+<li>The handlers are not implemented by the SAX2
+<code>org.xml.sax.helpers.DefaultHandler</code> or
+<code>org.xml.sax.helpers.XMLFilterImpl</code> classes.
+You can subclass these if you need such behaviour.</li>
+
+<li>The handlers need to be registered differently than regular SAX2
+handlers.</li>
+
+</ul>
+
+<p>This package, SAX2-ext, is a standardized extension to SAX2. It is
+designed both to allow SAX parsers to pass certain types of information
+to applications, and to serve as a simple model for other SAX2 parser
+extension packages. Not all such extension packages should need to
+be recognized directly by parsers, however.
+As an example, most schema systems can be cleanly layered on top
+of parsers supporting the standardized SAX2 interfaces. </p>
+
+<p><strong>NOTE:</strong> this package alone does add any
+functionality; it simply provides optional interfaces for SAX2 drivers
+to use. You must use a SAX2 driver that recognizes these interfaces if
+you actually want to have access to lexical and declaration
+information.</p>
+
+</BODY></HTML>
diff --git a/libjava/org/xml/sax/helpers/AttributeListImpl.java b/libjava/org/xml/sax/helpers/AttributeListImpl.java
index 69754728c1f..6cabed4fe8b 100644
--- a/libjava/org/xml/sax/helpers/AttributeListImpl.java
+++ b/libjava/org/xml/sax/helpers/AttributeListImpl.java
@@ -1,310 +1,312 @@
-// SAX default implementation for AttributeList.
-// No warranty; no copyright -- use this as you will.
-// $Id: AttributeListImpl.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
-
-package org.xml.sax.helpers;
-
-import org.xml.sax.AttributeList;
-
-import java.util.Vector;
-
-
-/**
- * Default implementation for AttributeList.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>AttributeList implements the deprecated SAX1 {@link
- * org.xml.sax.AttributeList AttributeList} interface, and has been
- * replaced by the new SAX2 {@link org.xml.sax.helpers.AttributesImpl
- * AttributesImpl} interface.</p>
- *
- * <p>This class provides a convenience implementation of the SAX
- * {@link org.xml.sax.AttributeList AttributeList} interface. This
- * implementation is useful both for SAX parser writers, who can use
- * it to provide attributes to the application, and for SAX application
- * writers, who can use it to create a persistent copy of an element's
- * attribute specifications:</p>
- *
- * <pre>
- * private AttributeList myatts;
- *
- * public void startElement (String name, AttributeList atts)
- * {
- * // create a persistent copy of the attribute list
- * // for use outside this method
- * myatts = new AttributeListImpl(atts);
- * [...]
- * }
- * </pre>
- *
- * <p>Please note that SAX parsers are not required to use this
- * class to provide an implementation of AttributeList; it is
- * supplied only as an optional convenience. In particular,
- * parser writers are encouraged to invent more efficient
- * implementations.</p>
- *
- * @deprecated This class implements a deprecated interface,
- * {@link org.xml.sax.AttributeList AttributeList};
- * that interface has been replaced by
- * {@link org.xml.sax.Attributes Attributes},
- * which is implemented in the
- * {@link org.xml.sax.helpers.AttributesImpl
- * AttributesImpl} helper class.
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.AttributeList
- * @see org.xml.sax.DocumentHandler#startElement
- */
-public class AttributeListImpl implements AttributeList
-{
-
- /**
- * Create an empty attribute list.
- *
- * <p>This constructor is most useful for parser writers, who
- * will use it to create a single, reusable attribute list that
- * can be reset with the clear method between elements.</p>
- *
- * @see #addAttribute
- * @see #clear
- */
- public AttributeListImpl ()
- {
- }
-
-
- /**
- * Construct a persistent copy of an existing attribute list.
- *
- * <p>This constructor is most useful for application writers,
- * who will use it to create a persistent copy of an existing
- * attribute list.</p>
- *
- * @param atts The attribute list to copy
- * @see org.xml.sax.DocumentHandler#startElement
- */
- public AttributeListImpl (AttributeList atts)
- {
- setAttributeList(atts);
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Methods specific to this class.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Set the attribute list, discarding previous contents.
- *
- * <p>This method allows an application writer to reuse an
- * attribute list easily.</p>
- *
- * @param atts The attribute list to copy.
- */
- public void setAttributeList (AttributeList atts)
- {
- int count = atts.getLength();
-
- clear();
-
- for (int i = 0; i < count; i++) {
- addAttribute(atts.getName(i), atts.getType(i), atts.getValue(i));
- }
- }
-
-
- /**
- * Add an attribute to an attribute list.
- *
- * <p>This method is provided for SAX parser writers, to allow them
- * to build up an attribute list incrementally before delivering
- * it to the application.</p>
- *
- * @param name The attribute name.
- * @param type The attribute type ("NMTOKEN" for an enumeration).
- * @param value The attribute value (must not be null).
- * @see #removeAttribute
- * @see org.xml.sax.DocumentHandler#startElement
- */
- public void addAttribute (String name, String type, String value)
- {
- names.addElement(name);
- types.addElement(type);
- values.addElement(value);
- }
-
-
- /**
- * Remove an attribute from the list.
- *
- * <p>SAX application writers can use this method to filter an
- * attribute out of an AttributeList. Note that invoking this
- * method will change the length of the attribute list and
- * some of the attribute's indices.</p>
- *
- * <p>If the requested attribute is not in the list, this is
- * a no-op.</p>
- *
- * @param name The attribute name.
- * @see #addAttribute
- */
- public void removeAttribute (String name)
- {
- int i = names.indexOf(name);
-
- if (i >= 0) {
- names.removeElementAt(i);
- types.removeElementAt(i);
- values.removeElementAt(i);
- }
- }
-
-
- /**
- * Clear the attribute list.
- *
- * <p>SAX parser writers can use this method to reset the attribute
- * list between DocumentHandler.startElement events. Normally,
- * it will make sense to reuse the same AttributeListImpl object
- * rather than allocating a new one each time.</p>
- *
- * @see org.xml.sax.DocumentHandler#startElement
- */
- public void clear ()
- {
- names.removeAllElements();
- types.removeAllElements();
- values.removeAllElements();
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.AttributeList
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Return the number of attributes in the list.
- *
- * @return The number of attributes in the list.
- * @see org.xml.sax.AttributeList#getLength
- */
- public int getLength ()
- {
- return names.size();
- }
-
-
- /**
- * Get the name of an attribute (by position).
- *
- * @param i The position of the attribute in the list.
- * @return The attribute name as a string, or null if there
- * is no attribute at that position.
- * @see org.xml.sax.AttributeList#getName(int)
- */
- public String getName (int i)
- {
- if (i < 0) {
- return null;
- }
- try {
- return (String)names.elementAt(i);
- } catch (ArrayIndexOutOfBoundsException e) {
- return null;
- }
- }
-
-
- /**
- * Get the type of an attribute (by position).
- *
- * @param i The position of the attribute in the list.
- * @return The attribute type as a string ("NMTOKEN" for an
- * enumeration, and "CDATA" if no declaration was
- * read), or null if there is no attribute at
- * that position.
- * @see org.xml.sax.AttributeList#getType(int)
- */
- public String getType (int i)
- {
- if (i < 0) {
- return null;
- }
- try {
- return (String)types.elementAt(i);
- } catch (ArrayIndexOutOfBoundsException e) {
- return null;
- }
- }
-
-
- /**
- * Get the value of an attribute (by position).
- *
- * @param i The position of the attribute in the list.
- * @return The attribute value as a string, or null if
- * there is no attribute at that position.
- * @see org.xml.sax.AttributeList#getValue(int)
- */
- public String getValue (int i)
- {
- if (i < 0) {
- return null;
- }
- try {
- return (String)values.elementAt(i);
- } catch (ArrayIndexOutOfBoundsException e) {
- return null;
- }
- }
-
-
- /**
- * Get the type of an attribute (by name).
- *
- * @param name The attribute name.
- * @return The attribute type as a string ("NMTOKEN" for an
- * enumeration, and "CDATA" if no declaration was
- * read).
- * @see org.xml.sax.AttributeList#getType(java.lang.String)
- */
- public String getType (String name)
- {
- return getType(names.indexOf(name));
- }
-
-
- /**
- * Get the value of an attribute (by name).
- *
- * @param name The attribute name.
- * @see org.xml.sax.AttributeList#getValue(java.lang.String)
- */
- public String getValue (String name)
- {
- return getValue(names.indexOf(name));
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal state.
- ////////////////////////////////////////////////////////////////////
-
- Vector names = new Vector();
- Vector types = new Vector();
- Vector values = new Vector();
-
-}
-
-// end of AttributeListImpl.java
+// SAX default implementation for AttributeList.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: AttributeListImpl.java,v 1.3.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax.helpers;
+
+import org.xml.sax.AttributeList;
+
+import java.util.Vector;
+
+
+/**
+ * Default implementation for AttributeList.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>AttributeList implements the deprecated SAX1 {@link
+ * org.xml.sax.AttributeList AttributeList} interface, and has been
+ * replaced by the new SAX2 {@link org.xml.sax.helpers.AttributesImpl
+ * AttributesImpl} interface.</p>
+ *
+ * <p>This class provides a convenience implementation of the SAX
+ * {@link org.xml.sax.AttributeList AttributeList} interface. This
+ * implementation is useful both for SAX parser writers, who can use
+ * it to provide attributes to the application, and for SAX application
+ * writers, who can use it to create a persistent copy of an element's
+ * attribute specifications:</p>
+ *
+ * <pre>
+ * private AttributeList myatts;
+ *
+ * public void startElement (String name, AttributeList atts)
+ * {
+ * // create a persistent copy of the attribute list
+ * // for use outside this method
+ * myatts = new AttributeListImpl(atts);
+ * [...]
+ * }
+ * </pre>
+ *
+ * <p>Please note that SAX parsers are not required to use this
+ * class to provide an implementation of AttributeList; it is
+ * supplied only as an optional convenience. In particular,
+ * parser writers are encouraged to invent more efficient
+ * implementations.</p>
+ *
+ * @deprecated This class implements a deprecated interface,
+ * {@link org.xml.sax.AttributeList AttributeList};
+ * that interface has been replaced by
+ * {@link org.xml.sax.Attributes Attributes},
+ * which is implemented in the
+ * {@link org.xml.sax.helpers.AttributesImpl
+ * AttributesImpl} helper class.
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.AttributeList
+ * @see org.xml.sax.DocumentHandler#startElement
+ */
+public class AttributeListImpl implements AttributeList
+{
+
+ /**
+ * Create an empty attribute list.
+ *
+ * <p>This constructor is most useful for parser writers, who
+ * will use it to create a single, reusable attribute list that
+ * can be reset with the clear method between elements.</p>
+ *
+ * @see #addAttribute
+ * @see #clear
+ */
+ public AttributeListImpl ()
+ {
+ }
+
+
+ /**
+ * Construct a persistent copy of an existing attribute list.
+ *
+ * <p>This constructor is most useful for application writers,
+ * who will use it to create a persistent copy of an existing
+ * attribute list.</p>
+ *
+ * @param atts The attribute list to copy
+ * @see org.xml.sax.DocumentHandler#startElement
+ */
+ public AttributeListImpl (AttributeList atts)
+ {
+ setAttributeList(atts);
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Methods specific to this class.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Set the attribute list, discarding previous contents.
+ *
+ * <p>This method allows an application writer to reuse an
+ * attribute list easily.</p>
+ *
+ * @param atts The attribute list to copy.
+ */
+ public void setAttributeList (AttributeList atts)
+ {
+ int count = atts.getLength();
+
+ clear();
+
+ for (int i = 0; i < count; i++) {
+ addAttribute(atts.getName(i), atts.getType(i), atts.getValue(i));
+ }
+ }
+
+
+ /**
+ * Add an attribute to an attribute list.
+ *
+ * <p>This method is provided for SAX parser writers, to allow them
+ * to build up an attribute list incrementally before delivering
+ * it to the application.</p>
+ *
+ * @param name The attribute name.
+ * @param type The attribute type ("NMTOKEN" for an enumeration).
+ * @param value The attribute value (must not be null).
+ * @see #removeAttribute
+ * @see org.xml.sax.DocumentHandler#startElement
+ */
+ public void addAttribute (String name, String type, String value)
+ {
+ names.addElement(name);
+ types.addElement(type);
+ values.addElement(value);
+ }
+
+
+ /**
+ * Remove an attribute from the list.
+ *
+ * <p>SAX application writers can use this method to filter an
+ * attribute out of an AttributeList. Note that invoking this
+ * method will change the length of the attribute list and
+ * some of the attribute's indices.</p>
+ *
+ * <p>If the requested attribute is not in the list, this is
+ * a no-op.</p>
+ *
+ * @param name The attribute name.
+ * @see #addAttribute
+ */
+ public void removeAttribute (String name)
+ {
+ int i = names.indexOf(name);
+
+ if (i >= 0) {
+ names.removeElementAt(i);
+ types.removeElementAt(i);
+ values.removeElementAt(i);
+ }
+ }
+
+
+ /**
+ * Clear the attribute list.
+ *
+ * <p>SAX parser writers can use this method to reset the attribute
+ * list between DocumentHandler.startElement events. Normally,
+ * it will make sense to reuse the same AttributeListImpl object
+ * rather than allocating a new one each time.</p>
+ *
+ * @see org.xml.sax.DocumentHandler#startElement
+ */
+ public void clear ()
+ {
+ names.removeAllElements();
+ types.removeAllElements();
+ values.removeAllElements();
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.AttributeList
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Return the number of attributes in the list.
+ *
+ * @return The number of attributes in the list.
+ * @see org.xml.sax.AttributeList#getLength
+ */
+ public int getLength ()
+ {
+ return names.size();
+ }
+
+
+ /**
+ * Get the name of an attribute (by position).
+ *
+ * @param i The position of the attribute in the list.
+ * @return The attribute name as a string, or null if there
+ * is no attribute at that position.
+ * @see org.xml.sax.AttributeList#getName(int)
+ */
+ public String getName (int i)
+ {
+ if (i < 0) {
+ return null;
+ }
+ try {
+ return (String)names.elementAt(i);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ return null;
+ }
+ }
+
+
+ /**
+ * Get the type of an attribute (by position).
+ *
+ * @param i The position of the attribute in the list.
+ * @return The attribute type as a string ("NMTOKEN" for an
+ * enumeration, and "CDATA" if no declaration was
+ * read), or null if there is no attribute at
+ * that position.
+ * @see org.xml.sax.AttributeList#getType(int)
+ */
+ public String getType (int i)
+ {
+ if (i < 0) {
+ return null;
+ }
+ try {
+ return (String)types.elementAt(i);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ return null;
+ }
+ }
+
+
+ /**
+ * Get the value of an attribute (by position).
+ *
+ * @param i The position of the attribute in the list.
+ * @return The attribute value as a string, or null if
+ * there is no attribute at that position.
+ * @see org.xml.sax.AttributeList#getValue(int)
+ */
+ public String getValue (int i)
+ {
+ if (i < 0) {
+ return null;
+ }
+ try {
+ return (String)values.elementAt(i);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ return null;
+ }
+ }
+
+
+ /**
+ * Get the type of an attribute (by name).
+ *
+ * @param name The attribute name.
+ * @return The attribute type as a string ("NMTOKEN" for an
+ * enumeration, and "CDATA" if no declaration was
+ * read).
+ * @see org.xml.sax.AttributeList#getType(java.lang.String)
+ */
+ public String getType (String name)
+ {
+ return getType(names.indexOf(name));
+ }
+
+
+ /**
+ * Get the value of an attribute (by name).
+ *
+ * @param name The attribute name.
+ * @see org.xml.sax.AttributeList#getValue(java.lang.String)
+ */
+ public String getValue (String name)
+ {
+ return getValue(names.indexOf(name));
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal state.
+ ////////////////////////////////////////////////////////////////////
+
+ Vector names = new Vector();
+ Vector types = new Vector();
+ Vector values = new Vector();
+
+}
+
+// end of AttributeListImpl.java
diff --git a/libjava/org/xml/sax/helpers/AttributesImpl.java b/libjava/org/xml/sax/helpers/AttributesImpl.java
index b714f39fdb8..d16cb335664 100644
--- a/libjava/org/xml/sax/helpers/AttributesImpl.java
+++ b/libjava/org/xml/sax/helpers/AttributesImpl.java
@@ -1,606 +1,620 @@
-// AttributesImpl.java - default implementation of Attributes.
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the public domain.
-
-// $Id: AttributesImpl.java,v 1.2 2001/05/31 16:03:17 garyp Exp $
-
-
-package org.xml.sax.helpers;
-
-import org.xml.sax.Attributes;
-
-
-/**
- * Default implementation of the Attributes interface.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class provides a default implementation of the SAX2
- * {@link org.xml.sax.Attributes Attributes} interface, with the
- * addition of manipulators so that the list can be modified or
- * reused.</p>
- *
- * <p>There are two typical uses of this class:</p>
- *
- * <ol>
- * <li>to take a persistent snapshot of an Attributes object
- * in a {@link org.xml.sax.ContentHandler#startElement startElement} event; or</li>
- * <li>to construct or modify an Attributes object in a SAX2 driver or filter.</li>
- * </ol>
- *
- * <p>This class replaces the now-deprecated SAX1 {@link
- * org.xml.sax.helpers.AttributeListImpl AttributeListImpl}
- * class; in addition to supporting the updated Attributes
- * interface rather than the deprecated {@link org.xml.sax.AttributeList
- * AttributeList} interface, it also includes a much more efficient
- * implementation using a single array rather than a set of Vectors.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- */
-public class AttributesImpl implements Attributes
-{
-
-
- ////////////////////////////////////////////////////////////////////
- // Constructors.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Construct a new, empty AttributesImpl object.
- */
- public AttributesImpl ()
- {
- length = 0;
- data = null;
- }
-
-
- /**
- * Copy an existing Attributes object.
- *
- * <p>This constructor is especially useful inside a
- * {@link org.xml.sax.ContentHandler#startElement startElement} event.</p>
- *
- * @param atts The existing Attributes object.
- */
- public AttributesImpl (Attributes atts)
- {
- setAttributes(atts);
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.Attributes.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Return the number of attributes in the list.
- *
- * @return The number of attributes in the list.
- * @see org.xml.sax.Attributes#getLength
- */
- public int getLength ()
- {
- return length;
- }
-
-
- /**
- * Return an attribute's Namespace URI.
- *
- * @param index The attribute's index (zero-based).
- * @return The Namespace URI, the empty string if none is
- * available, or null if the index is out of range.
- * @see org.xml.sax.Attributes#getURI
- */
- public String getURI (int index)
- {
- if (index >= 0 && index < length) {
- return data[index*5];
- } else {
- return null;
- }
- }
-
-
- /**
- * Return an attribute's local name.
- *
- * @param index The attribute's index (zero-based).
- * @return The attribute's local name, the empty string if
- * none is available, or null if the index if out of range.
- * @see org.xml.sax.Attributes#getLocalName
- */
- public String getLocalName (int index)
- {
- if (index >= 0 && index < length) {
- return data[index*5+1];
- } else {
- return null;
- }
- }
-
-
- /**
- * Return an attribute's qualified (prefixed) name.
- *
- * @param index The attribute's index (zero-based).
- * @return The attribute's qualified name, the empty string if
- * none is available, or null if the index is out of bounds.
- * @see org.xml.sax.Attributes#getQName
- */
- public String getQName (int index)
- {
- if (index >= 0 && index < length) {
- return data[index*5+2];
- } else {
- return null;
- }
- }
-
-
- /**
- * Return an attribute's type by index.
- *
- * @param index The attribute's index (zero-based).
- * @return The attribute's type, "CDATA" if the type is unknown, or null
- * if the index is out of bounds.
- * @see org.xml.sax.Attributes#getType(int)
- */
- public String getType (int index)
- {
- if (index >= 0 && index < length) {
- return data[index*5+3];
- } else {
- return null;
- }
- }
-
-
- /**
- * Return an attribute's value by index.
- *
- * @param index The attribute's index (zero-based).
- * @return The attribute's value or null if the index is out of bounds.
- * @see org.xml.sax.Attributes#getValue(int)
- */
- public String getValue (int index)
- {
- if (index >= 0 && index < length) {
- return data[index*5+4];
- } else {
- return null;
- }
- }
-
-
- /**
- * Look up an attribute's index by Namespace name.
- *
- * <p>In many cases, it will be more efficient to look up the name once and
- * use the index query methods rather than using the name query methods
- * repeatedly.</p>
- *
- * @param uri The attribute's Namespace URI, or the empty
- * string if none is available.
- * @param localName The attribute's local name.
- * @return The attribute's index, or -1 if none matches.
- * @see org.xml.sax.Attributes#getIndex(java.lang.String,java.lang.String)
- */
- public int getIndex (String uri, String localName)
- {
- int max = length * 5;
- for (int i = 0; i < max; i += 5) {
- if (data[i].equals(uri) && data[i+1].equals(localName)) {
- return i / 5;
- }
- }
- return -1;
- }
-
-
- /**
- * Look up an attribute's index by qualified (prefixed) name.
- *
- * @param qName The qualified name.
- * @return The attribute's index, or -1 if none matches.
- * @see org.xml.sax.Attributes#getIndex(java.lang.String)
- */
- public int getIndex (String qName)
- {
- int max = length * 5;
- for (int i = 0; i < max; i += 5) {
- if (data[i+2].equals(qName)) {
- return i / 5;
- }
- }
- return -1;
- }
-
-
- /**
- * Look up an attribute's type by Namespace-qualified name.
- *
- * @param uri The Namespace URI, or the empty string for a name
- * with no explicit Namespace URI.
- * @param localName The local name.
- * @return The attribute's type, or null if there is no
- * matching attribute.
- * @see org.xml.sax.Attributes#getType(java.lang.String,java.lang.String)
- */
- public String getType (String uri, String localName)
- {
- int max = length * 5;
- for (int i = 0; i < max; i += 5) {
- if (data[i].equals(uri) && data[i+1].equals(localName)) {
- return data[i+3];
- }
- }
- return null;
- }
-
-
- /**
- * Look up an attribute's type by qualified (prefixed) name.
- *
- * @param qName The qualified name.
- * @return The attribute's type, or null if there is no
- * matching attribute.
- * @see org.xml.sax.Attributes#getType(java.lang.String)
- */
- public String getType (String qName)
- {
- int max = length * 5;
- for (int i = 0; i < max; i += 5) {
- if (data[i+2].equals(qName)) {
- return data[i+3];
- }
- }
- return null;
- }
-
-
- /**
- * Look up an attribute's value by Namespace-qualified name.
- *
- * @param uri The Namespace URI, or the empty string for a name
- * with no explicit Namespace URI.
- * @param localName The local name.
- * @return The attribute's value, or null if there is no
- * matching attribute.
- * @see org.xml.sax.Attributes#getValue(java.lang.String,java.lang.String)
- */
- public String getValue (String uri, String localName)
- {
- int max = length * 5;
- for (int i = 0; i < max; i += 5) {
- if (data[i].equals(uri) && data[i+1].equals(localName)) {
- return data[i+4];
- }
- }
- return null;
- }
-
-
- /**
- * Look up an attribute's value by qualified (prefixed) name.
- *
- * @param qName The qualified name.
- * @return The attribute's value, or null if there is no
- * matching attribute.
- * @see org.xml.sax.Attributes#getValue(java.lang.String)
- */
- public String getValue (String qName)
- {
- int max = length * 5;
- for (int i = 0; i < max; i += 5) {
- if (data[i+2].equals(qName)) {
- return data[i+4];
- }
- }
- return null;
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Manipulators.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Clear the attribute list for reuse.
- *
- * <p>Note that no memory is actually freed by this call:
- * the current arrays are kept so that they can be
- * reused.</p>
- */
- public void clear ()
- {
- length = 0;
- }
-
-
- /**
- * Copy an entire Attributes object.
- *
- * <p>It may be more efficient to reuse an existing object
- * rather than constantly allocating new ones.</p>
- *
- * @param atts The attributes to copy.
- */
- public void setAttributes (Attributes atts)
- {
- clear();
- length = atts.getLength();
- data = new String[length*5];
- for (int i = 0; i < length; i++) {
- data[i*5] = atts.getURI(i);
- data[i*5+1] = atts.getLocalName(i);
- data[i*5+2] = atts.getQName(i);
- data[i*5+3] = atts.getType(i);
- data[i*5+4] = atts.getValue(i);
- }
- }
-
-
- /**
- * Add an attribute to the end of the list.
- *
- * <p>For the sake of speed, this method does no checking
- * to see if the attribute is already in the list: that is
- * the responsibility of the application.</p>
- *
- * @param uri The Namespace URI, or the empty string if
- * none is available or Namespace processing is not
- * being performed.
- * @param localName The local name, or the empty string if
- * Namespace processing is not being performed.
- * @param qName The qualified (prefixed) name, or the empty string
- * if qualified names are not available.
- * @param type The attribute type as a string.
- * @param value The attribute value.
- */
- public void addAttribute (String uri, String localName, String qName,
- String type, String value)
- {
- ensureCapacity(length+1);
- data[length*5] = uri;
- data[length*5+1] = localName;
- data[length*5+2] = qName;
- data[length*5+3] = type;
- data[length*5+4] = value;
- length++;
- }
-
-
- /**
- * Set an attribute in the list.
- *
- * <p>For the sake of speed, this method does no checking
- * for name conflicts or well-formedness: such checks are the
- * responsibility of the application.</p>
- *
- * @param index The index of the attribute (zero-based).
- * @param uri The Namespace URI, or the empty string if
- * none is available or Namespace processing is not
- * being performed.
- * @param localName The local name, or the empty string if
- * Namespace processing is not being performed.
- * @param qName The qualified name, or the empty string
- * if qualified names are not available.
- * @param type The attribute type as a string.
- * @param value The attribute value.
- * @exception java.lang.ArrayIndexOutOfBoundsException When the
- * supplied index does not point to an attribute
- * in the list.
- */
- public void setAttribute (int index, String uri, String localName,
- String qName, String type, String value)
- {
- if (index >= 0 && index < length) {
- data[index*5] = uri;
- data[index*5+1] = localName;
- data[index*5+2] = qName;
- data[index*5+3] = type;
- data[index*5+4] = value;
- } else {
- badIndex(index);
- }
- }
-
-
- /**
- * Remove an attribute from the list.
- *
- * @param index The index of the attribute (zero-based).
- * @exception java.lang.ArrayIndexOutOfBoundsException When the
- * supplied index does not point to an attribute
- * in the list.
- */
- public void removeAttribute (int index)
- {
- if (index >= 0 && index < length) {
- data[index*5] = null;
- data[index*5+1] = null;
- data[index*5+2] = null;
- data[index*5+3] = null;
- data[index*5+4] = null;
- if (index < length - 1) {
- System.arraycopy(data, (index+1)*5, data, index*5,
- (length-index-1)*5);
- }
- length--;
- } else {
- badIndex(index);
- }
- }
-
-
- /**
- * Set the Namespace URI of a specific attribute.
- *
- * @param index The index of the attribute (zero-based).
- * @param uri The attribute's Namespace URI, or the empty
- * string for none.
- * @exception java.lang.ArrayIndexOutOfBoundsException When the
- * supplied index does not point to an attribute
- * in the list.
- */
- public void setURI (int index, String uri)
- {
- if (index >= 0 && index < length) {
- data[index*5] = uri;
- } else {
- badIndex(index);
- }
- }
-
-
- /**
- * Set the local name of a specific attribute.
- *
- * @param index The index of the attribute (zero-based).
- * @param localName The attribute's local name, or the empty
- * string for none.
- * @exception java.lang.ArrayIndexOutOfBoundsException When the
- * supplied index does not point to an attribute
- * in the list.
- */
- public void setLocalName (int index, String localName)
- {
- if (index >= 0 && index < length) {
- data[index*5+1] = localName;
- } else {
- badIndex(index);
- }
- }
-
-
- /**
- * Set the qualified name of a specific attribute.
- *
- * @param index The index of the attribute (zero-based).
- * @param qName The attribute's qualified name, or the empty
- * string for none.
- * @exception java.lang.ArrayIndexOutOfBoundsException When the
- * supplied index does not point to an attribute
- * in the list.
- */
- public void setQName (int index, String qName)
- {
- if (index >= 0 && index < length) {
- data[index*5+2] = qName;
- } else {
- badIndex(index);
- }
- }
-
-
- /**
- * Set the type of a specific attribute.
- *
- * @param index The index of the attribute (zero-based).
- * @param type The attribute's type.
- * @exception java.lang.ArrayIndexOutOfBoundsException When the
- * supplied index does not point to an attribute
- * in the list.
- */
- public void setType (int index, String type)
- {
- if (index >= 0 && index < length) {
- data[index*5+3] = type;
- } else {
- badIndex(index);
- }
- }
-
-
- /**
- * Set the value of a specific attribute.
- *
- * @param index The index of the attribute (zero-based).
- * @param value The attribute's value.
- * @exception java.lang.ArrayIndexOutOfBoundsException When the
- * supplied index does not point to an attribute
- * in the list.
- */
- public void setValue (int index, String value)
- {
- if (index >= 0 && index < length) {
- data[index*5+4] = value;
- } else {
- badIndex(index);
- }
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal methods.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Ensure the internal array's capacity.
- *
- * @param n The minimum number of attributes that the array must
- * be able to hold.
- */
- private void ensureCapacity (int n)
- {
- if (n > 0 && data == null) {
- data = new String[25];
- }
-
- int max = data.length;
- if (max >= n * 5) {
- return;
- }
-
-
- while (max < n * 5) {
- max *= 2;
- }
- String newData[] = new String[max];
- System.arraycopy(data, 0, newData, 0, length*5);
- data = newData;
- }
-
-
- /**
- * Report a bad array index in a manipulator.
- *
- * @param index The index to report.
- * @exception java.lang.ArrayIndexOutOfBoundsException Always.
- */
- private void badIndex (int index)
- throws ArrayIndexOutOfBoundsException
- {
- String msg =
- "Attempt to modify attribute at illegal index: " + index;
- throw new ArrayIndexOutOfBoundsException(msg);
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal state.
- ////////////////////////////////////////////////////////////////////
-
- int length;
- String data [];
-
-}
-
-// end of AttributesImpl.java
-
+// AttributesImpl.java - default implementation of Attributes.
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the public domain.
+
+// $Id: AttributesImpl.java,v 1.6.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+
+package org.xml.sax.helpers;
+
+import org.xml.sax.Attributes;
+
+
+/**
+ * Default implementation of the Attributes interface.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class provides a default implementation of the SAX2
+ * {@link org.xml.sax.Attributes Attributes} interface, with the
+ * addition of manipulators so that the list can be modified or
+ * reused.</p>
+ *
+ * <p>There are two typical uses of this class:</p>
+ *
+ * <ol>
+ * <li>to take a persistent snapshot of an Attributes object
+ * in a {@link org.xml.sax.ContentHandler#startElement startElement} event; or</li>
+ * <li>to construct or modify an Attributes object in a SAX2 driver or filter.</li>
+ * </ol>
+ *
+ * <p>This class replaces the now-deprecated SAX1 {@link
+ * org.xml.sax.helpers.AttributeListImpl AttributeListImpl}
+ * class; in addition to supporting the updated Attributes
+ * interface rather than the deprecated {@link org.xml.sax.AttributeList
+ * AttributeList} interface, it also includes a much more efficient
+ * implementation using a single array rather than a set of Vectors.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ */
+public class AttributesImpl implements Attributes
+{
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Constructors.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Construct a new, empty AttributesImpl object.
+ */
+ public AttributesImpl ()
+ {
+ length = 0;
+ data = null;
+ }
+
+
+ /**
+ * Copy an existing Attributes object.
+ *
+ * <p>This constructor is especially useful inside a
+ * {@link org.xml.sax.ContentHandler#startElement startElement} event.</p>
+ *
+ * @param atts The existing Attributes object.
+ */
+ public AttributesImpl (Attributes atts)
+ {
+ setAttributes(atts);
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.Attributes.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Return the number of attributes in the list.
+ *
+ * @return The number of attributes in the list.
+ * @see org.xml.sax.Attributes#getLength
+ */
+ public int getLength ()
+ {
+ return length;
+ }
+
+
+ /**
+ * Return an attribute's Namespace URI.
+ *
+ * @param index The attribute's index (zero-based).
+ * @return The Namespace URI, the empty string if none is
+ * available, or null if the index is out of range.
+ * @see org.xml.sax.Attributes#getURI
+ */
+ public String getURI (int index)
+ {
+ if (index >= 0 && index < length) {
+ return data[index*5];
+ } else {
+ return null;
+ }
+ }
+
+
+ /**
+ * Return an attribute's local name.
+ *
+ * @param index The attribute's index (zero-based).
+ * @return The attribute's local name, the empty string if
+ * none is available, or null if the index if out of range.
+ * @see org.xml.sax.Attributes#getLocalName
+ */
+ public String getLocalName (int index)
+ {
+ if (index >= 0 && index < length) {
+ return data[index*5+1];
+ } else {
+ return null;
+ }
+ }
+
+
+ /**
+ * Return an attribute's qualified (prefixed) name.
+ *
+ * @param index The attribute's index (zero-based).
+ * @return The attribute's qualified name, the empty string if
+ * none is available, or null if the index is out of bounds.
+ * @see org.xml.sax.Attributes#getQName
+ */
+ public String getQName (int index)
+ {
+ if (index >= 0 && index < length) {
+ return data[index*5+2];
+ } else {
+ return null;
+ }
+ }
+
+
+ /**
+ * Return an attribute's type by index.
+ *
+ * @param index The attribute's index (zero-based).
+ * @return The attribute's type, "CDATA" if the type is unknown, or null
+ * if the index is out of bounds.
+ * @see org.xml.sax.Attributes#getType(int)
+ */
+ public String getType (int index)
+ {
+ if (index >= 0 && index < length) {
+ return data[index*5+3];
+ } else {
+ return null;
+ }
+ }
+
+
+ /**
+ * Return an attribute's value by index.
+ *
+ * @param index The attribute's index (zero-based).
+ * @return The attribute's value or null if the index is out of bounds.
+ * @see org.xml.sax.Attributes#getValue(int)
+ */
+ public String getValue (int index)
+ {
+ if (index >= 0 && index < length) {
+ return data[index*5+4];
+ } else {
+ return null;
+ }
+ }
+
+
+ /**
+ * Look up an attribute's index by Namespace name.
+ *
+ * <p>In many cases, it will be more efficient to look up the name once and
+ * use the index query methods rather than using the name query methods
+ * repeatedly.</p>
+ *
+ * @param uri The attribute's Namespace URI, or the empty
+ * string if none is available.
+ * @param localName The attribute's local name.
+ * @return The attribute's index, or -1 if none matches.
+ * @see org.xml.sax.Attributes#getIndex(java.lang.String,java.lang.String)
+ */
+ public int getIndex (String uri, String localName)
+ {
+ int max = length * 5;
+ for (int i = 0; i < max; i += 5) {
+ if (data[i].equals(uri) && data[i+1].equals(localName)) {
+ return i / 5;
+ }
+ }
+ return -1;
+ }
+
+
+ /**
+ * Look up an attribute's index by qualified (prefixed) name.
+ *
+ * @param qName The qualified name.
+ * @return The attribute's index, or -1 if none matches.
+ * @see org.xml.sax.Attributes#getIndex(java.lang.String)
+ */
+ public int getIndex (String qName)
+ {
+ int max = length * 5;
+ for (int i = 0; i < max; i += 5) {
+ if (data[i+2].equals(qName)) {
+ return i / 5;
+ }
+ }
+ return -1;
+ }
+
+
+ /**
+ * Look up an attribute's type by Namespace-qualified name.
+ *
+ * @param uri The Namespace URI, or the empty string for a name
+ * with no explicit Namespace URI.
+ * @param localName The local name.
+ * @return The attribute's type, or null if there is no
+ * matching attribute.
+ * @see org.xml.sax.Attributes#getType(java.lang.String,java.lang.String)
+ */
+ public String getType (String uri, String localName)
+ {
+ int max = length * 5;
+ for (int i = 0; i < max; i += 5) {
+ if (data[i].equals(uri) && data[i+1].equals(localName)) {
+ return data[i+3];
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Look up an attribute's type by qualified (prefixed) name.
+ *
+ * @param qName The qualified name.
+ * @return The attribute's type, or null if there is no
+ * matching attribute.
+ * @see org.xml.sax.Attributes#getType(java.lang.String)
+ */
+ public String getType (String qName)
+ {
+ int max = length * 5;
+ for (int i = 0; i < max; i += 5) {
+ if (data[i+2].equals(qName)) {
+ return data[i+3];
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Look up an attribute's value by Namespace-qualified name.
+ *
+ * @param uri The Namespace URI, or the empty string for a name
+ * with no explicit Namespace URI.
+ * @param localName The local name.
+ * @return The attribute's value, or null if there is no
+ * matching attribute.
+ * @see org.xml.sax.Attributes#getValue(java.lang.String,java.lang.String)
+ */
+ public String getValue (String uri, String localName)
+ {
+ int max = length * 5;
+ for (int i = 0; i < max; i += 5) {
+ if (data[i].equals(uri) && data[i+1].equals(localName)) {
+ return data[i+4];
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Look up an attribute's value by qualified (prefixed) name.
+ *
+ * @param qName The qualified name.
+ * @return The attribute's value, or null if there is no
+ * matching attribute.
+ * @see org.xml.sax.Attributes#getValue(java.lang.String)
+ */
+ public String getValue (String qName)
+ {
+ int max = length * 5;
+ for (int i = 0; i < max; i += 5) {
+ if (data[i+2].equals(qName)) {
+ return data[i+4];
+ }
+ }
+ return null;
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Manipulators.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Clear the attribute list for reuse.
+ *
+ * <p>Note that little memory is freed by this call:
+ * the current array is kept so it can be
+ * reused.</p>
+ */
+ public void clear ()
+ {
+ if (data != null) {
+ for (int i = 0; i < (length * 5); i++)
+ data [i] = null;
+ }
+ length = 0;
+ }
+
+
+ /**
+ * Copy an entire Attributes object.
+ *
+ * <p>It may be more efficient to reuse an existing object
+ * rather than constantly allocating new ones.</p>
+ *
+ * @param atts The attributes to copy.
+ */
+ public void setAttributes (Attributes atts)
+ {
+ clear();
+ length = atts.getLength();
+ if (length > 0) {
+ data = new String[length*5];
+ for (int i = 0; i < length; i++) {
+ data[i*5] = atts.getURI(i);
+ data[i*5+1] = atts.getLocalName(i);
+ data[i*5+2] = atts.getQName(i);
+ data[i*5+3] = atts.getType(i);
+ data[i*5+4] = atts.getValue(i);
+ }
+ }
+ }
+
+
+ /**
+ * Add an attribute to the end of the list.
+ *
+ * <p>For the sake of speed, this method does no checking
+ * to see if the attribute is already in the list: that is
+ * the responsibility of the application.</p>
+ *
+ * @param uri The Namespace URI, or the empty string if
+ * none is available or Namespace processing is not
+ * being performed.
+ * @param localName The local name, or the empty string if
+ * Namespace processing is not being performed.
+ * @param qName The qualified (prefixed) name, or the empty string
+ * if qualified names are not available.
+ * @param type The attribute type as a string.
+ * @param value The attribute value.
+ */
+ public void addAttribute (String uri, String localName, String qName,
+ String type, String value)
+ {
+ ensureCapacity(length+1);
+ data[length*5] = uri;
+ data[length*5+1] = localName;
+ data[length*5+2] = qName;
+ data[length*5+3] = type;
+ data[length*5+4] = value;
+ length++;
+ }
+
+
+ /**
+ * Set an attribute in the list.
+ *
+ * <p>For the sake of speed, this method does no checking
+ * for name conflicts or well-formedness: such checks are the
+ * responsibility of the application.</p>
+ *
+ * @param index The index of the attribute (zero-based).
+ * @param uri The Namespace URI, or the empty string if
+ * none is available or Namespace processing is not
+ * being performed.
+ * @param localName The local name, or the empty string if
+ * Namespace processing is not being performed.
+ * @param qName The qualified name, or the empty string
+ * if qualified names are not available.
+ * @param type The attribute type as a string.
+ * @param value The attribute value.
+ * @exception java.lang.ArrayIndexOutOfBoundsException When the
+ * supplied index does not point to an attribute
+ * in the list.
+ */
+ public void setAttribute (int index, String uri, String localName,
+ String qName, String type, String value)
+ {
+ if (index >= 0 && index < length) {
+ data[index*5] = uri;
+ data[index*5+1] = localName;
+ data[index*5+2] = qName;
+ data[index*5+3] = type;
+ data[index*5+4] = value;
+ } else {
+ badIndex(index);
+ }
+ }
+
+
+ /**
+ * Remove an attribute from the list.
+ *
+ * @param index The index of the attribute (zero-based).
+ * @exception java.lang.ArrayIndexOutOfBoundsException When the
+ * supplied index does not point to an attribute
+ * in the list.
+ */
+ public void removeAttribute (int index)
+ {
+ if (index >= 0 && index < length) {
+ if (index < length - 1) {
+ System.arraycopy(data, (index+1)*5, data, index*5,
+ (length-index-1)*5);
+ }
+ index = (length - 1) * 5;
+ data [index++] = null;
+ data [index++] = null;
+ data [index++] = null;
+ data [index++] = null;
+ data [index] = null;
+ length--;
+ } else {
+ badIndex(index);
+ }
+ }
+
+
+ /**
+ * Set the Namespace URI of a specific attribute.
+ *
+ * @param index The index of the attribute (zero-based).
+ * @param uri The attribute's Namespace URI, or the empty
+ * string for none.
+ * @exception java.lang.ArrayIndexOutOfBoundsException When the
+ * supplied index does not point to an attribute
+ * in the list.
+ */
+ public void setURI (int index, String uri)
+ {
+ if (index >= 0 && index < length) {
+ data[index*5] = uri;
+ } else {
+ badIndex(index);
+ }
+ }
+
+
+ /**
+ * Set the local name of a specific attribute.
+ *
+ * @param index The index of the attribute (zero-based).
+ * @param localName The attribute's local name, or the empty
+ * string for none.
+ * @exception java.lang.ArrayIndexOutOfBoundsException When the
+ * supplied index does not point to an attribute
+ * in the list.
+ */
+ public void setLocalName (int index, String localName)
+ {
+ if (index >= 0 && index < length) {
+ data[index*5+1] = localName;
+ } else {
+ badIndex(index);
+ }
+ }
+
+
+ /**
+ * Set the qualified name of a specific attribute.
+ *
+ * @param index The index of the attribute (zero-based).
+ * @param qName The attribute's qualified name, or the empty
+ * string for none.
+ * @exception java.lang.ArrayIndexOutOfBoundsException When the
+ * supplied index does not point to an attribute
+ * in the list.
+ */
+ public void setQName (int index, String qName)
+ {
+ if (index >= 0 && index < length) {
+ data[index*5+2] = qName;
+ } else {
+ badIndex(index);
+ }
+ }
+
+
+ /**
+ * Set the type of a specific attribute.
+ *
+ * @param index The index of the attribute (zero-based).
+ * @param type The attribute's type.
+ * @exception java.lang.ArrayIndexOutOfBoundsException When the
+ * supplied index does not point to an attribute
+ * in the list.
+ */
+ public void setType (int index, String type)
+ {
+ if (index >= 0 && index < length) {
+ data[index*5+3] = type;
+ } else {
+ badIndex(index);
+ }
+ }
+
+
+ /**
+ * Set the value of a specific attribute.
+ *
+ * @param index The index of the attribute (zero-based).
+ * @param value The attribute's value.
+ * @exception java.lang.ArrayIndexOutOfBoundsException When the
+ * supplied index does not point to an attribute
+ * in the list.
+ */
+ public void setValue (int index, String value)
+ {
+ if (index >= 0 && index < length) {
+ data[index*5+4] = value;
+ } else {
+ badIndex(index);
+ }
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal methods.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Ensure the internal array's capacity.
+ *
+ * @param n The minimum number of attributes that the array must
+ * be able to hold.
+ */
+ private void ensureCapacity (int n) {
+ if (n <= 0) {
+ return;
+ }
+ int max;
+ if (data == null || data.length == 0) {
+ max = 25;
+ }
+ else if (data.length >= n * 5) {
+ return;
+ }
+ else {
+ max = data.length;
+ }
+ while (max < n * 5) {
+ max *= 2;
+ }
+
+ String newData[] = new String[max];
+ if (length > 0) {
+ System.arraycopy(data, 0, newData, 0, length*5);
+ }
+ data = newData;
+ }
+
+
+ /**
+ * Report a bad array index in a manipulator.
+ *
+ * @param index The index to report.
+ * @exception java.lang.ArrayIndexOutOfBoundsException Always.
+ */
+ private void badIndex (int index)
+ throws ArrayIndexOutOfBoundsException
+ {
+ String msg =
+ "Attempt to modify attribute at illegal index: " + index;
+ throw new ArrayIndexOutOfBoundsException(msg);
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal state.
+ ////////////////////////////////////////////////////////////////////
+
+ int length;
+ String data [];
+
+}
+
+// end of AttributesImpl.java
+
diff --git a/libjava/org/xml/sax/helpers/DefaultHandler.java b/libjava/org/xml/sax/helpers/DefaultHandler.java
index 957d44d882e..873e754a1a5 100644
--- a/libjava/org/xml/sax/helpers/DefaultHandler.java
+++ b/libjava/org/xml/sax/helpers/DefaultHandler.java
@@ -1,447 +1,468 @@
-// DefaultHandler.java - default implementation of the core handlers.
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the public domain.
-
-// $Id: DefaultHandler.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
-
-package org.xml.sax.helpers;
-
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-
-/**
- * Default base class for SAX2 event handlers.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class is available as a convenience base class for SAX2
- * applications: it provides default implementations for all of the
- * callbacks in the four core SAX2 handler classes:</p>
- *
- * <ul>
- * <li>{@link org.xml.sax.EntityResolver EntityResolver}</li>
- * <li>{@link org.xml.sax.DTDHandler DTDHandler}</li>
- * <li>{@link org.xml.sax.ContentHandler ContentHandler}</li>
- * <li>{@link org.xml.sax.ErrorHandler ErrorHandler}</li>
- * </ul>
- *
- * <p>Application writers can extend this class when they need to
- * implement only part of an interface; parser writers can
- * instantiate this class to provide default handlers when the
- * application has not supplied its own.</p>
- *
- * <p>This class replaces the deprecated SAX1
- * {@link org.xml.sax.HandlerBase HandlerBase} class.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.EntityResolver
- * @see org.xml.sax.DTDHandler
- * @see org.xml.sax.ContentHandler
- * @see org.xml.sax.ErrorHandler
- */
-public class DefaultHandler
- implements EntityResolver, DTDHandler, ContentHandler, ErrorHandler
-{
-
-
- ////////////////////////////////////////////////////////////////////
- // Default implementation of the EntityResolver interface.
- ////////////////////////////////////////////////////////////////////
-
- /**
- * Resolve an external entity.
- *
- * <p>Always return null, so that the parser will use the system
- * identifier provided in the XML document. This method implements
- * the SAX default behaviour: application writers can override it
- * in a subclass to do special translations such as catalog lookups
- * or URI redirection.</p>
- *
- * @param publicId The public identifier, or null if none is
- * available.
- * @param systemId The system identifier provided in the XML
- * document.
- * @return The new input source, or null to require the
- * default behaviour.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.EntityResolver#resolveEntity
- */
- public InputSource resolveEntity (String publicId, String systemId)
- throws SAXException
- {
- return null;
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Default implementation of DTDHandler interface.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Receive notification of a notation declaration.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass if they wish to keep track of the notations
- * declared in a document.</p>
- *
- * @param name The notation name.
- * @param publicId The notation public identifier, or null if not
- * available.
- * @param systemId The notation system identifier.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.DTDHandler#notationDecl
- */
- public void notationDecl (String name, String publicId, String systemId)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of an unparsed entity declaration.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to keep track of the unparsed entities
- * declared in a document.</p>
- *
- * @param name The entity name.
- * @param publicId The entity public identifier, or null if not
- * available.
- * @param systemId The entity system identifier.
- * @param notationName The name of the associated notation.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.DTDHandler#unparsedEntityDecl
- */
- public void unparsedEntityDecl (String name, String publicId,
- String systemId, String notationName)
- throws SAXException
- {
- // no op
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Default implementation of ContentHandler interface.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Receive a Locator object for document events.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass if they wish to store the locator for use
- * with other document events.</p>
- *
- * @param locator A locator for all SAX document events.
- * @see org.xml.sax.ContentHandler#setDocumentLocator
- * @see org.xml.sax.Locator
- */
- public void setDocumentLocator (Locator locator)
- {
- // no op
- }
-
-
- /**
- * Receive notification of the beginning of the document.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions at the beginning
- * of a document (such as allocating the root node of a tree or
- * creating an output file).</p>
- *
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ContentHandler#startDocument
- */
- public void startDocument ()
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of the end of the document.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions at the end
- * of a document (such as finalising a tree or closing an output
- * file).</p>
- *
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ContentHandler#endDocument
- */
- public void endDocument ()
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of the start of a Namespace mapping.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions at the start of
- * each Namespace prefix scope (such as storing the prefix mapping).</p>
- *
- * @param prefix The Namespace prefix being declared.
- * @param uri The Namespace URI mapped to the prefix.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ContentHandler#startPrefixMapping
- */
- public void startPrefixMapping (String prefix, String uri)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of the end of a Namespace mapping.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions at the end of
- * each prefix mapping.</p>
- *
- * @param prefix The Namespace prefix being declared.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ContentHandler#endPrefixMapping
- */
- public void endPrefixMapping (String prefix)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of the start of an element.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions at the start of
- * each element (such as allocating a new tree node or writing
- * output to a file).</p>
- *
- * @param name The element type name.
- * @param attributes The specified or defaulted attributes.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ContentHandler#startElement
- */
- public void startElement (String uri, String localName,
- String qName, Attributes attributes)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of the end of an element.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions at the end of
- * each element (such as finalising a tree node or writing
- * output to a file).</p>
- *
- * @param name The element type name.
- * @param attributes The specified or defaulted attributes.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ContentHandler#endElement
- */
- public void endElement (String uri, String localName, String qName)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of character data inside an element.
- *
- * <p>By default, do nothing. Application writers may override this
- * method to take specific actions for each chunk of character data
- * (such as adding the data to a node or buffer, or printing it to
- * a file).</p>
- *
- * @param ch The characters.
- * @param start The start position in the character array.
- * @param length The number of characters to use from the
- * character array.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ContentHandler#characters
- */
- public void characters (char ch[], int start, int length)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of ignorable whitespace in element content.
- *
- * <p>By default, do nothing. Application writers may override this
- * method to take specific actions for each chunk of ignorable
- * whitespace (such as adding data to a node or buffer, or printing
- * it to a file).</p>
- *
- * @param ch The whitespace characters.
- * @param start The start position in the character array.
- * @param length The number of characters to use from the
- * character array.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ContentHandler#ignorableWhitespace
- */
- public void ignorableWhitespace (char ch[], int start, int length)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of a processing instruction.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions for each
- * processing instruction, such as setting status variables or
- * invoking other methods.</p>
- *
- * @param target The processing instruction target.
- * @param data The processing instruction data, or null if
- * none is supplied.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ContentHandler#processingInstruction
- */
- public void processingInstruction (String target, String data)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of a skipped entity.
- *
- * <p>By default, do nothing. Application writers may override this
- * method in a subclass to take specific actions for each
- * processing instruction, such as setting status variables or
- * invoking other methods.</p>
- *
- * @param name The name of the skipped entity.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ContentHandler#processingInstruction
- */
- public void skippedEntity (String name)
- throws SAXException
- {
- // no op
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Default implementation of the ErrorHandler interface.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Receive notification of a parser warning.
- *
- * <p>The default implementation does nothing. Application writers
- * may override this method in a subclass to take specific actions
- * for each warning, such as inserting the message in a log file or
- * printing it to the console.</p>
- *
- * @param e The warning information encoded as an exception.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ErrorHandler#warning
- * @see org.xml.sax.SAXParseException
- */
- public void warning (SAXParseException e)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Receive notification of a recoverable parser error.
- *
- * <p>The default implementation does nothing. Application writers
- * may override this method in a subclass to take specific actions
- * for each error, such as inserting the message in a log file or
- * printing it to the console.</p>
- *
- * @param e The warning information encoded as an exception.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ErrorHandler#warning
- * @see org.xml.sax.SAXParseException
- */
- public void error (SAXParseException e)
- throws SAXException
- {
- // no op
- }
-
-
- /**
- * Report a fatal XML parsing error.
- *
- * <p>The default implementation throws a SAXParseException.
- * Application writers may override this method in a subclass if
- * they need to take specific actions for each fatal error (such as
- * collecting all of the errors into a single report): in any case,
- * the application must stop all regular processing when this
- * method is invoked, since the document is no longer reliable, and
- * the parser may no longer report parsing events.</p>
- *
- * @param e The error information encoded as an exception.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @see org.xml.sax.ErrorHandler#fatalError
- * @see org.xml.sax.SAXParseException
- */
- public void fatalError (SAXParseException e)
- throws SAXException
- {
- throw e;
- }
-
-}
-
-// end of DefaultHandler.java
+// DefaultHandler.java - default implementation of the core handlers.
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the public domain.
+
+// $Id: DefaultHandler.java,v 1.5.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax.helpers;
+
+import java.io.IOException;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.Attributes;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.DTDHandler;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+
+/**
+ * Default base class for SAX2 event handlers.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class is available as a convenience base class for SAX2
+ * applications: it provides default implementations for all of the
+ * callbacks in the four core SAX2 handler classes:</p>
+ *
+ * <ul>
+ * <li>{@link org.xml.sax.EntityResolver EntityResolver}</li>
+ * <li>{@link org.xml.sax.DTDHandler DTDHandler}</li>
+ * <li>{@link org.xml.sax.ContentHandler ContentHandler}</li>
+ * <li>{@link org.xml.sax.ErrorHandler ErrorHandler}</li>
+ * </ul>
+ *
+ * <p>Application writers can extend this class when they need to
+ * implement only part of an interface; parser writers can
+ * instantiate this class to provide default handlers when the
+ * application has not supplied its own.</p>
+ *
+ * <p>This class replaces the deprecated SAX1
+ * {@link org.xml.sax.HandlerBase HandlerBase} class.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson,
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.EntityResolver
+ * @see org.xml.sax.DTDHandler
+ * @see org.xml.sax.ContentHandler
+ * @see org.xml.sax.ErrorHandler
+ */
+public class DefaultHandler
+ implements EntityResolver, DTDHandler, ContentHandler, ErrorHandler
+{
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Default implementation of the EntityResolver interface.
+ ////////////////////////////////////////////////////////////////////
+
+ /**
+ * Resolve an external entity.
+ *
+ * <p>Always return null, so that the parser will use the system
+ * identifier provided in the XML document. This method implements
+ * the SAX default behaviour: application writers can override it
+ * in a subclass to do special translations such as catalog lookups
+ * or URI redirection.</p>
+ *
+ * @param publicId The public identifer, or null if none is
+ * available.
+ * @param systemId The system identifier provided in the XML
+ * document.
+ * @return The new input source, or null to require the
+ * default behaviour.
+ * @exception java.io.IOException If there is an error setting
+ * up the new input source.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.EntityResolver#resolveEntity
+ */
+ public InputSource resolveEntity (String publicId, String systemId)
+ throws IOException, SAXException
+ {
+ return null;
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Default implementation of DTDHandler interface.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Receive notification of a notation declaration.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass if they wish to keep track of the notations
+ * declared in a document.</p>
+ *
+ * @param name The notation name.
+ * @param publicId The notation public identifier, or null if not
+ * available.
+ * @param systemId The notation system identifier.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.DTDHandler#notationDecl
+ */
+ public void notationDecl (String name, String publicId, String systemId)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of an unparsed entity declaration.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to keep track of the unparsed entities
+ * declared in a document.</p>
+ *
+ * @param name The entity name.
+ * @param publicId The entity public identifier, or null if not
+ * available.
+ * @param systemId The entity system identifier.
+ * @param notationName The name of the associated notation.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.DTDHandler#unparsedEntityDecl
+ */
+ public void unparsedEntityDecl (String name, String publicId,
+ String systemId, String notationName)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Default implementation of ContentHandler interface.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Receive a Locator object for document events.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass if they wish to store the locator for use
+ * with other document events.</p>
+ *
+ * @param locator A locator for all SAX document events.
+ * @see org.xml.sax.ContentHandler#setDocumentLocator
+ * @see org.xml.sax.Locator
+ */
+ public void setDocumentLocator (Locator locator)
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of the beginning of the document.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions at the beginning
+ * of a document (such as allocating the root node of a tree or
+ * creating an output file).</p>
+ *
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ContentHandler#startDocument
+ */
+ public void startDocument ()
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of the end of the document.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions at the end
+ * of a document (such as finalising a tree or closing an output
+ * file).</p>
+ *
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ContentHandler#endDocument
+ */
+ public void endDocument ()
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of the start of a Namespace mapping.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions at the start of
+ * each Namespace prefix scope (such as storing the prefix mapping).</p>
+ *
+ * @param prefix The Namespace prefix being declared.
+ * @param uri The Namespace URI mapped to the prefix.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ContentHandler#startPrefixMapping
+ */
+ public void startPrefixMapping (String prefix, String uri)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of the end of a Namespace mapping.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions at the end of
+ * each prefix mapping.</p>
+ *
+ * @param prefix The Namespace prefix being declared.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ContentHandler#endPrefixMapping
+ */
+ public void endPrefixMapping (String prefix)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of the start of an element.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions at the start of
+ * each element (such as allocating a new tree node or writing
+ * output to a file).</p>
+ *
+ * @param uri The Namespace URI, or the empty string if the
+ * element has no Namespace URI or if Namespace
+ * processing is not being performed.
+ * @param localName The local name (without prefix), or the
+ * empty string if Namespace processing is not being
+ * performed.
+ * @param qName The qualified name (with prefix), or the
+ * empty string if qualified names are not available.
+ * @param atts The attributes attached to the element. If
+ * there are no attributes, it shall be an empty
+ * Attributes object.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ContentHandler#startElement
+ */
+ public void startElement (String uri, String localName,
+ String qName, Attributes attributes)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of the end of an element.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions at the end of
+ * each element (such as finalising a tree node or writing
+ * output to a file).</p>
+ *
+ * @param uri The Namespace URI, or the empty string if the
+ * element has no Namespace URI or if Namespace
+ * processing is not being performed.
+ * @param localName The local name (without prefix), or the
+ * empty string if Namespace processing is not being
+ * performed.
+ * @param qName The qualified name (with prefix), or the
+ * empty string if qualified names are not available.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ContentHandler#endElement
+ */
+ public void endElement (String uri, String localName, String qName)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of character data inside an element.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method to take specific actions for each chunk of character data
+ * (such as adding the data to a node or buffer, or printing it to
+ * a file).</p>
+ *
+ * @param ch The characters.
+ * @param start The start position in the character array.
+ * @param length The number of characters to use from the
+ * character array.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ContentHandler#characters
+ */
+ public void characters (char ch[], int start, int length)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of ignorable whitespace in element content.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method to take specific actions for each chunk of ignorable
+ * whitespace (such as adding data to a node or buffer, or printing
+ * it to a file).</p>
+ *
+ * @param ch The whitespace characters.
+ * @param start The start position in the character array.
+ * @param length The number of characters to use from the
+ * character array.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ContentHandler#ignorableWhitespace
+ */
+ public void ignorableWhitespace (char ch[], int start, int length)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of a processing instruction.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions for each
+ * processing instruction, such as setting status variables or
+ * invoking other methods.</p>
+ *
+ * @param target The processing instruction target.
+ * @param data The processing instruction data, or null if
+ * none is supplied.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ContentHandler#processingInstruction
+ */
+ public void processingInstruction (String target, String data)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of a skipped entity.
+ *
+ * <p>By default, do nothing. Application writers may override this
+ * method in a subclass to take specific actions for each
+ * processing instruction, such as setting status variables or
+ * invoking other methods.</p>
+ *
+ * @param name The name of the skipped entity.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ContentHandler#processingInstruction
+ */
+ public void skippedEntity (String name)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Default implementation of the ErrorHandler interface.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Receive notification of a parser warning.
+ *
+ * <p>The default implementation does nothing. Application writers
+ * may override this method in a subclass to take specific actions
+ * for each warning, such as inserting the message in a log file or
+ * printing it to the console.</p>
+ *
+ * @param e The warning information encoded as an exception.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ErrorHandler#warning
+ * @see org.xml.sax.SAXParseException
+ */
+ public void warning (SAXParseException e)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Receive notification of a recoverable parser error.
+ *
+ * <p>The default implementation does nothing. Application writers
+ * may override this method in a subclass to take specific actions
+ * for each error, such as inserting the message in a log file or
+ * printing it to the console.</p>
+ *
+ * @param e The warning information encoded as an exception.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ErrorHandler#warning
+ * @see org.xml.sax.SAXParseException
+ */
+ public void error (SAXParseException e)
+ throws SAXException
+ {
+ // no op
+ }
+
+
+ /**
+ * Report a fatal XML parsing error.
+ *
+ * <p>The default implementation throws a SAXParseException.
+ * Application writers may override this method in a subclass if
+ * they need to take specific actions for each fatal error (such as
+ * collecting all of the errors into a single report): in any case,
+ * the application must stop all regular processing when this
+ * method is invoked, since the document is no longer reliable, and
+ * the parser may no longer report parsing events.</p>
+ *
+ * @param e The error information encoded as an exception.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @see org.xml.sax.ErrorHandler#fatalError
+ * @see org.xml.sax.SAXParseException
+ */
+ public void fatalError (SAXParseException e)
+ throws SAXException
+ {
+ throw e;
+ }
+
+}
+
+// end of DefaultHandler.java
diff --git a/libjava/org/xml/sax/helpers/LocatorImpl.java b/libjava/org/xml/sax/helpers/LocatorImpl.java
index 634044ccff2..4b297eabd9c 100644
--- a/libjava/org/xml/sax/helpers/LocatorImpl.java
+++ b/libjava/org/xml/sax/helpers/LocatorImpl.java
@@ -1,212 +1,214 @@
-// SAX default implementation for Locator.
-// No warranty; no copyright -- use this as you will.
-// $Id: LocatorImpl.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
-
-package org.xml.sax.helpers;
-
-import org.xml.sax.Locator;
-
-
-/**
- * Provide an optional convenience implementation of Locator.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class is available mainly for application writers, who
- * can use it to make a persistent snapshot of a locator at any
- * point during a document parse:</p>
- *
- * <pre>
- * Locator locator;
- * Locator startloc;
- *
- * public void setLocator (Locator locator)
- * {
- * // note the locator
- * this.locator = locator;
- * }
- *
- * public void startDocument ()
- * {
- * // save the location of the start of the document
- * // for future use.
- * Locator startloc = new LocatorImpl(locator);
- * }
- *</pre>
- *
- * <p>Normally, parser writers will not use this class, since it
- * is more efficient to provide location information only when
- * requested, rather than constantly updating a Locator object.</p>
- *
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.Locator Locator
- */
-public class LocatorImpl implements Locator
-{
-
-
- /**
- * Zero-argument constructor.
- *
- * <p>This will not normally be useful, since the main purpose
- * of this class is to make a snapshot of an existing Locator.</p>
- */
- public LocatorImpl ()
- {
- }
-
-
- /**
- * Copy constructor.
- *
- * <p>Create a persistent copy of the current state of a locator.
- * When the original locator changes, this copy will still keep
- * the original values (and it can be used outside the scope of
- * DocumentHandler methods).</p>
- *
- * @param locator The locator to copy.
- */
- public LocatorImpl (Locator locator)
- {
- setPublicId(locator.getPublicId());
- setSystemId(locator.getSystemId());
- setLineNumber(locator.getLineNumber());
- setColumnNumber(locator.getColumnNumber());
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.Locator
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Return the saved public identifier.
- *
- * @return The public identifier as a string, or null if none
- * is available.
- * @see org.xml.sax.Locator#getPublicId
- * @see #setPublicId
- */
- public String getPublicId ()
- {
- return publicId;
- }
-
-
- /**
- * Return the saved system identifier.
- *
- * @return The system identifier as a string, or null if none
- * is available.
- * @see org.xml.sax.Locator#getSystemId
- * @see #setSystemId
- */
- public String getSystemId ()
- {
- return systemId;
- }
-
-
- /**
- * Return the saved line number (1-based).
- *
- * @return The line number as an integer, or -1 if none is available.
- * @see org.xml.sax.Locator#getLineNumber
- * @see #setLineNumber
- */
- public int getLineNumber ()
- {
- return lineNumber;
- }
-
-
- /**
- * Return the saved column number (1-based).
- *
- * @return The column number as an integer, or -1 if none is available.
- * @see org.xml.sax.Locator#getColumnNumber
- * @see #setColumnNumber
- */
- public int getColumnNumber ()
- {
- return columnNumber;
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Setters for the properties (not in org.xml.sax.Locator)
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Set the public identifier for this locator.
- *
- * @param publicId The new public identifier, or null
- * if none is available.
- * @see #getPublicId
- */
- public void setPublicId (String publicId)
- {
- this.publicId = publicId;
- }
-
-
- /**
- * Set the system identifier for this locator.
- *
- * @param systemId The new system identifier, or null
- * if none is available.
- * @see #getSystemId
- */
- public void setSystemId (String systemId)
- {
- this.systemId = systemId;
- }
-
-
- /**
- * Set the line number for this locator (1-based).
- *
- * @param lineNumber The line number, or -1 if none is available.
- * @see #getLineNumber
- */
- public void setLineNumber (int lineNumber)
- {
- this.lineNumber = lineNumber;
- }
-
-
- /**
- * Set the column number for this locator (1-based).
- *
- * @param columnNumber The column number, or -1 if none is available.
- * @see #getColumnNumber
- */
- public void setColumnNumber (int columnNumber)
- {
- this.columnNumber = columnNumber;
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal state.
- ////////////////////////////////////////////////////////////////////
-
- private String publicId;
- private String systemId;
- private int lineNumber;
- private int columnNumber;
-
-}
-
-// end of LocatorImpl.java
+// SAX default implementation for Locator.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: LocatorImpl.java,v 1.3.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax.helpers;
+
+import org.xml.sax.Locator;
+
+
+/**
+ * Provide an optional convenience implementation of Locator.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class is available mainly for application writers, who
+ * can use it to make a persistent snapshot of a locator at any
+ * point during a document parse:</p>
+ *
+ * <pre>
+ * Locator locator;
+ * Locator startloc;
+ *
+ * public void setLocator (Locator locator)
+ * {
+ * // note the locator
+ * this.locator = locator;
+ * }
+ *
+ * public void startDocument ()
+ * {
+ * // save the location of the start of the document
+ * // for future use.
+ * Locator startloc = new LocatorImpl(locator);
+ * }
+ *</pre>
+ *
+ * <p>Normally, parser writers will not use this class, since it
+ * is more efficient to provide location information only when
+ * requested, rather than constantly updating a Locator object.</p>
+ *
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.Locator Locator
+ */
+public class LocatorImpl implements Locator
+{
+
+
+ /**
+ * Zero-argument constructor.
+ *
+ * <p>This will not normally be useful, since the main purpose
+ * of this class is to make a snapshot of an existing Locator.</p>
+ */
+ public LocatorImpl ()
+ {
+ }
+
+
+ /**
+ * Copy constructor.
+ *
+ * <p>Create a persistent copy of the current state of a locator.
+ * When the original locator changes, this copy will still keep
+ * the original values (and it can be used outside the scope of
+ * DocumentHandler methods).</p>
+ *
+ * @param locator The locator to copy.
+ */
+ public LocatorImpl (Locator locator)
+ {
+ setPublicId(locator.getPublicId());
+ setSystemId(locator.getSystemId());
+ setLineNumber(locator.getLineNumber());
+ setColumnNumber(locator.getColumnNumber());
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.Locator
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Return the saved public identifier.
+ *
+ * @return The public identifier as a string, or null if none
+ * is available.
+ * @see org.xml.sax.Locator#getPublicId
+ * @see #setPublicId
+ */
+ public String getPublicId ()
+ {
+ return publicId;
+ }
+
+
+ /**
+ * Return the saved system identifier.
+ *
+ * @return The system identifier as a string, or null if none
+ * is available.
+ * @see org.xml.sax.Locator#getSystemId
+ * @see #setSystemId
+ */
+ public String getSystemId ()
+ {
+ return systemId;
+ }
+
+
+ /**
+ * Return the saved line number (1-based).
+ *
+ * @return The line number as an integer, or -1 if none is available.
+ * @see org.xml.sax.Locator#getLineNumber
+ * @see #setLineNumber
+ */
+ public int getLineNumber ()
+ {
+ return lineNumber;
+ }
+
+
+ /**
+ * Return the saved column number (1-based).
+ *
+ * @return The column number as an integer, or -1 if none is available.
+ * @see org.xml.sax.Locator#getColumnNumber
+ * @see #setColumnNumber
+ */
+ public int getColumnNumber ()
+ {
+ return columnNumber;
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Setters for the properties (not in org.xml.sax.Locator)
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Set the public identifier for this locator.
+ *
+ * @param publicId The new public identifier, or null
+ * if none is available.
+ * @see #getPublicId
+ */
+ public void setPublicId (String publicId)
+ {
+ this.publicId = publicId;
+ }
+
+
+ /**
+ * Set the system identifier for this locator.
+ *
+ * @param systemId The new system identifier, or null
+ * if none is available.
+ * @see #getSystemId
+ */
+ public void setSystemId (String systemId)
+ {
+ this.systemId = systemId;
+ }
+
+
+ /**
+ * Set the line number for this locator (1-based).
+ *
+ * @param lineNumber The line number, or -1 if none is available.
+ * @see #getLineNumber
+ */
+ public void setLineNumber (int lineNumber)
+ {
+ this.lineNumber = lineNumber;
+ }
+
+
+ /**
+ * Set the column number for this locator (1-based).
+ *
+ * @param columnNumber The column number, or -1 if none is available.
+ * @see #getColumnNumber
+ */
+ public void setColumnNumber (int columnNumber)
+ {
+ this.columnNumber = columnNumber;
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal state.
+ ////////////////////////////////////////////////////////////////////
+
+ private String publicId;
+ private String systemId;
+ private int lineNumber;
+ private int columnNumber;
+
+}
+
+// end of LocatorImpl.java
diff --git a/libjava/org/xml/sax/helpers/NamespaceSupport.java b/libjava/org/xml/sax/helpers/NamespaceSupport.java
index a4588c3d2c7..917a7f75dce 100644
--- a/libjava/org/xml/sax/helpers/NamespaceSupport.java
+++ b/libjava/org/xml/sax/helpers/NamespaceSupport.java
@@ -1,689 +1,770 @@
-// NamespaceSupport.java - generic Namespace support for SAX.
-// Written by David Megginson, sax@megginson.com
-// This class is in the Public Domain. NO WARRANTY!
-
-// $Id: NamespaceSupport.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
-
-package org.xml.sax.helpers;
-
-import java.util.EmptyStackException;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Vector;
-
-
-/**
- * Encapsulate Namespace logic for use by SAX drivers.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class encapsulates the logic of Namespace processing:
- * it tracks the declarations currently in force for each context
- * and automatically processes qualified XML 1.0 names into their
- * Namespace parts; it can also be used in reverse for generating
- * XML 1.0 from Namespaces.</p>
- *
- * <p>Namespace support objects are reusable, but the reset method
- * must be invoked between each session.</p>
- *
- * <p>Here is a simple session:</p>
- *
- * <pre>
- * String parts[] = new String[3];
- * NamespaceSupport support = new NamespaceSupport();
- *
- * support.pushContext();
- * support.declarePrefix("", "http://www.w3.org/1999/xhtml");
- * support.declarePrefix("dc", "http://www.purl.org/dc#");
- *
- * String parts[] = support.processName("p", parts, false);
- * System.out.println("Namespace URI: " + parts[0]);
- * System.out.println("Local name: " + parts[1]);
- * System.out.println("Raw name: " + parts[2]);
-
- * String parts[] = support.processName("dc:title", parts, false);
- * System.out.println("Namespace URI: " + parts[0]);
- * System.out.println("Local name: " + parts[1]);
- * System.out.println("Raw name: " + parts[2]);
-
- * support.popContext();
- * </pre>
- *
- * <p>Note that this class is optimized for the use case where most
- * elements do not contain Namespace declarations: if the same
- * prefix/URI mapping is repeated for each context (for example), this
- * class will be somewhat less efficient.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- */
-public class NamespaceSupport
-{
-
-
- ////////////////////////////////////////////////////////////////////
- // Constants.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * The XML Namespace as a constant.
- *
- * <p>This is the Namespace URI that is automatically mapped
- * to the "xml" prefix.</p>
- */
- public final static String XMLNS =
- "http://www.w3.org/XML/1998/namespace";
-
-
- /**
- * An empty enumeration.
- */
- private final static Enumeration EMPTY_ENUMERATION =
- new Vector().elements();
-
-
- ////////////////////////////////////////////////////////////////////
- // Constructor.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Create a new Namespace support object.
- */
- public NamespaceSupport ()
- {
- reset();
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Context management.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Reset this Namespace support object for reuse.
- *
- * <p>It is necessary to invoke this method before reusing the
- * Namespace support object for a new session.</p>
- */
- public void reset ()
- {
- contexts = new Context[32];
- contextPos = 0;
- contexts[contextPos] = currentContext = new Context();
- currentContext.declarePrefix("xml", XMLNS);
- }
-
-
- /**
- * Start a new Namespace context.
- *
- * <p>Normally, you should push a new context at the beginning
- * of each XML element: the new context will automatically inherit
- * the declarations of its parent context, but it will also keep
- * track of which declarations were made within this context.</p>
- *
- * <p>The Namespace support object always starts with a base context
- * already in force: in this context, only the "xml" prefix is
- * declared.</p>
- *
- * @see #popContext
- */
- public void pushContext ()
- {
- int max = contexts.length;
- contextPos++;
-
- // Extend the array if necessary
- if (contextPos >= max) {
- Context newContexts[] = new Context[max*2];
- System.arraycopy(contexts, 0, newContexts, 0, max);
- max *= 2;
- contexts = newContexts;
- }
-
- // Allocate the context if necessary.
- currentContext = contexts[contextPos];
- if (currentContext == null) {
- contexts[contextPos] = currentContext = new Context();
- }
-
- // Set the parent, if any.
- if (contextPos > 0) {
- currentContext.setParent(contexts[contextPos - 1]);
- }
- }
-
-
- /**
- * Revert to the previous Namespace context.
- *
- * <p>Normally, you should pop the context at the end of each
- * XML element. After popping the context, all Namespace prefix
- * mappings that were previously in force are restored.</p>
- *
- * <p>You must not attempt to declare additional Namespace
- * prefixes after popping a context, unless you push another
- * context first.</p>
- *
- * @see #pushContext
- */
- public void popContext ()
- {
- contextPos--;
- if (contextPos < 0) {
- throw new EmptyStackException();
- }
- currentContext = contexts[contextPos];
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Operations within a context.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Declare a Namespace prefix.
- *
- * <p>This method declares a prefix in the current Namespace
- * context; the prefix will remain in force until this context
- * is popped, unless it is shadowed in a descendant context.</p>
- *
- * <p>To declare a default Namespace, use the empty string. The
- * prefix must not be "xml" or "xmlns".</p>
- *
- * <p>Note that you must <em>not</em> declare a prefix after
- * you've pushed and popped another Namespace.</p>
- *
- * <p>Note that there is an asymmetry in this library: while {@link
- * #getPrefix getPrefix} will not return the default "" prefix,
- * even if you have declared one; to check for a default prefix,
- * you have to look it up explicitly using {@link #getURI getURI}.
- * This asymmetry exists to make it easier to look up prefixes
- * for attribute names, where the default prefix is not allowed.</p>
- *
- * @param prefix The prefix to declare, or null for the empty
- * string.
- * @param uri The Namespace URI to associate with the prefix.
- * @return true if the prefix was legal, false otherwise
- * @see #processName
- * @see #getURI
- * @see #getPrefix
- */
- public boolean declarePrefix (String prefix, String uri)
- {
- if (prefix.equals("xml") || prefix.equals("xmlns")) {
- return false;
- } else {
- currentContext.declarePrefix(prefix, uri);
- return true;
- }
- }
-
-
- /**
- * Process a raw XML 1.0 name.
- *
- * <p>This method processes a raw XML 1.0 name in the current
- * context by removing the prefix and looking it up among the
- * prefixes currently declared. The return value will be the
- * array supplied by the caller, filled in as follows:</p>
- *
- * <dl>
- * <dt>parts[0]</dt>
- * <dd>The Namespace URI, or an empty string if none is
- * in use.</dd>
- * <dt>parts[1]</dt>
- * <dd>The local name (without prefix).</dd>
- * <dt>parts[2]</dt>
- * <dd>The original raw name.</dd>
- * </dl>
- *
- * <p>All of the strings in the array will be internalized. If
- * the raw name has a prefix that has not been declared, then
- * the return value will be null.</p>
- *
- * <p>Note that attribute names are processed differently than
- * element names: an unprefixed element name will received the
- * default Namespace (if any), while an unprefixed element name
- * will not.</p>
- *
- * @param qName The raw XML 1.0 name to be processed.
- * @param parts An array supplied by the caller, capable of
- * holding at least three members.
- * @param isAttribute A flag indicating whether this is an
- * attribute name (true) or an element name (false).
- * @return The supplied array holding three internalized strings
- * representing the Namespace URI (or empty string), the
- * local name, and the raw XML 1.0 name; or null if there
- * is an undeclared prefix.
- * @see #declarePrefix
- * @see java.lang.String#intern */
- public String [] processName (String qName, String parts[],
- boolean isAttribute)
- {
- String myParts[] = currentContext.processName(qName, isAttribute);
- if (myParts == null) {
- return null;
- } else {
- parts[0] = myParts[0];
- parts[1] = myParts[1];
- parts[2] = myParts[2];
- return parts;
- }
- }
-
-
- /**
- * Look up a prefix and get the currently-mapped Namespace URI.
- *
- * <p>This method looks up the prefix in the current context.
- * Use the empty string ("") for the default Namespace.</p>
- *
- * @param prefix The prefix to look up.
- * @return The associated Namespace URI, or null if the prefix
- * is undeclared in this context.
- * @see #getPrefix
- * @see #getPrefixes
- */
- public String getURI (String prefix)
- {
- return currentContext.getURI(prefix);
- }
-
-
- /**
- * Return an enumeration of all prefixes currently declared.
- *
- * <p><strong>Note:</strong> if there is a default prefix, it will not be
- * returned in this enumeration; check for the default prefix
- * using the {@link #getURI getURI} with an argument of "".</p>
- *
- * @return An enumeration of all prefixes declared in the
- * current context except for the empty (default)
- * prefix.
- * @see #getDeclaredPrefixes
- * @see #getURI
- */
- public Enumeration getPrefixes ()
- {
- return currentContext.getPrefixes();
- }
-
-
- /**
- * Return one of the prefixes mapped to a Namespace URI.
- *
- * <p>If more than one prefix is currently mapped to the same
- * URI, this method will make an arbitrary selection; if you
- * want all of the prefixes, use the {@link #getPrefixes}
- * method instead.</p>
- *
- * <p><strong>Note:</strong> this will never return the empty (default) prefix;
- * to check for a default prefix, use the {@link #getURI getURI}
- * method with an argument of "".</p>
- *
- * @param uri The Namespace URI.
- * @param isAttribute true if this prefix is for an attribute
- * (and the default Namespace is not allowed).
- * @return One of the prefixes currently mapped to the URI supplied,
- * or null if none is mapped or if the URI is assigned to
- * the default Namespace.
- * @see #getPrefixes(java.lang.String)
- * @see #getURI
- */
- public String getPrefix (String uri)
- {
- return currentContext.getPrefix(uri);
- }
-
-
- /**
- * Return an enumeration of all prefixes currently declared for a URI.
- *
- * <p>This method returns prefixes mapped to a specific Namespace
- * URI. The xml: prefix will be included. If you want only one
- * prefix that's mapped to the Namespace URI, and you don't care
- * which one you get, use the {@link #getPrefix getPrefix}
- * method instead.</p>
- *
- * <p><strong>Note:</strong> the empty (default) prefix is <em>never</em> included
- * in this enumeration; to check for the presence of a default
- * Namespace, use the {@link #getURI getURI} method with an
- * argument of "".</p>
- *
- * @param uri The Namespace URI.
- * @return An enumeration of all prefixes declared in the
- * current context.
- * @see #getPrefix
- * @see #getDeclaredPrefixes
- * @see #getURI
- */
- public Enumeration getPrefixes (String uri)
- {
- Vector prefixes = new Vector();
- Enumeration allPrefixes = getPrefixes();
- while (allPrefixes.hasMoreElements()) {
- String prefix = (String)allPrefixes.nextElement();
- if (uri.equals(getURI(prefix))) {
- prefixes.addElement(prefix);
- }
- }
- return prefixes.elements();
- }
-
-
- /**
- * Return an enumeration of all prefixes declared in this context.
- *
- * <p>The empty (default) prefix will be included in this
- * enumeration; note that this behaviour differs from that of
- * {@link #getPrefix} and {@link #getPrefixes}.</p>
- *
- * @return An enumeration of all prefixes declared in this
- * context.
- * @see #getPrefixes
- * @see #getURI
- */
- public Enumeration getDeclaredPrefixes ()
- {
- return currentContext.getDeclaredPrefixes();
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal state.
- ////////////////////////////////////////////////////////////////////
-
- private Context contexts[];
- private Context currentContext;
- private int contextPos;
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal classes.
- ////////////////////////////////////////////////////////////////////
-
- /**
- * Internal class for a single Namespace context.
- *
- * <p>This module caches and reuses Namespace contexts, so the number allocated
- * will be equal to the element depth of the document, not to the total
- * number of elements (i.e. 5-10 rather than tens of thousands).</p>
- */
- final class Context {
-
- /**
- * Create the root-level Namespace context.
- */
- Context ()
- {
- copyTables();
- }
-
-
- /**
- * (Re)set the parent of this Namespace context.
- *
- * @param context The parent Namespace context object.
- */
- void setParent (Context parent)
- {
- this.parent = parent;
- declarations = null;
- prefixTable = parent.prefixTable;
- uriTable = parent.uriTable;
- elementNameTable = parent.elementNameTable;
- attributeNameTable = parent.attributeNameTable;
- defaultNS = parent.defaultNS;
- tablesDirty = false;
- }
-
-
- /**
- * Declare a Namespace prefix for this context.
- *
- * @param prefix The prefix to declare.
- * @param uri The associated Namespace URI.
- * @see org.xml.sax.helpers.NamespaceSupport#declarePrefix
- */
- void declarePrefix (String prefix, String uri)
- {
- // Lazy processing...
- if (!tablesDirty) {
- copyTables();
- }
- if (declarations == null) {
- declarations = new Vector();
- }
-
- prefix = prefix.intern();
- uri = uri.intern();
- if ("".equals(prefix)) {
- if ("".equals(uri)) {
- defaultNS = null;
- } else {
- defaultNS = uri;
- }
- } else {
- prefixTable.put(prefix, uri);
- uriTable.put(uri, prefix); // may wipe out another prefix
- }
- declarations.addElement(prefix);
- }
-
-
- /**
- * Process a raw XML 1.0 name in this context.
- *
- * @param qName The raw XML 1.0 name.
- * @param isAttribute true if this is an attribute name.
- * @return An array of three strings containing the
- * URI part (or empty string), the local part,
- * and the raw name, all internalized, or null
- * if there is an undeclared prefix.
- * @see org.xml.sax.helpers.NamespaceSupport#processName
- */
- String [] processName (String qName, boolean isAttribute)
- {
- String name[];
- Hashtable table;
-
- // Select the appropriate table.
- if (isAttribute) {
- table = elementNameTable;
- } else {
- table = attributeNameTable;
- }
-
- // Start by looking in the cache, and
- // return immediately if the name
- // is already known in this content
- name = (String[])table.get(qName);
- if (name != null) {
- return name;
- }
-
- // We haven't seen this name in this
- // context before.
- name = new String[3];
- int index = qName.indexOf(':');
-
-
- // No prefix.
- if (index == -1) {
- if (isAttribute || defaultNS == null) {
- name[0] = "";
- } else {
- name[0] = defaultNS;
- }
- name[1] = qName.intern();
- name[2] = name[1];
- }
-
- // Prefix
- else {
- String prefix = qName.substring(0, index);
- String local = qName.substring(index+1);
- String uri;
- if ("".equals(prefix)) {
- uri = defaultNS;
- } else {
- uri = (String)prefixTable.get(prefix);
- }
- if (uri == null) {
- return null;
- }
- name[0] = uri;
- name[1] = local.intern();
- name[2] = qName.intern();
- }
-
- // Save in the cache for future use.
- table.put(name[2], name);
- tablesDirty = true;
- return name;
- }
-
-
- /**
- * Look up the URI associated with a prefix in this context.
- *
- * @param prefix The prefix to look up.
- * @return The associated Namespace URI, or null if none is
- * declared.
- * @see org.xml.sax.helpers.NamespaceSupport#getURI
- */
- String getURI (String prefix)
- {
- if ("".equals(prefix)) {
- return defaultNS;
- } else if (prefixTable == null) {
- return null;
- } else {
- return (String)prefixTable.get(prefix);
- }
- }
-
-
- /**
- * Look up one of the prefixes associated with a URI in this context.
- *
- * <p>Since many prefixes may be mapped to the same URI,
- * the return value may be unreliable.</p>
- *
- * @param uri The URI to look up.
- * @return The associated prefix, or null if none is declared.
- * @see org.xml.sax.helpers.NamespaceSupport#getPrefix
- */
- String getPrefix (String uri)
- {
- if (uriTable == null) {
- return null;
- } else {
- return (String)uriTable.get(uri);
- }
- }
-
-
- /**
- * Return an enumeration of prefixes declared in this context.
- *
- * @return An enumeration of prefixes (possibly empty).
- * @see org.xml.sax.helpers.NamespaceSupport#getDeclaredPrefixes
- */
- Enumeration getDeclaredPrefixes ()
- {
- if (declarations == null) {
- return EMPTY_ENUMERATION;
- } else {
- return declarations.elements();
- }
- }
-
-
- /**
- * Return an enumeration of all prefixes currently in force.
- *
- * <p>The default prefix, if in force, is <em>not</em>
- * returned, and will have to be checked for separately.</p>
- *
- * @return An enumeration of prefixes (never empty).
- * @see org.xml.sax.helpers.NamespaceSupport#getPrefixes
- */
- Enumeration getPrefixes ()
- {
- if (prefixTable == null) {
- return EMPTY_ENUMERATION;
- } else {
- return prefixTable.keys();
- }
- }
-
-
-
- ////////////////////////////////////////////////////////////////
- // Internal methods.
- ////////////////////////////////////////////////////////////////
-
-
- /**
- * Copy on write for the internal tables in this context.
- *
- * <p>This class is optimized for the normal case where most
- * elements do not contain Namespace declarations.</p>
- */
- private void copyTables ()
- {
- if (prefixTable != null) {
- prefixTable = (Hashtable)prefixTable.clone();
- } else {
- prefixTable = new Hashtable();
- }
- if (uriTable != null) {
- uriTable = (Hashtable)uriTable.clone();
- } else {
- uriTable = new Hashtable();
- }
- elementNameTable = new Hashtable();
- attributeNameTable = new Hashtable();
- tablesDirty = true;
- }
-
-
-
- ////////////////////////////////////////////////////////////////
- // Protected state.
- ////////////////////////////////////////////////////////////////
-
- Hashtable prefixTable;
- Hashtable uriTable;
- Hashtable elementNameTable;
- Hashtable attributeNameTable;
- String defaultNS = null;
-
-
-
- ////////////////////////////////////////////////////////////////
- // Internal state.
- ////////////////////////////////////////////////////////////////
-
- private Vector declarations = null;
- private boolean tablesDirty = false;
- private Context parent = null;
- }
-}
-
-// end of NamespaceSupport.java
+// NamespaceSupport.java - generic Namespace support for SAX.
+// http://www.saxproject.org
+// Written by David Megginson
+// This class is in the Public Domain. NO WARRANTY!
+
+// $Id: NamespaceSupport.java,v 1.6.2.5 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax.helpers;
+
+import java.util.EmptyStackException;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Vector;
+
+
+/**
+ * Encapsulate Namespace logic for use by applications using SAX,
+ * or internally by SAX drivers.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class encapsulates the logic of Namespace processing:
+ * it tracks the declarations currently in force for each context
+ * and automatically processes qualified XML 1.0 names into their
+ * Namespace parts; it can also be used in reverse for generating
+ * XML 1.0 from Namespaces.</p>
+ *
+ * <p>Namespace support objects are reusable, but the reset method
+ * must be invoked between each session.</p>
+ *
+ * <p>Here is a simple session:</p>
+ *
+ * <pre>
+ * String parts[] = new String[3];
+ * NamespaceSupport support = new NamespaceSupport();
+ *
+ * support.pushContext();
+ * support.declarePrefix("", "http://www.w3.org/1999/xhtml");
+ * support.declarePrefix("dc", "http://www.purl.org/dc#");
+ *
+ * parts = support.processName("p", parts, false);
+ * System.out.println("Namespace URI: " + parts[0]);
+ * System.out.println("Local name: " + parts[1]);
+ * System.out.println("Raw name: " + parts[2]);
+ *
+ * parts = support.processName("dc:title", parts, false);
+ * System.out.println("Namespace URI: " + parts[0]);
+ * System.out.println("Local name: " + parts[1]);
+ * System.out.println("Raw name: " + parts[2]);
+ *
+ * support.popContext();
+ * </pre>
+ *
+ * <p>Note that this class is optimized for the use case where most
+ * elements do not contain Namespace declarations: if the same
+ * prefix/URI mapping is repeated for each context (for example), this
+ * class will be somewhat less efficient.</p>
+ *
+ * <p>Although SAX drivers (parsers) may choose to use this class to
+ * implement namespace handling, they are not required to do so.
+ * Applications must track namespace information themselves if they
+ * want to use namespace information.
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ */
+public class NamespaceSupport
+{
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Constants.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * The XML Namespace URI as a constant.
+ * The value is <code>http://www.w3.org/XML/1998/namespace</code>
+ * as defined in the XML Namespaces specification.
+ *
+ * <p>This is the Namespace URI that is automatically mapped
+ * to the "xml" prefix.</p>
+ */
+ public final static String XMLNS =
+ "http://www.w3.org/XML/1998/namespace";
+
+
+ /**
+ * An empty enumeration.
+ */
+ private final static Enumeration EMPTY_ENUMERATION =
+ new Vector().elements();
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Constructor.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Create a new Namespace support object.
+ */
+ public NamespaceSupport ()
+ {
+ reset();
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Context management.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Reset this Namespace support object for reuse.
+ *
+ * <p>It is necessary to invoke this method before reusing the
+ * Namespace support object for a new session.</p>
+ */
+ public void reset ()
+ {
+ contexts = new Context[32];
+ contextPos = 0;
+ contexts[contextPos] = currentContext = new Context();
+ currentContext.declarePrefix("xml", XMLNS);
+ }
+
+
+ /**
+ * Start a new Namespace context.
+ * The new context will automatically inherit
+ * the declarations of its parent context, but it will also keep
+ * track of which declarations were made within this context.
+ *
+ * <p>Event callback code should start a new context once per element.
+ * This means being ready to call this in either of two places.
+ * For elements that don't include namespace declarations, the
+ * <em>ContentHandler.startElement()</em> callback is the right place.
+ * For elements with such a declaration, it'd done in the first
+ * <em>ContentHandler.startPrefixMapping()</em> callback.
+ * A boolean flag can be used to
+ * track whether a context has been started yet. When either of
+ * those methods is called, it checks the flag to see if a new context
+ * needs to be started. If so, it starts the context and sets the
+ * flag. After <em>ContentHandler.startElement()</em>
+ * does that, it always clears the flag.
+ *
+ * <p>Normally, SAX drivers would push a new context at the beginning
+ * of each XML element. Then they perform a first pass over the
+ * attributes to process all namespace declarations, making
+ * <em>ContentHandler.startPrefixMapping()</em> callbacks.
+ * Then a second pass is made, to determine the namespace-qualified
+ * names for all attributes and for the element name.
+ * Finally all the information for the
+ * <em>ContentHandler.startElement()</em> callback is available,
+ * so it can then be made.
+ *
+ * <p>The Namespace support object always starts with a base context
+ * already in force: in this context, only the "xml" prefix is
+ * declared.</p>
+ *
+ * @see org.xml.sax.ContentHandler
+ * @see #popContext
+ */
+ public void pushContext ()
+ {
+ int max = contexts.length;
+
+ contexts [contextPos].declsOK = false;
+ contextPos++;
+
+ // Extend the array if necessary
+ if (contextPos >= max) {
+ Context newContexts[] = new Context[max*2];
+ System.arraycopy(contexts, 0, newContexts, 0, max);
+ max *= 2;
+ contexts = newContexts;
+ }
+
+ // Allocate the context if necessary.
+ currentContext = contexts[contextPos];
+ if (currentContext == null) {
+ contexts[contextPos] = currentContext = new Context();
+ }
+
+ // Set the parent, if any.
+ if (contextPos > 0) {
+ currentContext.setParent(contexts[contextPos - 1]);
+ }
+ }
+
+
+ /**
+ * Revert to the previous Namespace context.
+ *
+ * <p>Normally, you should pop the context at the end of each
+ * XML element. After popping the context, all Namespace prefix
+ * mappings that were previously in force are restored.</p>
+ *
+ * <p>You must not attempt to declare additional Namespace
+ * prefixes after popping a context, unless you push another
+ * context first.</p>
+ *
+ * @see #pushContext
+ */
+ public void popContext ()
+ {
+ contexts[contextPos].clear();
+ contextPos--;
+ if (contextPos < 0) {
+ throw new EmptyStackException();
+ }
+ currentContext = contexts[contextPos];
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Operations within a context.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Declare a Namespace prefix. All prefixes must be declared
+ * before they are referenced. For example, a SAX driver (parser)
+ * would scan an element's attributes
+ * in two passes: first for namespace declarations,
+ * then a second pass using {@link #processName processName()} to
+ * interpret prefixes against (potentially redefined) prefixes.
+ *
+ * <p>This method declares a prefix in the current Namespace
+ * context; the prefix will remain in force until this context
+ * is popped, unless it is shadowed in a descendant context.</p>
+ *
+ * <p>To declare the default element Namespace, use the empty string as
+ * the prefix.</p>
+ *
+ * <p>Note that you must <em>not</em> declare a prefix after
+ * you've pushed and popped another Namespace context, or
+ * treated the declarations phase as complete by processing
+ * a prefixed name.</p>
+ *
+ * <p>Note that there is an asymmetry in this library: {@link
+ * #getPrefix getPrefix} will not return the "" prefix,
+ * even if you have declared a default element namespace.
+ * To check for a default namespace,
+ * you have to look it up explicitly using {@link #getURI getURI}.
+ * This asymmetry exists to make it easier to look up prefixes
+ * for attribute names, where the default prefix is not allowed.</p>
+ *
+ * @param prefix The prefix to declare, or the empty string to
+ * indicate the default element namespace. This may never have
+ * the value "xml" or "xmlns".
+ * @param uri The Namespace URI to associate with the prefix.
+ * @return true if the prefix was legal, false otherwise
+ * @exception IllegalStateException when a prefix is declared
+ * after looking up a name in the context, or after pushing
+ * another context on top of it.
+ *
+ * @see #processName
+ * @see #getURI
+ * @see #getPrefix
+ */
+ public boolean declarePrefix (String prefix, String uri)
+ {
+ if (prefix.equals("xml") || prefix.equals("xmlns")) {
+ return false;
+ } else {
+ currentContext.declarePrefix(prefix, uri);
+ return true;
+ }
+ }
+
+
+ /**
+ * Process a raw XML 1.0 name, after all declarations in the current
+ * context have been handled by {@link #declarePrefix declarePrefix()}.
+ *
+ * <p>This method processes a raw XML 1.0 name in the current
+ * context by removing the prefix and looking it up among the
+ * prefixes currently declared. The return value will be the
+ * array supplied by the caller, filled in as follows:</p>
+ *
+ * <dl>
+ * <dt>parts[0]</dt>
+ * <dd>The Namespace URI, or an empty string if none is
+ * in use.</dd>
+ * <dt>parts[1]</dt>
+ * <dd>The local name (without prefix).</dd>
+ * <dt>parts[2]</dt>
+ * <dd>The original raw name.</dd>
+ * </dl>
+ *
+ * <p>All of the strings in the array will be internalized. If
+ * the raw name has a prefix that has not been declared, then
+ * the return value will be null.</p>
+ *
+ * <p>Note that attribute names are processed differently than
+ * element names: an unprefixed element name will received the
+ * default Namespace (if any), while an unprefixed attribute name
+ * will not.</p>
+ *
+ * @param qName The raw XML 1.0 name to be processed.
+ * @param parts An array supplied by the caller, capable of
+ * holding at least three members.
+ * @param isAttribute A flag indicating whether this is an
+ * attribute name (true) or an element name (false).
+ * @return The supplied array holding three internalized strings
+ * representing the Namespace URI (or empty string), the
+ * local name, and the raw XML 1.0 name; or null if there
+ * is an undeclared prefix.
+ * @see #declarePrefix
+ * @see java.lang.String#intern */
+ public String [] processName (String qName, String parts[],
+ boolean isAttribute)
+ {
+ String myParts[] = currentContext.processName(qName, isAttribute);
+ if (myParts == null) {
+ return null;
+ } else {
+ parts[0] = myParts[0];
+ parts[1] = myParts[1];
+ parts[2] = myParts[2];
+ return parts;
+ }
+ }
+
+
+ /**
+ * Look up a prefix and get the currently-mapped Namespace URI.
+ *
+ * <p>This method looks up the prefix in the current context.
+ * Use the empty string ("") for the default Namespace.</p>
+ *
+ * @param prefix The prefix to look up.
+ * @return The associated Namespace URI, or null if the prefix
+ * is undeclared in this context.
+ * @see #getPrefix
+ * @see #getPrefixes
+ */
+ public String getURI (String prefix)
+ {
+ return currentContext.getURI(prefix);
+ }
+
+
+ /**
+ * Return an enumeration of all prefixes currently declared.
+ *
+ * <p><strong>Note:</strong> if there is a default prefix, it will not be
+ * returned in this enumeration; check for the default prefix
+ * using the {@link #getURI getURI} with an argument of "".</p>
+ *
+ * @return An enumeration of all prefixes declared in the
+ * current context except for the empty (default)
+ * prefix.
+ * @see #getDeclaredPrefixes
+ * @see #getURI
+ */
+ public Enumeration getPrefixes ()
+ {
+ return currentContext.getPrefixes();
+ }
+
+
+ /**
+ * Return one of the prefixes mapped to a Namespace URI.
+ *
+ * <p>If more than one prefix is currently mapped to the same
+ * URI, this method will make an arbitrary selection; if you
+ * want all of the prefixes, use the {@link #getPrefixes}
+ * method instead.</p>
+ *
+ * <p><strong>Note:</strong> this will never return the empty (default) prefix;
+ * to check for a default prefix, use the {@link #getURI getURI}
+ * method with an argument of "".</p>
+ *
+ * @param uri The Namespace URI.
+ * @param isAttribute true if this prefix is for an attribute
+ * (and the default Namespace is not allowed).
+ * @return One of the prefixes currently mapped to the URI supplied,
+ * or null if none is mapped or if the URI is assigned to
+ * the default Namespace.
+ * @see #getPrefixes(java.lang.String)
+ * @see #getURI
+ */
+ public String getPrefix (String uri)
+ {
+ return currentContext.getPrefix(uri);
+ }
+
+
+ /**
+ * Return an enumeration of all prefixes currently declared for a URI.
+ *
+ * <p>This method returns prefixes mapped to a specific Namespace
+ * URI. The xml: prefix will be included. If you want only one
+ * prefix that's mapped to the Namespace URI, and you don't care
+ * which one you get, use the {@link #getPrefix getPrefix}
+ * method instead.</p>
+ *
+ * <p><strong>Note:</strong> the empty (default) prefix is <em>never</em> included
+ * in this enumeration; to check for the presence of a default
+ * Namespace, use the {@link #getURI getURI} method with an
+ * argument of "".</p>
+ *
+ * @param uri The Namespace URI.
+ * @return An enumeration of all prefixes declared in the
+ * current context.
+ * @see #getPrefix
+ * @see #getDeclaredPrefixes
+ * @see #getURI
+ */
+ public Enumeration getPrefixes (String uri)
+ {
+ Vector prefixes = new Vector();
+ Enumeration allPrefixes = getPrefixes();
+ while (allPrefixes.hasMoreElements()) {
+ String prefix = (String)allPrefixes.nextElement();
+ if (uri.equals(getURI(prefix))) {
+ prefixes.addElement(prefix);
+ }
+ }
+ return prefixes.elements();
+ }
+
+
+ /**
+ * Return an enumeration of all prefixes declared in this context.
+ *
+ * <p>The empty (default) prefix will be included in this
+ * enumeration; note that this behaviour differs from that of
+ * {@link #getPrefix} and {@link #getPrefixes}.</p>
+ *
+ * @return An enumeration of all prefixes declared in this
+ * context.
+ * @see #getPrefixes
+ * @see #getURI
+ */
+ public Enumeration getDeclaredPrefixes ()
+ {
+ return currentContext.getDeclaredPrefixes();
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal state.
+ ////////////////////////////////////////////////////////////////////
+
+ private Context contexts[];
+ private Context currentContext;
+ private int contextPos;
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal classes.
+ ////////////////////////////////////////////////////////////////////
+
+ /**
+ * Internal class for a single Namespace context.
+ *
+ * <p>This module caches and reuses Namespace contexts,
+ * so the number allocated
+ * will be equal to the element depth of the document, not to the total
+ * number of elements (i.e. 5-10 rather than tens of thousands).
+ * Also, data structures used to represent contexts are shared when
+ * possible (child contexts without declarations) to further reduce
+ * the amount of memory that's consumed.
+ * </p>
+ */
+ final class Context {
+
+ /**
+ * Create the root-level Namespace context.
+ */
+ Context ()
+ {
+ copyTables();
+ }
+
+
+ /**
+ * (Re)set the parent of this Namespace context.
+ * The context must either have been freshly constructed,
+ * or must have been cleared.
+ *
+ * @param context The parent Namespace context object.
+ */
+ void setParent (Context parent)
+ {
+ this.parent = parent;
+ declarations = null;
+ prefixTable = parent.prefixTable;
+ uriTable = parent.uriTable;
+ elementNameTable = parent.elementNameTable;
+ attributeNameTable = parent.attributeNameTable;
+ defaultNS = parent.defaultNS;
+ declSeen = false;
+ declsOK = true;
+ }
+
+ /**
+ * Makes associated state become collectible,
+ * invalidating this context.
+ * {@link #setParent} must be called before
+ * this context may be used again.
+ */
+ void clear ()
+ {
+ parent = null;
+ prefixTable = null;
+ uriTable = null;
+ elementNameTable = null;
+ attributeNameTable = null;
+ defaultNS = null;
+ }
+
+
+ /**
+ * Declare a Namespace prefix for this context.
+ *
+ * @param prefix The prefix to declare.
+ * @param uri The associated Namespace URI.
+ * @see org.xml.sax.helpers.NamespaceSupport#declarePrefix
+ */
+ void declarePrefix (String prefix, String uri)
+ {
+ // Lazy processing...
+ if (!declsOK)
+ throw new IllegalStateException (
+ "can't declare any more prefixes in this context");
+ if (!declSeen) {
+ copyTables();
+ }
+ if (declarations == null) {
+ declarations = new Vector();
+ }
+
+ prefix = prefix.intern();
+ uri = uri.intern();
+ if ("".equals(prefix)) {
+ if ("".equals(uri)) {
+ defaultNS = null;
+ } else {
+ defaultNS = uri;
+ }
+ } else {
+ prefixTable.put(prefix, uri);
+ uriTable.put(uri, prefix); // may wipe out another prefix
+ }
+ declarations.addElement(prefix);
+ }
+
+
+ /**
+ * Process a raw XML 1.0 name in this context.
+ *
+ * @param qName The raw XML 1.0 name.
+ * @param isAttribute true if this is an attribute name.
+ * @return An array of three strings containing the
+ * URI part (or empty string), the local part,
+ * and the raw name, all internalized, or null
+ * if there is an undeclared prefix.
+ * @see org.xml.sax.helpers.NamespaceSupport#processName
+ */
+ String [] processName (String qName, boolean isAttribute)
+ {
+ String name[];
+ Hashtable table;
+
+ // detect errors in call sequence
+ declsOK = false;
+
+ // Select the appropriate table.
+ if (isAttribute) {
+ table = attributeNameTable;
+ } else {
+ table = elementNameTable;
+ }
+
+ // Start by looking in the cache, and
+ // return immediately if the name
+ // is already known in this content
+ name = (String[])table.get(qName);
+ if (name != null) {
+ return name;
+ }
+
+ // We haven't seen this name in this
+ // context before. Maybe in the parent
+ // context, but we can't assume prefix
+ // bindings are the same.
+ name = new String[3];
+ name[2] = qName.intern();
+ int index = qName.indexOf(':');
+
+
+ // No prefix.
+ if (index == -1) {
+ if (isAttribute || defaultNS == null) {
+ name[0] = "";
+ } else {
+ name[0] = defaultNS;
+ }
+ name[1] = name[2];
+ }
+
+ // Prefix
+ else {
+ String prefix = qName.substring(0, index);
+ String local = qName.substring(index+1);
+ String uri;
+ if ("".equals(prefix)) {
+ uri = defaultNS;
+ } else {
+ uri = (String)prefixTable.get(prefix);
+ }
+ if (uri == null) {
+ return null;
+ }
+ name[0] = uri;
+ name[1] = local.intern();
+ }
+
+ // Save in the cache for future use.
+ // (Could be shared with parent context...)
+ table.put(name[2], name);
+ return name;
+ }
+
+
+ /**
+ * Look up the URI associated with a prefix in this context.
+ *
+ * @param prefix The prefix to look up.
+ * @return The associated Namespace URI, or null if none is
+ * declared.
+ * @see org.xml.sax.helpers.NamespaceSupport#getURI
+ */
+ String getURI (String prefix)
+ {
+ if ("".equals(prefix)) {
+ return defaultNS;
+ } else if (prefixTable == null) {
+ return null;
+ } else {
+ return (String)prefixTable.get(prefix);
+ }
+ }
+
+
+ /**
+ * Look up one of the prefixes associated with a URI in this context.
+ *
+ * <p>Since many prefixes may be mapped to the same URI,
+ * the return value may be unreliable.</p>
+ *
+ * @param uri The URI to look up.
+ * @return The associated prefix, or null if none is declared.
+ * @see org.xml.sax.helpers.NamespaceSupport#getPrefix
+ */
+ String getPrefix (String uri)
+ {
+ if (uriTable == null) {
+ return null;
+ } else {
+ return (String)uriTable.get(uri);
+ }
+ }
+
+
+ /**
+ * Return an enumeration of prefixes declared in this context.
+ *
+ * @return An enumeration of prefixes (possibly empty).
+ * @see org.xml.sax.helpers.NamespaceSupport#getDeclaredPrefixes
+ */
+ Enumeration getDeclaredPrefixes ()
+ {
+ if (declarations == null) {
+ return EMPTY_ENUMERATION;
+ } else {
+ return declarations.elements();
+ }
+ }
+
+
+ /**
+ * Return an enumeration of all prefixes currently in force.
+ *
+ * <p>The default prefix, if in force, is <em>not</em>
+ * returned, and will have to be checked for separately.</p>
+ *
+ * @return An enumeration of prefixes (never empty).
+ * @see org.xml.sax.helpers.NamespaceSupport#getPrefixes
+ */
+ Enumeration getPrefixes ()
+ {
+ if (prefixTable == null) {
+ return EMPTY_ENUMERATION;
+ } else {
+ return prefixTable.keys();
+ }
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////
+ // Internal methods.
+ ////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Copy on write for the internal tables in this context.
+ *
+ * <p>This class is optimized for the normal case where most
+ * elements do not contain Namespace declarations.</p>
+ */
+ private void copyTables ()
+ {
+ if (prefixTable != null) {
+ prefixTable = (Hashtable)prefixTable.clone();
+ } else {
+ prefixTable = new Hashtable();
+ }
+ if (uriTable != null) {
+ uriTable = (Hashtable)uriTable.clone();
+ } else {
+ uriTable = new Hashtable();
+ }
+ elementNameTable = new Hashtable();
+ attributeNameTable = new Hashtable();
+ declSeen = true;
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////
+ // Protected state.
+ ////////////////////////////////////////////////////////////////
+
+ Hashtable prefixTable;
+ Hashtable uriTable;
+ Hashtable elementNameTable;
+ Hashtable attributeNameTable;
+ String defaultNS = null;
+ boolean declsOK = true;
+
+
+
+ ////////////////////////////////////////////////////////////////
+ // Internal state.
+ ////////////////////////////////////////////////////////////////
+
+ private Vector declarations = null;
+ private boolean declSeen = false;
+ private Context parent = null;
+ }
+}
+
+// end of NamespaceSupport.java
diff --git a/libjava/org/xml/sax/helpers/NewInstance.java b/libjava/org/xml/sax/helpers/NewInstance.java
new file mode 100644
index 00000000000..7d107a65239
--- /dev/null
+++ b/libjava/org/xml/sax/helpers/NewInstance.java
@@ -0,0 +1,80 @@
+// NewInstance.java - create a new instance of a class by name.
+// http://www.saxproject.org
+// Written by Edwin Goei, edwingo@apache.org
+// and by David Brownell, dbrownell@users.sourceforge.net
+// NO WARRANTY! This class is in the Public Domain.
+
+// $Id: NewInstance.java,v 1.1.2.4 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax.helpers;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+/**
+ * Create a new instance of a class by name.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class contains a static method for creating an instance of a
+ * class from an explicit class name. It tries to use the thread's context
+ * ClassLoader if possible and falls back to using
+ * Class.forName(String).</p>
+ *
+ * <p>This code is designed to compile and run on JDK version 1.1 and later
+ * including versions of Java 2.</p>
+ *
+ * @author Edwin Goei, David Brownell
+ * @version 2.0.1 (sax2r2)
+ */
+class NewInstance {
+
+ /**
+ * Creates a new instance of the specified class name
+ *
+ * Package private so this code is not exposed at the API level.
+ */
+ static Object newInstance (ClassLoader classLoader, String className)
+ throws ClassNotFoundException, IllegalAccessException,
+ InstantiationException
+ {
+ Class driverClass;
+ if (classLoader == null) {
+ driverClass = Class.forName(className);
+ } else {
+ driverClass = classLoader.loadClass(className);
+ }
+ return driverClass.newInstance();
+ }
+
+ /**
+ * Figure out which ClassLoader to use. For JDK 1.2 and later use
+ * the context ClassLoader.
+ */
+ static ClassLoader getClassLoader ()
+ {
+ Method m = null;
+
+ try {
+ m = Thread.class.getMethod("getContextClassLoader", null);
+ } catch (NoSuchMethodException e) {
+ // Assume that we are running JDK 1.1, use the current ClassLoader
+ return NewInstance.class.getClassLoader();
+ }
+
+ try {
+ return (ClassLoader) m.invoke(Thread.currentThread(), null);
+ } catch (IllegalAccessException e) {
+ // assert(false)
+ throw new UnknownError(e.getMessage());
+ } catch (InvocationTargetException e) {
+ // assert(e.getTargetException() instanceof SecurityException)
+ throw new UnknownError(e.getMessage());
+ }
+ }
+}
diff --git a/libjava/org/xml/sax/helpers/ParserAdapter.java b/libjava/org/xml/sax/helpers/ParserAdapter.java
index 06071b7bdd5..ca66a9e2dc7 100644
--- a/libjava/org/xml/sax/helpers/ParserAdapter.java
+++ b/libjava/org/xml/sax/helpers/ParserAdapter.java
@@ -1,1008 +1,1026 @@
-// ParserAdapter.java - adapt a SAX1 Parser to a SAX2 XMLReader.
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the public domain.
-
-// $Id: ParserAdapter.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
-
-package org.xml.sax.helpers;
-
-import java.io.IOException;
-import java.util.Enumeration;
-
-import org.xml.sax.Parser; // deprecated
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.AttributeList; // deprecated
-import org.xml.sax.EntityResolver;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.DocumentHandler; // deprecated
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-import org.xml.sax.XMLReader;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-
-
-/**
- * Adapt a SAX1 Parser as a SAX2 XMLReader.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class wraps a SAX1 {@link org.xml.sax.Parser Parser}
- * and makes it act as a SAX2 {@link org.xml.sax.XMLReader XMLReader},
- * with feature, property, and Namespace support. Note
- * that it is not possible to report {@link org.xml.sax.ContentHandler#skippedEntity
- * skippedEntity} events, since SAX1 does not make that information available.</p>
- *
- * <p>This adapter does not test for duplicate Namespace-qualified
- * attribute names.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.helpers.XMLReaderAdapter
- * @see org.xml.sax.XMLReader
- * @see org.xml.sax.Parser
- */
-public class ParserAdapter implements XMLReader, DocumentHandler
-{
-
-
- ////////////////////////////////////////////////////////////////////
- // Constructors.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Construct a new parser adapter.
- *
- * <p>Use the "org.xml.sax.parser" property to locate the
- * embedded SAX1 driver.</p>
- *
- * @exception org.xml.sax.SAXException If the embedded driver
- * cannot be instantiated or if the
- * org.xml.sax.parser property is not specified.
- */
- public ParserAdapter ()
- throws SAXException
- {
- super();
-
- String driver = System.getProperty("org.xml.sax.parser");
-
- try {
- setup(ParserFactory.makeParser());
- } catch (ClassNotFoundException e1) {
- throw new
- SAXException("Cannot find SAX1 driver class " +
- driver, e1);
- } catch (IllegalAccessException e2) {
- throw new
- SAXException("SAX1 driver class " +
- driver +
- " found but cannot be loaded", e2);
- } catch (InstantiationException e3) {
- throw new
- SAXException("SAX1 driver class " +
- driver +
- " loaded but cannot be instantiated", e3);
- } catch (ClassCastException e4) {
- throw new
- SAXException("SAX1 driver class " +
- driver +
- " does not implement org.xml.sax.Parser");
- } catch (NullPointerException e5) {
- throw new
- SAXException("System property org.xml.sax.parser not specified");
- }
- }
-
-
- /**
- * Construct a new parser adapter.
- *
- * <p>Note that the embedded parser cannot be changed once the
- * adapter is created; to embed a different parser, allocate
- * a new ParserAdapter.</p>
- *
- * @param parser The SAX1 parser to embed.
- * @exception java.lang.NullPointerException If the parser parameter
- * is null.
- */
- public ParserAdapter (Parser parser)
- {
- super();
- setup(parser);
- }
-
-
- /**
- * Internal setup method.
- *
- * @param parser The embedded parser.
- * @exception java.lang.NullPointerException If the parser parameter
- * is null.
- */
- private void setup (Parser parser)
- {
- if (parser == null) {
- throw new
- NullPointerException("Parser argument must not be null");
- }
- this.parser = parser;
- atts = new AttributesImpl();
- nsSupport = new NamespaceSupport();
- attAdapter = new AttributeListAdapter();
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.XMLReader.
- ////////////////////////////////////////////////////////////////////
-
-
- //
- // Internal constants for the sake of convenience.
- //
- private final static String FEATURES = "http://xml.org/sax/features/";
- private final static String NAMESPACES = FEATURES + "namespaces";
- private final static String NAMESPACE_PREFIXES = FEATURES + "namespace-prefixes";
- private final static String VALIDATION = FEATURES + "validation";
- private final static String EXTERNAL_GENERAL =
- FEATURES + "external-general-entities";
- private final static String EXTERNAL_PARAMETER =
- FEATURES + "external-parameter-entities";
-
-
- /**
- * Set a feature for the parser.
- *
- * <p>The only features supported are namespaces and
- * namespace-prefixes.</p>
- *
- * @param name The feature name, as a complete URI.
- * @param state The requested feature state.
- * @exception org.xml.sax.SAXNotRecognizedException If the feature
- * name is not known.
- * @exception org.xml.sax.SAXNotSupportedException If the feature
- * state is not supported.
- * @see org.xml.sax.XMLReader#setFeature
- */
- public void setFeature (String name, boolean state)
- throws SAXNotRecognizedException, SAXNotSupportedException
- {
- if (name.equals(NAMESPACES)) {
- checkNotParsing("feature", name);
- namespaces = state;
- if (!namespaces && !prefixes) {
- prefixes = true;
- }
- } else if (name.equals(NAMESPACE_PREFIXES)) {
- checkNotParsing("feature", name);
- prefixes = state;
- if (!prefixes && !namespaces) {
- namespaces = true;
- }
- } else if (name.equals(VALIDATION) ||
- name.equals(EXTERNAL_GENERAL) ||
- name.equals(EXTERNAL_PARAMETER)) {
- throw new SAXNotSupportedException("Feature: " + name);
- } else {
- throw new SAXNotRecognizedException("Feature: " + name);
- }
- }
-
-
- /**
- * Check a parser feature.
- *
- * <p>The only features supported are namespaces and
- * namespace-prefixes.</p>
- *
- * @param name The feature name, as a complete URI.
- * @return The current feature state.
- * @exception org.xml.sax.SAXNotRecognizedException If the feature
- * name is not known.
- * @exception org.xml.sax.SAXNotSupportedException If querying the
- * feature state is not supported.
- * @see org.xml.sax.XMLReader#setFeature
- */
- public boolean getFeature (String name)
- throws SAXNotRecognizedException, SAXNotSupportedException
- {
- if (name.equals(NAMESPACES)) {
- return namespaces;
- } else if (name.equals(NAMESPACE_PREFIXES)) {
- return prefixes;
- } else if (name.equals(VALIDATION) ||
- name.equals(EXTERNAL_GENERAL) ||
- name.equals(EXTERNAL_PARAMETER)) {
- throw new SAXNotSupportedException("Feature: " + name);
- } else {
- throw new SAXNotRecognizedException("Feature: " + name);
- }
- }
-
-
- /**
- * Set a parser property.
- *
- * <p>No special properties are currently supported.</p>
- *
- * @param name The property name.
- * @param value The property value.
- * @exception org.xml.sax.SAXNotRecognizedException If the feature
- * name is not known.
- * @exception org.xml.sax.SAXNotSupportedException If the feature
- * state is not supported.
- * @see org.xml.sax.XMLReader#setProperty
- */
- public void setProperty (String name, Object value)
- throws SAXNotRecognizedException, SAXNotSupportedException
- {
- throw new SAXNotRecognizedException("Property: " + name);
- }
-
-
- /**
- * Get a parser property.
- *
- * <p>No special properties are currently supported.</p>
- *
- * @param name The property name.
- * @return The property value.
- * @exception org.xml.sax.SAXNotRecognizedException If the feature
- * name is not known.
- * @exception org.xml.sax.SAXNotSupportedException If the feature
- * state is not supported.
- * @see org.xml.sax.XMLReader#getProperty
- */
- public Object getProperty (String name)
- throws SAXNotRecognizedException, SAXNotSupportedException
- {
- throw new SAXNotRecognizedException("Property: " + name);
- }
-
-
- /**
- * Set the entity resolver.
- *
- * @param resolver The new entity resolver.
- * @exception java.lang.NullPointerException If the entity resolver
- * parameter is null.
- * @see org.xml.sax.XMLReader#setEntityResolver
- */
- public void setEntityResolver (EntityResolver resolver)
- {
- if (resolver == null) {
- throw new NullPointerException("Null entity resolver");
- }
- entityResolver = resolver;
- }
-
-
- /**
- * Return the current entity resolver.
- *
- * @return The current entity resolver, or null if none was supplied.
- * @see org.xml.sax.XMLReader#getEntityResolver
- */
- public EntityResolver getEntityResolver ()
- {
- return entityResolver;
- }
-
-
- /**
- * Set the DTD handler.
- *
- * @param resolver The new DTD handler.
- * @exception java.lang.NullPointerException If the DTD handler
- * parameter is null.
- * @see org.xml.sax.XMLReader#setEntityResolver
- */
- public void setDTDHandler (DTDHandler handler)
- {
- if (handler == null) {
- throw new NullPointerException("Null DTD handler");
- }
- dtdHandler = handler;
- }
-
-
- /**
- * Return the current DTD handler.
- *
- * @return The current DTD handler, or null if none was supplied.
- * @see org.xml.sax.XMLReader#getEntityResolver
- */
- public DTDHandler getDTDHandler ()
- {
- return dtdHandler;
- }
-
-
- /**
- * Set the content handler.
- *
- * @param resolver The new content handler.
- * @exception java.lang.NullPointerException If the content handler
- * parameter is null.
- * @see org.xml.sax.XMLReader#setEntityResolver
- */
- public void setContentHandler (ContentHandler handler)
- {
- if (handler == null) {
- throw new NullPointerException("Null content handler");
- }
- contentHandler = handler;
- }
-
-
- /**
- * Return the current content handler.
- *
- * @return The current content handler, or null if none was supplied.
- * @see org.xml.sax.XMLReader#getEntityResolver
- */
- public ContentHandler getContentHandler ()
- {
- return contentHandler;
- }
-
-
- /**
- * Set the error handler.
- *
- * @param resolver The new error handler.
- * @exception java.lang.NullPointerException If the error handler
- * parameter is null.
- * @see org.xml.sax.XMLReader#setEntityResolver
- */
- public void setErrorHandler (ErrorHandler handler)
- {
- if (handler == null) {
- throw new NullPointerException("Null error handler");
- }
- errorHandler = handler;
- }
-
-
- /**
- * Return the current error handler.
- *
- * @return The current error handler, or null if none was supplied.
- * @see org.xml.sax.XMLReader#getEntityResolver
- */
- public ErrorHandler getErrorHandler ()
- {
- return errorHandler;
- }
-
-
- /**
- * Parse an XML document.
- *
- * @param systemId The absolute URL of the document.
- * @exception java.io.IOException If there is a problem reading
- * the raw content of the document.
- * @exception org.xml.sax.SAXException If there is a problem
- * processing the document.
- * @see #parse(org.xml.sax.InputSource)
- * @see org.xml.sax.Parser#parse(java.lang.String)
- */
- public void parse (String systemId)
- throws IOException, SAXException
- {
- parse(new InputSource(systemId));
- }
-
-
- /**
- * Parse an XML document.
- *
- * @param input An input source for the document.
- * @exception java.io.IOException If there is a problem reading
- * the raw content of the document.
- * @exception org.xml.sax.SAXException If there is a problem
- * processing the document.
- * @see #parse(java.lang.String)
- * @see org.xml.sax.Parser#parse(org.xml.sax.InputSource)
- */
- public void parse (InputSource input)
- throws IOException, SAXException
- {
- if (parsing) {
- throw new SAXException("Parser is already in use");
- }
- setupParser();
- parsing = true;
- try {
- parser.parse(input);
- } finally {
- parsing = false;
- }
- parsing = false;
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.DocumentHandler.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Adapt a SAX1 document locator event.
- *
- * @param locator A document locator.
- * @see org.xml.sax.ContentHandler#setDocumentLocator
- */
- public void setDocumentLocator (Locator locator)
- {
- this.locator = locator;
- if (contentHandler != null) {
- contentHandler.setDocumentLocator(locator);
- }
- }
-
-
- /**
- * Adapt a SAX1 start document event.
- *
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.DocumentHandler#startDocument
- */
- public void startDocument ()
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.startDocument();
- }
- }
-
-
- /**
- * Adapt a SAX1 end document event.
- *
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.DocumentHandler#endDocument
- */
- public void endDocument ()
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.endDocument();
- }
- }
-
-
- /**
- * Adapt a SAX1 startElement event.
- *
- * <p>If necessary, perform Namespace processing.</p>
- *
- * @param qName The qualified (prefixed) name.
- * @param qAtts The XML 1.0 attribute list (with qnames).
- */
- public void startElement (String qName, AttributeList qAtts)
- throws SAXException
- {
- // If we're not doing Namespace
- // processing, dispatch this quickly.
- if (!namespaces) {
- if (contentHandler != null) {
- attAdapter.setAttributeList(qAtts);
- contentHandler.startElement("", "", qName.intern(),
- attAdapter);
- }
- return;
- }
-
-
- // OK, we're doing Namespace processing.
- nsSupport.pushContext();
- boolean seenDecl = false;
- atts.clear();
-
- // Take a first pass and copy all
- // attributes into the SAX2 attribute
- // list, noting any Namespace
- // declarations.
- int length = qAtts.getLength();
- for (int i = 0; i < length; i++) {
- String attQName = qAtts.getName(i);
- String type = qAtts.getType(i);
- String value = qAtts.getValue(i);
-
- // Found a declaration...
- if (attQName.startsWith("xmlns")) {
- String prefix;
- int n = attQName.indexOf(':');
- if (n == -1) {
- prefix = "";
- } else {
- prefix = attQName.substring(n+1);
- }
- if (!nsSupport.declarePrefix(prefix, value)) {
- reportError("Illegal Namespace prefix: " + prefix);
- }
- if (contentHandler != null) {
- contentHandler.startPrefixMapping(prefix, value);
- }
- // We may still have to add this to
- // the list.
- if (prefixes) {
- atts.addAttribute("", "", attQName.intern(),
- type, value);
- }
- seenDecl = true;
-
- // This isn't a declaration.
- } else {
- String attName[] = processName(attQName, true);
- atts.addAttribute(attName[0], attName[1], attName[2],
- type, value);
- }
- }
-
- // If there was a Namespace declaration,
- // we have to make a second pass just
- // to be safe -- this will happen very
- // rarely, possibly only once for each
- // document.
- if (seenDecl) {
- length = atts.getLength();
- for (int i = 0; i < length; i++) {
- String attQName = atts.getQName(i);
- if (!attQName.startsWith("xmlns")) {
- String attName[] = processName(attQName, true);
- atts.setURI(i, attName[0]);
- atts.setLocalName(i, attName[1]);
- }
- }
- }
-
- // OK, finally report the event.
- if (contentHandler != null) {
- String name[] = processName(qName, false);
- contentHandler.startElement(name[0], name[1], name[2], atts);
- }
- }
-
-
- /**
- * Adapt a SAX1 end element event.
- *
- * @param qName The qualified (prefixed) name.
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.DocumentHandler#endElement
- */
- public void endElement (String qName)
- throws SAXException
- {
- // If we're not doing Namespace
- // processing, dispatch this quickly.
- if (!namespaces) {
- if (contentHandler != null) {
- contentHandler.endElement("", "", qName.intern());
- }
- return;
- }
-
- // Split the name.
- String names[] = processName(qName, false);
- if (contentHandler != null) {
- contentHandler.endElement(names[0], names[1], names[2]);
- Enumeration prefixes = nsSupport.getDeclaredPrefixes();
- while (prefixes.hasMoreElements()) {
- String prefix = (String)prefixes.nextElement();
- contentHandler.endPrefixMapping(prefix);
- }
- }
- nsSupport.popContext();
- }
-
-
- /**
- * Adapt a SAX1 characters event.
- *
- * @param ch An array of characters.
- * @param start The starting position in the array.
- * @param length The number of characters to use.
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.DocumentHandler#characters
- */
- public void characters (char ch[], int start, int length)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.characters(ch, start, length);
- }
- }
-
-
- /**
- * Adapt a SAX1 ignorable whitespace event.
- *
- * @param ch An array of characters.
- * @param start The starting position in the array.
- * @param length The number of characters to use.
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.DocumentHandler#ignorableWhitespace
- */
- public void ignorableWhitespace (char ch[], int start, int length)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.ignorableWhitespace(ch, start, length);
- }
- }
-
-
- /**
- * Adapt a SAX1 processing instruction event.
- *
- * @param target The processing instruction target.
- * @param data The remainder of the processing instruction
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.DocumentHandler#processingInstruction
- */
- public void processingInstruction (String target, String data)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.processingInstruction(target, data);
- }
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal utility methods.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Initialize the parser before each run.
- */
- private void setupParser ()
- {
- nsSupport.reset();
-
- if (entityResolver != null) {
- parser.setEntityResolver(entityResolver);
- }
- if (dtdHandler != null) {
- parser.setDTDHandler(dtdHandler);
- }
- if (errorHandler != null) {
- parser.setErrorHandler(errorHandler);
- }
- parser.setDocumentHandler(this);
- locator = null;
- }
-
-
- /**
- * Process a qualified (prefixed) name.
- *
- * <p>If the name has an undeclared prefix, use only the qname
- * and make an ErrorHandler.error callback in case the app is
- * interested.</p>
- *
- * @param qName The qualified (prefixed) name.
- * @param isAttribute true if this is an attribute name.
- * @return The name split into three parts.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception if there is an error callback.
- */
- private String [] processName (String qName, boolean isAttribute)
- throws SAXException
- {
- String parts[] = nsSupport.processName(qName, nameParts,
- isAttribute);
- if (parts == null) {
- parts = new String[3];
- parts[2] = qName.intern();
- reportError("Undeclared prefix: " + qName);
- }
- return parts;
- }
-
-
- /**
- * Report a non-fatal error.
- *
- * @param message The error message.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception.
- */
- void reportError (String message)
- throws SAXException
- {
- if (errorHandler == null) {
- return;
- }
-
- SAXParseException e;
- if (locator != null) {
- e = new SAXParseException(message, locator);
- } else {
- e = new SAXParseException(message, null, null, -1, -1);
- }
- errorHandler.error(e);
- }
-
-
- /**
- * Throw an exception if we are parsing.
- *
- * <p>Use this method to detect illegal feature or
- * property changes.</p>
- *
- * @param type The type of thing (feature or property).
- * @param name The feature or property name.
- * @exception org.xml.sax.SAXNotSupportedException If a
- * document is currently being parsed.
- */
- private void checkNotParsing (String type, String name)
- throws SAXNotSupportedException
- {
- if (parsing) {
- throw new SAXNotSupportedException("Cannot change " +
- type + ' ' +
- name + " while parsing");
-
- }
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal state.
- ////////////////////////////////////////////////////////////////////
-
- private NamespaceSupport nsSupport;
- private AttributeListAdapter attAdapter;
-
- private boolean parsing = false;
- private String nameParts[] = new String[3];
-
- private Parser parser = null;
-
- private AttributesImpl atts = null;
-
- // Features
- private boolean namespaces = true;
- private boolean prefixes = false;
-
- // Properties
-
- // Handlers
- Locator locator;
-
- EntityResolver entityResolver = null;
- DTDHandler dtdHandler = null;
- ContentHandler contentHandler = null;
- ErrorHandler errorHandler = null;
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Inner class to wrap an AttributeList when not doing NS proc.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Adapt a SAX1 AttributeList as a SAX2 Attributes object.
- *
- * <p>This class is in the Public Domain, and comes with NO
- * WARRANTY of any kind.</p>
- *
- * <p>This wrapper class is used only when Namespace support
- * is disabled -- it provides pretty much a direct mapping
- * from SAX1 to SAX2, except that names and types are
- * interned whenever requested.</p>
- */
- final class AttributeListAdapter implements Attributes
- {
-
- /**
- * Construct a new adapter.
- */
- AttributeListAdapter ()
- {
- }
-
-
- /**
- * Set the embedded AttributeList.
- *
- * <p>This method must be invoked before any of the others
- * can be used.</p>
- *
- * @param The SAX1 attribute list (with qnames).
- */
- void setAttributeList (AttributeList qAtts)
- {
- this.qAtts = qAtts;
- }
-
-
- /**
- * Return the length of the attribute list.
- *
- * @return The number of attributes in the list.
- * @see org.xml.sax.Attributes#getLength
- */
- public int getLength ()
- {
- return qAtts.getLength();
- }
-
-
- /**
- * Return the Namespace URI of the specified attribute.
- *
- * @param The attribute's index.
- * @return Always the empty string.
- * @see org.xml.sax.Attributes#getURI
- */
- public String getURI (int i)
- {
- return "";
- }
-
-
- /**
- * Return the local name of the specified attribute.
- *
- * @param The attribute's index.
- * @return Always the empty string.
- * @see org.xml.sax.Attributes#getLocalName
- */
- public String getLocalName (int i)
- {
- return "";
- }
-
-
- /**
- * Return the qualified (prefixed) name of the specified attribute.
- *
- * @param The attribute's index.
- * @return The attribute's qualified name, internalized.
- */
- public String getQName (int i)
- {
- return qAtts.getName(i).intern();
- }
-
-
- /**
- * Return the type of the specified attribute.
- *
- * @param The attribute's index.
- * @return The attribute's type as an internalized string.
- */
- public String getType (int i)
- {
- return qAtts.getType(i).intern();
- }
-
-
- /**
- * Return the value of the specified attribute.
- *
- * @param The attribute's index.
- * @return The attribute's value.
- */
- public String getValue (int i)
- {
- return qAtts.getValue(i);
- }
-
-
- /**
- * Look up an attribute index by Namespace name.
- *
- * @param uri The Namespace URI or the empty string.
- * @param localName The local name.
- * @return The attributes index, or -1 if none was found.
- * @see org.xml.sax.Attributes#getIndex(java.lang.String,java.lang.String)
- */
- public int getIndex (String uri, String localName)
- {
- return -1;
- }
-
-
- /**
- * Look up an attribute index by qualified (prefixed) name.
- *
- * @param qName The qualified name.
- * @return The attributes index, or -1 if none was found.
- * @see org.xml.sax.Attributes#getIndex(java.lang.String)
- */
- public int getIndex (String qName)
- {
- int max = atts.getLength();
- for (int i = 0; i < max; i++) {
- if (qAtts.getName(i).equals(qName)) {
- return i;
- }
- }
- return -1;
- }
-
-
- /**
- * Look up the type of an attribute by Namespace name.
- *
- * @param uri The Namespace URI
- * @param localName The local name.
- * @return The attribute's type as an internalized string.
- */
- public String getType (String uri, String localName)
- {
- return null;
- }
-
-
- /**
- * Look up the type of an attribute by qualified (prefixed) name.
- *
- * @param qName The qualified name.
- * @return The attribute's type as an internalized string.
- */
- public String getType (String qName)
- {
- return qAtts.getType(qName).intern();
- }
-
-
- /**
- * Look up the value of an attribute by Namespace name.
- *
- * @param uri The Namespace URI
- * @param localName The local name.
- * @return The attribute's value.
- */
- public String getValue (String uri, String localName)
- {
- return null;
- }
-
-
- /**
- * Look up the value of an attribute by qualified (prefixed) name.
- *
- * @param qName The qualified name.
- * @return The attribute's value.
- */
- public String getValue (String qName)
- {
- return qAtts.getValue(qName);
- }
-
- private AttributeList qAtts;
- }
-}
-
-// end of ParserAdapter.java
+// ParserAdapter.java - adapt a SAX1 Parser to a SAX2 XMLReader.
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the public domain.
+
+// $Id: ParserAdapter.java,v 1.8.2.4 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax.helpers;
+
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Vector;
+
+import org.xml.sax.Parser; // deprecated
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.AttributeList; // deprecated
+import org.xml.sax.EntityResolver;
+import org.xml.sax.DTDHandler;
+import org.xml.sax.DocumentHandler; // deprecated
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+import org.xml.sax.XMLReader;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
+
+
+/**
+ * Adapt a SAX1 Parser as a SAX2 XMLReader.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class wraps a SAX1 {@link org.xml.sax.Parser Parser}
+ * and makes it act as a SAX2 {@link org.xml.sax.XMLReader XMLReader},
+ * with feature, property, and Namespace support. Note
+ * that it is not possible to report {@link org.xml.sax.ContentHandler#skippedEntity
+ * skippedEntity} events, since SAX1 does not make that information available.</p>
+ *
+ * <p>This adapter does not test for duplicate Namespace-qualified
+ * attribute names.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.helpers.XMLReaderAdapter
+ * @see org.xml.sax.XMLReader
+ * @see org.xml.sax.Parser
+ */
+public class ParserAdapter implements XMLReader, DocumentHandler
+{
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Constructors.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Construct a new parser adapter.
+ *
+ * <p>Use the "org.xml.sax.parser" property to locate the
+ * embedded SAX1 driver.</p>
+ *
+ * @exception SAXException If the embedded driver
+ * cannot be instantiated or if the
+ * org.xml.sax.parser property is not specified.
+ */
+ public ParserAdapter ()
+ throws SAXException
+ {
+ super();
+
+ String driver = System.getProperty("org.xml.sax.parser");
+
+ try {
+ setup(ParserFactory.makeParser());
+ } catch (ClassNotFoundException e1) {
+ throw new
+ SAXException("Cannot find SAX1 driver class " +
+ driver, e1);
+ } catch (IllegalAccessException e2) {
+ throw new
+ SAXException("SAX1 driver class " +
+ driver +
+ " found but cannot be loaded", e2);
+ } catch (InstantiationException e3) {
+ throw new
+ SAXException("SAX1 driver class " +
+ driver +
+ " loaded but cannot be instantiated", e3);
+ } catch (ClassCastException e4) {
+ throw new
+ SAXException("SAX1 driver class " +
+ driver +
+ " does not implement org.xml.sax.Parser");
+ } catch (NullPointerException e5) {
+ throw new
+ SAXException("System property org.xml.sax.parser not specified");
+ }
+ }
+
+
+ /**
+ * Construct a new parser adapter.
+ *
+ * <p>Note that the embedded parser cannot be changed once the
+ * adapter is created; to embed a different parser, allocate
+ * a new ParserAdapter.</p>
+ *
+ * @param parser The SAX1 parser to embed.
+ * @exception java.lang.NullPointerException If the parser parameter
+ * is null.
+ */
+ public ParserAdapter (Parser parser)
+ {
+ super();
+ setup(parser);
+ }
+
+
+ /**
+ * Internal setup method.
+ *
+ * @param parser The embedded parser.
+ * @exception java.lang.NullPointerException If the parser parameter
+ * is null.
+ */
+ private void setup (Parser parser)
+ {
+ if (parser == null) {
+ throw new
+ NullPointerException("Parser argument must not be null");
+ }
+ this.parser = parser;
+ atts = new AttributesImpl();
+ nsSupport = new NamespaceSupport();
+ attAdapter = new AttributeListAdapter();
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.XMLReader.
+ ////////////////////////////////////////////////////////////////////
+
+
+ //
+ // Internal constants for the sake of convenience.
+ //
+ private final static String FEATURES = "http://xml.org/sax/features/";
+ private final static String NAMESPACES = FEATURES + "namespaces";
+ private final static String NAMESPACE_PREFIXES = FEATURES + "namespace-prefixes";
+
+
+ /**
+ * Set a feature flag for the parser.
+ *
+ * <p>The only features recognized are namespaces and
+ * namespace-prefixes.</p>
+ *
+ * @param name The feature name, as a complete URI.
+ * @param value The requested feature value.
+ * @exception SAXNotRecognizedException If the feature
+ * can't be assigned or retrieved.
+ * @exception SAXNotSupportedException If the feature
+ * can't be assigned that value.
+ * @see org.xml.sax.XMLReader#setFeature
+ */
+ public void setFeature (String name, boolean value)
+ throws SAXNotRecognizedException, SAXNotSupportedException
+ {
+ if (name.equals(NAMESPACES)) {
+ checkNotParsing("feature", name);
+ namespaces = value;
+ if (!namespaces && !prefixes) {
+ prefixes = true;
+ }
+ } else if (name.equals(NAMESPACE_PREFIXES)) {
+ checkNotParsing("feature", name);
+ prefixes = value;
+ if (!prefixes && !namespaces) {
+ namespaces = true;
+ }
+ } else {
+ throw new SAXNotRecognizedException("Feature: " + name);
+ }
+ }
+
+
+ /**
+ * Check a parser feature flag.
+ *
+ * <p>The only features recognized are namespaces and
+ * namespace-prefixes.</p>
+ *
+ * @param name The feature name, as a complete URI.
+ * @return The current feature value.
+ * @exception SAXNotRecognizedException If the feature
+ * value can't be assigned or retrieved.
+ * @exception SAXNotSupportedException If the
+ * feature is not currently readable.
+ * @see org.xml.sax.XMLReader#setFeature
+ */
+ public boolean getFeature (String name)
+ throws SAXNotRecognizedException, SAXNotSupportedException
+ {
+ if (name.equals(NAMESPACES)) {
+ return namespaces;
+ } else if (name.equals(NAMESPACE_PREFIXES)) {
+ return prefixes;
+ } else {
+ throw new SAXNotRecognizedException("Feature: " + name);
+ }
+ }
+
+
+ /**
+ * Set a parser property.
+ *
+ * <p>No properties are currently recognized.</p>
+ *
+ * @param name The property name.
+ * @param value The property value.
+ * @exception SAXNotRecognizedException If the property
+ * value can't be assigned or retrieved.
+ * @exception SAXNotSupportedException If the property
+ * can't be assigned that value.
+ * @see org.xml.sax.XMLReader#setProperty
+ */
+ public void setProperty (String name, Object value)
+ throws SAXNotRecognizedException, SAXNotSupportedException
+ {
+ throw new SAXNotRecognizedException("Property: " + name);
+ }
+
+
+ /**
+ * Get a parser property.
+ *
+ * <p>No properties are currently recognized.</p>
+ *
+ * @param name The property name.
+ * @return The property value.
+ * @exception SAXNotRecognizedException If the property
+ * value can't be assigned or retrieved.
+ * @exception SAXNotSupportedException If the property
+ * value is not currently readable.
+ * @see org.xml.sax.XMLReader#getProperty
+ */
+ public Object getProperty (String name)
+ throws SAXNotRecognizedException, SAXNotSupportedException
+ {
+ throw new SAXNotRecognizedException("Property: " + name);
+ }
+
+
+ /**
+ * Set the entity resolver.
+ *
+ * @param resolver The new entity resolver.
+ * @see org.xml.sax.XMLReader#setEntityResolver
+ */
+ public void setEntityResolver (EntityResolver resolver)
+ {
+ entityResolver = resolver;
+ }
+
+
+ /**
+ * Return the current entity resolver.
+ *
+ * @return The current entity resolver, or null if none was supplied.
+ * @see org.xml.sax.XMLReader#getEntityResolver
+ */
+ public EntityResolver getEntityResolver ()
+ {
+ return entityResolver;
+ }
+
+
+ /**
+ * Set the DTD handler.
+ *
+ * @param resolver The new DTD handler.
+ * @see org.xml.sax.XMLReader#setEntityResolver
+ */
+ public void setDTDHandler (DTDHandler handler)
+ {
+ dtdHandler = handler;
+ }
+
+
+ /**
+ * Return the current DTD handler.
+ *
+ * @return The current DTD handler, or null if none was supplied.
+ * @see org.xml.sax.XMLReader#getEntityResolver
+ */
+ public DTDHandler getDTDHandler ()
+ {
+ return dtdHandler;
+ }
+
+
+ /**
+ * Set the content handler.
+ *
+ * @param resolver The new content handler.
+ * @see org.xml.sax.XMLReader#setEntityResolver
+ */
+ public void setContentHandler (ContentHandler handler)
+ {
+ contentHandler = handler;
+ }
+
+
+ /**
+ * Return the current content handler.
+ *
+ * @return The current content handler, or null if none was supplied.
+ * @see org.xml.sax.XMLReader#getEntityResolver
+ */
+ public ContentHandler getContentHandler ()
+ {
+ return contentHandler;
+ }
+
+
+ /**
+ * Set the error handler.
+ *
+ * @param resolver The new error handler.
+ * @see org.xml.sax.XMLReader#setEntityResolver
+ */
+ public void setErrorHandler (ErrorHandler handler)
+ {
+ errorHandler = handler;
+ }
+
+
+ /**
+ * Return the current error handler.
+ *
+ * @return The current error handler, or null if none was supplied.
+ * @see org.xml.sax.XMLReader#getEntityResolver
+ */
+ public ErrorHandler getErrorHandler ()
+ {
+ return errorHandler;
+ }
+
+
+ /**
+ * Parse an XML document.
+ *
+ * @param systemId The absolute URL of the document.
+ * @exception java.io.IOException If there is a problem reading
+ * the raw content of the document.
+ * @exception SAXException If there is a problem
+ * processing the document.
+ * @see #parse(org.xml.sax.InputSource)
+ * @see org.xml.sax.Parser#parse(java.lang.String)
+ */
+ public void parse (String systemId)
+ throws IOException, SAXException
+ {
+ parse(new InputSource(systemId));
+ }
+
+
+ /**
+ * Parse an XML document.
+ *
+ * @param input An input source for the document.
+ * @exception java.io.IOException If there is a problem reading
+ * the raw content of the document.
+ * @exception SAXException If there is a problem
+ * processing the document.
+ * @see #parse(java.lang.String)
+ * @see org.xml.sax.Parser#parse(org.xml.sax.InputSource)
+ */
+ public void parse (InputSource input)
+ throws IOException, SAXException
+ {
+ if (parsing) {
+ throw new SAXException("Parser is already in use");
+ }
+ setupParser();
+ parsing = true;
+ try {
+ parser.parse(input);
+ } finally {
+ parsing = false;
+ }
+ parsing = false;
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.DocumentHandler.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Adapter implementation method; do not call.
+ * Adapt a SAX1 document locator event.
+ *
+ * @param locator A document locator.
+ * @see org.xml.sax.ContentHandler#setDocumentLocator
+ */
+ public void setDocumentLocator (Locator locator)
+ {
+ this.locator = locator;
+ if (contentHandler != null) {
+ contentHandler.setDocumentLocator(locator);
+ }
+ }
+
+
+ /**
+ * Adapter implementation method; do not call.
+ * Adapt a SAX1 start document event.
+ *
+ * @exception SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.DocumentHandler#startDocument
+ */
+ public void startDocument ()
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.startDocument();
+ }
+ }
+
+
+ /**
+ * Adapter implementation method; do not call.
+ * Adapt a SAX1 end document event.
+ *
+ * @exception SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.DocumentHandler#endDocument
+ */
+ public void endDocument ()
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.endDocument();
+ }
+ }
+
+
+ /**
+ * Adapter implementation method; do not call.
+ * Adapt a SAX1 startElement event.
+ *
+ * <p>If necessary, perform Namespace processing.</p>
+ *
+ * @param qName The qualified (prefixed) name.
+ * @param qAtts The XML 1.0 attribute list (with qnames).
+ * @exception SAXException The client may raise a
+ * processing exception.
+ */
+ public void startElement (String qName, AttributeList qAtts)
+ throws SAXException
+ {
+ // These are exceptions from the
+ // first pass; they should be
+ // ignored if there's a second pass,
+ // but reported otherwise.
+ Vector exceptions = null;
+
+ // If we're not doing Namespace
+ // processing, dispatch this quickly.
+ if (!namespaces) {
+ if (contentHandler != null) {
+ attAdapter.setAttributeList(qAtts);
+ contentHandler.startElement("", "", qName.intern(),
+ attAdapter);
+ }
+ return;
+ }
+
+
+ // OK, we're doing Namespace processing.
+ nsSupport.pushContext();
+ int length = qAtts.getLength();
+
+ // First pass: handle NS decls
+ for (int i = 0; i < length; i++) {
+ String attQName = qAtts.getName(i);
+
+ if (!attQName.startsWith("xmlns"))
+ continue;
+ // Could be a declaration...
+ String prefix;
+ int n = attQName.indexOf(':');
+
+ // xmlns=...
+ if (n == -1 && attQName.length () == 5) {
+ prefix = "";
+ } else if (n != 5) {
+ // XML namespaces spec doesn't discuss "xmlnsf:oo"
+ // (and similarly named) attributes ... at most, warn
+ continue;
+ } else // xmlns:foo=...
+ prefix = attQName.substring(n+1);
+
+ String value = qAtts.getValue(i);
+ if (!nsSupport.declarePrefix(prefix, value)) {
+ reportError("Illegal Namespace prefix: " + prefix);
+ continue;
+ }
+ if (contentHandler != null)
+ contentHandler.startPrefixMapping(prefix, value);
+ }
+
+ // Second pass: copy all relevant
+ // attributes into the SAX2 AttributeList
+ // using updated prefix bindings
+ atts.clear();
+ for (int i = 0; i < length; i++) {
+ String attQName = qAtts.getName(i);
+ String type = qAtts.getType(i);
+ String value = qAtts.getValue(i);
+
+ // Declaration?
+ if (attQName.startsWith("xmlns")) {
+ String prefix;
+ int n = attQName.indexOf(':');
+
+ if (n == -1 && attQName.length () == 5) {
+ prefix = "";
+ } else if (n != 5) {
+ // XML namespaces spec doesn't discuss "xmlnsf:oo"
+ // (and similarly named) attributes ... ignore
+ prefix = null;
+ } else {
+ prefix = attQName.substring(n+1);
+ }
+ // Yes, decl: report or prune
+ if (prefix != null) {
+ if (prefixes)
+ atts.addAttribute("", "", attQName.intern(),
+ type, value);
+ continue;
+ }
+ }
+
+ // Not a declaration -- report
+ try {
+ String attName[] = processName(attQName, true, true);
+ atts.addAttribute(attName[0], attName[1], attName[2],
+ type, value);
+ } catch (SAXException e) {
+ if (exceptions == null)
+ exceptions = new Vector();
+ exceptions.addElement(e);
+ atts.addAttribute("", attQName, attQName, type, value);
+ }
+ }
+
+ // now handle the deferred exception reports
+ if (exceptions != null && errorHandler != null) {
+ for (int i = 0; i < exceptions.size(); i++)
+ errorHandler.error((SAXParseException)
+ (exceptions.elementAt(i)));
+ }
+
+ // OK, finally report the event.
+ if (contentHandler != null) {
+ String name[] = processName(qName, false, false);
+ contentHandler.startElement(name[0], name[1], name[2], atts);
+ }
+ }
+
+
+ /**
+ * Adapter implementation method; do not call.
+ * Adapt a SAX1 end element event.
+ *
+ * @param qName The qualified (prefixed) name.
+ * @exception SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.DocumentHandler#endElement
+ */
+ public void endElement (String qName)
+ throws SAXException
+ {
+ // If we're not doing Namespace
+ // processing, dispatch this quickly.
+ if (!namespaces) {
+ if (contentHandler != null) {
+ contentHandler.endElement("", "", qName.intern());
+ }
+ return;
+ }
+
+ // Split the name.
+ String names[] = processName(qName, false, false);
+ if (contentHandler != null) {
+ contentHandler.endElement(names[0], names[1], names[2]);
+ Enumeration prefixes = nsSupport.getDeclaredPrefixes();
+ while (prefixes.hasMoreElements()) {
+ String prefix = (String)prefixes.nextElement();
+ contentHandler.endPrefixMapping(prefix);
+ }
+ }
+ nsSupport.popContext();
+ }
+
+
+ /**
+ * Adapter implementation method; do not call.
+ * Adapt a SAX1 characters event.
+ *
+ * @param ch An array of characters.
+ * @param start The starting position in the array.
+ * @param length The number of characters to use.
+ * @exception SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.DocumentHandler#characters
+ */
+ public void characters (char ch[], int start, int length)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.characters(ch, start, length);
+ }
+ }
+
+
+ /**
+ * Adapter implementation method; do not call.
+ * Adapt a SAX1 ignorable whitespace event.
+ *
+ * @param ch An array of characters.
+ * @param start The starting position in the array.
+ * @param length The number of characters to use.
+ * @exception SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.DocumentHandler#ignorableWhitespace
+ */
+ public void ignorableWhitespace (char ch[], int start, int length)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.ignorableWhitespace(ch, start, length);
+ }
+ }
+
+
+ /**
+ * Adapter implementation method; do not call.
+ * Adapt a SAX1 processing instruction event.
+ *
+ * @param target The processing instruction target.
+ * @param data The remainder of the processing instruction
+ * @exception SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.DocumentHandler#processingInstruction
+ */
+ public void processingInstruction (String target, String data)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.processingInstruction(target, data);
+ }
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal utility methods.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Initialize the parser before each run.
+ */
+ private void setupParser ()
+ {
+ nsSupport.reset();
+
+ if (entityResolver != null) {
+ parser.setEntityResolver(entityResolver);
+ }
+ if (dtdHandler != null) {
+ parser.setDTDHandler(dtdHandler);
+ }
+ if (errorHandler != null) {
+ parser.setErrorHandler(errorHandler);
+ }
+ parser.setDocumentHandler(this);
+ locator = null;
+ }
+
+
+ /**
+ * Process a qualified (prefixed) name.
+ *
+ * <p>If the name has an undeclared prefix, use only the qname
+ * and make an ErrorHandler.error callback in case the app is
+ * interested.</p>
+ *
+ * @param qName The qualified (prefixed) name.
+ * @param isAttribute true if this is an attribute name.
+ * @return The name split into three parts.
+ * @exception SAXException The client may throw
+ * an exception if there is an error callback.
+ */
+ private String [] processName (String qName, boolean isAttribute,
+ boolean useException)
+ throws SAXException
+ {
+ String parts[] = nsSupport.processName(qName, nameParts,
+ isAttribute);
+ if (parts == null) {
+ if (useException)
+ throw makeException("Undeclared prefix: " + qName);
+ reportError("Undeclared prefix: " + qName);
+ parts = new String[3];
+ parts[0] = parts[1] = "";
+ parts[2] = qName.intern();
+ }
+ return parts;
+ }
+
+
+ /**
+ * Report a non-fatal error.
+ *
+ * @param message The error message.
+ * @exception SAXException The client may throw
+ * an exception.
+ */
+ void reportError (String message)
+ throws SAXException
+ {
+ if (errorHandler != null)
+ errorHandler.error(makeException(message));
+ }
+
+
+ /**
+ * Construct an exception for the current context.
+ *
+ * @param message The error message.
+ */
+ private SAXParseException makeException (String message)
+ {
+ if (locator != null) {
+ return new SAXParseException(message, locator);
+ } else {
+ return new SAXParseException(message, null, null, -1, -1);
+ }
+ }
+
+
+ /**
+ * Throw an exception if we are parsing.
+ *
+ * <p>Use this method to detect illegal feature or
+ * property changes.</p>
+ *
+ * @param type The type of thing (feature or property).
+ * @param name The feature or property name.
+ * @exception SAXNotSupportedException If a
+ * document is currently being parsed.
+ */
+ private void checkNotParsing (String type, String name)
+ throws SAXNotSupportedException
+ {
+ if (parsing) {
+ throw new SAXNotSupportedException("Cannot change " +
+ type + ' ' +
+ name + " while parsing");
+
+ }
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal state.
+ ////////////////////////////////////////////////////////////////////
+
+ private NamespaceSupport nsSupport;
+ private AttributeListAdapter attAdapter;
+
+ private boolean parsing = false;
+ private String nameParts[] = new String[3];
+
+ private Parser parser = null;
+
+ private AttributesImpl atts = null;
+
+ // Features
+ private boolean namespaces = true;
+ private boolean prefixes = false;
+
+ // Properties
+
+ // Handlers
+ Locator locator;
+
+ EntityResolver entityResolver = null;
+ DTDHandler dtdHandler = null;
+ ContentHandler contentHandler = null;
+ ErrorHandler errorHandler = null;
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Inner class to wrap an AttributeList when not doing NS proc.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Adapt a SAX1 AttributeList as a SAX2 Attributes object.
+ *
+ * <p>This class is in the Public Domain, and comes with NO
+ * WARRANTY of any kind.</p>
+ *
+ * <p>This wrapper class is used only when Namespace support
+ * is disabled -- it provides pretty much a direct mapping
+ * from SAX1 to SAX2, except that names and types are
+ * interned whenever requested.</p>
+ */
+ final class AttributeListAdapter implements Attributes
+ {
+
+ /**
+ * Construct a new adapter.
+ */
+ AttributeListAdapter ()
+ {
+ }
+
+
+ /**
+ * Set the embedded AttributeList.
+ *
+ * <p>This method must be invoked before any of the others
+ * can be used.</p>
+ *
+ * @param The SAX1 attribute list (with qnames).
+ */
+ void setAttributeList (AttributeList qAtts)
+ {
+ this.qAtts = qAtts;
+ }
+
+
+ /**
+ * Return the length of the attribute list.
+ *
+ * @return The number of attributes in the list.
+ * @see org.xml.sax.Attributes#getLength
+ */
+ public int getLength ()
+ {
+ return qAtts.getLength();
+ }
+
+
+ /**
+ * Return the Namespace URI of the specified attribute.
+ *
+ * @param The attribute's index.
+ * @return Always the empty string.
+ * @see org.xml.sax.Attributes#getURI
+ */
+ public String getURI (int i)
+ {
+ return "";
+ }
+
+
+ /**
+ * Return the local name of the specified attribute.
+ *
+ * @param The attribute's index.
+ * @return Always the empty string.
+ * @see org.xml.sax.Attributes#getLocalName
+ */
+ public String getLocalName (int i)
+ {
+ return "";
+ }
+
+
+ /**
+ * Return the qualified (prefixed) name of the specified attribute.
+ *
+ * @param The attribute's index.
+ * @return The attribute's qualified name, internalized.
+ */
+ public String getQName (int i)
+ {
+ return qAtts.getName(i).intern();
+ }
+
+
+ /**
+ * Return the type of the specified attribute.
+ *
+ * @param The attribute's index.
+ * @return The attribute's type as an internalized string.
+ */
+ public String getType (int i)
+ {
+ return qAtts.getType(i).intern();
+ }
+
+
+ /**
+ * Return the value of the specified attribute.
+ *
+ * @param The attribute's index.
+ * @return The attribute's value.
+ */
+ public String getValue (int i)
+ {
+ return qAtts.getValue(i);
+ }
+
+
+ /**
+ * Look up an attribute index by Namespace name.
+ *
+ * @param uri The Namespace URI or the empty string.
+ * @param localName The local name.
+ * @return The attributes index, or -1 if none was found.
+ * @see org.xml.sax.Attributes#getIndex(java.lang.String,java.lang.String)
+ */
+ public int getIndex (String uri, String localName)
+ {
+ return -1;
+ }
+
+
+ /**
+ * Look up an attribute index by qualified (prefixed) name.
+ *
+ * @param qName The qualified name.
+ * @return The attributes index, or -1 if none was found.
+ * @see org.xml.sax.Attributes#getIndex(java.lang.String)
+ */
+ public int getIndex (String qName)
+ {
+ int max = atts.getLength();
+ for (int i = 0; i < max; i++) {
+ if (qAtts.getName(i).equals(qName)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+
+ /**
+ * Look up the type of an attribute by Namespace name.
+ *
+ * @param uri The Namespace URI
+ * @param localName The local name.
+ * @return The attribute's type as an internalized string.
+ */
+ public String getType (String uri, String localName)
+ {
+ return null;
+ }
+
+
+ /**
+ * Look up the type of an attribute by qualified (prefixed) name.
+ *
+ * @param qName The qualified name.
+ * @return The attribute's type as an internalized string.
+ */
+ public String getType (String qName)
+ {
+ return qAtts.getType(qName).intern();
+ }
+
+
+ /**
+ * Look up the value of an attribute by Namespace name.
+ *
+ * @param uri The Namespace URI
+ * @param localName The local name.
+ * @return The attribute's value.
+ */
+ public String getValue (String uri, String localName)
+ {
+ return null;
+ }
+
+
+ /**
+ * Look up the value of an attribute by qualified (prefixed) name.
+ *
+ * @param qName The qualified name.
+ * @return The attribute's value.
+ */
+ public String getValue (String qName)
+ {
+ return qAtts.getValue(qName);
+ }
+
+ private AttributeList qAtts;
+ }
+}
+
+// end of ParserAdapter.java
diff --git a/libjava/org/xml/sax/helpers/ParserFactory.java b/libjava/org/xml/sax/helpers/ParserFactory.java
index 9ca7b55002f..acedfd13ae4 100644
--- a/libjava/org/xml/sax/helpers/ParserFactory.java
+++ b/libjava/org/xml/sax/helpers/ParserFactory.java
@@ -1,129 +1,129 @@
-// SAX parser factory.
-// No warranty; no copyright -- use this as you will.
-// $Id: ParserFactory.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
-
-package org.xml.sax.helpers;
-
-import java.lang.ClassNotFoundException;
-import java.lang.IllegalAccessException;
-import java.lang.InstantiationException;
-import java.lang.SecurityException;
-import java.lang.ClassCastException;
-
-import org.xml.sax.Parser;
-
-
-/**
- * Java-specific class for dynamically loading SAX parsers.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p><strong>Note:</strong> This class is designed to work with the now-deprecated
- * SAX1 {@link org.xml.sax.Parser Parser} class. SAX2 applications should use
- * {@link org.xml.sax.helpers.XMLReaderFactory XMLReaderFactory} instead.</p>
- *
- * <p>ParserFactory is not part of the platform-independent definition
- * of SAX; it is an additional convenience class designed
- * specifically for Java XML application writers. SAX applications
- * can use the static methods in this class to allocate a SAX parser
- * dynamically at run-time based either on the value of the
- * `org.xml.sax.parser' system property or on a string containing the class
- * name.</p>
- *
- * <p>Note that the application still requires an XML parser that
- * implements SAX1.</p>
- *
- * @deprecated This class works with the deprecated
- * {@link org.xml.sax.Parser Parser}
- * interface.
- * @since SAX 1.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.Parser
- * @see java.lang.Class
- */
-public class ParserFactory {
-
-
- /**
- * Private null constructor.
- */
- private ParserFactory ()
- {
- }
-
-
- /**
- * Create a new SAX parser using the `org.xml.sax.parser' system property.
- *
- * <p>The named class must exist and must implement the
- * {@link org.xml.sax.Parser Parser} interface.</p>
- *
- * @exception java.lang.NullPointerException There is no value
- * for the `org.xml.sax.parser' system property.
- * @exception java.lang.ClassNotFoundException The SAX parser
- * class was not found (check your CLASSPATH).
- * @exception IllegalAccessException The SAX parser class was
- * found, but you do not have permission to load
- * it.
- * @exception InstantiationException The SAX parser class was
- * found but could not be instantiated.
- * @exception java.lang.ClassCastException The SAX parser class
- * was found and instantiated, but does not implement
- * org.xml.sax.Parser.
- * @see #makeParser(java.lang.String)
- * @see org.xml.sax.Parser
- */
- public static Parser makeParser ()
- throws ClassNotFoundException,
- IllegalAccessException,
- InstantiationException,
- NullPointerException,
- ClassCastException
- {
- String className = System.getProperty("org.xml.sax.parser");
- if (className == null) {
- throw new NullPointerException("No value for sax.parser property");
- } else {
- return makeParser(className);
- }
- }
-
-
- /**
- * Create a new SAX parser object using the class name provided.
- *
- * <p>The named class must exist and must implement the
- * {@link org.xml.sax.Parser Parser} interface.</p>
- *
- * @param className A string containing the name of the
- * SAX parser class.
- * @exception java.lang.ClassNotFoundException The SAX parser
- * class was not found (check your CLASSPATH).
- * @exception IllegalAccessException The SAX parser class was
- * found, but you do not have permission to load
- * it.
- * @exception InstantiationException The SAX parser class was
- * found but could not be instantiated.
- * @exception java.lang.ClassCastException The SAX parser class
- * was found and instantiated, but does not implement
- * org.xml.sax.Parser.
- * @see #makeParser()
- * @see org.xml.sax.Parser
- */
- public static Parser makeParser (String className)
- throws ClassNotFoundException,
- IllegalAccessException,
- InstantiationException,
- ClassCastException
- {
- return (Parser)(Class.forName(className).newInstance());
- }
-
-}
-
-// end of ParserFactory.java
+// SAX parser factory.
+// http://www.saxproject.org
+// No warranty; no copyright -- use this as you will.
+// $Id: ParserFactory.java,v 1.4.2.3 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax.helpers;
+
+import java.lang.ClassNotFoundException;
+import java.lang.IllegalAccessException;
+import java.lang.InstantiationException;
+import java.lang.SecurityException;
+import java.lang.ClassCastException;
+
+import org.xml.sax.Parser;
+
+
+/**
+ * Java-specific class for dynamically loading SAX parsers.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p><strong>Note:</strong> This class is designed to work with the now-deprecated
+ * SAX1 {@link org.xml.sax.Parser Parser} class. SAX2 applications should use
+ * {@link org.xml.sax.helpers.XMLReaderFactory XMLReaderFactory} instead.</p>
+ *
+ * <p>ParserFactory is not part of the platform-independent definition
+ * of SAX; it is an additional convenience class designed
+ * specifically for Java XML application writers. SAX applications
+ * can use the static methods in this class to allocate a SAX parser
+ * dynamically at run-time based either on the value of the
+ * `org.xml.sax.parser' system property or on a string containing the class
+ * name.</p>
+ *
+ * <p>Note that the application still requires an XML parser that
+ * implements SAX1.</p>
+ *
+ * @deprecated This class works with the deprecated
+ * {@link org.xml.sax.Parser Parser}
+ * interface.
+ * @since SAX 1.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ */
+public class ParserFactory {
+
+
+ /**
+ * Private null constructor.
+ */
+ private ParserFactory ()
+ {
+ }
+
+
+ /**
+ * Create a new SAX parser using the `org.xml.sax.parser' system property.
+ *
+ * <p>The named class must exist and must implement the
+ * {@link org.xml.sax.Parser Parser} interface.</p>
+ *
+ * @exception java.lang.NullPointerException There is no value
+ * for the `org.xml.sax.parser' system property.
+ * @exception java.lang.ClassNotFoundException The SAX parser
+ * class was not found (check your CLASSPATH).
+ * @exception IllegalAccessException The SAX parser class was
+ * found, but you do not have permission to load
+ * it.
+ * @exception InstantiationException The SAX parser class was
+ * found but could not be instantiated.
+ * @exception java.lang.ClassCastException The SAX parser class
+ * was found and instantiated, but does not implement
+ * org.xml.sax.Parser.
+ * @see #makeParser(java.lang.String)
+ * @see org.xml.sax.Parser
+ */
+ public static Parser makeParser ()
+ throws ClassNotFoundException,
+ IllegalAccessException,
+ InstantiationException,
+ NullPointerException,
+ ClassCastException
+ {
+ String className = System.getProperty("org.xml.sax.parser");
+ if (className == null) {
+ throw new NullPointerException("No value for sax.parser property");
+ } else {
+ return makeParser(className);
+ }
+ }
+
+
+ /**
+ * Create a new SAX parser object using the class name provided.
+ *
+ * <p>The named class must exist and must implement the
+ * {@link org.xml.sax.Parser Parser} interface.</p>
+ *
+ * @param className A string containing the name of the
+ * SAX parser class.
+ * @exception java.lang.ClassNotFoundException The SAX parser
+ * class was not found (check your CLASSPATH).
+ * @exception IllegalAccessException The SAX parser class was
+ * found, but you do not have permission to load
+ * it.
+ * @exception InstantiationException The SAX parser class was
+ * found but could not be instantiated.
+ * @exception java.lang.ClassCastException The SAX parser class
+ * was found and instantiated, but does not implement
+ * org.xml.sax.Parser.
+ * @see #makeParser()
+ * @see org.xml.sax.Parser
+ */
+ public static Parser makeParser (String className)
+ throws ClassNotFoundException,
+ IllegalAccessException,
+ InstantiationException,
+ ClassCastException
+ {
+ return (Parser) NewInstance.newInstance (
+ NewInstance.getClassLoader (), className);
+ }
+
+}
+
diff --git a/libjava/org/xml/sax/helpers/XMLFilterImpl.java b/libjava/org/xml/sax/helpers/XMLFilterImpl.java
index 5b1afaf6c2f..2f848089131 100644
--- a/libjava/org/xml/sax/helpers/XMLFilterImpl.java
+++ b/libjava/org/xml/sax/helpers/XMLFilterImpl.java
@@ -1,769 +1,714 @@
-// XMLFilterImpl.java - base SAX2 filter implementation.
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the Public Domain.
-
-// $Id: XMLFilterImpl.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
-
-package org.xml.sax.helpers;
-
-import java.io.IOException;
-
-import org.xml.sax.XMLReader;
-import org.xml.sax.XMLFilter;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.SAXNotSupportedException;
-import org.xml.sax.SAXNotRecognizedException;
-
-
-/**
- * Base class for deriving an XML filter.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class is designed to sit between an {@link org.xml.sax.XMLReader
- * XMLReader} and the client application's event handlers. By default, it
- * does nothing but pass requests up to the reader and events
- * on to the handlers unmodified, but subclasses can override
- * specific methods to modify the event stream or the configuration
- * requests as they pass through.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.XMLFilter
- * @see org.xml.sax.XMLReader
- * @see org.xml.sax.EntityResolver
- * @see org.xml.sax.DTDHandler
- * @see org.xml.sax.ContentHandler
- * @see org.xml.sax.ErrorHandler
- */
-public class XMLFilterImpl
- implements XMLFilter, EntityResolver, DTDHandler, ContentHandler, ErrorHandler
-{
-
-
- ////////////////////////////////////////////////////////////////////
- // Constructors.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Construct an empty XML filter, with no parent.
- *
- * <p>This filter will have no parent: you must assign a parent
- * before you start a parse or do any configuration with
- * setFeature or setProperty.</p>
- *
- * @see org.xml.sax.XMLReader#setFeature
- * @see org.xml.sax.XMLReader#setProperty
- */
- public XMLFilterImpl ()
- {
- super();
- }
-
-
- /**
- * Construct an XML filter with the specified parent.
- *
- * @see #setParent
- * @see #getParent
- */
- public XMLFilterImpl (XMLReader parent)
- {
- super();
- setParent(parent);
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.XMLFilter.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Set the parent reader.
- *
- * <p>This is the {@link org.xml.sax.XMLReader XMLReader} from which
- * this filter will obtain its events and to which it will pass its
- * configuration requests. The parent may itself be another filter.</p>
- *
- * <p>If there is no parent reader set, any attempt to parse
- * or to set or get a feature or property will fail.</p>
- *
- * @param parent The parent XML reader.
- * @exception java.lang.NullPointerException If the parent is null.
- * @see #getParent
- */
- public void setParent (XMLReader parent)
- {
- if (parent == null) {
- throw new NullPointerException("Null parent");
- }
- this.parent = parent;
- }
-
-
- /**
- * Get the parent reader.
- *
- * @return The parent XML reader, or null if none is set.
- * @see #setParent
- */
- public XMLReader getParent ()
- {
- return parent;
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.XMLReader.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Set the state of a feature.
- *
- * <p>This will always fail if the parent is null.</p>
- *
- * @param name The feature name.
- * @param state The requested feature state.
- * @exception org.xml.sax.SAXNotRecognizedException When the
- * XMLReader does not recognize the feature name.
- * @exception org.xml.sax.SAXNotSupportedException When the
- * XMLReader recognizes the feature name but
- * cannot set the requested value.
- * @see org.xml.sax.XMLReader#setFeature
- */
- public void setFeature (String name, boolean state)
- throws SAXNotRecognizedException, SAXNotSupportedException
- {
- if (parent != null) {
- parent.setFeature(name, state);
- } else {
- throw new SAXNotRecognizedException("Feature: " + name);
- }
- }
-
-
- /**
- * Look up the state of a feature.
- *
- * <p>This will always fail if the parent is null.</p>
- *
- * @param name The feature name.
- * @return The current state of the feature.
- * @exception org.xml.sax.SAXNotRecognizedException When the
- * XMLReader does not recognize the feature name.
- * @exception org.xml.sax.SAXNotSupportedException When the
- * XMLReader recognizes the feature name but
- * cannot determine its state at this time.
- * @see org.xml.sax.XMLReader#getFeature
- */
- public boolean getFeature (String name)
- throws SAXNotRecognizedException, SAXNotSupportedException
- {
- if (parent != null) {
- return parent.getFeature(name);
- } else {
- throw new SAXNotRecognizedException("Feature: " + name);
- }
- }
-
-
- /**
- * Set the value of a property.
- *
- * <p>This will always fail if the parent is null.</p>
- *
- * @param name The property name.
- * @param state The requested property value.
- * @exception org.xml.sax.SAXNotRecognizedException When the
- * XMLReader does not recognize the property name.
- * @exception org.xml.sax.SAXNotSupportedException When the
- * XMLReader recognizes the property name but
- * cannot set the requested value.
- * @see org.xml.sax.XMLReader#setProperty
- */
- public void setProperty (String name, Object value)
- throws SAXNotRecognizedException, SAXNotSupportedException
- {
- if (parent != null) {
- parent.setProperty(name, value);
- } else {
- throw new SAXNotRecognizedException("Property: " + name);
- }
- }
-
-
- /**
- * Look up the value of a property.
- *
- * @param name The property name.
- * @return The current value of the property.
- * @exception org.xml.sax.SAXNotRecognizedException When the
- * XMLReader does not recognize the feature name.
- * @exception org.xml.sax.SAXNotSupportedException When the
- * XMLReader recognizes the property name but
- * cannot determine its value at this time.
- * @see org.xml.sax.XMLReader#setFeature
- */
- public Object getProperty (String name)
- throws SAXNotRecognizedException, SAXNotSupportedException
- {
- if (parent != null) {
- return parent.getProperty(name);
- } else {
- throw new SAXNotRecognizedException("Property: " + name);
- }
- }
-
-
- /**
- * Set the entity resolver.
- *
- * @param resolver The new entity resolver.
- * @exception java.lang.NullPointerException If the resolver
- * is null.
- * @see org.xml.sax.XMLReader#setEntityResolver
- */
- public void setEntityResolver (EntityResolver resolver)
- {
- if (resolver == null) {
- throw new NullPointerException("Null entity resolver");
- } else {
- entityResolver = resolver;
- }
- }
-
-
- /**
- * Get the current entity resolver.
- *
- * @return The current entity resolver, or null if none was set.
- * @see org.xml.sax.XMLReader#getEntityResolver
- */
- public EntityResolver getEntityResolver ()
- {
- return entityResolver;
- }
-
-
- /**
- * Set the DTD event handler.
- *
- * @param resolver The new DTD handler.
- * @exception java.lang.NullPointerException If the handler
- * is null.
- * @see org.xml.sax.XMLReader#setDTDHandler
- */
- public void setDTDHandler (DTDHandler handler)
- {
- if (handler == null) {
- throw new NullPointerException("Null DTD handler");
- } else {
- dtdHandler = handler;
- }
- }
-
-
- /**
- * Get the current DTD event handler.
- *
- * @return The current DTD handler, or null if none was set.
- * @see org.xml.sax.XMLReader#getDTDHandler
- */
- public DTDHandler getDTDHandler ()
- {
- return dtdHandler;
- }
-
-
- /**
- * Set the content event handler.
- *
- * @param resolver The new content handler.
- * @exception java.lang.NullPointerException If the handler
- * is null.
- * @see org.xml.sax.XMLReader#setContentHandler
- */
- public void setContentHandler (ContentHandler handler)
- {
- if (handler == null) {
- throw new NullPointerException("Null content handler");
- } else {
- contentHandler = handler;
- }
- }
-
-
- /**
- * Get the content event handler.
- *
- * @return The current content handler, or null if none was set.
- * @see org.xml.sax.XMLReader#getContentHandler
- */
- public ContentHandler getContentHandler ()
- {
- return contentHandler;
- }
-
-
- /**
- * Set the error event handler.
- *
- * @param handle The new error handler.
- * @exception java.lang.NullPointerException If the handler
- * is null.
- * @see org.xml.sax.XMLReader#setErrorHandler
- */
- public void setErrorHandler (ErrorHandler handler)
- {
- if (handler == null) {
- throw new NullPointerException("Null error handler");
- } else {
- errorHandler = handler;
- }
- }
-
-
- /**
- * Get the current error event handler.
- *
- * @return The current error handler, or null if none was set.
- * @see org.xml.sax.XMLReader#getErrorHandler
- */
- public ErrorHandler getErrorHandler ()
- {
- return errorHandler;
- }
-
-
- /**
- * Parse a document.
- *
- * @param input The input source for the document entity.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @exception java.io.IOException An IO exception from the parser,
- * possibly from a byte stream or character stream
- * supplied by the application.
- * @see org.xml.sax.XMLReader#parse(org.xml.sax.InputSource)
- */
- public void parse (InputSource input)
- throws SAXException, IOException
- {
- setupParse();
- parent.parse(input);
- }
-
-
- /**
- * Parse a document.
- *
- * @param systemId The system identifier as a fully-qualified URI.
- * @exception org.xml.sax.SAXException Any SAX exception, possibly
- * wrapping another exception.
- * @exception java.io.IOException An IO exception from the parser,
- * possibly from a byte stream or character stream
- * supplied by the application.
- * @see org.xml.sax.XMLReader#parse(java.lang.String)
- */
- public void parse (String systemId)
- throws SAXException, IOException
- {
- parse(new InputSource(systemId));
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.EntityResolver.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Filter an external entity resolution.
- *
- * @param publicId The entity's public identifier, or null.
- * @param systemId The entity's system identifier.
- * @return A new InputSource or null for the default.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @exception java.io.IOException The client may throw an
- * I/O-related exception while obtaining the
- * new InputSource.
- * @see org.xml.sax.EntityResolver#resolveEntity
- */
- public InputSource resolveEntity (String publicId, String systemId)
- throws SAXException, IOException
- {
- if (entityResolver != null) {
- return entityResolver.resolveEntity(publicId, systemId);
- } else {
- return null;
- }
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.DTDHandler.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Filter a notation declaration event.
- *
- * @param name The notation name.
- * @param publicId The notation's public identifier, or null.
- * @param systemId The notation's system identifier, or null.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.DTDHandler#notationDecl
- */
- public void notationDecl (String name, String publicId, String systemId)
- throws SAXException
- {
- if (dtdHandler != null) {
- dtdHandler.notationDecl(name, publicId, systemId);
- }
- }
-
-
- /**
- * Filter an unparsed entity declaration event.
- *
- * @param name The entity name.
- * @param publicId The entity's public identifier, or null.
- * @param systemId The entity's system identifier, or null.
- * @param notationName The name of the associated notation.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.DTDHandler#unparsedEntityDecl
- */
- public void unparsedEntityDecl (String name, String publicId,
- String systemId, String notationName)
- throws SAXException
- {
- if (dtdHandler != null) {
- dtdHandler.unparsedEntityDecl(name, publicId, systemId,
- notationName);
- }
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.ContentHandler.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Filter a new document locator event.
- *
- * @param locator The document locator.
- * @see org.xml.sax.ContentHandler#setDocumentLocator
- */
- public void setDocumentLocator (Locator locator)
- {
- this.locator = locator;
- if (contentHandler != null) {
- contentHandler.setDocumentLocator(locator);
- }
- }
-
-
- /**
- * Filter a start document event.
- *
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ContentHandler#startDocument
- */
- public void startDocument ()
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.startDocument();
- }
- }
-
-
- /**
- * Filter an end document event.
- *
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ContentHandler#endDocument
- */
- public void endDocument ()
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.endDocument();
- }
- }
-
-
- /**
- * Filter a start Namespace prefix mapping event.
- *
- * @param prefix The Namespace prefix.
- * @param uri The Namespace URI.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ContentHandler#startPrefixMapping
- */
- public void startPrefixMapping (String prefix, String uri)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.startPrefixMapping(prefix, uri);
- }
- }
-
-
- /**
- * Filter an end Namespace prefix mapping event.
- *
- * @param prefix The Namespace prefix.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ContentHandler#endPrefixMapping
- */
- public void endPrefixMapping (String prefix)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.endPrefixMapping(prefix);
- }
- }
-
-
- /**
- * Filter a start element event.
- *
- * @param uri The element's Namespace URI, or the empty string.
- * @param localName The element's local name, or the empty string.
- * @param qName The element's qualified (prefixed) name, or the empty
- * string.
- * @param atts The element's attributes.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ContentHandler#startElement
- */
- public void startElement (String uri, String localName, String qName,
- Attributes atts)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.startElement(uri, localName, qName, atts);
- }
- }
-
-
- /**
- * Filter an end element event.
- *
- * @param uri The element's Namespace URI, or the empty string.
- * @param localName The element's local name, or the empty string.
- * @param qName The element's qualified (prefixed) name, or the empty
- * string.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ContentHandler#endElement
- */
- public void endElement (String uri, String localName, String qName)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.endElement(uri, localName, qName);
- }
- }
-
-
- /**
- * Filter a character data event.
- *
- * @param ch An array of characters.
- * @param start The starting position in the array.
- * @param length The number of characters to use from the array.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ContentHandler#characters
- */
- public void characters (char ch[], int start, int length)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.characters(ch, start, length);
- }
- }
-
-
- /**
- * Filter an ignorable whitespace event.
- *
- * @param ch An array of characters.
- * @param start The starting position in the array.
- * @param length The number of characters to use from the array.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ContentHandler#ignorableWhitespace
- */
- public void ignorableWhitespace (char ch[], int start, int length)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.ignorableWhitespace(ch, start, length);
- }
- }
-
-
- /**
- * Filter a processing instruction event.
- *
- * @param target The processing instruction target.
- * @param data The text following the target.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ContentHandler#processingInstruction
- */
- public void processingInstruction (String target, String data)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.processingInstruction(target, data);
- }
- }
-
-
- /**
- * Filter a skipped entity event.
- *
- * @param name The name of the skipped entity.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ContentHandler#skippedEntity
- */
- public void skippedEntity (String name)
- throws SAXException
- {
- if (contentHandler != null) {
- contentHandler.skippedEntity(name);
- }
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.ErrorHandler.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Filter a warning event.
- *
- * @param e The nwarning as an exception.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ErrorHandler#warning
- */
- public void warning (SAXParseException e)
- throws SAXException
- {
- if (errorHandler != null) {
- errorHandler.warning(e);
- }
- }
-
-
- /**
- * Filter an error event.
- *
- * @param e The error as an exception.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ErrorHandler#error
- */
- public void error (SAXParseException e)
- throws SAXException
- {
- if (errorHandler != null) {
- errorHandler.error(e);
- }
- }
-
-
- /**
- * Filter a fatal error event.
- *
- * @param e The error as an exception.
- * @exception org.xml.sax.SAXException The client may throw
- * an exception during processing.
- * @see org.xml.sax.ErrorHandler#fatalError
- */
- public void fatalError (SAXParseException e)
- throws SAXException
- {
- if (errorHandler != null) {
- errorHandler.fatalError(e);
- }
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal methods.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Set up before a parse.
- *
- * <p>Before every parse, check whether the parent is
- * non-null, and re-register the filter for all of the
- * events.</p>
- */
- private void setupParse ()
- {
- if (parent == null) {
- throw new NullPointerException("No parent for filter");
- }
- parent.setEntityResolver(this);
- parent.setDTDHandler(this);
- parent.setContentHandler(this);
- parent.setErrorHandler(this);
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal state.
- ////////////////////////////////////////////////////////////////////
-
- private XMLReader parent = null;
- private Locator locator = null;
- private EntityResolver entityResolver = null;
- private DTDHandler dtdHandler = null;
- private ContentHandler contentHandler = null;
- private ErrorHandler errorHandler = null;
-
-}
-
-// end of XMLFilterImpl.java
+// XMLFilterImpl.java - base SAX2 filter implementation.
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the Public Domain.
+
+// $Id: XMLFilterImpl.java,v 1.3.2.7 2002/01/29 21:34:14 dbrownell Exp $
+
+package org.xml.sax.helpers;
+
+import java.io.IOException;
+
+import org.xml.sax.XMLReader;
+import org.xml.sax.XMLFilter;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.Attributes;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.DTDHandler;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.SAXNotSupportedException;
+import org.xml.sax.SAXNotRecognizedException;
+
+
+/**
+ * Base class for deriving an XML filter.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class is designed to sit between an {@link org.xml.sax.XMLReader
+ * XMLReader} and the client application's event handlers. By default, it
+ * does nothing but pass requests up to the reader and events
+ * on to the handlers unmodified, but subclasses can override
+ * specific methods to modify the event stream or the configuration
+ * requests as they pass through.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.XMLFilter
+ * @see org.xml.sax.XMLReader
+ * @see org.xml.sax.EntityResolver
+ * @see org.xml.sax.DTDHandler
+ * @see org.xml.sax.ContentHandler
+ * @see org.xml.sax.ErrorHandler
+ */
+public class XMLFilterImpl
+ implements XMLFilter, EntityResolver, DTDHandler, ContentHandler, ErrorHandler
+{
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Constructors.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Construct an empty XML filter, with no parent.
+ *
+ * <p>This filter will have no parent: you must assign a parent
+ * before you start a parse or do any configuration with
+ * setFeature or setProperty, unless you use this as a pure event
+ * consumer rather than as an {@link XMLReader}.</p>
+ *
+ * @see org.xml.sax.XMLReader#setFeature
+ * @see org.xml.sax.XMLReader#setProperty
+ * @see #setParent
+ */
+ public XMLFilterImpl ()
+ {
+ super();
+ }
+
+
+ /**
+ * Construct an XML filter with the specified parent.
+ *
+ * @see #setParent
+ * @see #getParent
+ */
+ public XMLFilterImpl (XMLReader parent)
+ {
+ super();
+ setParent(parent);
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.XMLFilter.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Set the parent reader.
+ *
+ * <p>This is the {@link org.xml.sax.XMLReader XMLReader} from which
+ * this filter will obtain its events and to which it will pass its
+ * configuration requests. The parent may itself be another filter.</p>
+ *
+ * <p>If there is no parent reader set, any attempt to parse
+ * or to set or get a feature or property will fail.</p>
+ *
+ * @param parent The parent XML reader.
+ * @see #getParent
+ */
+ public void setParent (XMLReader parent)
+ {
+ this.parent = parent;
+ }
+
+
+ /**
+ * Get the parent reader.
+ *
+ * @return The parent XML reader, or null if none is set.
+ * @see #setParent
+ */
+ public XMLReader getParent ()
+ {
+ return parent;
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.XMLReader.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Set the value of a feature.
+ *
+ * <p>This will always fail if the parent is null.</p>
+ *
+ * @param name The feature name.
+ * @param value The requested feature value.
+ * @exception org.xml.sax.SAXNotRecognizedException If the feature
+ * value can't be assigned or retrieved from the parent.
+ * @exception org.xml.sax.SAXNotSupportedException When the
+ * parent recognizes the feature name but
+ * cannot set the requested value.
+ */
+ public void setFeature (String name, boolean value)
+ throws SAXNotRecognizedException, SAXNotSupportedException
+ {
+ if (parent != null) {
+ parent.setFeature(name, value);
+ } else {
+ throw new SAXNotRecognizedException("Feature: " + name);
+ }
+ }
+
+
+ /**
+ * Look up the value of a feature.
+ *
+ * <p>This will always fail if the parent is null.</p>
+ *
+ * @param name The feature name.
+ * @return The current value of the feature.
+ * @exception org.xml.sax.SAXNotRecognizedException If the feature
+ * value can't be assigned or retrieved from the parent.
+ * @exception org.xml.sax.SAXNotSupportedException When the
+ * parent recognizes the feature name but
+ * cannot determine its value at this time.
+ */
+ public boolean getFeature (String name)
+ throws SAXNotRecognizedException, SAXNotSupportedException
+ {
+ if (parent != null) {
+ return parent.getFeature(name);
+ } else {
+ throw new SAXNotRecognizedException("Feature: " + name);
+ }
+ }
+
+
+ /**
+ * Set the value of a property.
+ *
+ * <p>This will always fail if the parent is null.</p>
+ *
+ * @param name The property name.
+ * @param value The requested property value.
+ * @exception org.xml.sax.SAXNotRecognizedException If the property
+ * value can't be assigned or retrieved from the parent.
+ * @exception org.xml.sax.SAXNotSupportedException When the
+ * parent recognizes the property name but
+ * cannot set the requested value.
+ */
+ public void setProperty (String name, Object value)
+ throws SAXNotRecognizedException, SAXNotSupportedException
+ {
+ if (parent != null) {
+ parent.setProperty(name, value);
+ } else {
+ throw new SAXNotRecognizedException("Property: " + name);
+ }
+ }
+
+
+ /**
+ * Look up the value of a property.
+ *
+ * @param name The property name.
+ * @return The current value of the property.
+ * @exception org.xml.sax.SAXNotRecognizedException If the property
+ * value can't be assigned or retrieved from the parent.
+ * @exception org.xml.sax.SAXNotSupportedException When the
+ * parent recognizes the property name but
+ * cannot determine its value at this time.
+ */
+ public Object getProperty (String name)
+ throws SAXNotRecognizedException, SAXNotSupportedException
+ {
+ if (parent != null) {
+ return parent.getProperty(name);
+ } else {
+ throw new SAXNotRecognizedException("Property: " + name);
+ }
+ }
+
+
+ /**
+ * Set the entity resolver.
+ *
+ * @param resolver The new entity resolver.
+ */
+ public void setEntityResolver (EntityResolver resolver)
+ {
+ entityResolver = resolver;
+ }
+
+
+ /**
+ * Get the current entity resolver.
+ *
+ * @return The current entity resolver, or null if none was set.
+ */
+ public EntityResolver getEntityResolver ()
+ {
+ return entityResolver;
+ }
+
+
+ /**
+ * Set the DTD event handler.
+ *
+ * @param resolver The new DTD handler.
+ */
+ public void setDTDHandler (DTDHandler handler)
+ {
+ dtdHandler = handler;
+ }
+
+
+ /**
+ * Get the current DTD event handler.
+ *
+ * @return The current DTD handler, or null if none was set.
+ */
+ public DTDHandler getDTDHandler ()
+ {
+ return dtdHandler;
+ }
+
+
+ /**
+ * Set the content event handler.
+ *
+ * @param resolver The new content handler.
+ */
+ public void setContentHandler (ContentHandler handler)
+ {
+ contentHandler = handler;
+ }
+
+
+ /**
+ * Get the content event handler.
+ *
+ * @return The current content handler, or null if none was set.
+ */
+ public ContentHandler getContentHandler ()
+ {
+ return contentHandler;
+ }
+
+
+ /**
+ * Set the error event handler.
+ *
+ * @param handle The new error handler.
+ */
+ public void setErrorHandler (ErrorHandler handler)
+ {
+ errorHandler = handler;
+ }
+
+
+ /**
+ * Get the current error event handler.
+ *
+ * @return The current error handler, or null if none was set.
+ */
+ public ErrorHandler getErrorHandler ()
+ {
+ return errorHandler;
+ }
+
+
+ /**
+ * Parse a document.
+ *
+ * @param input The input source for the document entity.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @exception java.io.IOException An IO exception from the parser,
+ * possibly from a byte stream or character stream
+ * supplied by the application.
+ */
+ public void parse (InputSource input)
+ throws SAXException, IOException
+ {
+ setupParse();
+ parent.parse(input);
+ }
+
+
+ /**
+ * Parse a document.
+ *
+ * @param systemId The system identifier as a fully-qualified URI.
+ * @exception org.xml.sax.SAXException Any SAX exception, possibly
+ * wrapping another exception.
+ * @exception java.io.IOException An IO exception from the parser,
+ * possibly from a byte stream or character stream
+ * supplied by the application.
+ */
+ public void parse (String systemId)
+ throws SAXException, IOException
+ {
+ parse(new InputSource(systemId));
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.EntityResolver.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Filter an external entity resolution.
+ *
+ * @param publicId The entity's public identifier, or null.
+ * @param systemId The entity's system identifier.
+ * @return A new InputSource or null for the default.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ * @exception java.io.IOException The client may throw an
+ * I/O-related exception while obtaining the
+ * new InputSource.
+ */
+ public InputSource resolveEntity (String publicId, String systemId)
+ throws SAXException, IOException
+ {
+ if (entityResolver != null) {
+ return entityResolver.resolveEntity(publicId, systemId);
+ } else {
+ return null;
+ }
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.DTDHandler.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Filter a notation declaration event.
+ *
+ * @param name The notation name.
+ * @param publicId The notation's public identifier, or null.
+ * @param systemId The notation's system identifier, or null.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void notationDecl (String name, String publicId, String systemId)
+ throws SAXException
+ {
+ if (dtdHandler != null) {
+ dtdHandler.notationDecl(name, publicId, systemId);
+ }
+ }
+
+
+ /**
+ * Filter an unparsed entity declaration event.
+ *
+ * @param name The entity name.
+ * @param publicId The entity's public identifier, or null.
+ * @param systemId The entity's system identifier, or null.
+ * @param notationName The name of the associated notation.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void unparsedEntityDecl (String name, String publicId,
+ String systemId, String notationName)
+ throws SAXException
+ {
+ if (dtdHandler != null) {
+ dtdHandler.unparsedEntityDecl(name, publicId, systemId,
+ notationName);
+ }
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.ContentHandler.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Filter a new document locator event.
+ *
+ * @param locator The document locator.
+ */
+ public void setDocumentLocator (Locator locator)
+ {
+ this.locator = locator;
+ if (contentHandler != null) {
+ contentHandler.setDocumentLocator(locator);
+ }
+ }
+
+
+ /**
+ * Filter a start document event.
+ *
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void startDocument ()
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.startDocument();
+ }
+ }
+
+
+ /**
+ * Filter an end document event.
+ *
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void endDocument ()
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.endDocument();
+ }
+ }
+
+
+ /**
+ * Filter a start Namespace prefix mapping event.
+ *
+ * @param prefix The Namespace prefix.
+ * @param uri The Namespace URI.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void startPrefixMapping (String prefix, String uri)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.startPrefixMapping(prefix, uri);
+ }
+ }
+
+
+ /**
+ * Filter an end Namespace prefix mapping event.
+ *
+ * @param prefix The Namespace prefix.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void endPrefixMapping (String prefix)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.endPrefixMapping(prefix);
+ }
+ }
+
+
+ /**
+ * Filter a start element event.
+ *
+ * @param uri The element's Namespace URI, or the empty string.
+ * @param localName The element's local name, or the empty string.
+ * @param qName The element's qualified (prefixed) name, or the empty
+ * string.
+ * @param atts The element's attributes.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void startElement (String uri, String localName, String qName,
+ Attributes atts)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.startElement(uri, localName, qName, atts);
+ }
+ }
+
+
+ /**
+ * Filter an end element event.
+ *
+ * @param uri The element's Namespace URI, or the empty string.
+ * @param localName The element's local name, or the empty string.
+ * @param qName The element's qualified (prefixed) name, or the empty
+ * string.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void endElement (String uri, String localName, String qName)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.endElement(uri, localName, qName);
+ }
+ }
+
+
+ /**
+ * Filter a character data event.
+ *
+ * @param ch An array of characters.
+ * @param start The starting position in the array.
+ * @param length The number of characters to use from the array.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void characters (char ch[], int start, int length)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.characters(ch, start, length);
+ }
+ }
+
+
+ /**
+ * Filter an ignorable whitespace event.
+ *
+ * @param ch An array of characters.
+ * @param start The starting position in the array.
+ * @param length The number of characters to use from the array.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void ignorableWhitespace (char ch[], int start, int length)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.ignorableWhitespace(ch, start, length);
+ }
+ }
+
+
+ /**
+ * Filter a processing instruction event.
+ *
+ * @param target The processing instruction target.
+ * @param data The text following the target.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void processingInstruction (String target, String data)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.processingInstruction(target, data);
+ }
+ }
+
+
+ /**
+ * Filter a skipped entity event.
+ *
+ * @param name The name of the skipped entity.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void skippedEntity (String name)
+ throws SAXException
+ {
+ if (contentHandler != null) {
+ contentHandler.skippedEntity(name);
+ }
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.ErrorHandler.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Filter a warning event.
+ *
+ * @param e The warning as an exception.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void warning (SAXParseException e)
+ throws SAXException
+ {
+ if (errorHandler != null) {
+ errorHandler.warning(e);
+ }
+ }
+
+
+ /**
+ * Filter an error event.
+ *
+ * @param e The error as an exception.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void error (SAXParseException e)
+ throws SAXException
+ {
+ if (errorHandler != null) {
+ errorHandler.error(e);
+ }
+ }
+
+
+ /**
+ * Filter a fatal error event.
+ *
+ * @param e The error as an exception.
+ * @exception org.xml.sax.SAXException The client may throw
+ * an exception during processing.
+ */
+ public void fatalError (SAXParseException e)
+ throws SAXException
+ {
+ if (errorHandler != null) {
+ errorHandler.fatalError(e);
+ }
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal methods.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Set up before a parse.
+ *
+ * <p>Before every parse, check whether the parent is
+ * non-null, and re-register the filter for all of the
+ * events.</p>
+ */
+ private void setupParse ()
+ {
+ if (parent == null) {
+ throw new NullPointerException("No parent for filter");
+ }
+ parent.setEntityResolver(this);
+ parent.setDTDHandler(this);
+ parent.setContentHandler(this);
+ parent.setErrorHandler(this);
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal state.
+ ////////////////////////////////////////////////////////////////////
+
+ private XMLReader parent = null;
+ private Locator locator = null;
+ private EntityResolver entityResolver = null;
+ private DTDHandler dtdHandler = null;
+ private ContentHandler contentHandler = null;
+ private ErrorHandler errorHandler = null;
+
+}
+
+// end of XMLFilterImpl.java
diff --git a/libjava/org/xml/sax/helpers/XMLReaderAdapter.java b/libjava/org/xml/sax/helpers/XMLReaderAdapter.java
index 4fb44d91d8e..19c8d3f8e88 100644
--- a/libjava/org/xml/sax/helpers/XMLReaderAdapter.java
+++ b/libjava/org/xml/sax/helpers/XMLReaderAdapter.java
@@ -1,526 +1,539 @@
-// XMLReaderAdapter.java - adapt an SAX2 XMLReader to a SAX1 Parser
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the public domain.
-
-// $Id: XMLReaderAdapter.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
-
-package org.xml.sax.helpers;
-
-import java.io.IOException;
-import java.util.Locale;
-
-import org.xml.sax.Parser; // deprecated
-import org.xml.sax.Locator;
-import org.xml.sax.InputSource;
-import org.xml.sax.AttributeList; // deprecated
-import org.xml.sax.EntityResolver;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.DocumentHandler; // deprecated
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-
-import org.xml.sax.XMLReader;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXNotSupportedException;
-
-
-/**
- * Adapt a SAX2 XMLReader as a SAX1 Parser.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class wraps a SAX2 {@link org.xml.sax.XMLReader XMLReader}
- * and makes it act as a SAX1 {@link org.xml.sax.Parser Parser}. The XMLReader
- * must support a true value for the
- * http://xml.org/sax/features/namespace-prefixes property or parsing will fail
- * with a {@link org.xml.sax.SAXException SAXException}; if the XMLReader
- * supports a false value for the http://xml.org/sax/features/namespaces
- * property, that will also be used to improve efficiency.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.Parser
- * @see org.xml.sax.XMLReader
- */
-public class XMLReaderAdapter implements Parser, ContentHandler
-{
-
-
- ////////////////////////////////////////////////////////////////////
- // Constructor.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Create a new adapter.
- *
- * <p>Use the "org.xml.sax.driver" property to locate the SAX2
- * driver to embed.</p>
- *
- * @exception org.xml.sax.SAXException If the embedded driver
- * cannot be instantiated or if the
- * org.xml.sax.driver property is not specified.
- */
- public XMLReaderAdapter ()
- throws SAXException
- {
- setup(XMLReaderFactory.createXMLReader());
- }
-
-
- /**
- * Create a new adapter.
- *
- * <p>Create a new adapter, wrapped around a SAX2 XMLReader.
- * The adapter will make the XMLReader act like a SAX1
- * Parser.</p>
- *
- * @param xmlReader The SAX2 XMLReader to wrap.
- * @exception java.lang.NullPointerException If the argument is null.
- */
- public XMLReaderAdapter (XMLReader xmlReader)
- {
- setup(xmlReader);
- }
-
-
-
- /**
- * Internal setup.
- *
- * @param xmlReader The embedded XMLReader.
- */
- private void setup (XMLReader xmlReader)
- {
- if (xmlReader == null) {
- throw new NullPointerException("XMLReader must not be null");
- }
- this.xmlReader = xmlReader;
- qAtts = new AttributesAdapter();
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.Parser.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Set the locale for error reporting.
- *
- * <p>This is not supported in SAX2, and will always throw
- * an exception.</p>
- *
- * @param The locale for error reporting.
- * @see org.xml.sax.Parser#setLocale
- */
- public void setLocale (Locale locale)
- throws SAXException
- {
- throw new SAXNotSupportedException("setLocale not supported");
- }
-
-
- /**
- * Register the entity resolver.
- *
- * @param resolver The new resolver.
- * @see org.xml.sax.Parser#setEntityResolver
- */
- public void setEntityResolver (EntityResolver resolver)
- {
- xmlReader.setEntityResolver(resolver);
- }
-
-
- /**
- * Register the DTD event handler.
- *
- * @param handler The new DTD event handler.
- * @see org.xml.sax.Parser#setDTDHandler
- */
- public void setDTDHandler (DTDHandler handler)
- {
- xmlReader.setDTDHandler(handler);
- }
-
-
- /**
- * Register the SAX1 document event handler.
- *
- * <p>Note that the SAX1 document handler has no Namespace
- * support.</p>
- *
- * @param handler The new SAX1 document event handler.
- * @see org.xml.sax.Parser#setDocumentHandler
- */
- public void setDocumentHandler (DocumentHandler handler)
- {
- documentHandler = handler;
- }
-
-
- /**
- * Register the error event handler.
- *
- * @param handler The new error event handler.
- * @see org.xml.sax.Parser#setErrorHandler
- */
- public void setErrorHandler (ErrorHandler handler)
- {
- xmlReader.setErrorHandler(handler);
- }
-
-
- /**
- * Parse the document.
- *
- * <p>This method will throw an exception if the embedded
- * XMLReader does not support the
- * http://xml.org/sax/features/namespace-prefixes property.</p>
- *
- * @param systemId The absolute URL of the document.
- * @exception java.io.IOException If there is a problem reading
- * the raw content of the document.
- * @exception org.xml.sax.SAXException If there is a problem
- * processing the document.
- * @see #parse(org.xml.sax.InputSource)
- * @see org.xml.sax.Parser#parse(java.lang.String)
- */
- public void parse (String systemId)
- throws IOException, SAXException
- {
- parse(new InputSource(systemId));
- }
-
-
- /**
- * Parse the document.
- *
- * <p>This method will throw an exception if the embedded
- * XMLReader does not support the
- * http://xml.org/sax/features/namespace-prefixes property.</p>
- *
- * @param input An input source for the document.
- * @exception java.io.IOException If there is a problem reading
- * the raw content of the document.
- * @exception org.xml.sax.SAXException If there is a problem
- * processing the document.
- * @see #parse(java.lang.String)
- * @see org.xml.sax.Parser#parse(org.xml.sax.InputSource)
- */
- public void parse (InputSource input)
- throws IOException, SAXException
- {
- setupXMLReader();
- xmlReader.parse(input);
- }
-
-
- /**
- * Set up the XML reader.
- */
- private void setupXMLReader ()
- throws SAXException
- {
- xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
- try {
- xmlReader.setFeature("http://xml.org/sax/features/namespaces",
- false);
- } catch (SAXException e) {
- // NO OP: it's just extra information, and we can ignore it
- }
- xmlReader.setContentHandler(this);
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Implementation of org.xml.sax.ContentHandler.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Set a document locator.
- *
- * @param locator The document locator.
- * @see org.xml.sax.ContentHandler#setDocumentLocator
- */
- public void setDocumentLocator (Locator locator)
- {
- documentHandler.setDocumentLocator(locator);
- }
-
-
- /**
- * Start document event.
- *
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.ContentHandler#startDocument
- */
- public void startDocument ()
- throws SAXException
- {
- documentHandler.startDocument();
- }
-
-
- /**
- * End document event.
- *
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.ContentHandler#endDocument
- */
- public void endDocument ()
- throws SAXException
- {
- documentHandler.endDocument();
- }
-
-
- /**
- * Adapt a SAX2 start prefix mapping event.
- *
- * @param prefix The prefix being mapped.
- * @param uri The Namespace URI being mapped to.
- * @see org.xml.sax.ContentHandler#startPrefixMapping
- */
- public void startPrefixMapping (String prefix, String uri)
- {
- }
-
-
- /**
- * Adapt a SAX2 end prefix mapping event.
- *
- * @param prefix The prefix being mapped.
- * @see org.xml.sax.ContentHandler#endPrefixMapping
- */
- public void endPrefixMapping (String prefix)
- {
- }
-
-
- /**
- * Adapt a SAX2 start element event.
- *
- * @param uri The Namespace URI.
- * @param localName The Namespace local name.
- * @param qName The qualified (prefixed) name.
- * @param atts The SAX2 attributes.
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.ContentHandler#endDocument
- */
- public void startElement (String uri, String localName,
- String qName, Attributes atts)
- throws SAXException
- {
- qAtts.setAttributes(atts);
- documentHandler.startElement(qName, qAtts);
- }
-
-
- /**
- * Adapt a SAX2 end element event.
- *
- * @param uri The Namespace URI.
- * @param localName The Namespace local name.
- * @param qName The qualified (prefixed) name.
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.ContentHandler#endElement
- */
- public void endElement (String uri, String localName,
- String qName)
- throws SAXException
- {
- documentHandler.endElement(qName);
- }
-
-
- /**
- * Adapt a SAX2 characters event.
- *
- * @param ch An array of characters.
- * @param start The starting position in the array.
- * @param length The number of characters to use.
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.ContentHandler#characters
- */
- public void characters (char ch[], int start, int length)
- throws SAXException
- {
- documentHandler.characters(ch, start, length);
- }
-
-
- /**
- * Adapt a SAX2 ignorable whitespace event.
- *
- * @param ch An array of characters.
- * @param start The starting position in the array.
- * @param length The number of characters to use.
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.ContentHandler#ignorableWhitespace
- */
- public void ignorableWhitespace (char ch[], int start, int length)
- throws SAXException
- {
- documentHandler.ignorableWhitespace(ch, start, length);
- }
-
-
- /**
- * Adapt a SAX2 processing instruction event.
- *
- * @param target The processing instruction target.
- * @param data The remainder of the processing instruction
- * @exception org.xml.sax.SAXException The client may raise a
- * processing exception.
- * @see org.xml.sax.ContentHandler#processingInstruction
- */
- public void processingInstruction (String target, String data)
- throws SAXException
- {
- documentHandler.processingInstruction(target, data);
- }
-
-
- /**
- * Adapt a SAX2 skipped entity event.
- *
- * @param name The name of the skipped entity.
- * @see org.xml.sax.ContentHandler#skippedEntity
- */
- public void skippedEntity (String name)
- throws SAXException
- {
- }
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal state.
- ////////////////////////////////////////////////////////////////////
-
- XMLReader xmlReader;
- DocumentHandler documentHandler;
- AttributesAdapter qAtts;
-
-
-
- ////////////////////////////////////////////////////////////////////
- // Internal class.
- ////////////////////////////////////////////////////////////////////
-
-
- /**
- * Internal class to wrap a SAX2 Attributes object for SAX1.
- */
- final class AttributesAdapter implements AttributeList
- {
- AttributesAdapter ()
- {
- }
-
-
- /**
- * Set the embedded Attributes object.
- *
- * @param The embedded SAX2 Attributes.
- */
- void setAttributes (Attributes attributes)
- {
- this.attributes = attributes;
- }
-
-
- /**
- * Return the number of attributes.
- *
- * @return The length of the attribute list.
- * @see org.xml.sax.AttributeList#getLength
- */
- public int getLength ()
- {
- return attributes.getLength();
- }
-
-
- /**
- * Return the qualified (prefixed) name of an attribute by position.
- *
- * @return The qualified name.
- * @see org.xml.sax.AttributeList#getName
- */
- public String getName (int i)
- {
- return attributes.getQName(i);
- }
-
-
- /**
- * Return the type of an attribute by position.
- *
- * @return The type.
- * @see org.xml.sax.AttributeList#getType(int)
- */
- public String getType (int i)
- {
- return attributes.getType(i);
- }
-
-
- /**
- * Return the value of an attribute by position.
- *
- * @return The value.
- * @see org.xml.sax.AttributeList#getValue(int)
- */
- public String getValue (int i)
- {
- return attributes.getValue(i);
- }
-
-
- /**
- * Return the type of an attribute by qualified (prefixed) name.
- *
- * @return The type.
- * @see org.xml.sax.AttributeList#getType(java.lang.String)
- */
- public String getType (String qName)
- {
- return attributes.getType(qName);
- }
-
-
- /**
- * Return the value of an attribute by qualified (prefixed) name.
- *
- * @return The value.
- * @see org.xml.sax.AttributeList#getValue(java.lang.String)
- */
- public String getValue (String qName)
- {
- return attributes.getValue(qName);
- }
-
- private Attributes attributes;
- }
-
-}
-
-// end of XMLReaderAdapter.java
+// XMLReaderAdapter.java - adapt an SAX2 XMLReader to a SAX1 Parser
+// http://www.saxproject.org
+// Written by David Megginson
+// NO WARRANTY! This class is in the public domain.
+
+// $Id: XMLReaderAdapter.java,v 1.5.2.3 2002/01/29 21:34:15 dbrownell Exp $
+
+package org.xml.sax.helpers;
+
+import java.io.IOException;
+import java.util.Locale;
+
+import org.xml.sax.Parser; // deprecated
+import org.xml.sax.Locator;
+import org.xml.sax.InputSource;
+import org.xml.sax.AttributeList; // deprecated
+import org.xml.sax.EntityResolver;
+import org.xml.sax.DTDHandler;
+import org.xml.sax.DocumentHandler; // deprecated
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+
+import org.xml.sax.XMLReader;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXNotSupportedException;
+
+
+/**
+ * Adapt a SAX2 XMLReader as a SAX1 Parser.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class wraps a SAX2 {@link org.xml.sax.XMLReader XMLReader}
+ * and makes it act as a SAX1 {@link org.xml.sax.Parser Parser}. The XMLReader
+ * must support a true value for the
+ * http://xml.org/sax/features/namespace-prefixes property or parsing will fail
+ * with a {@link org.xml.sax.SAXException SAXException}; if the XMLReader
+ * supports a false value for the http://xml.org/sax/features/namespaces
+ * property, that will also be used to improve efficiency.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson
+ * @version 2.0.1 (sax2r2)
+ * @see org.xml.sax.Parser
+ * @see org.xml.sax.XMLReader
+ */
+public class XMLReaderAdapter implements Parser, ContentHandler
+{
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Constructor.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Create a new adapter.
+ *
+ * <p>Use the "org.xml.sax.driver" property to locate the SAX2
+ * driver to embed.</p>
+ *
+ * @exception org.xml.sax.SAXException If the embedded driver
+ * cannot be instantiated or if the
+ * org.xml.sax.driver property is not specified.
+ */
+ public XMLReaderAdapter ()
+ throws SAXException
+ {
+ setup(XMLReaderFactory.createXMLReader());
+ }
+
+
+ /**
+ * Create a new adapter.
+ *
+ * <p>Create a new adapter, wrapped around a SAX2 XMLReader.
+ * The adapter will make the XMLReader act like a SAX1
+ * Parser.</p>
+ *
+ * @param xmlReader The SAX2 XMLReader to wrap.
+ * @exception java.lang.NullPointerException If the argument is null.
+ */
+ public XMLReaderAdapter (XMLReader xmlReader)
+ {
+ setup(xmlReader);
+ }
+
+
+
+ /**
+ * Internal setup.
+ *
+ * @param xmlReader The embedded XMLReader.
+ */
+ private void setup (XMLReader xmlReader)
+ {
+ if (xmlReader == null) {
+ throw new NullPointerException("XMLReader must not be null");
+ }
+ this.xmlReader = xmlReader;
+ qAtts = new AttributesAdapter();
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.Parser.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Set the locale for error reporting.
+ *
+ * <p>This is not supported in SAX2, and will always throw
+ * an exception.</p>
+ *
+ * @param The locale for error reporting.
+ * @see org.xml.sax.Parser#setLocale
+ * @exception org.xml.sax.SAXException Thrown unless overridden.
+ */
+ public void setLocale (Locale locale)
+ throws SAXException
+ {
+ throw new SAXNotSupportedException("setLocale not supported");
+ }
+
+
+ /**
+ * Register the entity resolver.
+ *
+ * @param resolver The new resolver.
+ * @see org.xml.sax.Parser#setEntityResolver
+ */
+ public void setEntityResolver (EntityResolver resolver)
+ {
+ xmlReader.setEntityResolver(resolver);
+ }
+
+
+ /**
+ * Register the DTD event handler.
+ *
+ * @param handler The new DTD event handler.
+ * @see org.xml.sax.Parser#setDTDHandler
+ */
+ public void setDTDHandler (DTDHandler handler)
+ {
+ xmlReader.setDTDHandler(handler);
+ }
+
+
+ /**
+ * Register the SAX1 document event handler.
+ *
+ * <p>Note that the SAX1 document handler has no Namespace
+ * support.</p>
+ *
+ * @param handler The new SAX1 document event handler.
+ * @see org.xml.sax.Parser#setDocumentHandler
+ */
+ public void setDocumentHandler (DocumentHandler handler)
+ {
+ documentHandler = handler;
+ }
+
+
+ /**
+ * Register the error event handler.
+ *
+ * @param handler The new error event handler.
+ * @see org.xml.sax.Parser#setErrorHandler
+ */
+ public void setErrorHandler (ErrorHandler handler)
+ {
+ xmlReader.setErrorHandler(handler);
+ }
+
+
+ /**
+ * Parse the document.
+ *
+ * <p>This method will throw an exception if the embedded
+ * XMLReader does not support the
+ * http://xml.org/sax/features/namespace-prefixes property.</p>
+ *
+ * @param systemId The absolute URL of the document.
+ * @exception java.io.IOException If there is a problem reading
+ * the raw content of the document.
+ * @exception org.xml.sax.SAXException If there is a problem
+ * processing the document.
+ * @see #parse(org.xml.sax.InputSource)
+ * @see org.xml.sax.Parser#parse(java.lang.String)
+ */
+ public void parse (String systemId)
+ throws IOException, SAXException
+ {
+ parse(new InputSource(systemId));
+ }
+
+
+ /**
+ * Parse the document.
+ *
+ * <p>This method will throw an exception if the embedded
+ * XMLReader does not support the
+ * http://xml.org/sax/features/namespace-prefixes property.</p>
+ *
+ * @param input An input source for the document.
+ * @exception java.io.IOException If there is a problem reading
+ * the raw content of the document.
+ * @exception org.xml.sax.SAXException If there is a problem
+ * processing the document.
+ * @see #parse(java.lang.String)
+ * @see org.xml.sax.Parser#parse(org.xml.sax.InputSource)
+ */
+ public void parse (InputSource input)
+ throws IOException, SAXException
+ {
+ setupXMLReader();
+ xmlReader.parse(input);
+ }
+
+
+ /**
+ * Set up the XML reader.
+ */
+ private void setupXMLReader ()
+ throws SAXException
+ {
+ xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+ try {
+ xmlReader.setFeature("http://xml.org/sax/features/namespaces",
+ false);
+ } catch (SAXException e) {
+ // NO OP: it's just extra information, and we can ignore it
+ }
+ xmlReader.setContentHandler(this);
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Implementation of org.xml.sax.ContentHandler.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Set a document locator.
+ *
+ * @param locator The document locator.
+ * @see org.xml.sax.ContentHandler#setDocumentLocator
+ */
+ public void setDocumentLocator (Locator locator)
+ {
+ if (documentHandler != null)
+ documentHandler.setDocumentLocator(locator);
+ }
+
+
+ /**
+ * Start document event.
+ *
+ * @exception org.xml.sax.SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.ContentHandler#startDocument
+ */
+ public void startDocument ()
+ throws SAXException
+ {
+ if (documentHandler != null)
+ documentHandler.startDocument();
+ }
+
+
+ /**
+ * End document event.
+ *
+ * @exception org.xml.sax.SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.ContentHandler#endDocument
+ */
+ public void endDocument ()
+ throws SAXException
+ {
+ if (documentHandler != null)
+ documentHandler.endDocument();
+ }
+
+
+ /**
+ * Adapt a SAX2 start prefix mapping event.
+ *
+ * @param prefix The prefix being mapped.
+ * @param uri The Namespace URI being mapped to.
+ * @see org.xml.sax.ContentHandler#startPrefixMapping
+ */
+ public void startPrefixMapping (String prefix, String uri)
+ {
+ }
+
+
+ /**
+ * Adapt a SAX2 end prefix mapping event.
+ *
+ * @param prefix The prefix being mapped.
+ * @see org.xml.sax.ContentHandler#endPrefixMapping
+ */
+ public void endPrefixMapping (String prefix)
+ {
+ }
+
+
+ /**
+ * Adapt a SAX2 start element event.
+ *
+ * @param uri The Namespace URI.
+ * @param localName The Namespace local name.
+ * @param qName The qualified (prefixed) name.
+ * @param atts The SAX2 attributes.
+ * @exception org.xml.sax.SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.ContentHandler#endDocument
+ */
+ public void startElement (String uri, String localName,
+ String qName, Attributes atts)
+ throws SAXException
+ {
+ if (documentHandler != null) {
+ qAtts.setAttributes(atts);
+ documentHandler.startElement(qName, qAtts);
+ }
+ }
+
+
+ /**
+ * Adapt a SAX2 end element event.
+ *
+ * @param uri The Namespace URI.
+ * @param localName The Namespace local name.
+ * @param qName The qualified (prefixed) name.
+ * @exception org.xml.sax.SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.ContentHandler#endElement
+ */
+ public void endElement (String uri, String localName,
+ String qName)
+ throws SAXException
+ {
+ if (documentHandler != null)
+ documentHandler.endElement(qName);
+ }
+
+
+ /**
+ * Adapt a SAX2 characters event.
+ *
+ * @param ch An array of characters.
+ * @param start The starting position in the array.
+ * @param length The number of characters to use.
+ * @exception org.xml.sax.SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.ContentHandler#characters
+ */
+ public void characters (char ch[], int start, int length)
+ throws SAXException
+ {
+ if (documentHandler != null)
+ documentHandler.characters(ch, start, length);
+ }
+
+
+ /**
+ * Adapt a SAX2 ignorable whitespace event.
+ *
+ * @param ch An array of characters.
+ * @param start The starting position in the array.
+ * @param length The number of characters to use.
+ * @exception org.xml.sax.SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.ContentHandler#ignorableWhitespace
+ */
+ public void ignorableWhitespace (char ch[], int start, int length)
+ throws SAXException
+ {
+ if (documentHandler != null)
+ documentHandler.ignorableWhitespace(ch, start, length);
+ }
+
+
+ /**
+ * Adapt a SAX2 processing instruction event.
+ *
+ * @param target The processing instruction target.
+ * @param data The remainder of the processing instruction
+ * @exception org.xml.sax.SAXException The client may raise a
+ * processing exception.
+ * @see org.xml.sax.ContentHandler#processingInstruction
+ */
+ public void processingInstruction (String target, String data)
+ throws SAXException
+ {
+ if (documentHandler != null)
+ documentHandler.processingInstruction(target, data);
+ }
+
+
+ /**
+ * Adapt a SAX2 skipped entity event.
+ *
+ * @param name The name of the skipped entity.
+ * @see org.xml.sax.ContentHandler#skippedEntity
+ * @exception org.xml.sax.SAXException Throwable by subclasses.
+ */
+ public void skippedEntity (String name)
+ throws SAXException
+ {
+ }
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal state.
+ ////////////////////////////////////////////////////////////////////
+
+ XMLReader xmlReader;
+ DocumentHandler documentHandler;
+ AttributesAdapter qAtts;
+
+
+
+ ////////////////////////////////////////////////////////////////////
+ // Internal class.
+ ////////////////////////////////////////////////////////////////////
+
+
+ /**
+ * Internal class to wrap a SAX2 Attributes object for SAX1.
+ */
+ final class AttributesAdapter implements AttributeList
+ {
+ AttributesAdapter ()
+ {
+ }
+
+
+ /**
+ * Set the embedded Attributes object.
+ *
+ * @param The embedded SAX2 Attributes.
+ */
+ void setAttributes (Attributes attributes)
+ {
+ this.attributes = attributes;
+ }
+
+
+ /**
+ * Return the number of attributes.
+ *
+ * @return The length of the attribute list.
+ * @see org.xml.sax.AttributeList#getLength
+ */
+ public int getLength ()
+ {
+ return attributes.getLength();
+ }
+
+
+ /**
+ * Return the qualified (prefixed) name of an attribute by position.
+ *
+ * @return The qualified name.
+ * @see org.xml.sax.AttributeList#getName
+ */
+ public String getName (int i)
+ {
+ return attributes.getQName(i);
+ }
+
+
+ /**
+ * Return the type of an attribute by position.
+ *
+ * @return The type.
+ * @see org.xml.sax.AttributeList#getType(int)
+ */
+ public String getType (int i)
+ {
+ return attributes.getType(i);
+ }
+
+
+ /**
+ * Return the value of an attribute by position.
+ *
+ * @return The value.
+ * @see org.xml.sax.AttributeList#getValue(int)
+ */
+ public String getValue (int i)
+ {
+ return attributes.getValue(i);
+ }
+
+
+ /**
+ * Return the type of an attribute by qualified (prefixed) name.
+ *
+ * @return The type.
+ * @see org.xml.sax.AttributeList#getType(java.lang.String)
+ */
+ public String getType (String qName)
+ {
+ return attributes.getType(qName);
+ }
+
+
+ /**
+ * Return the value of an attribute by qualified (prefixed) name.
+ *
+ * @return The value.
+ * @see org.xml.sax.AttributeList#getValue(java.lang.String)
+ */
+ public String getValue (String qName)
+ {
+ return attributes.getValue(qName);
+ }
+
+ private Attributes attributes;
+ }
+
+}
+
+// end of XMLReaderAdapter.java
diff --git a/libjava/org/xml/sax/helpers/XMLReaderFactory.java b/libjava/org/xml/sax/helpers/XMLReaderFactory.java
index 9443b27dcca..e1fa80c84cf 100644
--- a/libjava/org/xml/sax/helpers/XMLReaderFactory.java
+++ b/libjava/org/xml/sax/helpers/XMLReaderFactory.java
@@ -1,136 +1,203 @@
-// XMLReaderFactory.java - factory for creating a new reader.
-// Written by David Megginson, sax@megginson.com
-// NO WARRANTY! This class is in the Public Domain.
-
-// $Id: XMLReaderFactory.java,v 1.1 2000/10/02 02:43:20 sboag Exp $
-
-package org.xml.sax.helpers;
-import org.xml.sax.Parser;
-import org.xml.sax.XMLReader;
-import org.xml.sax.SAXException;
-
-
-/**
- * Factory for creating an XML reader.
- *
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
- * <p>This class contains static methods for creating an XML reader
- * from an explicit class name, or for creating an XML reader based
- * on the value of the <code>org.xml.sax.driver</code> system
- * property:</p>
- *
- * <pre>
- * try {
- * XMLReader myReader = XMLReaderFactory.createXMLReader();
- * } catch (SAXException e) {
- * System.err.println(e.getMessage());
- * }
- * </pre>
- *
- * <p>Note that these methods will not be usable in environments where
- * system properties are not accessible or where the application or
- * applet is not permitted to load classes dynamically.</p>
- *
- * <p><strong>Note to implementors:</strong> SAX implementations in specialized
- * environments may replace this class with a different one optimized for the
- * environment, as long as its method signatures remain the same.</p>
- *
- * @since SAX 2.0
- * @author David Megginson,
- * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
- * @version 2.0
- * @see org.xml.sax.XMLReader
- */
-final public class XMLReaderFactory
-{
-
- /**
- * Private constructor.
- *
- * <p>This constructor prevents the class from being instantiated.</p>
- */
- private XMLReaderFactory ()
- {
- }
-
-
- /**
- * Attempt to create an XML reader from a system property.
- *
- * <p>This method uses the value of the system property
- * "org.xml.sax.driver" as the full name of a Java class
- * and tries to instantiate that class as a SAX2
- * XMLReader.</p>
- *
- * <p>Note that many Java interpreters allow system properties
- * to be specified on the command line.</p>
- *
- * @return A new XMLReader.
- * @exception org.xml.sax.SAXException If the value of the
- * "org.xml.sax.driver" system property is null,
- * or if the class cannot be loaded and instantiated.
- * @see #createXMLReader(java.lang.String)
- */
- public static XMLReader createXMLReader ()
- throws SAXException
- {
- String className = System.getProperty("org.xml.sax.driver");
- if (className == null) {
- Parser parser;
- try {
- parser = ParserFactory.makeParser();
- } catch (Exception e) {
- parser = null;
- }
- if (parser == null) {
- throw new
- SAXException("System property org.xml.sax.driver not specified");
- } else {
- return new ParserAdapter(parser);
- }
- } else {
- return createXMLReader(className);
- }
- }
-
-
- /**
- * Attempt to create an XML reader from a class name.
- *
- * <p>Given a class name, this method attempts to load
- * and instantiate the class as an XML reader.</p>
- *
- * @return A new XML reader.
- * @exception org.xml.sax.SAXException If the class cannot be
- * loaded, instantiated, and cast to XMLReader.
- * @see #createXMLReader()
- */
- public static XMLReader createXMLReader (String className)
- throws SAXException
- {
- try {
- return (XMLReader)(Class.forName(className).newInstance());
- } catch (ClassNotFoundException e1) {
- throw new SAXException("SAX2 driver class " + className +
- " not found", e1);
- } catch (IllegalAccessException e2) {
- throw new SAXException("SAX2 driver class " + className +
- " found but cannot be loaded", e2);
- } catch (InstantiationException e3) {
- throw new SAXException("SAX2 driver class " + className +
- " loaded but cannot be instantiated (no empty public constructor?)",
- e3);
- } catch (ClassCastException e4) {
- throw new SAXException("SAX2 driver class " + className +
- " does not implement XMLReader", e4);
- }
-
- }
-
-}
-
-// end of XMLReaderFactory.java
+// XMLReaderFactory.java - factory for creating a new reader.
+// http://www.saxproject.org
+// Written by David Megginson
+// and by David Brownell
+// NO WARRANTY! This class is in the Public Domain.
+
+// $Id: XMLReaderFactory.java,v 1.5.2.4 2002/01/29 21:34:15 dbrownell Exp $
+
+package org.xml.sax.helpers;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import org.xml.sax.XMLReader;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Factory for creating an XML reader.
+ *
+ * <blockquote>
+ * <em>This module, both source code and documentation, is in the
+ * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
+ * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+ * for further information.
+ * </blockquote>
+ *
+ * <p>This class contains static methods for creating an XML reader
+ * from an explicit class name, or based on runtime defaults:</p>
+ *
+ * <pre>
+ * try {
+ * XMLReader myReader = XMLReaderFactory.createXMLReader();
+ * } catch (SAXException e) {
+ * System.err.println(e.getMessage());
+ * }
+ * </pre>
+ *
+ * <p><strong>Note to Distributions bundled with parsers:</strong>
+ * You should modify the implementation of the no-arguments
+ * <em>createXMLReader</em> to handle cases where the external
+ * configuration mechanisms aren't set up. That method should do its
+ * best to return a parser when one is in the class path, even when
+ * nothing bound its class name to <code>org.xml.sax.driver</code> so
+ * those configuration mechanisms would see it.</p>
+ *
+ * @since SAX 2.0
+ * @author David Megginson, David Brownell
+ * @version 2.0.1 (sax2r2)
+ */
+final public class XMLReaderFactory
+{
+ /**
+ * Private constructor.
+ *
+ * <p>This constructor prevents the class from being instantiated.</p>
+ */
+ private XMLReaderFactory ()
+ {
+ }
+
+ private static final String property = "org.xml.sax.driver";
+
+ /**
+ * Attempt to create an XMLReader from system defaults.
+ * In environments which can support it, the name of the XMLReader
+ * class is determined by trying each these options in order, and
+ * using the first one which succeeds:</p> <ul>
+ *
+ * <li>If the system property <code>org.xml.sax.driver</code>
+ * has a value, that is used as an XMLReader class name. </li>
+ *
+ * <li>The JAR "Services API" is used to look for a class name
+ * in the <em>META-INF/services/org.xml.sax.driver</em> file in
+ * jarfiles available to the runtime.</li>
+ *
+ * <li> SAX parser distributions are strongly encouraged to provide
+ * a default XMLReader class name that will take effect only when
+ * previous options (on this list) are not successful.</li>
+ *
+ * <li>Finally, if {@link ParserFactory#makeParser()} can
+ * return a system default SAX1 parser, that parser is wrapped in
+ * a {@link ParserAdapter}. (This is a migration aid for SAX1
+ * environments, where the <code>org.xml.sax.parser</code> system
+ * property will often be usable.) </li>
+ *
+ * </ul>
+ *
+ * <p> In environments such as small embedded systems, which can not
+ * support that flexibility, other mechanisms to determine the default
+ * may be used. </p>
+ *
+ * <p>Note that many Java environments allow system properties to be
+ * initialized on a command line. This means that <em>in most cases</em>
+ * setting a good value for that property ensures that calls to this
+ * method will succeed, except when security policies intervene.
+ * This will also maximize application portability to older SAX
+ * environments, with less robust implementations of this method.
+ * </p>
+ *
+ * @return A new XMLReader.
+ * @exception org.xml.sax.SAXException If no default XMLReader class
+ * can be identified and instantiated.
+ * @see #createXMLReader(java.lang.String)
+ */
+ public static XMLReader createXMLReader ()
+ throws SAXException
+ {
+ String className = null;
+ ClassLoader loader = NewInstance.getClassLoader ();
+
+ // 1. try the JVM-instance-wide system property
+ try { className = System.getProperty (property); }
+ catch (Exception e) { /* normally fails for applets */ }
+
+ // 2. if that fails, try META-INF/services/
+ if (className == null) {
+ try {
+ String service = "META-INF/services/" + property;
+ InputStream in;
+ BufferedReader reader;
+
+ if (loader == null)
+ in = ClassLoader.getSystemResourceAsStream (service);
+ else
+ in = loader.getResourceAsStream (service);
+
+ if (in != null) {
+ reader = new BufferedReader (
+ new InputStreamReader (in, "UTF8"));
+ className = reader.readLine ();
+ in.close ();
+ }
+ } catch (Exception e) {
+ }
+ }
+
+ // 3. Distro-specific fallback
+ if (className == null) {
+// BEGIN DISTRIBUTION-SPECIFIC
+
+ // EXAMPLE:
+ // className = "com.example.sax.XmlReader";
+ // or a $JAVA_HOME/jre/lib/*properties setting...
+
+// END DISTRIBUTION-SPECIFIC
+ }
+
+ // do we know the XMLReader implementation class yet?
+ if (className != null)
+ return loadClass (loader, className);
+
+ // 4. panic -- adapt any SAX1 parser
+ try {
+ return new ParserAdapter (ParserFactory.makeParser ());
+ } catch (Exception e) {
+ throw new SAXException ("Can't create default XMLReader; "
+ + "is system property org.xml.sax.driver set?");
+ }
+ }
+
+
+ /**
+ * Attempt to create an XML reader from a class name.
+ *
+ * <p>Given a class name, this method attempts to load
+ * and instantiate the class as an XML reader.</p>
+ *
+ * <p>Note that this method will not be usable in environments where
+ * the caller (perhaps an applet) is not permitted to load classes
+ * dynamically.</p>
+ *
+ * @return A new XML reader.
+ * @exception org.xml.sax.SAXException If the class cannot be
+ * loaded, instantiated, and cast to XMLReader.
+ * @see #createXMLReader()
+ */
+ public static XMLReader createXMLReader (String className)
+ throws SAXException
+ {
+ return loadClass (NewInstance.getClassLoader (), className);
+ }
+
+ private static XMLReader loadClass (ClassLoader loader, String className)
+ throws SAXException
+ {
+ try {
+ return (XMLReader) NewInstance.newInstance (loader, className);
+ } catch (ClassNotFoundException e1) {
+ throw new SAXException("SAX2 driver class " + className +
+ " not found", e1);
+ } catch (IllegalAccessException e2) {
+ throw new SAXException("SAX2 driver class " + className +
+ " found but cannot be loaded", e2);
+ } catch (InstantiationException e3) {
+ throw new SAXException("SAX2 driver class " + className +
+ " loaded but cannot be instantiated (no empty public constructor?)",
+ e3);
+ } catch (ClassCastException e4) {
+ throw new SAXException("SAX2 driver class " + className +
+ " does not implement XMLReader", e4);
+ }
+ }
+}
diff --git a/libjava/org/xml/sax/helpers/package.html b/libjava/org/xml/sax/helpers/package.html
new file mode 100644
index 00000000000..458d1229c47
--- /dev/null
+++ b/libjava/org/xml/sax/helpers/package.html
@@ -0,0 +1,13 @@
+<HTML><HEAD>
+
+<!-- $Id: package.html,v 1.3.2.1 2001/11/09 20:32:58 dbrownell Exp $ -->
+
+</HEAD><BODY>
+
+<p>This package contains "helper" classes, including
+support for bootstrapping SAX-based applications.
+
+<p>See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+for more information about SAX.</p>
+
+</BODY></HTML>
diff --git a/libjava/org/xml/sax/package.html b/libjava/org/xml/sax/package.html
new file mode 100644
index 00000000000..25f4b86cdf3
--- /dev/null
+++ b/libjava/org/xml/sax/package.html
@@ -0,0 +1,164 @@
+<html><head>
+
+<!-- $Id: package.html,v 1.2.2.2 2002/01/12 21:42:21 dbrownell Exp $ -->
+
+</head><body>
+
+<p> This package provides the core SAX APIs.
+Some SAX1 APIs are deprecated to encourage integration of
+namespace-awareness into designs of new applications
+and into maintainance of existing infrastructure. </p>
+
+<p>See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
+for more information about SAX.</p>
+
+
+<h2> SAX2 Standard Feature Flags </h2>
+
+<p> One of the essential characteristics of SAX2 is that it added
+feature flags which can be used to examine and perhaps modify
+parser modes, in particular modes such as validation.
+Since features are identified by (absolute) URIs, anyone
+can define such features.
+Currently defined standard feature URIs have the prefix
+<code>http://xml.org/sax/features/</code> before an identifier such as
+<code>validation</code>. Turn features on or off using
+<em>setFeature</em>. Those standard identifiers are: </p>
+
+
+<table border="1" cellpadding="3" cellspacing="0" width="100%">
+ <tr align="center" bgcolor="#ccccff">
+ <th>Feature ID</th>
+ <th>Default</th>
+ <th>Description</th>
+ </tr>
+
+ <tr>
+ <td>external-general-entities</td>
+ <td><em>unspecified</em></td>
+ <td> Reports whether this parser processes external
+ general entities; always true if validating</td>
+ </tr>
+
+ <tr>
+ <td>external-parameter-entities</td>
+ <td><em>unspecified</em></td>
+ <td> Reports whether this parser processes external
+ parameter entities; always true if validating</td>
+ </tr>
+
+ <tr>
+ <td>lexical-handler/parameter-entities</td>
+ <td><em>unspecified</em></td>
+ <td> true indicates that the LexicalHandler will report the
+ beginning and end of parameter entities
+ </td>
+ </tr>
+
+ <tr>
+ <td>namespaces</td>
+ <td>true</td>
+ <td> true indicates namespace URIs and unprefixed local names
+ for element and attribute names will be available </td>
+ </tr>
+
+ <tr>
+ <td>namespace-prefixes</td>
+ <td>false</td>
+ <td> true indicates XML 1.0 names (with prefixes) and attributes
+ (including <em>xmlns*</em> attributes) will be available </td>
+ </tr>
+
+ <tr>
+ <td>string-interning</td>
+ <td><em>unspecified</em></td>
+ <td> true if all XML names (for elements, prefixes, attributes,
+ entities, notations, and local names),
+ as well as Namespace URIs, will have been interned
+ using <em>java.lang.String.intern</em>. This supports fast
+ testing of equality/inequality against string constants.</td>
+ </tr>
+
+ <tr>
+ <td>validation</td>
+ <td><em>unspecified</em></td>
+ <td> controls whether the parser is reporting all validity
+ errors; if true, all external entities will be read. </td>
+ </tr>
+
+</table>
+
+<p> Support for the default values of the
+<em>namespaces</em> and <em>namespace-prefixes</em>
+properties is required.
+</p>
+
+<p> For default values not specified by SAX2,
+each XMLReader implementation specifies its default,
+or may choose not to expose the feature flag.
+Unless otherwise specified here,
+implementations may support changing current values
+of these standard feature flags, but not while parsing.
+</p>
+
+<h2> SAX2 Standard Handler and Property IDs </h2>
+
+<p> For parser interface characteristics that are described
+as objects, a separate namespace is defined. The
+objects in this namespace are again identified by URI, and
+the standard property URIs have the prefix
+<code>http://xml.org/sax/properties/</code> before an identifier such as
+<code>lexical-handler</code> or
+<code>dom-node</code>. Manage those properties using
+<em>setProperty()</em>. Those identifiers are: </p>
+
+<table border="1" cellpadding="3" cellspacing="0" width="100%">
+ <tr align="center" bgcolor="#ccccff">
+ <th>Property ID</th>
+ <th>Description</th>
+ </tr>
+
+ <tr>
+ <td>declaration-handler</td>
+ <td> Used to see most DTD declarations except those treated
+ as lexical ("document element name is ...") or which are
+ mandatory for all SAX parsers (<em>DTDHandler</em>).
+ The Object must implement <a href="ext/DeclHandler.html"
+ ><em>org.xml.sax.ext.DeclHandler</em></a>.
+ </td>
+ </tr>
+
+ <tr>
+ <td>dom-node</td>
+ <td> For "DOM Walker" style parsers, which ignore their
+ <em>parser.parse()</em> parameters, this is used to
+ specify the DOM (sub)tree being walked by the parser.
+ The Object must implement the
+ <em>org.w3c.dom.Node</em> interface.
+ </td>
+ </tr>
+
+ <tr>
+ <td>lexical-handler</td>
+ <td> Used to see some syntax events that are essential in some
+ applications: comments, CDATA delimeters, selected general
+ entity inclusions, and the start and end of the DTD
+ (and declaration of document element name).
+ The Object must implement <a href="ext/LexicalHandler.html"
+ ><em>org.xml.sax.ext.LexicalHandler</em></a>.
+ </td>
+ </tr>
+
+ <tr>
+ <td>xml-string</td>
+ <td> Readable only during a parser callback, this exposes a <b>TBS</b>
+ chunk of characters responsible for the current event. </td>
+ </tr>
+
+</table>
+
+<p> All of these standard properties are optional;
+XMLReader implementations need not support them.
+</p>
+
+</body></html>
diff --git a/libjava/resolve.cc b/libjava/resolve.cc
index e195c333cc8..00785eed8fc 100644
--- a/libjava/resolve.cc
+++ b/libjava/resolve.cc
@@ -238,7 +238,7 @@ _Jv_ResolvePoolEntry (jclass klass, int index)
// First search the class itself.
the_method = _Jv_SearchMethodInClass (owner, klass,
- method_name, method_signature);
+ method_name, method_signature);
if (the_method != 0)
{
@@ -246,9 +246,10 @@ _Jv_ResolvePoolEntry (jclass klass, int index)
goto end_of_method_search;
}
- // If we are resolving an interface method, search the interface's
- // superinterfaces (A superinterface is not an interface's superclass -
- // a superinterface is implemented by the interface).
+ // If we are resolving an interface method, search the
+ // interface's superinterfaces (A superinterface is not an
+ // interface's superclass - a superinterface is implemented by
+ // the interface).
if (pool->tags[index] == JV_CONSTANT_InterfaceMethodref)
{
_Jv_ifaces ifaces;
@@ -257,8 +258,8 @@ _Jv_ResolvePoolEntry (jclass klass, int index)
ifaces.list = (jclass *) _Jv_Malloc (ifaces.len * sizeof (jclass *));
_Jv_GetInterfaces (owner, &ifaces);
-
- for (int i=0; i < ifaces.count; i++)
+
+ for (int i = 0; i < ifaces.count; i++)
{
jclass cls = ifaces.list[i];
the_method = _Jv_SearchMethodInClass (cls, klass, method_name,
@@ -269,9 +270,9 @@ _Jv_ResolvePoolEntry (jclass klass, int index)
break;
}
}
-
+
_Jv_Free (ifaces.list);
-
+
if (the_method != 0)
goto end_of_method_search;
}
@@ -281,7 +282,7 @@ _Jv_ResolvePoolEntry (jclass klass, int index)
cls = cls->getSuperclass ())
{
the_method = _Jv_SearchMethodInClass (cls, klass,
- method_name, method_signature);
+ method_name, method_signature);
if (the_method != 0)
{
found_class = cls;
@@ -363,6 +364,58 @@ _Jv_SearchMethodInClass (jclass cls, jclass klass,
return 0;
}
+// A helper for _Jv_PrepareClass. This adds missing `Miranda methods'
+// to a class.
+void
+_Jv_PrepareMissingMethods (jclass base2, jclass iface_class)
+{
+ _Jv_InterpClass *base = reinterpret_cast<_Jv_InterpClass *> (base2);
+ for (int i = 0; i < iface_class->interface_count; ++i)
+ {
+ for (int j = 0; j < iface_class->interfaces[i]->method_count; ++j)
+ {
+ _Jv_Method *meth = &iface_class->interfaces[i]->methods[j];
+ // Don't bother with <clinit>.
+ if (meth->name->data[0] == '<')
+ continue;
+ _Jv_Method *new_meth = _Jv_LookupDeclaredMethod (base, meth->name,
+ meth->signature);
+ if (! new_meth)
+ {
+ // We assume that such methods are very unlikely, so we
+ // just reallocate the method array each time one is
+ // found. This greatly simplifies the searching --
+ // otherwise we have to make sure that each such method
+ // found is really unique among all superinterfaces.
+ int new_count = base->method_count + 1;
+ _Jv_Method *new_m
+ = (_Jv_Method *) _Jv_AllocBytes (sizeof (_Jv_Method)
+ * new_count);
+ memcpy (new_m, base->methods,
+ sizeof (_Jv_Method) * base->method_count);
+
+ // Add new method.
+ new_m[base->method_count] = *meth;
+ new_m[base->method_count].index = (_Jv_ushort) -1;
+ new_m[base->method_count].accflags
+ |= java::lang::reflect::Modifier::INVISIBLE;
+
+ _Jv_MethodBase **new_im
+ = (_Jv_MethodBase **) _Jv_AllocBytes (sizeof (_Jv_MethodBase *)
+ * new_count);
+ memcpy (new_im, base->interpreted_methods,
+ sizeof (_Jv_MethodBase *) * base->method_count);
+
+ base->methods = new_m;
+ base->interpreted_methods = new_im;
+ base->method_count = new_count;
+ }
+ }
+
+ _Jv_PrepareMissingMethods (base, iface_class->interfaces[i]);
+ }
+}
+
void
_Jv_PrepareClass(jclass klass)
{
@@ -516,13 +569,24 @@ _Jv_PrepareClass(jclass klass)
}
}
- if (clz->accflags & Modifier::INTERFACE)
+ if ((clz->accflags & Modifier::INTERFACE))
{
clz->state = JV_STATE_PREPARED;
clz->notifyAll ();
return;
}
+ // A class might have so-called "Miranda methods". This is a method
+ // that is declared in an interface and not re-declared in an
+ // abstract class. Some compilers don't emit declarations for such
+ // methods in the class; this will give us problems since we expect
+ // a declaration for any method requiring a vtable entry. We handle
+ // this here by searching for such methods and constructing new
+ // internal declarations for them. We only need to do this for
+ // abstract classes.
+ if ((clz->accflags & Modifier::ABSTRACT))
+ _Jv_PrepareMissingMethods (clz, clz);
+
clz->vtable_method_count = -1;
_Jv_MakeVTable (clz);
diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog
index 8791dd4ec85..d77e3145f63 100644
--- a/libjava/testsuite/ChangeLog
+++ b/libjava/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2002-12-19 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jacks/jacks.xfail: Updated.
+
+2002-12-18 Tom Tromey <tromey@redhat.com>
+
+ * libjava.lang/pr8945.java: New file.
+ * libjava.lang/pr8945.out: New file.
+
2002-12-12 Tom Tromey <tromey@redhat.com>
* libjava.loader/loader.exp (gcj_loader_test_one): Use
diff --git a/libjava/testsuite/libjava.jacks/jacks.xfail b/libjava/testsuite/libjava.jacks/jacks.xfail
index 8e2ebe77f0e..1bb25df7fbf 100644
--- a/libjava/testsuite/libjava.jacks/jacks.xfail
+++ b/libjava/testsuite/libjava.jacks/jacks.xfail
@@ -151,12 +151,8 @@
8.1.2-enclosing-4
8.1.2-enclosing-5
8.1.3-object-3
-8.1.3-superclass-10
-8.1.3-superclass-12
-8.1.3-superclass-13
-8.1.4-superinterface-8
-8.1.4-superinterface-10
-8.1.4-superinterface-11
+8.1.3-superclass-5
+8.1.3-superclass-6
8.2-accessibility-inherited-member-5
8.8.5.1-example-1
8.8.5.1-example-3
@@ -218,9 +214,14 @@
8.6-checked-exception-10
8.6-checked-exception-11
8.6-checked-exception-12
+8.6-complete-1
+8.6-complete-4
+8.6-complete-5
8.6-abrupt-1
8.6-abrupt-4
-8.5-inheritance-4
+8.5-inheritance-1
+8.5-inheritance-2
+8.5-inheritance-3
8.5-inheritance-6
8.5.2-non-static-member-usage-2
8.4.6-miranda-2
@@ -262,6 +263,8 @@
8.4.3-bad-1
8.4.3-bad-2
8.7-abrupt-1
+8.7-complete-1
+8.7-complete-3
5.1.3-dti-1
5.1.3-dti-2
5.1.3-fti-1
@@ -448,7 +451,7 @@
15.9.1-unqualified-concrete-6
15.9.1-unqualified-concrete-7
15.9.1-unqualified-concrete-10
-15.9.1-unqualified-concrete-15
+15.9.1-unqualified-concrete-14
15.9.1-qualified-concrete-6
15.9.1-qualified-concrete-7
15.9.1-qualified-concrete-10
@@ -456,7 +459,7 @@
15.9.1-qualified-concrete-14
15.9.1-qualified-concrete-16
15.9.1-qualified-concrete-20
-15.9.1-qualified-concrete-23
+15.9.1-qualified-concrete-24
15.28-primitive-9
15.28-primitive-15
15.28-primitive-16
@@ -601,9 +604,6 @@
9.1.1-in-interface-3
9.1.1-in-interface-9
9.1.1-in-interface-16
-9.1.2-interface-3
-9.1.2-interface-5
-9.1.2-interface-6
9.1.2-supertype-1
9.2-implicit-2
9.2-implicit-3
@@ -680,10 +680,6 @@
6.6.2.1-protected-instance-method-6
6.6.2.1-protected-instance-method-7
6.6.2.1-protected-type-2
-6.6.2.1-protected-type-4
-6.6.2.1-protected-type-5
-6.6.2.1-protected-type-7
-6.6.2.1-protected-type-8
6.6.1-8
6.6.1-11
6.6.1-array-2
@@ -711,14 +707,14 @@
6.5.6.1-local-4
6.5.6.1-field-6
6.5.6.1-explicit-constructor-2
-6.5.4.2-qualified-1
6.5.4.1-simple-6
-6.5.4.1-simple-8
+6.5.4.1-simple-10
+6.5.4.1-simple-11
6.5.1-type-15
6.5.1-type-16
6.5.1-type-19
-6.5.1-typeorpackage-1
6.5.1-typeorpackage-2
+6.5.5.2-type-4
6.5.5.2-type-5
6.5.5.2-type-6
6.5.5.2-type-7
@@ -733,9 +729,10 @@
6.5.5.1-nested-19
6.5.5.1-nested-20
6.5.5.1-nested-21
-6.5.5.1-nested-22
6.5.5.1-nested-23
6.3-1
+7.4.2-subpackage-1
+7.4.2-subpackage-2
7.5.1-canonical-3
7.5.1-accessible-1
7.5.1-duplicate-4
@@ -743,8 +740,6 @@
7.5.2-accessible-1
7.5.2-accessible-3
7.5.2-duplicate-3
-7.1-named-5
-7.1-named-6
7.1-named-7
7.6-unnamed-scope-1
4.5.4-static-1
@@ -805,7 +800,6 @@ non-jls-zip-2
14-runtime-jump-1
14-runtime-jump-2
14.3.1-runtime-3
-14.19.2-runtime-try-1
8.1.2-runtime-1
6.6.1-runtime-privateconstructor-1
8.8.3-runtime-inner-4
@@ -831,11 +825,11 @@ non-jls-zip-2
15.11.1-runtime-static-1
15.11.1-runtime-static-2
15.11.1-runtime-static-3
+15.11.1-runtime-static-4
15.12.3-runtime-mode-1
15.12.3-runtime-mode-2
15.12.3-runtime-mode-3
15.12.3-runtime-mode-4
-15.12.3-runtime-mode-5
15.12.3-runtime-mode-6
15.12.4.1-runtime-static-1
15.12.4.1-runtime-static-2
diff --git a/libjava/testsuite/libjava.lang/pr8945.java b/libjava/testsuite/libjava.lang/pr8945.java
new file mode 100644
index 00000000000..9c5dce89a4a
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8945.java
@@ -0,0 +1,9 @@
+public class pr8945
+{
+ public static void main(String[] args)
+ {
+ String foo = "hello";
+ int pos = 3;
+ System.out.println(foo.substring(pos,++pos));
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/pr8945.out b/libjava/testsuite/libjava.lang/pr8945.out
new file mode 100644
index 00000000000..1f9d725a9de
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/pr8945.out
@@ -0,0 +1 @@
+l
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ee8cdb3cd16..ad17da7d4c1 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,52 @@
+2002-12-29 Phil Edwards <pme@gcc.gnu.org>
+
+ * include/std/std_bitset.h: Better comments.
+
+2002-12-29 Phil Edwards <pme@gcc.gnu.org>
+
+ * include/std/std_bitset.h (_Base_bitset::_M_do_left_shift,
+ _Base_bitset::_M_do_right_shift): Expect a non-zero shift.
+ (bitset::operator<<=, bitset::operator>>=): When shifting more bits
+ than are in the bitset, zero memory rather than segfault.
+ (operator>>(basic_istream,bitset): Only call setstate once, after
+ all work has been done.
+
+ * testsuite/23_containers/bitset_members.cc (test03): New test.
+ * testsuite/23_containers/bitset_shift.cc (test02): New test.
+
+2002-12-28 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * docs/html/17_intro/porting.texi: Use @copying.
+ * docs/html/17_intro/porting.html: Regenerate.
+
+2002-12-23 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * config/io/basic_file_stdio.cc (__basic_file::_M_open_mode):
+ Don't use O_NONBLOCK if it is not defined.
+ (__basic_file::open): Don't use fcntl either.
+
+2002-12-19 Paolo Carlini <pcarlini@unitus.it>
+
+ PR libstdc++/8949
+ * include/std/std_limits.h
+ (struct numeric_limits<short>,
+ struct numeric_limits<unsigned short>,
+ struct numeric_limits<int>,
+ struct numeric_limits<unsigned int>,
+ struct numeric_limits<long>,
+ struct numeric_limits<unsigned long>,
+ struct numeric_limits<long long>,
+ struct numeric_limits<unsigned long long>): According
+ to 18.2.1.2,53 and 18.2.1.5,1 is_iec559 shall be false.
+ * testsuite/18_support/numeric_limits.cc: Add test04.
+
+2002-12-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * testsuite/23_containers/vector_capacity.cc (test03): Move ...
+ * testsuite/23_containers/vector_resize.cc: ...here as a new file.
+ Pass in -lmalloc for irix6.
+ * testsuite/27_io/ios_base_storage.cc: Pass in -lmalloc for irix6.
+
2002-12-11 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/8887
diff --git a/libstdc++-v3/config/io/basic_file_stdio.cc b/libstdc++-v3/config/io/basic_file_stdio.cc
index ff23d983ae8..e378b6668a7 100644
--- a/libstdc++-v3/config/io/basic_file_stdio.cc
+++ b/libstdc++-v3/config/io/basic_file_stdio.cc
@@ -74,7 +74,11 @@ namespace std
if (__testi && !__testo && !__testt && !__testa)
{
strcpy(__c_mode, "r");
+#if defined (O_NONBLOCK)
__p_mode |= O_RDONLY | O_NONBLOCK;
+#else
+ __p_mode |= O_RDONLY;
+#endif
}
if (__testi && __testo && !__testt && !__testa)
{
@@ -151,9 +155,11 @@ namespace std
{
_M_cfile_created = true;
+#if defined (F_SETFL) && defined (O_NONBLOCK)
// Set input to nonblocking for fifos.
if (__mode & ios_base::in)
fcntl(this->fd(), F_SETFL, O_NONBLOCK);
+#endif
__ret = this;
}
diff --git a/libstdc++-v3/docs/html/17_intro/porting.html b/libstdc++-v3/docs/html/17_intro/porting.html
index c28f89f407f..7712c4434b4 100644
--- a/libstdc++-v3/docs/html/17_intro/porting.html
+++ b/libstdc++-v3/docs/html/17_intro/porting.html
@@ -2,60 +2,84 @@
<head>
<title>Porting libstdc++-v3</title>
<meta http-equiv="Content-Type" content="text/html">
-<meta name=description content="Porting libstdc++-v3">
-<meta name=generator content="makeinfo 4.2">
-<link href="http://www.gnu.org/software/texinfo/" rel=generator-home>
+<meta name="description" content="Porting libstdc++-v3">
+<meta name="generator" content="makeinfo 4.3">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home">
+<!--
+Copyright &copy; 2000, 2001, 2002 Free Software Foundation, Inc.
+
+ <p>Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being "GNU General Public License", the Front-Cover
+texts being (a) (see below), and with the Back-Cover Texts being (b)
+(see below). A copy of the license is included in the section entitled
+"GNU Free Documentation License".
+
+ <p>(a) The FSF's Front-Cover Text is:
+
+ <p>A GNU Manual
+
+ <p>(b) The FSF's Back-Cover Text is:
+
+ <p>You have freedom to copy and modify this GNU Manual, like GNU
+ software. Copies published by the Free Software Foundation raise
+ funds for GNU development.-->
</head>
<body>
-<h1>Porting libstdc++-v3</h1>
+<h1 class="settitle">Porting libstdc++-v3</h1>
+<div class="node">
<p><hr>
Node:<a name="Top">Top</a>,
-Next:<a rel=next accesskey=n href="#Operating%20system">Operating system</a>,
-Up:<a rel=up accesskey=u href="#dir">(dir)</a>
+Next:<a rel="next" accesskey="n" href="#Operating%20system">Operating system</a>,
+Up:<a rel="up" accesskey="u" href="#dir">(dir)</a>
<br>
+</div>
-<h2>Porting libstdc++-v3</h2>
+<h2 class="unnumbered">Porting libstdc++-v3</h2>
-<p>This document explains how to port libstdc++-v3 (the GNU C++ library) to
+ <p>This document explains how to port libstdc++-v3 (the GNU C++ library) to
a new target.
-<p>In order to make the GNU C++ library (libstdc++-v3) work with a new
+ <p>In order to make the GNU C++ library (libstdc++-v3) work with a new
target, you must edit some configuration files and provide some new
header files. Unless this is done, libstdc++-v3 will use generic
settings which may not be correct for your target; even if they are
correct, they will likely be inefficient.
-<p>Before you get started, make sure that you have a working C library on
+ <p>Before you get started, make sure that you have a working C library on
your target. The C library need not precisely comply with any
particular standard, but should generally conform to the requirements
imposed by the ANSI/ISO standard.
-<p>In addition, you should try to verify that the C++ compiler generally
+ <p>In addition, you should try to verify that the C++ compiler generally
works. It is difficult to test the C++ compiler without a working
library, but you should at least try some minimal test cases.
-<p>Here are the primary steps required to port the library:
+ <p>Here are the primary steps required to port the library:
-<ul>
-<li><a accesskey=1 href="#Operating%20system">Operating system</a>: Configuring for your operating system.
-<li><a accesskey=2 href="#CPU">CPU</a>: Configuring for your processor chip.
-<li><a accesskey=3 href="#Character%20types">Character types</a>: Implementing character classification.
-<li><a accesskey=4 href="#Thread%20safety">Thread safety</a>: Implementing atomic operations.
-<li><a accesskey=5 href="#Numeric%20limits">Numeric limits</a>: Implementing numeric limits.
-<li><a accesskey=6 href="#Libtool">Libtool</a>: Using libtool.
-<li><a accesskey=7 href="#GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>: How you can copy and share this manual.
+<ul class="menu">
+<li><a accesskey="1" href="#Operating%20system">Operating system</a>: Configuring for your operating system.
+<li><a accesskey="2" href="#CPU">CPU</a>: Configuring for your processor chip.
+<li><a accesskey="3" href="#Character%20types">Character types</a>: Implementing character classification.
+<li><a accesskey="4" href="#Thread%20safety">Thread safety</a>: Implementing atomic operations.
+<li><a accesskey="5" href="#Numeric%20limits">Numeric limits</a>: Implementing numeric limits.
+<li><a accesskey="6" href="#Libtool">Libtool</a>: Using libtool.
+<li><a accesskey="7" href="#GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>: How you can copy and share this manual.
</ul>
+<div class="node">
<p><hr>
Node:<a name="Operating%20system">Operating system</a>,
-Next:<a rel=next accesskey=n href="#CPU">CPU</a>,
-Previous:<a rel=previous accesskey=p href="#Top">Top</a>,
-Up:<a rel=up accesskey=u href="#Top">Top</a>
+Next:<a rel="next" accesskey="n" href="#CPU">CPU</a>,
+Previous:<a rel="previous" accesskey="p" href="#Top">Top</a>,
+Up:<a rel="up" accesskey="u" href="#Top">Top</a>
<br>
+</div>
-<h2>Operating system</h2>
+<h2 class="chapter">Operating system</h2>
-<p>If you are porting to a new operating system (as opposed to a new chip
+ <p>If you are porting to a new operating system (as opposed to a new chip
using an existing operating system), you will need to create a new
directory in the <code>config/os</code> hierarchy. For example, the IRIX
configuration files are all in <code>config/os/irix</code>. There is no set
@@ -68,7 +92,7 @@ directory. The important information is that there needs to be a
directory under <code>config/os</code> to store the files for your operating
system.
-<p>You might have to change the <code>configure.target</code> file to ensure that
+ <p>You might have to change the <code>configure.target</code> file to ensure that
your new directory is activated. Look for the switch statement that sets
<code>os_include_dir</code>, and add a pattern to handle your operating system
if the default will not suffice. The switch statement switches on only
@@ -76,17 +100,17 @@ the OS portion of the standard target triplet; e.g., the <code>solaris2.8</code>
in <code>sparc-sun-solaris2.8</code>. If the new directory is named after the
OS portion of the triplet (the default), then nothing needs to be changed.
-<p>The first file to create in this directory, should be called
+ <p>The first file to create in this directory, should be called
<code>os_defines.h</code>. This file contains basic macro definitions
that are required to allow the C++ library to work with your C library.
This file should provide macro definitions for <code>__off_t</code>,
<code>__off64_t</code>, and <code>__ssize_t</code>. Typically, this just looks
like:
-<br><pre>#define __off_t off_t
-#define __off64_t off64_t
-#define __ssize_t ssize_t
-</pre>
+<pre class="example"> #define __off_t off_t
+ #define __off64_t off64_t
+ #define __ssize_t ssize_t
+ </pre>
<p>You don't have to provide these definitions if your system library
already defines these types - but the only library known to provide
@@ -95,7 +119,7 @@ provide these macros. Note that this file does not have to include a
header file that defines <code>off_t</code>, or the other types; you simply
have to provide the macros.
-<p>In addition, several libstdc++-v3 source files unconditionally define
+ <p>In addition, several libstdc++-v3 source files unconditionally define
the macro <code>_POSIX_SOURCE</code>. On many systems, defining this macro
causes large portions of the C library header files to be eliminated
at preprocessing time. Therefore, you may have to <code>#undef</code> this
@@ -110,71 +134,75 @@ need to define. You will need to add them to the
target. It will not work to simply define these macros in
<code>os_defines.h</code>.
-<p>At this time, there is one libstdc++-v3-specific macro which may be
+ <p>At this time, there is one libstdc++-v3-specific macro which may be
defined. <code>_G_USING_THUNKS</code> may be defined to 0 to express that the
port doesn't use thunks (although it is unclear that this is still
useful since libio support isn't currently working and the g++ v3 ABI
invalidates the assumption that some ports don't use thunks).
-<p>Finally, you should bracket the entire file in an include-guard, like
+ <p>Finally, you should bracket the entire file in an include-guard, like
this:
-<br><pre>#ifndef _GLIBCPP_OS_DEFINES
-#define _GLIBCPP_OS_DEFINES
-...
-#endif
-</pre>
+<pre class="example"> #ifndef _GLIBCPP_OS_DEFINES
+ #define _GLIBCPP_OS_DEFINES
+ ...
+ #endif
+ </pre>
-<p>We recommend copying an existing <code>os_defines.h</code> to use as a
+ <p>We recommend copying an existing <code>os_defines.h</code> to use as a
starting point.
+<div class="node">
<p><hr>
Node:<a name="CPU">CPU</a>,
-Next:<a rel=next accesskey=n href="#Character%20types">Character types</a>,
-Previous:<a rel=previous accesskey=p href="#Operating%20system">Operating system</a>,
-Up:<a rel=up accesskey=u href="#Top">Top</a>
+Next:<a rel="next" accesskey="n" href="#Character%20types">Character types</a>,
+Previous:<a rel="previous" accesskey="p" href="#Operating%20system">Operating system</a>,
+Up:<a rel="up" accesskey="u" href="#Top">Top</a>
<br>
+</div>
-<h2>CPU</h2>
+<h2 class="chapter">CPU</h2>
-<p>If you are porting to a new chip (as opposed to a new operating system
+ <p>If you are porting to a new chip (as opposed to a new operating system
running on an existing chip), you will need to create a new directory in the
<code>config/cpu</code> hierarchy. Much like the <a href="#Operating%20system">Operating system</a> setup,
there are no strict rules on how to organize the CPU configuration
directory, but careful naming choices will allow the configury to find your
setup files without explicit help.
-<p>We recommend that for a target triplet <code>&lt;CPU&gt;-&lt;vendor&gt;-&lt;OS&gt;</code>, you
+ <p>We recommend that for a target triplet <code>&lt;CPU&gt;-&lt;vendor&gt;-&lt;OS&gt;</code>, you
name your configuration directory <code>config/cpu/&lt;CPU&gt;</code>. If you do this,
the configury will find the directory itself. Otherwise you will need to
edit the <code>configure.target</code> file and, in the switch statement that sets
<code>cpu_include_dir</code>, add a pattern to handle your chip.
-<p>Note that some chip families share a single configuration directory, for
+ <p>Note that some chip families share a single configuration directory, for
example, <code>alpha</code>, <code>alphaev5</code>, and <code>alphaev6</code> all use the
<code>config/cpu/alpha</code> directory, and there is an entry in the
<code>configure.target</code> switch statement to handle this.
-<p>The <code>cpu_include_dir</code> sets default locations for the files controlling
+ <p>The <code>cpu_include_dir</code> sets default locations for the files controlling
<a href="#Thread%20safety">Thread safety</a> and <a href="#Numeric%20limits">Numeric limits</a>, if the defaults are not
appropriate for your chip.
+<div class="node">
<p><hr>
Node:<a name="Character%20types">Character types</a>,
-Next:<a rel=next accesskey=n href="#Thread%20safety">Thread safety</a>,
-Previous:<a rel=previous accesskey=p href="#CPU">CPU</a>,
-Up:<a rel=up accesskey=u href="#Top">Top</a>
+Next:<a rel="next" accesskey="n" href="#Thread%20safety">Thread safety</a>,
+Previous:<a rel="previous" accesskey="p" href="#CPU">CPU</a>,
+Up:<a rel="up" accesskey="u" href="#Top">Top</a>
<br>
+</div>
-<h2>Character types</h2>
+<h2 class="chapter">Character types</h2>
-<p>The library requires that you provide three header files to implement
+ <p>The library requires that you provide three header files to implement
character classification, analogous to that provided by the C libraries
<code>&lt;ctype.h&gt;</code> header. You can model these on the files provided in
<code>config/os/generic</code>. However, these files will almost
certainly need some modification.
-<p>The first file to write is <code>ctype_base.h</code>. This file provides
+ <p>The first file to write is <code>ctype_base.h</code>. This file provides
some very basic information about character classification. The libstdc++-v3
library assumes that your C library implements <code>&lt;ctype.h&gt;</code> by using
a table (indexed by character code) containing integers, where each of
@@ -184,33 +212,33 @@ file gives the type of the integer, and the values of the various bit
masks. You will have to peer at your own <code>&lt;ctype.h&gt;</code> to figure out
how to define the values required by this file.
-<p>The <code>ctype_base.h</code> header file does not need include guards.
+ <p>The <code>ctype_base.h</code> header file does not need include guards.
It should contain a single <code>struct</code> definition called
<code>ctype_base</code>. This <code>struct</code> should contain two type
declarations, and one enumeration declaration, like this example, taken
from the IRIX configuration:
-<br><pre>struct ctype_base
-{
- typedef unsigned int mask;
- typedef int* __to_type;
-
- enum
- {
- space = _ISspace,
- print = _ISprint,
- cntrl = _IScntrl,
- upper = _ISupper,
- lower = _ISlower,
- alpha = _ISalpha,
- digit = _ISdigit,
- punct = _ISpunct,
- xdigit = _ISxdigit,
- alnum = _ISalnum,
- graph = _ISgraph
- };
-};
-</pre>
+<pre class="example"> struct ctype_base
+ {
+ typedef unsigned int mask;
+ typedef int* __to_type;
+
+ enum
+ {
+ space = _ISspace,
+ print = _ISprint,
+ cntrl = _IScntrl,
+ upper = _ISupper,
+ lower = _ISlower,
+ alpha = _ISalpha,
+ digit = _ISdigit,
+ punct = _ISpunct,
+ xdigit = _ISxdigit,
+ alnum = _ISalnum,
+ graph = _ISgraph
+ };
+ };
+ </pre>
<p>The <code>mask</code> type is the type of the elements in the table. If your
C library uses a table to map lower-case numbers to upper-case numbers,
@@ -220,29 +248,29 @@ penalty, or if your library doesn't implement <code>toupper</code> and
<code>tolower</code> in this way, you can pick any pointer-to-integer type,
but you must still define the type.
-<p>The enumeration should give definitions for all the values in the above
+ <p>The enumeration should give definitions for all the values in the above
example, using the values from your native <code>&lt;ctype.h&gt;</code>. They can
be given symbolically (as above), or numerically, if you prefer. You do
not have to include <code>&lt;ctype.h&gt;</code> in this header; it will always be
included before <code>ctype_base.h</code> is included.
-<p>The next file to write is <code>ctype_noninline.h</code>, which also does
+ <p>The next file to write is <code>ctype_noninline.h</code>, which also does
not require include guards. This file defines a few member functions
that will be included in <code>include/bits/locale_facets.h</code>. The first
function that must be written is the <code>ctype&lt;char&gt;::ctype</code>
constructor. Here is the IRIX example:
-<br><pre>ctype&lt;char&gt;::ctype(const mask* __table = 0, bool __del = false,
- size_t __refs = 0)
- : _Ctype_nois&lt;char&gt;(__refs), _M_del(__table != 0 &amp;&amp; __del),
- _M_toupper(NULL),
- _M_tolower(NULL),
- _M_ctable(NULL),
- _M_table(!__table
- ? (const mask*) (__libc_attr._ctype_tbl-&gt;_class + 1)
- : __table)
- { }
-</pre>
+<pre class="example"> ctype&lt;char&gt;::ctype(const mask* __table = 0, bool __del = false,
+ size_t __refs = 0)
+ : _Ctype_nois&lt;char&gt;(__refs), _M_del(__table != 0 &amp;&amp; __del),
+ _M_toupper(NULL),
+ _M_tolower(NULL),
+ _M_ctable(NULL),
+ _M_table(!__table
+ ? (const mask*) (__libc_attr._ctype_tbl-&gt;_class + 1)
+ : __table)
+ { }
+ </pre>
<p>There are two parts of this that you might choose to alter. The first,
and most important, is the line involving <code>__libc_attr</code>. That is
@@ -253,140 +281,142 @@ operating system's tables to map upper-case letters to lower-case, and
vice versa, you should initialize <code>_M_toupper</code> and
<code>_M_tolower</code> with those tables, in similar fashion.
-<p>Now, you have to write two functions to convert from upper-case to
+ <p>Now, you have to write two functions to convert from upper-case to
lower-case, and vice versa. Here are the IRIX versions:
-<br><pre>char
-ctype&lt;char&gt;::do_toupper(char __c) const
-{ return _toupper(__c); }
-
-char
-ctype&lt;char&gt;::do_tolower(char __c) const
-{ return _tolower(__c); }
-</pre>
+<pre class="example"> char
+ ctype&lt;char&gt;::do_toupper(char __c) const
+ { return _toupper(__c); }
+
+ char
+ ctype&lt;char&gt;::do_tolower(char __c) const
+ { return _tolower(__c); }
+ </pre>
<p>Your C library provides equivalents to IRIX's <code>_toupper</code> and
<code>_tolower</code>. If you initialized <code>_M_toupper</code> and
<code>_M_tolower</code> above, then you could use those tables instead.
-<p>Finally, you have to provide two utility functions that convert strings
+ <p>Finally, you have to provide two utility functions that convert strings
of characters. The versions provided here will always work - but you
could use specialized routines for greater performance if you have
machinery to do that on your system:
-<br><pre>const char*
-ctype&lt;char&gt;::do_toupper(char* __low, const char* __high) const
-{
- while (__low &lt; __high)
- {
- *__low = do_toupper(*__low);
- ++__low;
- }
- return __high;
-}
-
-const char*
-ctype&lt;char&gt;::do_tolower(char* __low, const char* __high) const
-{
- while (__low &lt; __high)
- {
- *__low = do_tolower(*__low);
- ++__low;
- }
- return __high;
-}
-</pre>
-
-<p>You must also provide the <code>ctype_inline.h</code> file, which
+<pre class="example"> const char*
+ ctype&lt;char&gt;::do_toupper(char* __low, const char* __high) const
+ {
+ while (__low &lt; __high)
+ {
+ *__low = do_toupper(*__low);
+ ++__low;
+ }
+ return __high;
+ }
+
+ const char*
+ ctype&lt;char&gt;::do_tolower(char* __low, const char* __high) const
+ {
+ while (__low &lt; __high)
+ {
+ *__low = do_tolower(*__low);
+ ++__low;
+ }
+ return __high;
+ }
+ </pre>
+
+ <p>You must also provide the <code>ctype_inline.h</code> file, which
contains a few more functions. On most systems, you can just copy
<code>config/os/generic/ctype_inline.h</code> and use it on your system.
-<p>In detail, the functions provided test characters for particular
+ <p>In detail, the functions provided test characters for particular
properties; they are analogous to the functions like <code>isalpha</code> and
<code>islower</code> provided by the C library.
-<p>The first function is implemented like this on IRIX:
+ <p>The first function is implemented like this on IRIX:
-<br><pre>bool
-ctype&lt;char&gt;::
-is(mask __m, char __c) const throw()
-{ return (_M_table)[(unsigned char)(__c)] &amp; __m; }
-</pre>
+<pre class="example"> bool
+ ctype&lt;char&gt;::
+ is(mask __m, char __c) const throw()
+ { return (_M_table)[(unsigned char)(__c)] &amp; __m; }
+ </pre>
<p>The <code>_M_table</code> is the table passed in above, in the constructor.
This is the table that contains the bitmasks for each character. The
implementation here should work on all systems.
-<p>The next function is:
+ <p>The next function is:
-<br><pre>const char*
-ctype&lt;char&gt;::
-is(const char* __low, const char* __high, mask* __vec) const throw()
-{
- while (__low &lt; __high)
- *__vec++ = (_M_table)[(unsigned char)(*__low++)];
- return __high;
-}
-</pre>
+<pre class="example"> const char*
+ ctype&lt;char&gt;::
+ is(const char* __low, const char* __high, mask* __vec) const throw()
+ {
+ while (__low &lt; __high)
+ *__vec++ = (_M_table)[(unsigned char)(*__low++)];
+ return __high;
+ }
+ </pre>
<p>This function is similar; it copies the masks for all the characters
from <code>__low</code> up until <code>__high</code> into the vector given by
<code>__vec</code>.
-<p>The last two functions again are entirely generic:
-
-<br><pre>const char*
-ctype&lt;char&gt;::
-scan_is(mask __m, const char* __low, const char* __high) const throw()
-{
- while (__low &lt; __high &amp;&amp; !this-&gt;is(__m, *__low))
- ++__low;
- return __low;
-}
-
-const char*
-ctype&lt;char&gt;::
-scan_not(mask __m, const char* __low, const char* __high) const throw()
-{
- while (__low &lt; __high &amp;&amp; this-&gt;is(__m, *__low))
- ++__low;
- return __low;
-}
-</pre>
-
+ <p>The last two functions again are entirely generic:
+
+<pre class="example"> const char*
+ ctype&lt;char&gt;::
+ scan_is(mask __m, const char* __low, const char* __high) const throw()
+ {
+ while (__low &lt; __high &amp;&amp; !this-&gt;is(__m, *__low))
+ ++__low;
+ return __low;
+ }
+
+ const char*
+ ctype&lt;char&gt;::
+ scan_not(mask __m, const char* __low, const char* __high) const throw()
+ {
+ while (__low &lt; __high &amp;&amp; this-&gt;is(__m, *__low))
+ ++__low;
+ return __low;
+ }
+ </pre>
+
+<div class="node">
<p><hr>
Node:<a name="Thread%20safety">Thread safety</a>,
-Next:<a rel=next accesskey=n href="#Numeric%20limits">Numeric limits</a>,
-Previous:<a rel=previous accesskey=p href="#Character%20types">Character types</a>,
-Up:<a rel=up accesskey=u href="#Top">Top</a>
+Next:<a rel="next" accesskey="n" href="#Numeric%20limits">Numeric limits</a>,
+Previous:<a rel="previous" accesskey="p" href="#Character%20types">Character types</a>,
+Up:<a rel="up" accesskey="u" href="#Top">Top</a>
<br>
+</div>
-<h2>Thread safety</h2>
+<h2 class="chapter">Thread safety</h2>
-<p>The C++ library string functionality requires a couple of atomic
+ <p>The C++ library string functionality requires a couple of atomic
operations to provide thread-safety. If you don't take any special
action, the library will use stub versions of these functions that are
not thread-safe. They will work fine, unless your applications are
multi-threaded.
-<p>If you want to provide custom, safe, versions of these functions, there
+ <p>If you want to provide custom, safe, versions of these functions, there
are two distinct approaches. One is to provide a version for your CPU,
using assembly language constructs. The other is to use the
thread-safety primitives in your operating system. In either case, you
make a file called <code>atomicity.h</code>, and the variable
<code>ATOMICITYH</code> must point to this file.
-<p>If you are using the assembly-language approach, put this code in
+ <p>If you are using the assembly-language approach, put this code in
<code>config/cpu/&lt;chip&gt;/atomicity.h</code>, where chip is the name of
your processor (see <a href="#CPU">CPU</a>). No additional changes are necessary to
locate the file in this case; <code>ATOMICITYH</code> will be set by default.
-<p>If you are using the operating system thread-safety primitives approach,
+ <p>If you are using the operating system thread-safety primitives approach,
you can also put this code in the same CPU directory, in which case no more
work is needed to locate the file. For examples of this approach,
see the <code>atomicity.h</code> file for IRIX or IA64.
-<p>Alternatively, if the primitives are more closely related to the OS
+ <p>Alternatively, if the primitives are more closely related to the OS
than they are to the CPU, you can put the <code>atomicity.h</code> file in
the <a href="#Operating%20system">Operating system</a> directory instead. In this case, you must
edit <code>configure.target</code>, and in the switch statement that handles
@@ -394,120 +424,126 @@ operating systems, override the <code>ATOMICITYH</code> variable to point to
the appropriate <code>os_include_dir</code>. For examples of this approach,
see the <code>atomicity.h</code> file for AIX.
-<p>With those bits out of the way, you have to actually write
+ <p>With those bits out of the way, you have to actually write
<code>atomicity.h</code> itself. This file should be wrapped in an
include guard named <code>_BITS_ATOMICITY_H</code>. It should define one
type, and two functions.
-<p>The type is <code>_Atomic_word</code>. Here is the version used on IRIX:
+ <p>The type is <code>_Atomic_word</code>. Here is the version used on IRIX:
-<br><pre>typedef long _Atomic_word;
-</pre>
+<pre class="example"> typedef long _Atomic_word;
+ </pre>
<p>This type must be a signed integral type supporting atomic operations.
If you're using the OS approach, use the same type used by your system's
primitives. Otherwise, use the type for which your CPU provides atomic
primitives.
-<p>Then, you must provide two functions. The bodies of these functions
+ <p>Then, you must provide two functions. The bodies of these functions
must be equivalent to those provided here, but using atomic operations:
-<br><pre>static inline _Atomic_word
-__attribute__ ((__unused__))
-__exchange_and_add (_Atomic_word* __mem, int __val)
-{
- _Atomic_word __result = *__mem;
- *__mem += __val;
- return __result;
-}
-
-static inline void
-__attribute__ ((__unused__))
-__atomic_add (_Atomic_word* __mem, int __val)
-{
- *__mem += __val;
-}
-</pre>
-
+<pre class="example"> static inline _Atomic_word
+ __attribute__ ((__unused__))
+ __exchange_and_add (_Atomic_word* __mem, int __val)
+ {
+ _Atomic_word __result = *__mem;
+ *__mem += __val;
+ return __result;
+ }
+
+ static inline void
+ __attribute__ ((__unused__))
+ __atomic_add (_Atomic_word* __mem, int __val)
+ {
+ *__mem += __val;
+ }
+ </pre>
+
+<div class="node">
<p><hr>
Node:<a name="Numeric%20limits">Numeric limits</a>,
-Next:<a rel=next accesskey=n href="#Libtool">Libtool</a>,
-Previous:<a rel=previous accesskey=p href="#Thread%20safety">Thread safety</a>,
-Up:<a rel=up accesskey=u href="#Top">Top</a>
+Next:<a rel="next" accesskey="n" href="#Libtool">Libtool</a>,
+Previous:<a rel="previous" accesskey="p" href="#Thread%20safety">Thread safety</a>,
+Up:<a rel="up" accesskey="u" href="#Top">Top</a>
<br>
+</div>
-<h2>Numeric limits</h2>
+<h2 class="chapter">Numeric limits</h2>
-<p>The C++ library requires information about the fundamental data types,
+ <p>The C++ library requires information about the fundamental data types,
such as the minimum and maximum representable values of each type.
You can define each of these values individually, but it is usually
easiest just to indicate how many bits are used in each of the data
types and let the library do the rest. For information about the
macros to define, see the top of <code>include/bits/std_limits.h</code>.
-<p>If you need to define any macros, you can do so in <code>os_defines.h</code>.
+ <p>If you need to define any macros, you can do so in <code>os_defines.h</code>.
However, if all operating systems for your CPU are likely to use the
same values, you can provide a CPU-specific file instead so that you
do not have to provide the same definitions for each operating system.
To take that approach, create a new file called <code>cpu_limits.h</code> in
your CPU configuration directory (see <a href="#CPU">CPU</a>).
+<div class="node">
<p><hr>
Node:<a name="Libtool">Libtool</a>,
-Next:<a rel=next accesskey=n href="#GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>,
-Previous:<a rel=previous accesskey=p href="#Numeric%20limits">Numeric limits</a>,
-Up:<a rel=up accesskey=u href="#Top">Top</a>
+Next:<a rel="next" accesskey="n" href="#GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>,
+Previous:<a rel="previous" accesskey="p" href="#Numeric%20limits">Numeric limits</a>,
+Up:<a rel="up" accesskey="u" href="#Top">Top</a>
<br>
+</div>
-<h2>Libtool</h2>
+<h2 class="chapter">Libtool</h2>
-<p>The C++ library is compiled, archived and linked with libtool.
+ <p>The C++ library is compiled, archived and linked with libtool.
Explaining the full workings of libtool is beyond the scope of this
document, but there are a few, particular bits that are necessary for
porting.
-<p>Some parts of the libstdc++-v3 library are compiled with the libtool
+ <p>Some parts of the libstdc++-v3 library are compiled with the libtool
<code>--tags CXX</code> option (the C++ definitions for libtool). Therefore,
<code>ltcf-cxx.sh</code> in the top-level directory needs to have the correct
logic to compile and archive objects equivalent to the C version of libtool,
<code>ltcf-c.sh</code>. Some libtool targets have definitions for C but not
for C++, or C++ definitions which have not been kept up to date.
-<p>The C++ run-time library contains initialization code that needs to be
+ <p>The C++ run-time library contains initialization code that needs to be
run as the library is loaded. Often, that requires linking in special
object files when the C++ library is built as a shared library, or
taking other system-specific actions.
-<p>The libstdc++-v3 library is linked with the C version of libtool, even
+ <p>The libstdc++-v3 library is linked with the C version of libtool, even
though it is a C++ library. Therefore, the C version of libtool needs to
ensure that the run-time library initializers are run. The usual way to
do this is to build the library using <code>gcc -shared</code>.
-<p>If you need to change how the library is linked, look at
+ <p>If you need to change how the library is linked, look at
<code>ltcf-c.sh</code> in the top-level directory. Find the switch statement
that sets <code>archive_cmds</code>. Here, adjust the setting for your
operating system.
+<div class="node">
<p><hr>
Node:<a name="GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>,
-Previous:<a rel=previous accesskey=p href="#Libtool">Libtool</a>,
-Up:<a rel=up accesskey=u href="#Top">Top</a>
+Previous:<a rel="previous" accesskey="p" href="#Libtool">Libtool</a>,
+Up:<a rel="up" accesskey="u" href="#Top">Top</a>
<br>
+</div>
-<h2>GNU Free Documentation License</h2>
+<h2 class="unnumbered">GNU Free Documentation License</h2>
<div align="center">Version 1.1, March 2000</div>
-<br><pre>Copyright &copy; 2000 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+<pre class="display"> Copyright &copy; 2000 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.
+ </pre>
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-</pre>
+ <ol type=1 start=0>
+<li>PREAMBLE
-<ol type=1 start=0>
-</p><li>PREAMBLE
-
-<p>The purpose of this License is to make a manual, textbook, or other
+ <p>The purpose of this License is to make a manual, textbook, or other
written document <dfn>free</dfn> in the sense of freedom: to assure everyone
the effective freedom to copy and redistribute it, with or without
modifying it, either commercially or noncommercially. Secondarily,
@@ -515,12 +551,12 @@ this License preserves for the author and publisher a way to get
credit for their work, while not being considered responsible for
modifications made by others.
-<p>This License is a kind of "copyleft", which means that derivative
+ <p>This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
-<p>We have designed this License in order to use it for manuals for free
+ <p>We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
@@ -528,19 +564,19 @@ it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
-</p><li>APPLICABILITY AND DEFINITIONS
+ </p><li>APPLICABILITY AND DEFINITIONS
-<p>This License applies to any manual or other work that contains a
+ <p>This License applies to any manual or other work that contains a
notice placed by the copyright holder saying it can be distributed
under the terms of this License. The "Document", below, refers to any
such manual or work. Any member of the public is a licensee, and is
addressed as "you".
-<p>A "Modified Version" of the Document means any work containing the
+ <p>A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
-<p>A "Secondary Section" is a named appendix or a front-matter section of
+ <p>A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
@@ -551,15 +587,15 @@ connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
-<p>The "Invariant Sections" are certain Secondary Sections whose titles
+ <p>The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License.
-<p>The "Cover Texts" are certain short passages of text that are listed,
+ <p>The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.
-<p>A "Transparent" copy of the Document means a machine-readable copy,
+ <p>A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, whose contents can be viewed and edited directly and
straightforwardly with generic text editors or (for images composed of
@@ -571,7 +607,7 @@ format whose markup has been designed to thwart or discourage
subsequent modification by readers is not Transparent. A copy that is
not "Transparent" is called "Opaque".
-<p>Examples of suitable formats for Transparent copies include plain
+ <p>Examples of suitable formats for Transparent copies include plain
<small>ASCII</small> without markup, Texinfo input format, LaTeX input format,
<small>SGML</small> or <small>XML</small> using a publicly available
<small>DTD</small>, and standard-conforming simple <small>HTML</small> designed
@@ -582,16 +618,16 @@ the <small>DTD</small> and/or processing tools are not generally available,
and the machine-generated <small>HTML</small> produced by some word
processors for output purposes only.
-<p>The "Title Page" means, for a printed book, the title page itself,
+ <p>The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
-</p><li>VERBATIM COPYING
+ </p><li>VERBATIM COPYING
-<p>You may copy and distribute the Document in any medium, either
+ <p>You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
@@ -601,12 +637,12 @@ copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
-<p>You may also lend copies, under the same conditions stated above, and
+ <p>You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
-</p><li>COPYING IN QUANTITY
+ </p><li>COPYING IN QUANTITY
-<p>If you publish printed copies of the Document numbering more than 100,
+ <p>If you publish printed copies of the Document numbering more than 100,
and the Document's license notice requires Cover Texts, you must enclose
the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
@@ -618,12 +654,12 @@ Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
-<p>If the required texts for either cover are too voluminous to fit
+ <p>If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
-<p>If you publish or distribute Opaque copies of the Document numbering
+ <p>If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a publicly-accessible computer-network location containing a complete
@@ -637,49 +673,49 @@ until at least one year after the last time you distribute an Opaque
copy (directly or through your agents or retailers) of that edition to
the public.
-<p>It is requested, but not required, that you contact the authors of the
+ <p>It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
-</p><li>MODIFICATIONS
+ </p><li>MODIFICATIONS
-<p>You may copy and distribute a Modified Version of the Document under
+ <p>You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
-<ol type=A start=1>
-</p><li>Use in the Title Page (and on the covers, if any) a title distinct
+ <ol type=A start=1>
+<li>Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
-<li>List on the Title Page, as authors, one or more persons or entities
+ <li>List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has less than five).
-<li>State on the Title page the name of the publisher of the
+ <li>State on the Title page the name of the publisher of the
Modified Version, as the publisher.
-<li>Preserve all the copyright notices of the Document.
+ <li>Preserve all the copyright notices of the Document.
-<li>Add an appropriate copyright notice for your modifications
+ <li>Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
-<li>Include, immediately after the copyright notices, a license notice
+ <li>Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
-<li>Preserve in that license notice the full lists of Invariant Sections
+ <li>Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
-<li>Include an unaltered copy of this License.
+ <li>Include an unaltered copy of this License.
-<li>Preserve the section entitled "History", and its title, and add to
+ <li>Preserve the section entitled "History", and its title, and add to
it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section entitled "History" in the Document, create one
@@ -687,7 +723,7 @@ stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
-<li>Preserve the network location, if any, given in the Document for
+ <li>Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the "History" section.
@@ -695,36 +731,36 @@ You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
-<li>In any section entitled "Acknowledgments" or "Dedications",
+ <li>In any section entitled "Acknowledgments" or "Dedications",
preserve the section's title, and preserve in the section all the
substance and tone of each of the contributor acknowledgments
and/or dedications given therein.
-<li>Preserve all the Invariant Sections of the Document,
+ <li>Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
-<li>Delete any section entitled "Endorsements". Such a section
+ <li>Delete any section entitled "Endorsements". Such a section
may not be included in the Modified Version.
-<li>Do not retitle any existing section as "Endorsements"
+ <li>Do not retitle any existing section as "Endorsements"
or to conflict in title with any Invariant Section.
-</ol>
+ </ol>
-<p>If the Modified Version includes new front-matter sections or
+ <p>If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
-<p>You may add a section entitled "Endorsements", provided it contains
+ <p>You may add a section entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
-<p>You may add a passage of up to five words as a Front-Cover Text, and a
+ <p>You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
@@ -734,20 +770,20 @@ by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
-<p>The author(s) and publisher(s) of the Document do not by this License
+ <p>The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
-</p><li>COMBINING DOCUMENTS
+ </p><li>COMBINING DOCUMENTS
-<p>You may combine the Document with other documents released under this
+ <p>You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice.
-<p>The combined work need only contain one copy of this License, and
+ <p>The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
@@ -756,28 +792,28 @@ author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
-<p>In the combination, you must combine any sections entitled "History"
+ <p>In the combination, you must combine any sections entitled "History"
in the various original documents, forming one section entitled
"History"; likewise combine any sections entitled "Acknowledgments",
and any sections entitled "Dedications". You must delete all sections
entitled "Endorsements."
-</p><li>COLLECTIONS OF DOCUMENTS
+ </p><li>COLLECTIONS OF DOCUMENTS
-<p>You may make a collection consisting of the Document and other documents
+ <p>You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
-<p>You may extract a single document from such a collection, and distribute
+ <p>You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
-</p><li>AGGREGATION WITH INDEPENDENT WORKS
+ </p><li>AGGREGATION WITH INDEPENDENT WORKS
-<p>A compilation of the Document or its derivatives with other separate
+ <p>A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, does not as a whole count as a Modified Version
of the Document, provided no compilation copyright is claimed for the
@@ -786,15 +822,15 @@ License does not apply to the other self-contained works thus compiled
with the Document, on account of their being thus compiled, if they
are not themselves derivative works of the Document.
-<p>If the Cover Text requirement of section 3 is applicable to these
+ <p>If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one quarter
of the entire aggregate, the Document's Cover Texts may be placed on
covers that surround only the Document within the aggregate.
Otherwise they must appear on covers around the whole aggregate.
-</p><li>TRANSLATION
+ </p><li>TRANSLATION
-<p>Translation is considered a kind of modification, so you may
+ <p>Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
@@ -805,9 +841,9 @@ original English version of this License. In case of a disagreement
between the translation and the original English version of this
License, the original English version will prevail.
-</p><li>TERMINATION
+ </p><li>TERMINATION
-<p>You may not copy, modify, sublicense, or distribute the Document except
+ <p>You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
@@ -815,15 +851,15 @@ 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.
-</p><li>FUTURE REVISIONS OF THIS LICENSE
+ </p><li>FUTURE REVISIONS OF THIS LICENSE
-<p>The Free Software Foundation may publish new, revised versions
+ <p>The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation 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. See
<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
-<p>Each version of the License is given a distinguishing version number.
+ <p>Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
@@ -831,57 +867,51 @@ of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
-</ol>
+ </ol>
-<h3>ADDENDUM: How to use this License for your documents</h3>
+<h3 class="unnumberedsec">ADDENDUM: How to use this License for your documents</h3>
-<p>To use this License in a document you have written, include a copy of
+ <p>To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
-<br><pre> Copyright (C) <var>year</var> <var>your name</var>.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.1
- or any later version published by the Free Software Foundation;
- with the Invariant Sections being <var>list their titles</var>, with the
- Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts being <var>list</var>.
- A copy of the license is included in the section entitled ``GNU
- Free Documentation License''.
-</pre>
-
-<p>If you have no Invariant Sections, write "with no Invariant Sections"
+<pre class="smallexample"> Copyright (C) <var>year</var> <var>your name</var>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being <var>list their titles</var>, with the
+ Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts being <var>list</var>.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+ </pre>
+
+ <p>If you have no Invariant Sections, write "with no Invariant Sections"
instead of saying which ones are invariant. If you have no
Front-Cover Texts, write "no Front-Cover Texts" instead of
"Front-Cover Texts being <var>list</var>"; likewise for Back-Cover Texts.
-<p>If your document contains nontrivial examples of program code, we
+ <p>If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.
+<div class="contents">
<h2>Table of Contents</h2>
<ul>
-<li><a name="toc_Top"></a>
- <a href="#Top">Porting libstdc++-v3</a>
-<li><a name="toc_Operating%20system"></a>
- <a href="#Operating%20system">Operating system</a>
-<li><a name="toc_CPU"></a>
- <a href="#CPU">CPU</a>
-<li><a name="toc_Character%20types"></a>
- <a href="#Character%20types">Character types</a>
-<li><a name="toc_Thread%20safety"></a>
- <a href="#Thread%20safety">Thread safety</a>
-<li><a name="toc_Numeric%20limits"></a>
- <a href="#Numeric%20limits">Numeric limits</a>
-<li><a name="toc_Libtool"></a>
- <a href="#Libtool">Libtool</a>
-<li><a name="toc_GNU%20Free%20Documentation%20License"></a>
- <a href="#GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>
+<li><a name="toc_Top" href="#Top">Porting libstdc++-v3</a>
+<li><a name="toc_Operating%20system" href="#Operating%20system">Operating system</a>
+<li><a name="toc_CPU" href="#CPU">CPU</a>
+<li><a name="toc_Character%20types" href="#Character%20types">Character types</a>
+<li><a name="toc_Thread%20safety" href="#Thread%20safety">Thread safety</a>
+<li><a name="toc_Numeric%20limits" href="#Numeric%20limits">Numeric limits</a>
+<li><a name="toc_Libtool" href="#Libtool">Libtool</a>
+<li><a name="toc_GNU%20Free%20Documentation%20License" href="#GNU%20Free%20Documentation%20License">GNU Free Documentation License</a>
<ul>
<li><a href="#GNU%20Free%20Documentation%20License">ADDENDUM: How to use this License for your documents</a>
-</ul>
-</ul>
+</li></ul>
+</li></ul>
+</div>
-</body></html>
+ </body></html>
diff --git a/libstdc++-v3/docs/html/17_intro/porting.texi b/libstdc++-v3/docs/html/17_intro/porting.texi
index 6c6ec1f7f48..24ab682a55c 100644
--- a/libstdc++-v3/docs/html/17_intro/porting.texi
+++ b/libstdc++-v3/docs/html/17_intro/porting.texi
@@ -8,22 +8,7 @@
@settitle Porting libstdc++-v3
@setchapternewpage odd
-@ifinfo
-This file explains how to port libstdc++-v3 (the GNU C++ library) to
-a new target.
-
-Copyright (c) 2000, 2001, 2002 Free Software Foundation, Inc.
-@end ifinfo
-
-@c ---------------------------------------------------------------------
-@c Titlepage
-@c ---------------------------------------------------------------------
-
-@titlepage
-@title Porting libstdc++-v3
-@author Mark Mitchell
-@page
-@vskip 0pt plus 1filll
+@copying
Copyright @copyright{} 2000, 2001, 2002 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
@@ -43,6 +28,25 @@ texts being (a) (see below), and with the Back-Cover Texts being (b)
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.
+@end copying
+
+@ifinfo
+This file explains how to port libstdc++-v3 (the GNU C++ library) to
+a new target.
+
+@insertcopying
+@end ifinfo
+
+@c ---------------------------------------------------------------------
+@c Titlepage
+@c ---------------------------------------------------------------------
+
+@titlepage
+@title Porting libstdc++-v3
+@author Mark Mitchell
+@page
+@vskip 0pt plus 1filll
+@insertcopying
@end titlepage
@c ---------------------------------------------------------------------
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index 8dbbd9fb823..610ced909f4 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -34,7 +34,7 @@
#include <bits/os_defines.h>
// The current version of the C++ library in compressed ISO date format.
-#define __GLIBCPP__ 20021213
+#define __GLIBCPP__ 20021231
// This is necessary until GCC supports separate template
// compilation.
diff --git a/libstdc++-v3/include/std/std_bitset.h b/libstdc++-v3/include/std/std_bitset.h
index e938662b4ee..ebe16504d18 100644
--- a/libstdc++-v3/include/std/std_bitset.h
+++ b/libstdc++-v3/include/std/std_bitset.h
@@ -219,7 +219,7 @@ namespace std
void
_Base_bitset<_Nw>::_M_do_left_shift(size_t __shift)
{
- if (__shift != 0)
+ if (__builtin_expect(__shift != 0, 1))
{
const size_t __wshift = __shift / _GLIBCPP_BITSET_BITS_PER_WORD;
const size_t __offset = __shift % _GLIBCPP_BITSET_BITS_PER_WORD;
@@ -244,7 +244,7 @@ namespace std
void
_Base_bitset<_Nw>::_M_do_right_shift(size_t __shift)
{
- if (__shift != 0)
+ if (__builtin_expect(__shift != 0, 1))
{
const size_t __wshift = __shift / _GLIBCPP_BITSET_BITS_PER_WORD;
const size_t __offset = __shift % _GLIBCPP_BITSET_BITS_PER_WORD;
@@ -570,6 +570,7 @@ namespace std
struct _Sanitize<0>
{ static void _S_do_sanitize(unsigned long) { } };
+
/**
* @brief The %bitset class represents a @e fixed-size sequence of bits.
*
@@ -578,17 +579,19 @@ namespace std
* (Note that %bitset does @e not meet the formal requirements of a
* <a href="tables.html#65">container</a>. Mainly, it lacks iterators.)
*
- * The template argument, @a _Nb, may be any non-negative number of type
- * size_t.
+ * The template argument, @a Nb, may be any non-negative number,
+ * specifying the number of bits (e.g., "0", "12", "1024*1024").
*
- * A %bitset of size N has N % (sizeof(unsigned long) * CHAR_BIT) unused
- * bits. (They are the high-order bits in the highest word.) It is
- * a class invariant that those unused bits are always zero.
+ * In the general unoptimized case, storage is allocated in word-sized
+ * blocks. Let B be the number of bits in a word, then (Nb+(B-1))/B
+ * words will be used for storage. B - Nb%B bits are unused. (They are
+ * the high-order bits in the highest word.) It is a class invariant
+ * that those unused bits are always zero.
*
* If you think of %bitset as "a simple array of bits," be aware that
* your mental picture is reversed: a %bitset behaves the same way as
* bits in integers do, with the bit at index 0 in the "least significant
- * / right-hand" position, and the bit at index N-1 in the "most
+ * / right-hand" position, and the bit at index Nb-1 in the "most
* significant / left-hand" position. Thus, unlike other containers, a
* %bitset's index "counts from right to left," to put it very loosely.
*
@@ -619,6 +622,7 @@ namespace std
* @endcode
*
* Also see http://gcc.gnu.org/onlinedocs/libstdc++/ext/sgiexts.html#ch23
+ * for a description of extensions.
*
* @if maint
* Most of the actual code isn't contained in %bitset<> itself, but in the
@@ -805,16 +809,26 @@ namespace std
bitset<_Nb>&
operator<<=(size_t __pos)
{
- this->_M_do_left_shift(__pos);
- this->_M_do_sanitize();
+ if (__builtin_expect(__pos < _Nb, 1))
+ {
+ this->_M_do_left_shift(__pos);
+ this->_M_do_sanitize();
+ }
+ else
+ this->_M_do_reset();
return *this;
}
bitset<_Nb>&
operator>>=(size_t __pos)
{
- this->_M_do_right_shift(__pos);
- this->_M_do_sanitize();
+ if (__builtin_expect(__pos < _Nb, 1))
+ {
+ this->_M_do_right_shift(__pos);
+ this->_M_do_sanitize();
+ }
+ else
+ this->_M_do_reset();
return *this;
}
//@}
@@ -1183,6 +1197,7 @@ namespace std
typename basic_istream<_CharT, _Traits>::sentry __sentry(__is);
if (__sentry)
{
+ ios_base::iostate __state = ios_base::goodbit;
basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf();
for (size_t __i = 0; __i < _Nb; ++__i)
{
@@ -1191,7 +1206,7 @@ namespace std
typename _Traits::int_type __c1 = __buf->sbumpc();
if (_Traits::eq_int_type(__c1, __eof))
{
- __is.setstate(ios_base::eofbit);
+ __state |= ios_base::eofbit;
break;
}
else
@@ -1201,19 +1216,21 @@ namespace std
if (__c == '0' || __c == '1')
__tmp.push_back(__c);
- else if (_Traits::eq_int_type(__buf->sputbackc(__c2),
- __eof))
+ else if (_Traits::eq_int_type(__buf->sputbackc(__c2), __eof))
{
- __is.setstate(ios_base::failbit);
+ __state |= ios_base::failbit;
break;
}
}
}
if (__tmp.empty() && !_Nb)
- __is.setstate(ios_base::failbit);
+ __state |= ios_base::failbit;
else
__x._M_copy_from_string(__tmp, static_cast<size_t>(0), _Nb);
+
+ if (__state != ios_base::goodbit)
+ __is.setstate(__state); // may throw an exception
}
return __is;
diff --git a/libstdc++-v3/include/std/std_limits.h b/libstdc++-v3/include/std/std_limits.h
index be4b5f2a90b..9be69477958 100644
--- a/libstdc++-v3/include/std/std_limits.h
+++ b/libstdc++-v3/include/std/std_limits.h
@@ -508,7 +508,7 @@ namespace std
static short denorm_min() throw()
{ return short(); }
- static const bool is_iec559 = true;
+ static const bool is_iec559 = false;
static const bool is_bounded = true;
static const bool is_modulo = true;
@@ -558,7 +558,7 @@ namespace std
static unsigned short denorm_min() throw()
{ return static_cast<unsigned short>(0); }
- static const bool is_iec559 = true;
+ static const bool is_iec559 = false;
static const bool is_bounded = true;
static const bool is_modulo = true;
@@ -608,7 +608,7 @@ namespace std
static int denorm_min() throw()
{ return static_cast<int>(0); }
- static const bool is_iec559 = true;
+ static const bool is_iec559 = false;
static const bool is_bounded = true;
static const bool is_modulo = true;
@@ -658,7 +658,7 @@ namespace std
static unsigned int denorm_min() throw()
{ return static_cast<unsigned int>(0); }
- static const bool is_iec559 = true;
+ static const bool is_iec559 = false;
static const bool is_bounded = true;
static const bool is_modulo = true;
@@ -708,7 +708,7 @@ namespace std
static long denorm_min() throw()
{ return static_cast<long>(0); }
- static const bool is_iec559 = true;
+ static const bool is_iec559 = false;
static const bool is_bounded = true;
static const bool is_modulo = true;
@@ -758,7 +758,7 @@ namespace std
static unsigned long denorm_min() throw()
{ return static_cast<unsigned long>(0); }
- static const bool is_iec559 = true;
+ static const bool is_iec559 = false;
static const bool is_bounded = true;
static const bool is_modulo = true;
@@ -808,7 +808,7 @@ namespace std
static long long denorm_min() throw()
{ return static_cast<long long>(0); }
- static const bool is_iec559 = true;
+ static const bool is_iec559 = false;
static const bool is_bounded = true;
static const bool is_modulo = true;
@@ -858,7 +858,7 @@ namespace std
static unsigned long long denorm_min() throw()
{ return static_cast<unsigned long long>(0); }
- static const bool is_iec559 = true;
+ static const bool is_iec559 = false;
static const bool is_bounded = true;
static const bool is_modulo = true;
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits.cc b/libstdc++-v3/testsuite/18_support/numeric_limits.cc
index 4a1c498bb2d..540b4b7759f 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits.cc
@@ -289,12 +289,33 @@ bool test03()
return test;
}
+// libstdc++/8949
+bool test04()
+{
+ bool test = true;
+
+ VERIFY( !std::numeric_limits<short>::is_iec559 );
+ VERIFY( !std::numeric_limits<unsigned short>::is_iec559 );
+ VERIFY( !std::numeric_limits<int>::is_iec559 );
+ VERIFY( !std::numeric_limits<unsigned int>::is_iec559 );
+ VERIFY( !std::numeric_limits<long>::is_iec559 );
+ VERIFY( !std::numeric_limits<unsigned long>::is_iec559 );
+ VERIFY( !std::numeric_limits<long long>::is_iec559 );
+ VERIFY( !std::numeric_limits<unsigned long long>::is_iec559 );
+
+#ifdef DEBUG_ASSERT
+ assert(test);
+#endif
+
+ return test;
+}
int main()
{
test01();
test02();
test03();
+ test04();
test_extrema<char>();
test_extrema<signed char>();
diff --git a/libstdc++-v3/testsuite/23_containers/bitset_members.cc b/libstdc++-v3/testsuite/23_containers/bitset_members.cc
index 30e0ab6e063..054018df662 100644
--- a/libstdc++-v3/testsuite/23_containers/bitset_members.cc
+++ b/libstdc++-v3/testsuite/23_containers/bitset_members.cc
@@ -22,6 +22,7 @@
#include <bitset>
#include <stdexcept>
+#include <sstream>
#include <testsuite_hooks.h>
void
@@ -52,9 +53,26 @@ void test02()
bs.count();
}
+void test03()
+{
+ std::bitset<5> b;
+ std::stringstream ss ("101");
+
+ ss.exceptions(std::ios_base::eofbit);
+
+ try
+ {
+ ss >> b;
+ }
+ catch (std::exception&) {}
+
+ VERIFY( b.to_ulong() == 5 );
+}
+
int main()
{
test01();
test02();
+ test03();
return 0;
}
diff --git a/libstdc++-v3/testsuite/23_containers/bitset_shift.cc b/libstdc++-v3/testsuite/23_containers/bitset_shift.cc
index 35531bf5b4c..01fdd2fbc4b 100644
--- a/libstdc++-v3/testsuite/23_containers/bitset_shift.cc
+++ b/libstdc++-v3/testsuite/23_containers/bitset_shift.cc
@@ -106,9 +106,25 @@ test01() {
return test;
}
+bool
+test02()
+{
+ bool test = true;
+
+ std::bitset<66> b;
+ b <<= 400;
+ VERIFY( b.count() == 0 );
+
+#ifdef DEBUG_ASSERT
+ assert(test);
+#endif
+ return test;
+}
+
int
main() {
test01();
+ test02();
return 0;
}
diff --git a/libstdc++-v3/testsuite/23_containers/vector_capacity.cc b/libstdc++-v3/testsuite/23_containers/vector_capacity.cc
index 621ef7e373f..50740ba5967 100644
--- a/libstdc++-v3/testsuite/23_containers/vector_capacity.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector_capacity.cc
@@ -100,26 +100,6 @@ void test02()
}
}
-void test03()
-{
- bool test = true;
- std::vector<int> v;
- try
- {
- v.resize(v.max_size());
- v[v.max_size() - 1] = 2002;
- }
- catch (const std::bad_alloc& error)
- {
- test = true;
- }
- catch (...)
- {
- test = false;
- }
- VERIFY( test );
-}
-
// Verifies basic functionality of reserve() with forced reallocation.
void
test_reserve()
@@ -184,7 +164,6 @@ int main()
{
test01();
test02();
- test03();
test_reserve();
test_reserve_exception_guarantee();
return 0;
diff --git a/libstdc++-v3/testsuite/23_containers/vector_resize.cc b/libstdc++-v3/testsuite/23_containers/vector_resize.cc
new file mode 100644
index 00000000000..3cc6c57ed42
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/vector_resize.cc
@@ -0,0 +1,57 @@
+// 1999-05-07
+// bkoz
+
+// Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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, or (at your option)
+// any later version.
+
+// This library 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 library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 23.2.4.2 vector capacity
+
+// XXX This test will not work for irix6 because of bug(s) in libc malloc
+// XXX for very large allocations. However -lmalloc seems to work.
+// See http://gcc.gnu.org/ml/libstdc++/2002-12/msg00131.html
+// { dg-options "-lmalloc" { target mips*-*-irix6* } }
+
+#include <vector>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test = true;
+ std::vector<int> v;
+ try
+ {
+ v.resize(v.max_size());
+ v[v.max_size() - 1] = 2002;
+ }
+ catch (const std::bad_alloc& error)
+ {
+ test = true;
+ }
+ catch (...)
+ {
+ test = false;
+ }
+ VERIFY( test );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/ios_base_storage.cc b/libstdc++-v3/testsuite/27_io/ios_base_storage.cc
index c39d0302716..a02eacba166 100644
--- a/libstdc++-v3/testsuite/27_io/ios_base_storage.cc
+++ b/libstdc++-v3/testsuite/27_io/ios_base_storage.cc
@@ -20,6 +20,12 @@
// 27.4.2.5 ios_base storage functions
+// XXX This test will not work for some versions of irix6 because of
+// XXX bug(s) in libc malloc for very large allocations. However
+// XXX -lmalloc seems to work.
+// See http://gcc.gnu.org/ml/gcc/2002-05/msg01012.html
+// { dg-options "-lmalloc" { target mips*-*-irix6* } }
+
#include <sstream>
#include <iostream>