diff options
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 |
commit | 05329095607addc6db484398fa91fc8f1f1fd624 (patch) | |
tree | 370a3fb1fe5d90039dc4f0dae2070f0f1b26b1ca | |
parent | 2fc8af05937c88e1fe883bfbff7e153d85279af1 (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
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 © 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><CPU>-<vendor>-<OS></code>, you + <p>We recommend that for a target triplet <code><CPU>-<vendor>-<OS></code>, you name your configuration directory <code>config/cpu/<CPU></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><ctype.h></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><ctype.h></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><ctype.h></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><ctype.h></code>. They can be given symbolically (as above), or numerically, if you prefer. You do not have to include <code><ctype.h></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<char>::ctype</code> constructor. Here is the IRIX example: -<br><pre>ctype<char>::ctype(const mask* __table = 0, bool __del = false, - size_t __refs = 0) - : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del), - _M_toupper(NULL), - _M_tolower(NULL), - _M_ctable(NULL), - _M_table(!__table - ? (const mask*) (__libc_attr._ctype_tbl->_class + 1) - : __table) - { } -</pre> +<pre class="example"> ctype<char>::ctype(const mask* __table = 0, bool __del = false, + size_t __refs = 0) + : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del), + _M_toupper(NULL), + _M_tolower(NULL), + _M_ctable(NULL), + _M_table(!__table + ? (const mask*) (__libc_attr._ctype_tbl->_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<char>::do_toupper(char __c) const -{ return _toupper(__c); } - -char -ctype<char>::do_tolower(char __c) const -{ return _tolower(__c); } -</pre> +<pre class="example"> char + ctype<char>::do_toupper(char __c) const + { return _toupper(__c); } + + char + ctype<char>::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<char>::do_toupper(char* __low, const char* __high) const -{ - while (__low < __high) - { - *__low = do_toupper(*__low); - ++__low; - } - return __high; -} - -const char* -ctype<char>::do_tolower(char* __low, const char* __high) const -{ - while (__low < __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<char>::do_toupper(char* __low, const char* __high) const + { + while (__low < __high) + { + *__low = do_toupper(*__low); + ++__low; + } + return __high; + } + + const char* + ctype<char>::do_tolower(char* __low, const char* __high) const + { + while (__low < __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<char>:: -is(mask __m, char __c) const throw() -{ return (_M_table)[(unsigned char)(__c)] & __m; } -</pre> +<pre class="example"> bool + ctype<char>:: + is(mask __m, char __c) const throw() + { return (_M_table)[(unsigned char)(__c)] & __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<char>:: -is(const char* __low, const char* __high, mask* __vec) const throw() -{ - while (__low < __high) - *__vec++ = (_M_table)[(unsigned char)(*__low++)]; - return __high; -} -</pre> +<pre class="example"> const char* + ctype<char>:: + is(const char* __low, const char* __high, mask* __vec) const throw() + { + while (__low < __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<char>:: -scan_is(mask __m, const char* __low, const char* __high) const throw() -{ - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; -} - -const char* -ctype<char>:: -scan_not(mask __m, const char* __low, const char* __high) const throw() -{ - while (__low < __high && this->is(__m, *__low)) - ++__low; - return __low; -} -</pre> - + <p>The last two functions again are entirely generic: + +<pre class="example"> const char* + ctype<char>:: + scan_is(mask __m, const char* __low, const char* __high) const throw() + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype<char>:: + scan_not(mask __m, const char* __low, const char* __high) const throw() + { + while (__low < __high && this->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/<chip>/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 © 2000 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA +<pre class="display"> Copyright © 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> |